@adobe/data 0.9.59 → 0.9.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/ecs/database/combine-plugins.d.ts +5 -1
  2. package/dist/ecs/database/combine-plugins.js +3 -3
  3. package/dist/ecs/database/combine-plugins.js.map +1 -1
  4. package/dist/ecs/database/create-plugin.d.ts +17 -14
  5. package/dist/ecs/database/create-plugin.js +2 -1
  6. package/dist/ecs/database/create-plugin.js.map +1 -1
  7. package/dist/ecs/database/database.d.ts +32 -4
  8. package/dist/ecs/database/database.index.performance.test.d.ts +1 -0
  9. package/dist/ecs/database/database.index.performance.test.js +417 -0
  10. package/dist/ecs/database/database.index.performance.test.js.map +1 -0
  11. package/dist/ecs/database/database.index.test.d.ts +1 -0
  12. package/dist/ecs/database/database.index.test.js +762 -0
  13. package/dist/ecs/database/database.index.test.js.map +1 -0
  14. package/dist/ecs/database/database.index.type-test.d.ts +1 -0
  15. package/dist/ecs/database/database.index.type-test.js +275 -0
  16. package/dist/ecs/database/database.index.type-test.js.map +1 -0
  17. package/dist/ecs/database/database.js.map +1 -1
  18. package/dist/ecs/database/deep-extends-chain.type-test.d.ts +256 -256
  19. package/dist/ecs/database/index-api-proof.type-test.d.ts +1 -0
  20. package/dist/ecs/database/index-api-proof.type-test.js +88 -0
  21. package/dist/ecs/database/index-api-proof.type-test.js.map +1 -0
  22. package/dist/ecs/database/index-registry/create-index-registry.d.ts +53 -0
  23. package/dist/ecs/database/index-registry/create-index-registry.js +174 -0
  24. package/dist/ecs/database/index-registry/create-index-registry.js.map +1 -0
  25. package/dist/ecs/database/index-registry/create-index.d.ts +60 -0
  26. package/dist/ecs/database/index-registry/create-index.js +539 -0
  27. package/dist/ecs/database/index-registry/create-index.js.map +1 -0
  28. package/dist/ecs/database/index-registry/index.d.ts +4 -0
  29. package/dist/ecs/database/index-registry/index.js +4 -0
  30. package/dist/ecs/database/index-registry/index.js.map +1 -0
  31. package/dist/ecs/database/public/create-database.js +146 -0
  32. package/dist/ecs/database/public/create-database.js.map +1 -1
  33. package/dist/ecs/database/transactional-store/transactional-store.d.ts +3 -2
  34. package/dist/ecs/plugins/scheduler/scheduler.d.ts +1 -0
  35. package/dist/ecs/store/index-types.d.ts +132 -0
  36. package/dist/ecs/store/index-types.js +3 -0
  37. package/dist/ecs/store/index-types.js.map +1 -0
  38. package/dist/ecs/store/public/create-store.js +189 -3
  39. package/dist/ecs/store/public/create-store.js.map +1 -1
  40. package/dist/ecs/store/store.d.ts +30 -13
  41. package/dist/ecs/store/store.js +5 -4
  42. package/dist/ecs/store/store.js.map +1 -1
  43. package/dist/ecs/store/transaction-functions.d.ts +4 -3
  44. package/dist/equals.js +24 -6
  45. package/dist/equals.js.map +1 -1
  46. package/dist/math/aabb/face/from-position.d.ts +1 -1
  47. package/dist/math/aabb/face/from-position.js +4 -3
  48. package/dist/math/aabb/face/from-position.js.map +1 -1
  49. package/dist/math/aabb/schema.js +1 -1
  50. package/dist/math/aabb/schema.js.map +1 -1
  51. package/dist/schema/fractional-index/between-n.d.ts +2 -0
  52. package/dist/schema/fractional-index/between-n.js +34 -0
  53. package/dist/schema/fractional-index/between-n.js.map +1 -0
  54. package/dist/schema/fractional-index/between-n.test.d.ts +1 -0
  55. package/dist/schema/fractional-index/between-n.test.js +36 -0
  56. package/dist/schema/fractional-index/between-n.test.js.map +1 -0
  57. package/dist/schema/fractional-index/between.d.ts +2 -0
  58. package/dist/schema/fractional-index/between.js +3 -0
  59. package/dist/schema/fractional-index/between.js.map +1 -0
  60. package/dist/schema/fractional-index/between.test.d.ts +1 -0
  61. package/dist/schema/fractional-index/between.test.js +68 -0
  62. package/dist/schema/fractional-index/between.test.js.map +1 -0
  63. package/dist/schema/fractional-index/decrement-integer.d.ts +1 -0
  64. package/dist/schema/fractional-index/decrement-integer.js +32 -0
  65. package/dist/schema/fractional-index/decrement-integer.js.map +1 -0
  66. package/dist/schema/fractional-index/decrement-integer.test.d.ts +1 -0
  67. package/dist/schema/fractional-index/decrement-integer.test.js +31 -0
  68. package/dist/schema/fractional-index/decrement-integer.test.js.map +1 -0
  69. package/dist/schema/fractional-index/digits.d.ts +1 -0
  70. package/dist/schema/fractional-index/digits.js +3 -0
  71. package/dist/schema/fractional-index/digits.js.map +1 -0
  72. package/dist/schema/fractional-index/fractional-index.d.ts +4 -0
  73. package/dist/schema/fractional-index/fractional-index.js +2 -0
  74. package/dist/schema/fractional-index/fractional-index.js.map +1 -0
  75. package/dist/schema/fractional-index/increment-integer.d.ts +1 -0
  76. package/dist/schema/fractional-index/increment-integer.js +32 -0
  77. package/dist/schema/fractional-index/increment-integer.js.map +1 -0
  78. package/dist/schema/fractional-index/increment-integer.test.d.ts +1 -0
  79. package/dist/schema/fractional-index/increment-integer.test.js +34 -0
  80. package/dist/schema/fractional-index/increment-integer.test.js.map +1 -0
  81. package/dist/schema/fractional-index/initial.d.ts +2 -0
  82. package/dist/schema/fractional-index/initial.js +2 -0
  83. package/dist/schema/fractional-index/initial.js.map +1 -0
  84. package/dist/schema/fractional-index/integer-length.d.ts +1 -0
  85. package/dist/schema/fractional-index/integer-length.js +9 -0
  86. package/dist/schema/fractional-index/integer-length.js.map +1 -0
  87. package/dist/schema/fractional-index/integer-part.d.ts +1 -0
  88. package/dist/schema/fractional-index/integer-part.js +9 -0
  89. package/dist/schema/fractional-index/integer-part.js.map +1 -0
  90. package/dist/schema/fractional-index/key-between.d.ts +2 -0
  91. package/dist/schema/fractional-index/key-between.js +39 -0
  92. package/dist/schema/fractional-index/key-between.js.map +1 -0
  93. package/dist/schema/fractional-index/midpoint.d.ts +1 -0
  94. package/dist/schema/fractional-index/midpoint.js +23 -0
  95. package/dist/schema/fractional-index/midpoint.js.map +1 -0
  96. package/dist/schema/fractional-index/midpoint.test.d.ts +1 -0
  97. package/dist/schema/fractional-index/midpoint.test.js +83 -0
  98. package/dist/schema/fractional-index/midpoint.test.js.map +1 -0
  99. package/dist/schema/fractional-index/public.d.ts +4 -0
  100. package/dist/schema/fractional-index/public.js +6 -0
  101. package/dist/schema/fractional-index/public.js.map +1 -0
  102. package/dist/schema/fractional-index/schema.d.ts +4 -0
  103. package/dist/schema/fractional-index/schema.js +5 -0
  104. package/dist/schema/fractional-index/schema.js.map +1 -0
  105. package/dist/schema/fractional-index/smallest-integer.d.ts +1 -0
  106. package/dist/schema/fractional-index/smallest-integer.js +3 -0
  107. package/dist/schema/fractional-index/smallest-integer.js.map +1 -0
  108. package/dist/schema/fractional-index/validate-integer.d.ts +1 -0
  109. package/dist/schema/fractional-index/validate-integer.js +7 -0
  110. package/dist/schema/fractional-index/validate-integer.js.map +1 -0
  111. package/dist/schema/fractional-index/validate-order-key.d.ts +1 -0
  112. package/dist/schema/fractional-index/validate-order-key.js +11 -0
  113. package/dist/schema/fractional-index/validate-order-key.js.map +1 -0
  114. package/dist/schema/guid/create.d.ts +2 -0
  115. package/dist/schema/guid/create.js +10 -0
  116. package/dist/schema/guid/create.js.map +1 -0
  117. package/dist/schema/guid/create.test.d.ts +1 -0
  118. package/dist/schema/guid/create.test.js +39 -0
  119. package/dist/schema/guid/create.test.js.map +1 -0
  120. package/dist/schema/guid/equals.d.ts +2 -0
  121. package/dist/schema/guid/equals.js +3 -0
  122. package/dist/schema/guid/equals.js.map +1 -0
  123. package/dist/schema/guid/equals.test.d.ts +1 -0
  124. package/dist/schema/guid/equals.test.js +30 -0
  125. package/dist/schema/guid/equals.test.js.map +1 -0
  126. package/dist/schema/guid/from-uuid.d.ts +2 -0
  127. package/dist/schema/guid/from-uuid.js +15 -0
  128. package/dist/schema/guid/from-uuid.js.map +1 -0
  129. package/dist/schema/guid/from-uuid.test.d.ts +1 -0
  130. package/dist/schema/guid/from-uuid.test.js +39 -0
  131. package/dist/schema/guid/from-uuid.test.js.map +1 -0
  132. package/dist/schema/guid/guid.performance.test.d.ts +1 -0
  133. package/dist/schema/guid/guid.performance.test.js +297 -0
  134. package/dist/schema/guid/guid.performance.test.js.map +1 -0
  135. package/dist/schema/guid/index.d.ts +4 -0
  136. package/dist/schema/guid/index.js +3 -0
  137. package/dist/schema/guid/index.js.map +1 -0
  138. package/dist/schema/guid/layout.d.ts +1 -0
  139. package/dist/schema/guid/layout.js +5 -0
  140. package/dist/schema/guid/layout.js.map +1 -0
  141. package/dist/schema/guid/nil.d.ts +2 -0
  142. package/dist/schema/guid/nil.js +3 -0
  143. package/dist/schema/guid/nil.js.map +1 -0
  144. package/dist/schema/guid/public.d.ts +8 -0
  145. package/dist/schema/guid/public.js +10 -0
  146. package/dist/schema/guid/public.js.map +1 -0
  147. package/dist/schema/guid/schema.d.ts +12 -0
  148. package/dist/schema/guid/schema.js +10 -0
  149. package/dist/schema/guid/schema.js.map +1 -0
  150. package/dist/schema/guid/schema.test.d.ts +1 -0
  151. package/dist/schema/guid/schema.test.js +35 -0
  152. package/dist/schema/guid/schema.test.js.map +1 -0
  153. package/dist/schema/guid/to-unserializable-key.d.ts +2 -0
  154. package/dist/schema/guid/to-unserializable-key.js +10 -0
  155. package/dist/schema/guid/to-unserializable-key.js.map +1 -0
  156. package/dist/schema/guid/to-uuid.d.ts +2 -0
  157. package/dist/schema/guid/to-uuid.js +15 -0
  158. package/dist/schema/guid/to-uuid.js.map +1 -0
  159. package/dist/schema/guid/to-uuid.test.d.ts +1 -0
  160. package/dist/schema/guid/to-uuid.test.js +31 -0
  161. package/dist/schema/guid/to-uuid.test.js.map +1 -0
  162. package/dist/schema/index.d.ts +2 -0
  163. package/dist/schema/index.js +2 -0
  164. package/dist/schema/index.js.map +1 -1
  165. package/dist/table/select-rows.d.ts +7 -4
  166. package/dist/table/select-rows.js.map +1 -1
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +1 -1
  169. package/references/data-lit/package.json +1 -1
  170. package/references/data-lit-tictactoe/package.json +1 -1
  171. package/references/data-react/package.json +1 -1
  172. package/references/data-react-hello/package.json +1 -1
  173. package/references/data-react-pixie/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../../../src/ecs/store/public/create-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../../../src/ecs/store/public/create-store.ts"],"names":[],"mappings":"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"}
