
Currently, we type our fractional index keys as `string` and don't have any validation for them. I'm touching some of this code for my work on line handles and wanted to change that: - fractional indexes are now `IndexKey`s, not `string`s. `IndexKey`s have a brand property so can't be used interchangeably with strings (like our IDs) - There's a new `T.indexKey` validator which we can use in our validations to make sure we don't end up with nonsense keys. This PR is part of a series - please don't merge it until the things before it have landed! 1. #2827 (you are here) 2. #2831 3. #2793 4. #2841 5. #2845 ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Mostly relying on unit & end to end tests here - no user facing changes. - [x] Unit Tests
8 lines
310 B
TypeScript
8 lines
310 B
TypeScript
/**
|
|
* A string made up of an integer part followed by a fraction part. The fraction point consists of
|
|
* zero or more digits with no trailing zeros. Based on
|
|
* {@link https://observablehq.com/@dgreensp/implementing-fractional-indexing}.
|
|
*
|
|
* @public
|
|
*/
|
|
export type IndexKey = string & { __orderKey: true }
|