iris-ecs 0.0.9 → 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 (48) 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 +86 -4
  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 +8 -7
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -4
  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/query.d.ts +65 -5
  29. package/dist/query.d.ts.map +1 -1
  30. package/dist/query.js +34 -3
  31. package/dist/query.js.map +1 -1
  32. package/dist/resource.d.ts +62 -4
  33. package/dist/resource.d.ts.map +1 -1
  34. package/dist/resource.js +10 -1
  35. package/dist/resource.js.map +1 -1
  36. package/dist/scheduler.d.ts +119 -11
  37. package/dist/scheduler.d.ts.map +1 -1
  38. package/dist/scheduler.js +168 -68
  39. package/dist/scheduler.js.map +1 -1
  40. package/dist/schema.d.ts +97 -40
  41. package/dist/schema.d.ts.map +1 -1
  42. package/dist/schema.js +31 -69
  43. package/dist/schema.js.map +1 -1
  44. package/dist/world.d.ts +10 -1
  45. package/dist/world.d.ts.map +1 -1
  46. package/dist/world.js +3 -0
  47. package/dist/world.js.map +1 -1
  48. package/package.json +1 -1
package/dist/scheduler.js CHANGED
@@ -1,3 +1,4 @@
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";
3
4
  import { fireObserverEvent } from "./observer.js";
@@ -62,6 +63,70 @@ export const PostUpdate = defineSchedule("PostUpdate");
62
63
  */
63
64
  export const Last = defineSchedule("Last");
64
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
+ // ============================================================================
65
130
  // System Registration
66
131
  // ============================================================================
67
132
  /**
@@ -78,7 +143,7 @@ export const Last = defineSchedule("Last");
78
143
  * @example
79
144
  * ```typescript
80
145
  * addSystem(world, physicsSystem);
81
- * addSystem(world, renderSystem, { schedule: PostUpdate, after: "physicsSystem" });
146
+ * addSystem(world, renderSystem, { schedule: PostUpdate, after: physicsSystem });
82
147
  * addSystem(world, movementFactory); // SystemFactory from defineSystem()
83
148
  * ```
84
149
  */
@@ -96,16 +161,32 @@ export function addSystem(world, system, options) {
96
161
  }
97
162
  assert(name && name !== "anonymous", InvalidArgument, { expected: "named system function or name option" });
98
163
  assert(!world.systems.byId.has(name), Duplicate, { resource: "System", id: name });
99
- // 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
100
176
  const before = options?.before;
101
177
  const after = options?.after;
102
178
  world.systems.byId.set(name, {
103
179
  runner,
104
- schedule: options?.schedule ?? Update,
180
+ schedule,
105
181
  index: world.systems.nextIndex++,
106
- before: !before ? [] : Array.isArray(before) ? before : [before],
107
- 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,
108
185
  });
186
+ // Add system to set's member list
187
+ if (setLabel) {
188
+ world.systemSets.byId.get(setLabel).systems.push(name);
189
+ }
109
190
  world.schedules.dirty = true;
110
191
  }
111
192
  // ============================================================================
