iris-ecs 0.0.8 → 0.0.10

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 (51) hide show
  1. package/README.md +250 -61
  2. package/dist/archetype.d.ts +18 -1
  3. package/dist/archetype.d.ts.map +1 -1
  4. package/dist/archetype.js +60 -15
  5. package/dist/archetype.js.map +1 -1
  6. package/dist/component.d.ts +106 -7
  7. package/dist/component.d.ts.map +1 -1
  8. package/dist/component.js +88 -6
  9. package/dist/component.js.map +1 -1
  10. package/dist/directed-acyclic-graph.d.ts +123 -0
  11. package/dist/directed-acyclic-graph.d.ts.map +1 -0
  12. package/dist/directed-acyclic-graph.js +235 -0
  13. package/dist/directed-acyclic-graph.js.map +1 -0
  14. package/dist/entity.d.ts +18 -0
  15. package/dist/entity.d.ts.map +1 -1
  16. package/dist/entity.js +5 -15
  17. package/dist/entity.js.map +1 -1
  18. package/dist/error.d.ts +2 -2
  19. package/dist/error.js +2 -2
  20. package/dist/index.d.ts +10 -8
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +9 -5
  23. package/dist/index.js.map +1 -1
  24. package/dist/name.d.ts +2 -2
  25. package/dist/name.d.ts.map +1 -1
  26. package/dist/name.js +3 -3
  27. package/dist/name.js.map +1 -1
  28. package/dist/observer.d.ts +5 -0
  29. package/dist/observer.d.ts.map +1 -1
  30. package/dist/observer.js.map +1 -1
  31. package/dist/query.d.ts +65 -5
  32. package/dist/query.d.ts.map +1 -1
  33. package/dist/query.js +34 -3
  34. package/dist/query.js.map +1 -1
  35. package/dist/resource.d.ts +62 -4
  36. package/dist/resource.d.ts.map +1 -1
  37. package/dist/resource.js +10 -1
  38. package/dist/resource.js.map +1 -1
  39. package/dist/scheduler.d.ts +119 -11
  40. package/dist/scheduler.d.ts.map +1 -1
  41. package/dist/scheduler.js +175 -68
  42. package/dist/scheduler.js.map +1 -1
  43. package/dist/schema.d.ts +97 -40
  44. package/dist/schema.d.ts.map +1 -1
  45. package/dist/schema.js +31 -69
  46. package/dist/schema.js.map +1 -1
  47. package/dist/world.d.ts +10 -1
  48. package/dist/world.d.ts.map +1 -1
  49. package/dist/world.js +7 -0
  50. package/dist/world.js.map +1 -1
  51. package/package.json +1 -1
package/dist/scheduler.js CHANGED
@@ -1,5 +1,7 @@
1
+ import { addEdge, addNode, createDag, getPredecessors, getSuccessors, removeNode as removeDagNode, topologicalSort, } from "./directed-acyclic-graph.js";
1
2
  import { assert, Duplicate, InvalidArgument, InvalidState, NotFound } from "./error.js";
2
3
  import { flushEvents } from "./event.js";
4
+ import { fireObserverEvent } from "./observer.js";
3
5
  // ============================================================================
4
6
  // Schedule Definition
5
7
  // ============================================================================
@@ -61,6 +63,70 @@ export const PostUpdate = defineSchedule("PostUpdate");
61
63
  */
62
64
  export const Last = defineSchedule("Last");
63
65
  // ============================================================================
