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.
- package/README.md +250 -61
- package/dist/archetype.d.ts +18 -1
- package/dist/archetype.d.ts.map +1 -1
- package/dist/archetype.js +60 -15
- package/dist/archetype.js.map +1 -1
- package/dist/component.d.ts +106 -7
- package/dist/component.d.ts.map +1 -1
- package/dist/component.js +88 -6
- package/dist/component.js.map +1 -1
- package/dist/directed-acyclic-graph.d.ts +123 -0
- package/dist/directed-acyclic-graph.d.ts.map +1 -0
- package/dist/directed-acyclic-graph.js +235 -0
- package/dist/directed-acyclic-graph.js.map +1 -0
- package/dist/entity.d.ts +18 -0
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +5 -15
- package/dist/entity.js.map +1 -1
- package/dist/error.d.ts +2 -2
- package/dist/error.js +2 -2
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/name.d.ts +2 -2
- package/dist/name.d.ts.map +1 -1
- package/dist/name.js +3 -3
- package/dist/name.js.map +1 -1
- package/dist/observer.d.ts +5 -0
- package/dist/observer.d.ts.map +1 -1
- package/dist/observer.js.map +1 -1
- package/dist/query.d.ts +65 -5
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +34 -3
- package/dist/query.js.map +1 -1
- package/dist/resource.d.ts +62 -4
- package/dist/resource.d.ts.map +1 -1
- package/dist/resource.js +10 -1
- package/dist/resource.js.map +1 -1
- package/dist/scheduler.d.ts +119 -11
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +175 -68
- package/dist/scheduler.js.map +1 -1
- package/dist/schema.d.ts +97 -40
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +31 -69
- package/dist/schema.js.map +1 -1
- package/dist/world.d.ts +10 -1
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +7 -0
- package/dist/world.js.map +1 -1
- 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:
|
|
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
|
-
|
|
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
|
|
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
|
|
203
|
-
*
|
|
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
|
-
//
|
|
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
|
|
218
|
-
const
|
|
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
|
-
|
|
222
|
-
|
|
313
|
+
addNode(dag, name);
|
|
314
|
+
}
|
|
315
|
+
for (const label of scheduleSets.keys()) {
|
|
316
|
+
addNode(dag, label);
|
|
223
317
|
}
|
|
224
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
259
|
-
const
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
// ============================================================================
|
package/dist/scheduler.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,IAAI,aAAa,EAC3B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAoBlD,+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;AAqL3C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAsB,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,GAAmB,EAAE,OAA0B;IACxF,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QAC7B,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,MAAM;QACrC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxG,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnG,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,GAAoB;IAC5C,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,+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,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,CAAC;IAE9B,sBAAsB;IACtB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE;YACpD,QAAQ,EAAE,WAAW;YACrB,EAAE,EAAE,QAAQ;YACZ,OAAO,EAAE,IAAI,IAAI,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC;IAE1G,+CAA+C;IAC/C,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;QACR,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,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxG,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnG,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IAEH,kCAAkC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,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;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,KAAY,EAAE,aAA4B;IAC/D,6CAA6C;IAC7C,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,0CAA0C;IAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEtD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACpC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,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;QAC5C,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,MAAM,GAAG,GAAG,SAAS,EAAU,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,8BAA8B;IAC9B,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,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,qBAAqB;oBAC/B,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,IAAI,IAAI,oCAAoC,aAAa,GAAG;iBACtE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,qBAAqB;oBAC/B,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,IAAI,IAAI,mCAAmC,aAAa,GAAG;iBACrE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACzC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,qBAAqB;oBAC/B,EAAE,EAAE,UAAU;oBACd,OAAO,EAAE,IAAI,KAAK,oCAAoC,aAAa,GAAG;iBACvE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,QAAQ,CAAC;oBACjB,QAAQ,EAAE,qBAAqB;oBAC/B,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,IAAI,KAAK,mCAAmC,aAAa,GAAG;iBACtE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,sDAAsD;YACtD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,0DAA0D;IAC1D,IAAI,MAAgB,CAAC;IAErB,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,YAAY,CAAC;YACrB,OAAO,EAAE,oCAAoC,aAAa,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACnH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAClD,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,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACxC,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAE3D,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;YAEpC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACtC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAEnE,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;YAED,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;QACvG,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;QAEhC,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC;IACjG,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"}
|
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.
|
|
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 = {
|
|
36
|
-
* const
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|