@@ -130,7 +211,7 @@ export function addSystem(world, system, options) {
130
211
  * ```typescript
131
212
  * const movementSystem = defineSystem("movementSystem", (world) => {
132
213
  * // Init: runs once at addSystem() time
133
- * const movers = cacheQuery(world, Position, Velocity);
214
+ * const movers = cacheQuery(world, [Position, Velocity]);
134
215
  *
135
216
  * // Tick: runs every frame
136
217
  * return () => {
@@ -200,107 +281,126 @@ export function insertScheduleAfter(world, schedule, anchor) {
200
281
  // Schedule Building (Internal)
201
282
  // ============================================================================
202
283
  /**
203
- * Builds an execution order from registered systems using topological sort.
204
- * 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
205
290
  */
206
291
  function buildSchedule(world, scheduleLabel) {
207
- // Filter systems belonging to this schedule
292
+ // Collect systems belonging to this schedule
208
293
  const scheduleSystems = new Map();
209
294
  for (const [name, meta] of world.systems.byId) {
210
295
  if (meta.schedule === scheduleLabel) {
211
296
  scheduleSystems.set(name, meta);
212
297
  }
213
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
+ }
214
306
  if (scheduleSystems.size === 0) {
215
307
  world.schedules.byId.set(scheduleLabel, []);
216
308
  return;
217
309
  }
218
- // Build dependency graph for Kahn's algorithm
219
- const adjacency = new Map();
220
- const inDegree = new Map();
310
+ // Build DAG with system and set nodes
311
+ const dag = createDag();
221
312
  for (const name of scheduleSystems.keys()) {
222
- adjacency.set(name, []);
223
- inDegree.set(name, 0);
313
+ addNode(dag, name);
314
+ }
315
+ for (const label of scheduleSets.keys()) {
316
+ addNode(dag, label);
224
317
  }
225
- // Convert before/after constraints into directed edges
318
+ // Add system constraint edges
226
319
  for (const [name, meta] of scheduleSystems) {
227
320
  for (const beforeName of meta.before) {
228
- if (!scheduleSystems.has(beforeName)) {
321
+ if (!scheduleSystems.has(beforeName) && !scheduleSets.has(beforeName)) {
229
322
  throw new NotFound({
230
- resource: "System",
323
+ resource: "System or SystemSet",
231
324
  id: beforeName,
232
325
  context: `"${name}" before constraint in schedule "${scheduleLabel}"`,
233
326
  });
234
327
  }
235
- // "A before B" means edge A -> B (A must run first)
236
- adjacency.get(name).push(beforeName);
237
- inDegree.set(beforeName, inDegree.get(beforeName) + 1);
328
+ addEdge(dag, name, beforeName);
238
329
  }
239
330
  for (const afterName of meta.after) {
240
- if (!scheduleSystems.has(afterName)) {
331
+ if (!scheduleSystems.has(afterName) && !scheduleSets.has(afterName)) {
241
332
  throw new NotFound({
242
- resource: "System",
333
+ resource: "System or SystemSet",
243
334
  id: afterName,
244
335
  context: `"${name}" after constraint in schedule "${scheduleLabel}"`,
245
336
  });
246
337
  }
247
- // "A after B" means edge B -> A (B must run first)
248
- adjacency.get(afterName).push(name);
249
- inDegree.set(name, inDegree.get(name) + 1);
250
- }
251
- }
252
- // Initialize queue with systems having no dependencies
253
- const queue = [];
254
- for (const [name, degree] of inDegree) {
255
- if (degree === 0) {
256
- insertSorted(queue, name, scheduleSystems);
338
+ addEdge(dag, afterName, name);
257
339
  }
258
340
  }
259
- // Process queue, maintaining sorted order by registration index
260
- const result = [];
261
- while (queue.length > 0) {
262
- const current = queue.shift();
263
- result.push(current);
264
- for (const dependent of adjacency.get(current)) {
265
- const newDegree = inDegree.get(dependent) - 1;
266
- inDegree.set(dependent, newDegree);
267
- if (newDegree === 0) {
268
- 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
+ });
269
350
  }
351
+ addEdge(dag, label, beforeName);
270
352
  }
271
- }
272
- // Detect circular dependencies (remaining systems with non-zero in-degree)
273
- if (result.length !== scheduleSystems.size) {
274
- const remaining = [];
275
- for (const [name, degree] of inDegree) {
276
- if (degree > 0) {
277
- 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
+ });
278
360
  }
361
+ addEdge(dag, afterName, label);
279
362
  }
280
- throw new InvalidState({ message: `Circular dependency in schedule "${scheduleLabel}": ${remaining.join(", ")}` });
281
363
  }
282
- world.schedules.byId.set(scheduleLabel, result);
283
- }
284
- /**
285
- * Inserts a system name into the queue maintaining sorted order by registration index.
286
- * Uses binary search for O(log n) insertion position lookup.
287
- * This ensures deterministic ordering when multiple systems have no dependency constraints.
288
- */
289
- function insertSorted(queue, name, systems) {
290
- const index = systems.get(name).index;
291
- let low = 0;
292
- let high = queue.length;
293
- // Binary search for correct insertion position
294
- while (low < high) {
295
- const mid = (low + high) >>> 1;
296
- if (systems.get(queue[mid]).index < index) {
297
- 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
+ }
298
375
  }
299
376
  else {
300
- 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
+ }
301
388
  }
389
+ removeDagNode(dag, label);
302
390
  }
303
- 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);
304
404
  }
305
405
  /**
306
406
  * Rebuilds all schedules in the pipeline plus Startup and Shutdown.
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
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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"}