66
+ // System Set Definition
67
+ // ============================================================================
68
+ /**
69
+ * Define a system set label.
70
+ *
71
+ * System sets are named groups for group-level ordering. Define the label
72
+ * first, then register it in a world via `addSystemSet()`.
73
+ *
74
+ * @param name - Set name (must be unique when registered)
75
+ * @returns System set label
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const PhysicsSystems = defineSystemSet("PhysicsSystems");
80
+ * addSystemSet(world, PhysicsSystems, { before: RenderSystems });
81
+ * ```
82
+ */
83
+ export function defineSystemSet(name) {
84
+ return name;
85
+ }
86
+ // ============================================================================
87
+ // System Set Registration
88
+ // ============================================================================
89
+ /**
90
+ * Register a system set in the world with optional ordering constraints.
91
+ *
92
+ * Must be called before any `addSystem()` call that references this set
93
+ * via the `set` option.
94
+ *
95
+ * @param world - World instance
96
+ * @param set - System set label from `defineSystemSet()`
97
+ * @param options - Registration options (schedule, before, after)
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const PhysicsSystems = defineSystemSet("PhysicsSystems");
102
+ * const RenderSystems = defineSystemSet("RenderSystems");
103
+ * addSystemSet(world, PhysicsSystems, { schedule: Update, before: RenderSystems });
104
+ * addSystemSet(world, RenderSystems, { schedule: Update });
105
+ * ```
106
+ */
107
+ export function addSystemSet(world, set, options) {
108
+ assert(!world.systemSets.byId.has(set), Duplicate, { resource: "SystemSet", id: set });
109
+ const before = options?.before;
110
+ const after = options?.after;
111
+ world.systemSets.byId.set(set, {
112
+ schedule: options?.schedule ?? Update,
113
+ before: !before ? [] : Array.isArray(before) ? before.map(resolveReference) : [resolveReference(before)],
114
+ after: !after ? [] : Array.isArray(after) ? after.map(resolveReference) : [resolveReference(after)],
115
+ systems: [],
116
+ });
117
+ world.schedules.dirty = true;
118
+ }
119
+ // ============================================================================
120
+ // Reference Resolution
121
+ // ============================================================================
122
+ /**
123
+ * Resolves a SystemReference to a string name.
124
+ * @internal
125
+ */
126
+ function resolveReference(ref) {
127
+ return typeof ref === "string" ? ref : ref.name;
128
+ }
129
+ // ============================================================================
64
130
  // System Registration
65
131
  // ============================================================================
66
132
  /**
@@ -77,7 +143,7 @@ export const Last = defineSchedule("Last");
77
143
  * @example
78
144
  * ```typescript
79
145
  * addSystem(world, physicsSystem);
80
- * addSystem(world, renderSystem, { schedule: PostUpdate, after: "physicsSystem" });
146
+ * addSystem(world, renderSystem, { schedule: PostUpdate, after: physicsSystem });
81
147
  * addSystem(world, movementFactory); // SystemFactory from defineSystem()
82
148
  * ```
83
149
  */
@@ -95,16 +161,32 @@ export function addSystem(world, system, options) {
95
161
  }
96
162
  assert(name && name !== "anonymous", InvalidArgument, { expected: "named system function or name option" });
97
163
  assert(!world.systems.byId.has(name), Duplicate, { resource: "System", id: name });
98
- // Normalize before/after constraints to arrays for consistent handling
164
+ const setLabel = options?.set;
165
+ // Validate set exists
166
+ if (setLabel) {
167
+ assert(world.systemSets.byId.has(setLabel), NotFound, {
168
+ resource: "SystemSet",
169
+ id: setLabel,
170
+ context: `"${name}" set option`,
171
+ });
172
+ }
173
+ // Resolve schedule: from set if specified, else from options, else Update
174
+ const schedule = setLabel ? world.systemSets.byId.get(setLabel).schedule : (options?.schedule ?? Update);
175
+ // Normalize before/after constraints to arrays
99
176
  const before = options?.before;
100
177
  const after = options?.after;
101
178
  world.systems.byId.set(name, {
102
179
  runner,
103
- schedule: options?.schedule ?? Update,
180
+ schedule,
104
181
  index: world.systems.nextIndex++,
105
- before: !before ? [] : Array.isArray(before) ? before : [before],
106
- after: !after ? [] : Array.isArray(after) ? after : [after],
182
+ before: !before ? [] : Array.isArray(before) ? before.map(resolveReference) : [resolveReference(before)],
183
+ after: !after ? [] : Array.isArray(after) ? after.map(resolveReference) : [resolveReference(after)],
184
+ set: setLabel,
107
185
  });
186
+ // Add system to set's member list
187
+ if (setLabel) {
188
+ world.systemSets.byId.get(setLabel).systems.push(name);
189
+ }
108
190
  world.schedules.dirty = true;
109
191
  }
110
192
  // ============================================================================