@@ -13,11 +13,12 @@ import { ComponentSchemas } from "../component-schemas.js";
13
13
  import { ResourceSchemas } from "../resource-schemas.js";
14
14
  import { createStore } from "./public/create-store.js";
15
15
  import { OptionalComponents } from "../optional-components.js";
16
+ import { Index, IndexDeclarations } from "./index-types.js";
16
17
  interface BaseStore<C extends object = never> {
17
18
  select<Include extends StringKeyof<C & OptionalComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: EntitySelectOptions<C & OptionalComponents, Pick<C & RequiredComponents & OptionalComponents, Include>>): readonly Entity[];
18
19
  toData(): unknown;
19
20
  }
20
- export interface ReadonlyStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never> extends BaseStore<C>, ReadonlyCore<C> {
21
+ export interface ReadonlyStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never, IX extends IndexDeclarations<C> = {}> extends BaseStore<C>, ReadonlyCore<C> {
21
22
  readonly resources: {
22
23
  readonly [K in StringKeyof<R>]: R[K];
23
24
  };
@@ -26,12 +27,15 @@ export interface ReadonlyStore<C extends Components = never, R extends ResourceC
26
27
  [P in A[K][number]]: (C & RequiredComponents & OptionalComponents)[P];
27
28
  }>;
28
29
  };