@@ -129,7 +211,7 @@ export function addSystem(world, system, options) {
129
211
  * ```typescript
130
212
  * const movementSystem = defineSystem("movementSystem", (world) => {
131
213
  * // Init: runs once at addSystem() time
132
- * const movers = cacheQuery(world, Position, Velocity);
214
+ * const movers = cacheQuery(world, [Position, Velocity]);
133
215
  *
134
216
  * // Tick: runs every frame
135
217
  * return () => {
@@ -199,107 +281,126 @@ export function insertScheduleAfter(world, schedule, anchor) {
199
281
  // Schedule Building (Internal)
200
282
  // ============================================================================
201
283
  /**
202
- * Builds an execution order from registered systems using topological sort.
203
- * Systems are ordered by before/after constraints, with registration order as tiebreaker.
284
+ * Builds an execution order from registered systems using a DAG with set flattening.
285
+ *
286
+ * 1. Collect systems and sets for this schedule
287
+ * 2. Build DAG with system + set nodes and constraint edges
288
+ * 3. Flatten: replace set nodes with edges to/from member systems
289
+ * 4. Topological sort with registration-index comparator
204
290
  */
205
291
  function buildSchedule(world, scheduleLabel) {
206
- // Filter systems belonging to this schedule
292
+ // Collect systems belonging to this schedule
207
293
  const scheduleSystems = new Map();
208
294
  for (const [name, meta] of world.systems.byId) {
209
295
  if (meta.schedule === scheduleLabel) {
210
296
  scheduleSystems.set(name, meta);
211
297
  }
212
298
  }
299
+ // Collect sets belonging to this schedule
300
+ const scheduleSets = new Map();
301
+ for (const [label, meta] of world.systemSets.byId) {
302
+ if (meta.schedule === scheduleLabel) {
303
+ scheduleSets.set(label, meta);
304
+ }
305
+ }
213
306
  if (scheduleSystems.size === 0) {
214
307
  world.schedules.byId.set(scheduleLabel, []);
215
308
  return;
216
309
  }
217
- // Build dependency graph for Kahn's algorithm
218
- const adjacency = new Map();
219
- const inDegree = new Map();
310
+ // Build DAG with system and set nodes
311
+ const dag = createDag();
220
312
  for (const name of scheduleSystems.keys()) {
221
- adjacency.set(name, []);
222
- inDegree.set(name, 0);
313
+ addNode(dag, name);
314
+ }
315
+ for (const label of scheduleSets.keys()) {
316
+ addNode(dag, label);
223
317
  }
224
- // Convert before/after constraints into directed edges
318
+ // Add system constraint edges
225
319
  for (const [name, meta] of scheduleSystems) {
226
320
  for (const beforeName of meta.before) {
227
- if (!scheduleSystems.has(beforeName)) {
321
+ if (!scheduleSystems.has(beforeName) && !scheduleSets.has(beforeName)) {
228
322
  throw new NotFound({
229
- resource: "System",
323
+ resource: "System or SystemSet",
230
324
  id: beforeName,
231
325
  context: `"${name}" before constraint in schedule "${scheduleLabel}"`,
232
326
  });
233
327
  }
234
- // "A before B" means edge A -> B (A must run first)
235
- adjacency.get(name).push(beforeName);
236
- inDegree.set(beforeName, inDegree.get(beforeName) + 1);
328
+ addEdge(dag, name, beforeName);
237
329
  }
238
330
  for (const afterName of meta.after) {
239
- if (!scheduleSystems.has(afterName)) {
331
+ if (!scheduleSystems.has(afterName) && !scheduleSets.has(afterName)) {
240
332
  throw new NotFound({
241
- resource: "System",
333
+ resource: "System or SystemSet",
242
334
  id: afterName,
243
335
  context: `"${name}" after constraint in schedule "${scheduleLabel}"`,
244
336
  });
245
337
  }
246
- // "A after B" means edge B -> A (B must run first)
247
- adjacency.get(afterName).push(name);
248
- inDegree.set(name, inDegree.get(name) + 1);
249
- }
250
- }
251
- // Initialize queue with systems having no dependencies
252
- const queue = [];
253
- for (const [name, degree] of inDegree) {
254
- if (degree === 0) {
255
- insertSorted(queue, name, scheduleSystems);
338
+ addEdge(dag, afterName, name);
256
339
  }
257
340
  }
258
- // Process queue, maintaining sorted order by registration index
259
- const result = [];
260
- while (queue.length > 0) {
261
- const current = queue.shift();
262
- result.push(current);
263
- for (const dependent of adjacency.get(current)) {
264
- const newDegree = inDegree.get(dependent) - 1;
265
- inDegree.set(dependent, newDegree);
266
- if (newDegree === 0) {
267
- insertSorted(queue, dependent, scheduleSystems);
341
+ // Add set constraint edges
342
+ for (const [label, meta] of scheduleSets) {
343
+ for (const beforeName of meta.before) {
344
+ if (!scheduleSystems.has(beforeName) && !scheduleSets.has(beforeName)) {
345
+ throw new NotFound({
346
+ resource: "System or SystemSet",
347
+ id: beforeName,
348
+ context: `"${label}" before constraint in schedule "${scheduleLabel}"`,
349
+ });
268
350
  }
351
+ addEdge(dag, label, beforeName);
269
352
  }
270
- }
271
- // Detect circular dependencies (remaining systems with non-zero in-degree)
272
- if (result.length !== scheduleSystems.size) {
273
- const remaining = [];
274
- for (const [name, degree] of inDegree) {
275
- if (degree > 0) {
276
- remaining.push(name);
353
+ for (const afterName of meta.after) {
354
+ if (!scheduleSystems.has(afterName) && !scheduleSets.has(afterName)) {
355
+ throw new NotFound({
356
+ resource: "System or SystemSet",
357
+ id: afterName,
358
+ context: `"${label}" after constraint in schedule "${scheduleLabel}"`,
359
+ });
277
360
  }
361
+ addEdge(dag, afterName, label);
278
362
  }
279
- throw new InvalidState({ message: `Circular dependency in schedule "${scheduleLabel}": ${remaining.join(", ")}` });
280
363
  }
281
- world.schedules.byId.set(scheduleLabel, result);
282
- }
283
- /**
284
- * Inserts a system name into the queue maintaining sorted order by registration index.
285
- * Uses binary search for O(log n) insertion position lookup.
286
- * This ensures deterministic ordering when multiple systems have no dependency constraints.
287
- */
288
- function insertSorted(queue, name, systems) {
289
- const index = systems.get(name).index;
290
- let low = 0;
291
- let high = queue.length;
292
- // Binary search for correct insertion position
293
- while (low < high) {
294
- const mid = (low + high) >>> 1;
295
- if (systems.get(queue[mid]).index < index) {
296
- low = mid + 1;
364
+ // Flatten: replace set nodes with edges to/from member systems
365
+ for (const [label, meta] of scheduleSets) {
366
+ const predecessors = getPredecessors(dag, label);
367
+ const successors = getSuccessors(dag, label);
368
+ if (meta.systems.length === 0) {
369
+ // Empty set: wire predecessors directly to successors
370
+ for (const pred of predecessors) {
371
+ for (const succ of successors) {
372
+ addEdge(dag, pred, succ);
373
+ }
374
+ }
297
375
  }
298
376
  else {
299
- high = mid;
377
+ // Redirect edges to/from each member system
378
+ for (const pred of predecessors) {
379
+ for (let k = 0; k < meta.systems.length; k++) {
380
+ addEdge(dag, pred, meta.systems[k]);
381
+ }
382
+ }
383
+ for (const succ of successors) {
384
+ for (let k = 0; k < meta.systems.length; k++) {
385
+ addEdge(dag, meta.systems[k], succ);
386
+ }
387
+ }
300
388
  }
389
+ removeDagNode(dag, label);
301
390
  }
302
- queue.splice(low, 0, name);
391
+ // Sort with registration-index comparator for determinism
392
+ let result;
393
+ try {
394
+ result = topologicalSort(dag, (a, b) => {
395
+ return scheduleSystems.get(a).index - scheduleSystems.get(b).index;
396
+ });
397
+ }
398
+ catch (err) {
399
+ throw new InvalidState({
400
+ message: `Circular dependency in schedule "${scheduleLabel}": ${err instanceof Error ? err.message : String(err)}`,
401
+ });
402
+ }
403
+ world.schedules.byId.set(scheduleLabel, result);
303
404
  }
304
405
  /**
305
406
  * Rebuilds all schedules in the pipeline plus Startup and Shutdown.
@@ -327,22 +428,28 @@ async function executeSchedule(world, scheduleLabel) {
327
428
  }
328
429
  // Track execution context for systems that need to know their environment
329
430
  world.execution.scheduleLabel = scheduleLabel;
431
+ const scheduleStart = performance.now();
432
+ fireObserverEvent(world, "scheduleStarted", scheduleLabel);
330
433
  try {
331
434
  for (const systemId of order) {
332
435
  world.execution.tick++;
333
436
  world.execution.systemId = systemId;
437
+ const systemStart = performance.now();
438
+ fireObserverEvent(world, "systemStarted", systemId, scheduleLabel);
334
439
  const meta = world.systems.byId.get(systemId);
335
440
  const result = meta.runner(world);
336
441
  // Await async systems, sync systems pass through unchanged
337
442
  if (result instanceof Promise) {
338
443
  await result;
339
444
  }
445
+ fireObserverEvent(world, "systemFinished", systemId, scheduleLabel, performance.now() - systemStart);
340
446
  }
341
447
  }
342
448
  finally {
343
449
  world.execution.tick++;
344
450
  world.execution.scheduleLabel = null;
345
451
  world.execution.systemId = null;
452
+ fireObserverEvent(world, "scheduleFinished", scheduleLabel, performance.now() - scheduleStart);
346
453
  }
347
454
  }
348
455
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoBzC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAqB,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AA2F3C,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,MAAoC,EAAE,OAAuB;IACnG,IAAI,MAAoB,CAAC;IACzB,IAAI,IAAY,CAAC;IAEjB,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC;QAChB,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,sCAAsC,EAAE,CAAC,CAAC;IAC5G,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,uEAAuE;IACvE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAE7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAC3B,MAAM;QACN,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,MAAM;QACrC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;QAChC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAC5D,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAkC;IAC3E,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,MAAoC;IAC3D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,iBAAiB,IAAI,MAAM,CAAC;AACtF,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,QAAuB,EAAE,MAAqB;IAC/F,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAExF,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY,EAAE,QAAuB,EAAE,MAAqB;IAC9F,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxF,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAY,EAAE,aAA4B;IAC/D,4CAA4C;IAC5C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEtD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACpC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAE5C,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,uDAAuD;IACvD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,IAAI,IAAI,oCAAoC,aAAa,GAAG;iBACtE,CAAC,CAAC;YACL,CAAC;YAED,oDAAoD;YACpD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,IAAI,IAAI,mCAAmC,aAAa,GAAG;iBACrE,CAAC,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErB,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,GAAG,CAAC,CAAC;YAC/C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEnC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,oCAAoC,aAAa,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACrH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAe,EAAE,IAAY,EAAE,OAAgC;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC;IACvC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAExB,+CAA+C;IAC/C,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,CAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;YAC5C,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAY;IACnC,uCAAuC;IACvC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE/B,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,KAAY,EAAE,aAA4B;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;IAE9C,IAAI,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElC,2DAA2D;YAC3D,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;QACrC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;IAClC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAY;IACxC,6CAA6C;IAC7C,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,sCAAsC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,+BAA+B;IAC/B,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,GAAG,CAAC,KAAY;IAC9B,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAY;IACjC,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,IAAI,EAAE;QAC3D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;YAChC,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC5B,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAY;IACrC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IAEhC,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACvC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChD,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;QACnC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -4,6 +4,42 @@
4
4
  * Union of all typed array constructors that can be used for numeric storage.
5
5
  */
6
6
  export type TypedArrayConstructor = Int8ArrayConstructor | Int16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor;
7
+ /**
8
+ * Maps a numeric size to a fixed-length tuple type.
9
+ *
10
+ * @internal
11
+ */
12
+ type VectorTupleMap<T> = {
13
+ 2: [T, T];
14
+ 3: [T, T, T];
15
+ 4: [T, T, T, T];
16
+ 5: [T, T, T, T, T];
17
+ 6: [T, T, T, T, T, T];
18
+ 7: [T, T, T, T, T, T, T];
19
+ 8: [T, T, T, T, T, T, T, T];
20
+ 9: [T, T, T, T, T, T, T, T, T];
21
+ 10: [T, T, T, T, T, T, T, T, T, T];
22
+ 11: [T, T, T, T, T, T, T, T, T, T, T];
23
+ 12: [T, T, T, T, T, T, T, T, T, T, T, T];
24
+ 13: [T, T, T, T, T, T, T, T, T, T, T, T, T];
25
+ 14: [T, T, T, T, T, T, T, T, T, T, T, T, T, T];
26
+ 15: [T, T, T, T, T, T, T, T, T, T, T, T, T, T, T];
27
+ 16: [T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T];
28
+ };
29
+ /**
30
+ * Valid vector sizes (2-16).
31
+ *
32
+ * @internal
33
+ */
34
+ type VectorSize = keyof VectorTupleMap<unknown>;
35
+ /**
36
+ * Fixed-length tuple type for vector schemas.
37
+ *
38
+ * Maps a base type and numeric size to a tuple: `VectorTuple<number, 3>` becomes `[number, number, number]`.
39
+ */
40
+ export type VectorTuple<T, N extends VectorSize> = VectorTupleMap<T>[N];
41
+ /** @internal */
42
+ declare const VECTOR_SCHEMA_BRAND: unique symbol;
7
43
  /**
8
44
  * Type descriptor for columnar storage.
9
45
  *
@@ -19,61 +55,64 @@ export type TypedArrayConstructor = Int8ArrayConstructor | Int16ArrayConstructor
19
55
  * ```
20
56
  */
21
57
  export type Schema<T = unknown> = {
22
- kind: "typed" | "primitive" | "generic";
58
+ kind: "typed" | "primitive" | "generic" | "vector";
23
59
  arrayConstructor: TypedArrayConstructor | ArrayConstructor;
24
60
  typeName: string;
61
+ stride?: number;
25
62
  __type?: T;
26
63
  };
64
+ /**
65
+ * Schema for interleaved vector storage (e.g. `Type.f32(3)`).
66
+ *
67
+ * Carries a phantom brand so `ScalarFields`/`VectorFields` can discriminate
68
+ * vector schemas from plain schemas at the type level without inspecting the
69
+ * inferred value type.
70
+ *
71
+ * @internal
72
+ */
73
+ export type VectorSchema<T = unknown> = Schema<T> & {
74
+ readonly [VECTOR_SCHEMA_BRAND]: true;
75
+ };
76
+ /**
77
+ * Overloaded numeric type factory.
78
+ *
79
+ * Returns a scalar `Schema<number>` when called without arguments, or a vector
80
+ * `Schema<VectorTuple<number, N>>` when called with a size (2-16).
81
+ *
82
+ * @internal
83
+ */
84
+ type NumericFactory = {
85
+ (): Schema<number>;
86
+ <N extends VectorSize>(size: N): VectorSchema<VectorTuple<number, N>>;
87
+ };
27
88
  /**
28
89
  * Schema factory namespace for defining component storage types.
29
90
  *
30
91
  * Provides constructors for typed arrays (i8, f32, etc.), primitives (bool, string),
31
- * and generic objects. Use these to define component schemas.
92
+ * and generic objects. Numeric factories accept an optional size parameter for
93
+ * interleaved vector storage.
32
94
  *
33
95
  * @example
34
96
  * ```typescript
35
- * const Position = { x: Type.f32(), y: Type.f32() };
36
- * const Health = { hp: Type.i32() };
97
+ * const Position = { value: Type.f32(2) }; // vec2
98
+ * const Color = { value: Type.u32(4) }; // vec4
99
+ * const Health = { hp: Type.i32() }; // scalar
37
100
  * const Name = { value: Type.string() };
38
101
  * ```
39
102
  */
40
103
  export declare const Type: {
41
- /**
42
- * 8-bit signed integer schema (Int8Array).
43
- *
44
- * @returns Schema for Int8Array storage
45
- */
46
- i8: () => Schema<number>;
47
- /**
48
- * 16-bit signed integer schema (Int16Array).
49
- *
50
- * @returns Schema for Int16Array storage
51
- */
52
- i16: () => Schema<number>;
53
- /**
54
- * 32-bit signed integer schema (Int32Array).
55
- *
56
- * @returns Schema for Int32Array storage
57
- */
58
- i32: () => Schema<number>;
59
- /**
60
- * 32-bit unsigned integer schema (Uint32Array).
61
- *
62
- * @returns Schema for Uint32Array storage
63
- */
64
- u32: () => Schema<number>;
65
- /**
66
- * 32-bit floating point schema (Float32Array).
67
- *
68
- * @returns Schema for Float32Array storage
69
- */
70
- f32: () => Schema<number>;
71
- /**
72
- * 64-bit floating point schema (Float64Array).
73
- *
74
- * @returns Schema for Float64Array storage
75
- */
76
- f64: () => Schema<number>;
104
+ /** 8-bit signed integer schema (Int8Array). Accepts optional vector size (2-16). */
105
+ i8: NumericFactory;
106
+ /** 16-bit signed integer schema (Int16Array). Accepts optional vector size (2-16). */
107
+ i16: NumericFactory;
108
+ /** 32-bit signed integer schema (Int32Array). Accepts optional vector size (2-16). */
109
+ i32: NumericFactory;
110
+ /** 32-bit unsigned integer schema (Uint32Array). Accepts optional vector size (2-16). */
111
+ u32: NumericFactory;
112
+ /** 32-bit floating point schema (Float32Array). Accepts optional vector size (2-16). */
113
+ f32: NumericFactory;
114
+ /** 64-bit floating point schema (Float64Array). Accepts optional vector size (2-16). */
115
+ f64: NumericFactory;
77
116
  /**
78
117
  * Boolean schema (Array<boolean>).
79
118
  *
@@ -100,6 +139,23 @@ export declare const Type: {
100
139
  * @template S - Schema type to infer from
101
140
  */
102
141
  export type InferSchema<S extends Schema> = S extends Schema<infer T> ? T : never;
142
+ /**
143
+ * Union of all typed array instance types.
144
+ */
145
+ export type TypedArrayInstance = InstanceType<TypedArrayConstructor>;
146
+ /**
147
+ * Extracts field names from a schema record where the field is stored with stride 1
148
+ * (scalars and object references -- anything that isn't an interleaved vector tuple).
149
+ */
150
+ export type ScalarFields<S extends SchemaRecord> = {
151
+ [K in keyof S]: S[K] extends VectorSchema ? never : K;
152
+ }[keyof S];
153
+ /**
154
+ * Extracts field names from a schema record where the field is a vector type (tuple).
155
+ */
156
+ export type VectorFields<S extends SchemaRecord> = {
157
+ [K in keyof S]: S[K] extends VectorSchema ? K : never;
158
+ }[keyof S];
103
159
  /**
104
160
  * Schema record for component fields.
105
161
  *
@@ -114,4 +170,5 @@ export type SchemaRecord = Record<string, Schema>;
114
170
  export type InferSchemaRecord<S extends SchemaRecord> = {
115
171
  [K in keyof S]: S[K] extends Schema<infer T> ? T : never;
116
172
  };
173
+ export {};
117
174
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI;IAChC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,qBAAqB,GAAG,gBAAgB,CAAC;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI;IACf;;;;OAIG;cACK,MAAM,CAAC,MAAM,CAAC;IAMtB;;;;OAIG;eACM,MAAM,CAAC,MAAM,CAAC;IAMvB;;;;OAIG;eACM,MAAM,CAAC,MAAM,CAAC;IAMvB;;;;OAIG;eACM,MAAM,CAAC,MAAM,CAAC;IAMvB;;;;OAIG;eACM,MAAM,CAAC,MAAM,CAAC;IAMvB;;;;OAIG;eACM,MAAM,CAAC,MAAM,CAAC;IAMvB;;;;OAIG;gBACO,MAAM,CAAC,OAAO,CAAC;IAMzB;;;;OAIG;kBACS,MAAM,CAAC,MAAM,CAAC;IAM1B;;;;;OAKG;aACM,CAAC,OAAK,MAAM,CAAC,CAAC,CAAC;CAKzB,CAAC;AAMF;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAMlF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,YAAY,IAAI;KACrD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACzD,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}