30
+ readonly indexes: {
31
+ readonly [K in keyof IX]: Index.Handle<C, IX[K]>;
32
+ };
29
33
  }
30
34
  export type ToReadonlyStore<T extends Store> = T extends Store<infer C, infer R> ? ReadonlyStore<C, R> : never;
31
35
  /**
32
36
  * Store is the main interface for storing components, entities and resources.
33
37
  */
34
- export interface Store<C extends Components = {}, R extends ResourceComponents = {}, A extends ArchetypeComponents<StringKeyof<C>> = {}> extends BaseStore<C>, Core<C> {
38
+ export interface Store<C extends Components = {}, R extends ResourceComponents = {}, A extends ArchetypeComponents<StringKeyof<C>> = {}, IX extends IndexDeclarations<C> = {}> extends BaseStore<C>, Core<C> {
35
39
  /**
36
40
  * This is used when a store is used to represent a transaction.
37
41
  * For most stores, this is ignored if it is set.
@@ -45,10 +49,19 @@ export interface Store<C extends Components = {}, R extends ResourceComponents =
45
49
  [P in A[K][number]]: (C & RequiredComponents & OptionalComponents)[P];
46
50
  }>;
47
51
  };
52
+ /**
53
+ * Index handles keyed by user-chosen name. Returned handles are the
54
+ * same references at the Store layer and the Database layer; mutations
55
+ * to the store keep them in sync as a side effect of every
56
+ * insert/update/delete.
57
+ */
58
+ readonly indexes: {
59
+ readonly [K in keyof IX]: Index.Handle<C, IX[K]>;
60
+ };
48
61
  /** Wipe all entities and reset resources to plugin defaults. O(num_archetypes + num_resources). */
49
62
  reset(): void;
50
63
  fromData(data: unknown): void;
51
- extend<S extends Store.Schema>(schema: S): S extends Store.Schema<infer XC, infer XR, infer XA> ? Store<C & XC, R & XR, A & XA> : never;
64
+ extend<S extends Store.Schema>(schema: S): S extends Store.Schema<infer XC, infer XR, infer XA, infer XIX> ? Store<C & XC, R & XR, A & XA, IX & XIX> : never;
52
65
  }
53
66
  export declare namespace Store {
54
67
  type Components<S extends Store> = S extends Store<infer C, infer R, infer A> ? C : never;
@@ -56,24 +69,27 @@ export declare namespace Store {
56
69
  type Archetypes<S extends Store> = S extends Store<any, any, infer A> ? A : never;
57
70
  type EntityValues<S extends Store<any, any, any>, K extends S extends Store<any, any, infer A> ? StringKeyof<A> : never> = Simplify<Parameters<S["archetypes"][K]["insert"]>[0] & RequiredComponents>;
58
71
  type InsertValues<S extends Store<any, any, any>, K extends S extends Store<any, any, infer A> ? StringKeyof<A> : never> = Parameters<S["archetypes"][K]["insert"]>[0];
59
- type Schema<CS extends ComponentSchemas = any, RS extends ResourceSchemas = any, A extends ArchetypeComponents<StringKeyof<CS>> = any> = {
72
+ type Schema<CS extends ComponentSchemas = any, RS extends ResourceSchemas = any, A extends ArchetypeComponents<StringKeyof<CS>> = any, IX extends IndexDeclarations<FromSchemas<CS>> = {}> = {
60
73
  readonly components: CS;
61
74
  readonly resources: RS;
62
75
  readonly archetypes: A;
76
+ readonly indexes?: IX;
63
77
  };
64
- type FromSchema<T> = T extends Store.Schema<infer CS, infer RS, infer A> ? Store<FromSchemas<CS>, FromSchemas<RS>, A> : never;
78
+ type FromSchema<T> = T extends Store.Schema<infer CS, infer RS, infer A, infer IX> ? Store<FromSchemas<CS>, FromSchemas<RS>, A, IX> : never;
65
79
  namespace Schema {
66
- type Intersect<T extends readonly Schema<any, any, any>[]> = Store.Schema<{} & IntersectTuple<{
67
- [K in keyof T]: T[K] extends Schema<infer C, infer R, infer A> ? C : never;
80
+ type Intersect<T extends readonly Schema<any, any, any, any>[]> = Store.Schema<{} & IntersectTuple<{
81
+ [K in keyof T]: T[K] extends Schema<infer C, any, any, any> ? C : never;
82
+ }>, {} & IntersectTuple<{
83
+ [K in keyof T]: T[K] extends Schema<any, infer R, any, any> ? R : never;
68
84
  }>, {} & IntersectTuple<{
69
- [K in keyof T]: T[K] extends Schema<any, infer R, any> ? R : never;
85
+ [K in keyof T]: T[K] extends Schema<any, any, infer A, any> ? A : never;
70
86
  }>, {} & IntersectTuple<{
71
- [K in keyof T]: T[K] extends Schema<any, any, infer A> ? A : never;
87
+ [K in keyof T]: T[K] extends Schema<any, any, any, infer IX> ? IX : never;
72
88
  }>>;
73
89
  /**
74
90
  * Creates a Store schema with optional properties. All schema properties
75
- * (components, resources, archetypes) are optional and default to empty
76
- * objects when not provided.
91
+ * (components, resources, archetypes, indexes) are optional and default
92
+ * to empty objects when not provided.
77
93
  *
78
94
  * @param schema - Partial store schema. Omit any properties you don't need.
79
95
  * @param dependencies - Optional array of schemas to merge with. Properties from
@@ -96,11 +112,12 @@ export declare namespace Store {
96
112
  * }, [baseSchema]);
97
113
  * ```
98
114
  */
99
- function create<const CS extends ComponentSchemas = {}, const RS extends ResourceSchemas = {}, const A extends ArchetypeComponents<StringKeyof<CS & Intersect<D>["components"]>> = {}, const D extends readonly Store.Schema<any, any, any>[] = []>(schema: Partial<{
115
+ function create<const CS extends ComponentSchemas = {}, const RS extends ResourceSchemas = {}, const A extends ArchetypeComponents<StringKeyof<CS & Intersect<D>["components"]>> = {}, const IX extends IndexDeclarations<FromSchemas<CS & Intersect<D>["components"]>> = {}, const D extends readonly Store.Schema<any, any, any, any>[] = []>(schema: Partial<{
100
116
  components: CS;
101
117
  resources: RS;
102
118
  archetypes: A;
103
- }>, dependencies?: D): Intersect<[Store.Schema<CS & Intersect<D>["components"], RS, A>, ...D]>;
119
+ indexes: IX;
120
+ }>, dependencies?: D): Intersect<[Store.Schema<CS & Intersect<D>["components"], RS, A, IX>, ...D]>;
104
121
  }
105
122
  const create: typeof createStore;
106
123
  }
@@ -6,8 +6,8 @@ export var Store;
6
6
  (function (Schema) {
7
7
  /**
8
8
  * Creates a Store schema with optional properties. All schema properties
9
- * (components, resources, archetypes) are optional and default to empty
10
- * objects when not provided.
9
+ * (components, resources, archetypes, indexes) are optional and default
10
+ * to empty objects when not provided.
11
11
  *
12
12
  * @param schema - Partial store schema. Omit any properties you don't need.
13
13
  * @param dependencies - Optional array of schemas to merge with. Properties from
@@ -31,14 +31,15 @@ export var Store;
31
31
  * ```
32
32
  */
33
33
  function create(schema, dependencies) {
34
- const { components = {}, resources = {}, archetypes = {} } = schema;
34
+ const { components = {}, resources = {}, archetypes = {}, indexes = {} } = schema;
35
35
  return (dependencies ?? []).reduce((acc, curr) => {
36
36
  return {
37
37
  components: { ...acc.components, ...curr.components },
38
38
  resources: { ...acc.resources, ...curr.resources },
39
39
  archetypes: { ...acc.archetypes, ...curr.archetypes },
40
+ indexes: { ...acc.indexes, ...curr.indexes },
40
41
  };
41
- }, { components, resources, archetypes });
42
+ }, { components, resources, archetypes, indexes });
42
43
  }
43
44
  Schema.create = create;
44
45
  })(Schema = Store.Schema || (Store.Schema = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ecs/store/store.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA6CvD,2DAA2D;AAC3D,MAAM,KAAW,KAAK,CA6GrB;AA7GD,WAAiB,KAAK;IAmBlB,IAAiB,MAAM,CAuFtB;IAvFD,WAAiB,MAAM;QAoCnB;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;QACH,SAAgB,MAAM,CAMlB,MAIE,EACF,YAAgB;YAEhB,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;YACpE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC7C,OAAO;oBACH,UAAU,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;oBACrD,SAAS,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;oBAClD,UAAU,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;iBACxD,CAAA;YACL,CAAC,EACG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAS,CAC/C,CAAC;QACN,CAAC;QAvBe,aAAM,SAuBrB,CAAA;IAEL,CAAC,EAvFgB,MAAM,GAAN,YAAM,KAAN,YAAM,QAuFtB;IAEY,YAAM,GAAG,WAAW,CAAC;AACtC,CAAC,EA7GgB,KAAK,KAAL,KAAK,QA6GrB"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ecs/store/store.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAwDvD,2DAA2D;AAC3D,MAAM,KAAW,KAAK,CAsHrB;AAtHD,WAAiB,KAAK;IAuBlB,IAAiB,MAAM,CA4FtB;IA5FD,WAAiB,MAAM;QAsCnB;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;QACH,SAAgB,MAAM,CAOlB,MAKE,EACF,YAAgB;YAEhB,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;YAClF,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC7C,OAAO;oBACH,UAAU,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;oBACrD,SAAS,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;oBAClD,UAAU,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;oBACrD,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;iBAC/C,CAAA;YACL,CAAC,EACG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAS,CACxD,CAAC;QACN,CAAC;QA1Be,aAAM,SA0BrB,CAAA;IAEL,CAAC,EA5FgB,MAAM,GAAN,YAAM,KAAN,YAAM,QA4FtB;IAEY,YAAM,GAAG,WAAW,CAAC;AACtC,CAAC,EAtHgB,KAAK,KAAL,KAAK,QAsHrB"}
@@ -3,11 +3,12 @@ import { Components } from "./components.js";
3
3
  import { ResourceComponents } from "./resource-components.js";
4
4
  import { ArchetypeComponents } from "./archetype-components.js";
5
5
  import { StringKeyof } from "../../types/types.js";
6
+ import { IndexDeclarations } from "./index-types.js";
6
7
  import type { TransactionContext } from "../database/transactional-store/transactional-store.js";
7
- export type TransactionDeclaration<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, Input extends any | void = any> = (t: TransactionContext<C, R, A>, input: Input) => void | Entity;
8
+ export type TransactionDeclaration<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, IX extends IndexDeclarations<C> = {}, Input extends any | void = any> = (t: TransactionContext<C, R, A, IX>, input: Input) => void | Entity;
8
9
  export type AsyncArgsProvider<T> = () => Promise<T> | AsyncGenerator<T>;
9
- export type TransactionDeclarations<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>> = {
10
- readonly [Q: string]: TransactionDeclaration<C, R, A>;
10
+ export type TransactionDeclarations<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, IX extends IndexDeclarations<C> = {}> = {
11
+ readonly [Q: string]: TransactionDeclaration<C, R, A, IX>;
11
12
  };
12
13
  /**
13
14
  * Converts from TransactionDeclarations to TransactionFunctions by removing
package/dist/equals.js CHANGED
@@ -1,6 +1,10 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
- import { isTypedBuffer } from "./typed-buffer/is-typed-buffer.js";
3
- import { typedBufferEquals } from "./typed-buffer/typed-buffer-equals.js";
2
+ // Typed-buffer brand emitted by `TypedBuffer`'s `__brand` field. Duck-typed
3
+ // here (instead of `instanceof TypedBuffer`) so this module has no runtime
4
+ // dependency on `typed-buffer/` — `equals` is the mutual-recursion partner
5
+ // of `typedBufferEquals`, and importing the class would close the cycle
6
+ // `equals → is-typed-buffer → typed-buffer → typed-buffer-equals → equals`.
7
+ const TYPED_BUFFER_BRAND = "TypedBuffer";
4
8
  /**
5
9
  * Very-fast deep equality for JSON-style values.
6
10
  *
@@ -35,11 +39,25 @@ export function equals(a, b) {
35
39
  }
36
40
  return true;
37
41
  }
38
- // 3 Typed-buffer fast path
39
- const aBuf = isTypedBuffer(a);
40
- const bBuf = isTypedBuffer(b);
42
+ // 3 Typed-buffer fast path. Inlined here (rather than dispatched to
43
+ // `typedBufferEquals`) so the recursion stays intra-module; see the
44
+ // brand comment above.
45
+ const aBuf = a.__brand === TYPED_BUFFER_BRAND;
46
+ const bBuf = b.__brand === TYPED_BUFFER_BRAND;
41
47
  if (aBuf || bBuf) {
42
- return aBuf && bBuf ? typedBufferEquals(a, b) : false;
48
+ if (!aBuf || !bBuf)
49
+ return false;
50
+ const ab = a;
51
+ const bb = b;
52
+ if (ab.type !== bb.type || ab.capacity !== bb.capacity)
53
+ return false;
54
+ if (!equals(ab.schema, bb.schema))
55
+ return false;
56
+ for (let i = 0; i < ab.capacity; i++) {
57
+ if (!equals(ab.get(i), bb.get(i)))
58
+ return false;
59
+ }
60
+ return true;
43
61
  }
44
62
  // 4 Plain objects
45
63
  const ao = a;
@@ -1 +1 @@
1
- {"version":3,"file":"equals.js","sourceRoot":"","sources":["../src/equals.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,CAAU,EAAE,CAAU;IAC3C,sCAAsC;IACtC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjE,YAAY;IACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,EAAE,GAAG,CAAc,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAc,CAAC;QAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAQ,EAAE,CAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IAED,mBAAmB;IACnB,MAAM,EAAE,GAAG,CAA4B,CAAC;IACxC,MAAM,EAAE,GAAG,CAA4B,CAAC;IAExC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,CAAC;IAEjC,OAAO,UAAU,KAAK,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../src/equals.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAIvD,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,CAAU,EAAE,CAAU;IAC3C,sCAAsC;IACtC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjE,YAAY;IACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,EAAE,GAAG,CAAc,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAc,CAAC;QAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,uBAAuB;IACvB,MAAM,IAAI,GAAI,CAA0B,CAAC,OAAO,KAAK,kBAAkB,CAAC;IACxE,MAAM,IAAI,GAAI,CAA0B,CAAC,OAAO,KAAK,kBAAkB,CAAC;IACxE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,CAAiC,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAiC,CAAC;QAC7C,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,MAAM,EAAE,GAAG,CAA4B,CAAC;IACxC,MAAM,EAAE,GAAG,CAA4B,CAAC;IAExC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,CAAC;IAEjC,OAAO,UAAU,KAAK,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Vec3 } from "../../vec3/index.js";
2
- import { Aabb } from "../index.js";
2
+ import type { Aabb } from "../index.js";
3
3
  import type { Face } from "./face.js";
4
4
  /**
5
5
  * Single-face bit closest to `position` in normalized box space (unit cube centered on origin by default).
@@ -1,5 +1,6 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
- import { Aabb } from "../index.js";
2
+ import { center } from "../center.js";
3
+ import { unit } from "../unit.js";
3
4
  import { NEG_X } from "./neg-x.js";
4
5
  import { NEG_Y } from "./neg-y.js";
5
6
  import { NEG_Z } from "./neg-z.js";
@@ -11,8 +12,8 @@ import { POS_Z } from "./pos-z.js";
11
12
  * @param position World position of the sample point
12
13
  * @param aabb Bounds used to compute the box center (defaults to unit cube)
13
14
  */
14
- export const fromPosition = (position, aabb = Aabb.unit) => {
15
- const aabbCenter = Aabb.center(aabb);
15
+ export const fromPosition = (position, aabb = unit) => {
16
+ const aabbCenter = center(aabb);
16
17
  const localPos = [
17
18
  position[0] - aabbCenter[0],
18
19
  position[1] - aabbCenter[1],
@@ -1 +1 @@
1
- {"version":3,"file":"from-position.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/from-position.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAGvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAc,EAAE,OAAa,IAAI,CAAC,IAAI,EAAQ,EAAE;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG;QACb,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;KAC9B,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"from-position.js","sourceRoot":"","sources":["../../../../src/math/aabb/face/from-position.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAIvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAc,EAAE,OAAa,IAAI,EAAQ,EAAE;IACpE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG;QACb,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;KAC9B,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
- import { Vec3 } from "../index.js";
2
+ import { Vec3 } from "../vec3/index.js";
3
3
  export const schema = {
4
4
  type: 'object',
5
5
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/math/aabb/schema.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAGvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,GAAG,EAAE,IAAI,CAAC,MAAM;QAChB,GAAG,EAAE,IAAI,CAAC,MAAM;KACnB;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;IACxB,oBAAoB,EAAE,KAAK;IAC3B,OAAO,EAAE;QACL,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QACxB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;KAC3B;CACsB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/math/aabb/schema.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAGvD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,GAAG,EAAE,IAAI,CAAC,MAAM;QAChB,GAAG,EAAE,IAAI,CAAC,MAAM;KACnB;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;IACxB,oBAAoB,EAAE,KAAK;IAC3B,OAAO,EAAE;QACL,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QACxB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;KAC3B;CACsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { FractionalIndex } from "./fractional-index.js";
2
+ export declare const betweenN: (a: FractionalIndex | undefined, b: FractionalIndex | undefined, n: number) => FractionalIndex[];
@@ -0,0 +1,34 @@
1
+ import { keyBetween } from "./key-between.js";
2
+ export const betweenN = (a, b, n) => {
3
+ if (n === 0)
4
+ return [];
5
+ if (n === 1)
6
+ return [keyBetween(a, b)];
7
+ if (b === undefined) {
8
+ let c = keyBetween(a, b);
9
+ const result = [c];
10
+ for (let i = 0; i < n - 1; i++) {
11
+ c = keyBetween(c, b);
12
+ result.push(c);
13
+ }
14
+ return result;
15
+ }
16
+ if (a === undefined) {
17
+ let c = keyBetween(a, b);
18
+ const result = [c];
19
+ for (let i = 0; i < n - 1; i++) {
20
+ c = keyBetween(a, c);
21
+ result.push(c);
22
+ }
23
+ result.reverse();
24
+ return result;
25
+ }
26
+ const mid = Math.floor(n / 2);
27
+ const c = keyBetween(a, b);
28
+ return [
29
+ ...betweenN(a, c, mid),
30
+ c,
31
+ ...betweenN(c, b, n - mid - 1),
32
+ ];
33
+ };
34
+ //# sourceMappingURL=between-n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"between-n.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/between-n.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,QAAQ,GAAG,CACpB,CAA8B,EAC9B,CAA8B,EAC9B,CAAS,EACQ,EAAE;IACnB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO;QACH,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;QACtB,CAAC;QACD,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACjC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { betweenN } from "./between-n.js";
4
+ const fi = (s) => s;
5
+ describe("betweenN", () => {
6
+ it("returns empty array for n = 0", () => {
7
+ expect(betweenN(undefined, undefined, 0)).toEqual([]);
8
+ });
9
+ it("generates n keys between undefined bounds", () => {
10
+ expect(betweenN(undefined, undefined, 5).join(" ")).toBe("a0 a1 a2 a3 a4");
11
+ });
12
+ it("generates n keys after a lower bound", () => {
13
+ expect(betweenN(fi("a4"), undefined, 10).join(" ")).toBe("a5 a6 a7 a8 a9 aA aB aC aD aE");
14
+ });
15
+ it("generates n keys before an upper bound", () => {
16
+ expect(betweenN(undefined, fi("a0"), 5).join(" ")).toBe("Zv Zw Zx Zy Zz");
17
+ });
18
+ it("generates n keys between two bounds (shared integer part)", () => {
19
+ expect(betweenN(fi("a0"), fi("a2"), 20).join(" ")).toBe("a04 a08 a0G a0K a0O a0V a0Z a0d a0l a0t a1 a14 a18 a1G a1O a1V a1Z a1d a1l a1t");
20
+ });
21
+ it("keys are in strictly ascending order", () => {
22
+ const keys = betweenN(fi("a0"), fi("b00"), 50);
23
+ for (let i = 1; i < keys.length; i++) {
24
+ expect(keys[i] > keys[i - 1]).toBe(true);
25
+ }
26
+ });
27
+ it("bulk insert of 500 keys grows length by at most 2 chars", () => {
28
+ const start = fi("a0");
29
+ const end = betweenN(start, undefined, 1)[0];
30
+ const keys = betweenN(start, end, 500);
31
+ const baseline = Math.max(start.length, end.length);
32
+ const maxLen = keys.reduce((m, k) => Math.max(m, k.length), 0);
33
+ expect(maxLen).toBe(baseline + 2);
34
+ });
35
+ });
36
+ //# sourceMappingURL=between-n.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"between-n.test.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/between-n.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FractionalIndex } from "./fractional-index.js";
2
+ export declare const between: (a: FractionalIndex | undefined, b: FractionalIndex | undefined) => FractionalIndex;
@@ -0,0 +1,3 @@
1
+ import { keyBetween } from "./key-between.js";
2
+ export const between = (a, b) => keyBetween(a, b);
3
+ //# sourceMappingURL=between.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"between.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/between.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CACnB,CAA8B,EAC9B,CAA8B,EACf,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,68 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { between } from "./between.js";
4
+ const fi = (s) => s;
5
+ describe("between", () => {
6
+ it("returns initial when both bounds are undefined", () => {
7
+ expect(between(undefined, undefined)).toBe("a0");
8
+ });
9
+ it("generates keys before an existing key", () => {
10
+ expect(between(undefined, fi("a0"))).toBe("Zz");
11
+ expect(between(undefined, fi("Y00"))).toBe("Xzzz");
12
+ expect(between(undefined, fi("a0V"))).toBe("a0");
13
+ expect(between(undefined, fi("b999"))).toBe("b99");
14
+ expect(between(undefined, fi("A000000000000000000000000001"))).toBe("A000000000000000000000000000V");
15
+ });
16
+ it("generates keys after an existing key", () => {
17
+ expect(between(fi("a0"), undefined)).toBe("a1");
18
+ expect(between(fi("bzz"), undefined)).toBe("c000");
19
+ expect(between(fi("zzzzzzzzzzzzzzzzzzzzzzzzzzy"), undefined)).toBe("zzzzzzzzzzzzzzzzzzzzzzzzzzz");
20
+ expect(between(fi("zzzzzzzzzzzzzzzzzzzzzzzzzzz"), undefined)).toBe("zzzzzzzzzzzzzzzzzzzzzzzzzzzV");
21
+ });
22
+ it("generates keys between two existing keys", () => {
23
+ expect(between(fi("a0"), fi("a1"))).toBe("a0V");
24
+ expect(between(fi("a0V"), fi("a1"))).toBe("a0l");
25
+ expect(between(fi("Zz"), fi("a0"))).toBe("ZzV");
26
+ expect(between(fi("Zz"), fi("a1"))).toBe("a0");
27
+ expect(between(fi("a0"), fi("a0V"))).toBe("a0G");
28
+ expect(between(fi("a0"), fi("a0G"))).toBe("a08");
29
+ expect(between(fi("b125"), fi("b129"))).toBe("b127");
30
+ expect(between(fi("a0"), fi("a1V"))).toBe("a1");
31
+ expect(between(fi("Zz"), fi("a01"))).toBe("a0");
32
+ });
33
+ it("throws for invalid key (smallest integer)", () => {
34
+ expect(() => between(undefined, fi("A00000000000000000000000000"))).toThrow("invalid order key");
35
+ });
36
+ it("throws for trailing zero in fractional part", () => {
37
+ expect(() => between(undefined, fi("b0"))).toThrow("invalid order key");
38
+ expect(() => between(fi("a00"), undefined)).toThrow("invalid order key");
39
+ expect(() => between(fi("a00"), fi("a1"))).toThrow("invalid order key");
40
+ });
41
+ it("throws when head is a digit instead of a letter", () => {
42
+ expect(() => between(fi("0"), fi("1"))).toThrow("Invalid order key head");
43
+ });
44
+ it("throws when a >= b", () => {
45
+ expect(() => between(fi("a1"), fi("a0"))).toThrow("Invalid key order: a >= b");
46
+ });
47
+ it("max length for 100k consecutive appends is 4 chars", () => {
48
+ let current = fi("a0");
49
+ let maxLen = current.length;
50
+ for (let i = 0; i < 100_000; i++) {
51
+ current = between(current, undefined);
52
+ if (current.length > maxLen)
53
+ maxLen = current.length;
54
+ }
55
+ expect(maxLen).toBe(4);
56
+ });
57
+ it("max length for 500 consecutive head-inserts is 86 chars", () => {
58
+ let next;
59
+ let maxLen = 0;
60
+ for (let i = 0; i < 500; i++) {
61
+ next = between(fi("a0"), next);
62
+ if (next.length > maxLen)
63
+ maxLen = next.length;
64
+ }
65
+ expect(maxLen).toBe(86);
66
+ });
67
+ });
68
+ //# sourceMappingURL=between.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"between.test.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/between.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const decrementInteger: (x: string) => string | undefined;
@@ -0,0 +1,32 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { digits } from "./digits.js";
3
+ import { validateInteger } from "./validate-integer.js";
4
+ export const decrementInteger = (x) => {
5
+ validateInteger(x);
6
+ const [head, ...digs] = x.split("");
7
+ let borrow = true;
8
+ for (let i = digs.length - 1; borrow && i >= 0; i--) {
9
+ const d = digits.indexOf(digs[i]) - 1;
10
+ if (d === -1) {
11
+ digs[i] = digits.slice(-1);
12
+ }
13
+ else {
14
+ digs[i] = digits.charAt(d);
15
+ borrow = false;
16
+ }
17
+ }
18
+ if (borrow) {
19
+ if (head === "a")
20
+ return "Z" + digits.slice(-1);
21
+ if (head === "A")
22
+ return undefined;
23
+ const h = String.fromCharCode(head.charCodeAt(0) - 1);
24
+ if (h < "Z")
25
+ digs.push(digits.slice(-1));
26
+ else
27
+ digs.pop();
28
+ return h + digs.join("");
29
+ }
30
+ return head + digs.join("");
31
+ };
32
+ //# sourceMappingURL=decrement-integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrement-integer.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/decrement-integer.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAsB,EAAE;IAC9D,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;IACL,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACT,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { decrementInteger } from "./decrement-integer.js";
4
+ describe("decrementInteger", () => {
5
+ it("decrements simple keys", () => {
6
+ expect(decrementInteger("a1")).toBe("a0");
7
+ expect(decrementInteger("a2")).toBe("a1");
8
+ });
9
+ it("borrows across digit positions", () => {
10
+ expect(decrementInteger("b00")).toBe("az");
11
+ expect(decrementInteger("b10")).toBe("b0z");
12
+ expect(decrementInteger("b20")).toBe("b1z");
13
+ expect(decrementInteger("c000")).toBe("bzz");
14
+ expect(decrementInteger("dAC00")).toBe("dABzz");
15
+ });
16
+ it("crosses the positive/negative boundary", () => {
17
+ expect(decrementInteger("Zz")).toBe("Zy");
18
+ expect(decrementInteger("a0")).toBe("Zz");
19
+ });
20
+ it("handles transitions that lengthen the integer part (negative side)", () => {
21
+ expect(decrementInteger("Yzz")).toBe("Yzy");
22
+ expect(decrementInteger("Z0")).toBe("Yzz");
23
+ expect(decrementInteger("Xz00")).toBe("Xyzz");
24
+ expect(decrementInteger("Xz01")).toBe("Xz00");
25
+ expect(decrementInteger("Y00")).toBe("Xzzz");
26
+ });
27
+ it("returns undefined at the bottom of range", () => {
28
+ expect(decrementInteger("A00000000000000000000000000")).toBeUndefined();
29
+ });
30
+ });
31
+ //# sourceMappingURL=decrement-integer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrement-integer.test.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/decrement-integer.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
@@ -0,0 +1,3 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export const digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
3
+ //# sourceMappingURL=digits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digits.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/digits.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,gEAAgE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToType } from "../to-type.js";
2
+ import { schema } from "./schema.js";
3
+ export type FractionalIndex = ToType<typeof schema>;
4
+ export * as FractionalIndex from "./public.js";
@@ -0,0 +1,2 @@
1
+ export * as FractionalIndex from "./public.js";
2
+ //# sourceMappingURL=fractional-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fractional-index.js","sourceRoot":"","sources":["../../../src/schema/fractional-index/fractional-index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,eAAe,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const incrementInteger: (x: string) => string | undefined;