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/archetype.js CHANGED
@@ -15,10 +15,27 @@ const TICK_SCHEMA = Type.u32();
15
15
  // ============================================================================
16
16
  // Column Utilities
17
17
  // ============================================================================
18
+ /**
19
+ * Derives the stride of a column from its length and the archetype capacity.
20
+ * Scalar columns return 1, vector columns return their stride (e.g., 2 for vec2).
21
+ *
22
+ * @internal
23
+ */
24
+ export function getColumnStride(column, capacity) {
25
+ if (Array.isArray(column)) {
26
+ return 1;
27
+ }
28
+ return column.length / capacity;
29
+ }
18
30
  /**
19
31
  * Allocates a column based on schema type (TypedArray for primitives, Array for objects).
20
32
  */
21
33
  function allocateColumn(schema, capacity) {
34
+ // Vector columns interleave all elements per entity: [x0,y0,x1,y1,...] for stride 2
35
+ if (schema.kind === "vector") {
36
+ const TypedArrayCtor = schema.arrayConstructor;
37
+ return new TypedArrayCtor(capacity * schema.stride);
38
+ }
22
39
  if (schema.kind === "typed") {
23
40
  const TypedArrayCtor = schema.arrayConstructor;
24
41
  return new TypedArrayCtor(capacity);
@@ -28,25 +45,28 @@ function allocateColumn(schema, capacity) {
28
45
  /**
29
46
  * Resizes a column to new capacity, preserving existing data. Regular arrays need no resize.
30
47
  */
31
- function resizeColumn(column, newCapacity) {
48
+ function resizeColumn(column, oldCapacity, newCapacity) {
32
49
  if (Array.isArray(column)) {
33
50
  return column;
34
51
  }
52
+ const stride = getColumnStride(column, oldCapacity);
35
53
  const TypedArrayCtor = column.constructor;
36
- const newColumn = new TypedArrayCtor(newCapacity);
37
- const copyLength = Math.min(column.length, newCapacity);
38
- newColumn.set(column.subarray(0, copyLength));
54
+ const newColumn = new TypedArrayCtor(newCapacity * stride);
55
+ newColumn.set(column.subarray(0, column.length));
39
56
  return newColumn;
40
57
  }
41
58
  /**
42
59
  * Clears a column slot (undefined for arrays, 0 for typed arrays).
43
60
  */
44
- function clearColumn(column, index) {
61
+ function clearColumn(column, index, capacity) {
45
62
  if (Array.isArray(column)) {
46
63
  column[index] = undefined;
64
+ return;
47
65
  }
48
- else {
49
- column[index] = 0;
66
+ const stride = getColumnStride(column, capacity);
67
+ const offset = index * stride;
68
+ for (let s = 0; s < stride; s++) {
69
+ column[offset + s] = 0;
50
70
  }
51
71
  }
52
72
  // ============================================================================
@@ -166,12 +186,12 @@ function ensureArchetypeCapacity(archetype, requiredCapacity) {
166
186
  }
167
187
  for (const fieldColumns of archetype.columns.values()) {
168
188
  for (const fieldName in fieldColumns) {
169
- fieldColumns[fieldName] = resizeColumn(fieldColumns[fieldName], newCapacity);
189
+ fieldColumns[fieldName] = resizeColumn(fieldColumns[fieldName], archetype.capacity, newCapacity);
170
190
  }
171
191
  }
172
192
  for (const componentTicks of archetype.ticks.values()) {
173
- componentTicks.added = resizeColumn(componentTicks.added, newCapacity);
174
- componentTicks.changed = resizeColumn(componentTicks.changed, newCapacity);
193
+ componentTicks.added = resizeColumn(componentTicks.added, archetype.capacity, newCapacity);
194
+ componentTicks.changed = resizeColumn(componentTicks.changed, archetype.capacity, newCapacity);
175
195
  }
176
196
  archetype.capacity = newCapacity;
177
197
  }
@@ -223,7 +243,19 @@ export function removeEntityFromArchetypeByRow(archetype, row) {
223
243
  archetype.entities[row] = swappedEntityId;
224
244
  for (const fieldColumns of archetype.columns.values()) {
225
245
  for (const fieldName in fieldColumns) {
226
- fieldColumns[fieldName][row] = fieldColumns[fieldName][lastIdx];
246
+ const column = fieldColumns[fieldName];
247
+ // Vector columns store `stride` contiguous elements per entity
248
+ const stride = getColumnStride(column, archetype.capacity);
249
+ if (stride === 1) {
250
+ column[row] = column[lastIdx];
251
+ }
252
+ else {
253
+ const src = lastIdx * stride;
254
+ const dst = row * stride;
255
+ for (let s = 0; s < stride; s++) {
256
+ column[dst + s] = column[src + s];
257
+ }
258
+ }
227
259
  }
228
260
  }
229
261
  for (const componentTicks of archetype.ticks.values()) {
@@ -234,12 +266,12 @@ export function removeEntityFromArchetypeByRow(archetype, row) {
234
266
  archetype.entities.pop();
235
267
  for (const fieldColumns of archetype.columns.values()) {
236
268
  for (const fieldName in fieldColumns) {
237
- clearColumn(fieldColumns[fieldName], lastIdx);
269
+ clearColumn(fieldColumns[fieldName], lastIdx, archetype.capacity);
238
270
  }
239
271
  }
240
272
  for (const componentTicks of archetype.ticks.values()) {
241
- clearColumn(componentTicks.added, lastIdx);
242
- clearColumn(componentTicks.changed, lastIdx);
273
+ clearColumn(componentTicks.added, lastIdx, archetype.capacity);
274
+ clearColumn(componentTicks.changed, lastIdx, archetype.capacity);
243
275
  }
244
276
  return swappedEntityId;
245
277
  }
@@ -270,7 +302,20 @@ export function transferEntityToArchetypeByRow(fromArchetype, fromRow, toArchety
270
302
  if (!destFieldColumns || !sourceFieldColumns)
271
303
  continue;
272
304
  for (const fieldName in destFieldColumns) {
273
- destFieldColumns[fieldName][toRow] = sourceFieldColumns[fieldName][fromRow];
305
+ const destCol = destFieldColumns[fieldName];
306
+ const srcCol = sourceFieldColumns[fieldName];
307
+ // Vector columns: copy all `stride` elements per entity
308
+ const stride = getColumnStride(destCol, toArchetype.capacity);
309
+ if (stride === 1) {
310
+ destCol[toRow] = srcCol[fromRow];
311
+ }
312
+ else {
313
+ const dstOffset = toRow * stride;
314
+ const srcOffset = fromRow * stride;
315
+ for (let s = 0; s < stride; s++) {
316
+ destCol[dstOffset + s] = srcCol[srcOffset + s];
317
+ }
318
+ }
274
319
  }
275
320
  }
276
321
  for (const componentId of toArchetype.types) {
@@ -1 +1 @@
1
- {"version":3,"file":"archetype.js","sourceRoot":"","sources":["../src/archetype.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archetype.js","sourceRoot":"","sources":["../src/archetype.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,44 @@
1
1
  import type { Component, Entity, EntityId, EntityWith, Pair, Relation, Tag } from "./encoding.js";
2
- import type { InferSchema, InferSchemaRecord, SchemaRecord } from "./schema.js";
2
+ import type { InferSchema, InferSchemaRecord, ScalarFields, SchemaRecord, TypedArrayInstance, VectorFields } from "./schema.js";
3
3
  import type { World } from "./world.js";
4
4
  export declare function addComponent(world: World, entityId: EntityId, componentId: Entity | Tag | Pair<Relation<Record<string, never>>>): void;
5
5
  export declare function addComponent<S extends SchemaRecord>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, data: InferSchemaRecord<S>): void;
6
+ /**
7
+ * Entry for batch component operations.
8
+ *
9
+ * Either a standalone ID (tag, entity, schema-less pair) or a `[component, data]` tuple
10
+ * for data components and pairs with schemas.
11
+ */
12
+ export type ComponentEntry = EntityId | readonly [EntityId, Record<string, unknown>];
13
+ /**
14
+ * Validates each entry in a component entries tuple at compile time.
15
+ *
16
+ * Data components and pairs with schemas require matching typed data.
17
+ * Tags, entities, and schema-less pairs pass through unchanged.
18
+ */
19
+ export type ValidateEntries<T extends readonly ComponentEntry[]> = {
20
+ [I in keyof T]: T[I] extends readonly [infer C, unknown] ? C extends Component<infer S> ? readonly [C, InferSchemaRecord<S>] : C extends Pair<Relation<infer S>> ? S extends Record<string, never> ? C : readonly [C, InferSchemaRecord<S>] : C extends Entity | Tag ? C : T[I] : T[I] extends Component<infer S> ? readonly [T[I], InferSchemaRecord<S>] : T[I] extends Pair<Relation<infer S>> ? S extends Record<string, never> ? T[I] : readonly [T[I], InferSchemaRecord<S>] : T[I];
21
+ };
22
+ /**
23
+ * Add multiple components to an entity in one call.
24
+ *
25
+ * Each entry is either a standalone ID (tag/entity/schema-less pair) or a
26
+ * `[component, data]` tuple for data components and pairs with schemas.
27
+ *
28
+ * @param world - World instance
29
+ * @param entityId - Entity to modify
30
+ * @param entries - Array of component entries
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * addComponents(world, entity, [
35
+ * [Position, { x: 0, y: 0 }],
36
+ * [Velocity, { vx: 1, vy: 0 }],
37
+ * Player,
38
+ * ]);
39
+ * ```
40
+ */
41
+ export declare function addComponents<const T extends readonly ComponentEntry[]>(world: World, entityId: EntityId, entries: T & ValidateEntries<T>): void;
6
42
  /**
7
43
  * Remove component from entity.
8
44
  *
@@ -51,9 +87,9 @@ export declare function hasComponent<C extends EntityId>(world: World, entityId:
51
87
  * const x = getComponentValue(world, entity, Position, 'x');
52
88
  * ```
53
89
  */
54
- export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends keyof S>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): InferSchema<S[K]>;
55
- export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends keyof S>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K): InferSchema<S[K]>;
56
- export declare function getComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K): InferSchema<S[K]> | undefined;
90
+ export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): InferSchema<S[K]>;
91
+ export declare function getComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K): InferSchema<S[K]>;
92
+ export declare function getComponentValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K): InferSchema<S[K]> | undefined;
57
93
  /**
58
94
  * Set component field value.
59
95
  *
@@ -69,9 +105,9 @@ export declare function getComponentValue<S extends SchemaRecord, K extends keyo
69
105
  * setComponentValue(world, entity, Position, 'x', 10.0);
70
106
  * ```
71
107
  */
72
- export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends keyof S>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K, value: InferSchema<S[K]>): void;
73
- export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends keyof S>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K, value: InferSchema<S[K]>): void;
74
- export declare function setComponentValue<S extends SchemaRecord, K extends keyof S>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K, value: InferSchema<S[K]>): void;
108
+ export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K, value: InferSchema<S[K]>): void;
109
+ export declare function setComponentValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, entityId: EntityWith<Pair<Relation<S, N>>>, componentId: Pair<Relation<S, N>>, fieldName: K, value: InferSchema<S[K]>): void;
110
+ export declare function setComponentValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, entityId: EntityId, componentId: Component<S> | Pair<Relation<S>>, fieldName: K, value: InferSchema<S[K]>): void;
75
111
  /**
76
112
  * Mark a component as changed without setting a value.
77
113
  *
@@ -83,6 +119,69 @@ export declare function setComponentValue<S extends SchemaRecord, K extends keyo
83
119
  * markComponentChanged(world, entity, Position); // Notify change tracking
84
120
  */
85
121
  export declare function emitComponentChanged(world: World, entityId: EntityId, componentId: EntityId): void;
122
+ /**
123
+ * Get vector component field value as a tuple copy.
124
+ *
125
+ * Returns a new array containing the vector elements. Mutations to the
126
+ * returned array do not affect the stored data.
127
+ *
128
+ * @param world - World instance
129
+ * @param entityId - Entity to query
130
+ * @param componentId - Data component with vector field
131
+ * @param fieldName - Vector field name
132
+ * @returns Tuple copy of vector value, or undefined if component/field not present
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const Position = defineComponent("Position", { value: Type.f32(2) });
137
+ * const pos = getComponentVectorValue(world, entity, Position, "value"); // [number, number]
138
+ * ```
139
+ */
140
+ export declare function getComponentVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): InferSchema<S[K]>;
141
+ export declare function getComponentVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K): InferSchema<S[K]> | undefined;
142
+ /**
143
+ * Set vector component field value from a tuple.
144
+ *
145
+ * Copies the tuple elements into the interleaved column. Updates change
146
+ * detection tick and fires componentChanged observer.
147
+ *
148
+ * @param world - World instance
149
+ * @param entityId - Entity to modify
150
+ * @param componentId - Data component with vector field
151
+ * @param fieldName - Vector field name
152
+ * @param value - Tuple of values to set
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * const Position = defineComponent("Position", { value: Type.f32(2) });
157
+ * setComponentVectorValue(world, entity, Position, "value", [10, 20]);
158
+ * ```
159
+ */
160
+ export declare function setComponentVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K, value: InferSchema<S[K]>): void;
161
+ export declare function setComponentVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K, value: InferSchema<S[K]>): void;
162
+ /**
163
+ * Get a zero-copy typed array view into a vector component field.
164
+ *
165
+ * Returns a `subarray` view that shares the underlying buffer. Mutations
166
+ * to the view directly modify the stored data. **The view is invalidated
167
+ * if the archetype resizes** (e.g., when new entities cause capacity growth).
168
+ * Use within a system tick; do not cache across frames.
169
+ *
170
+ * @param world - World instance
171
+ * @param entityId - Entity to query
172
+ * @param componentId - Data component with vector field
173
+ * @param fieldName - Vector field name
174
+ * @returns Typed array view into the vector, or undefined if component/field not present
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * const Position = defineComponent("Position", { value: Type.f32(2) });
179
+ * const view = getComponentVectorView(world, entity, Position, "value"); // Float32Array
180
+ * view[0] += 1.0; // direct mutation, no copy
181
+ * ```
182
+ */
183
+ export declare function getComponentVectorView<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, entityId: EntityWith<Component<S, N>>, componentId: Component<S, N>, fieldName: K): TypedArrayInstance;
184
+ export declare function getComponentVectorView<S extends SchemaRecord, K extends VectorFields<S>>(world: World, entityId: EntityId, componentId: Component<S>, fieldName: K): TypedArrayInstance | undefined;
86
185
  /**
87
186
  * Remove component from all entities that have it.
88
187
  *
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
package/dist/component.js CHANGED
@@ -1,4 +1,4 @@
1
- import { archetypeTraverseAdd, archetypeTraverseRemove, destroyArchetype } from "./archetype.js";
1
+ import { archetypeTraverseAdd, archetypeTraverseRemove, destroyArchetype, getColumnStride } from "./archetype.js";
2
2
  import { encodePair, isPair } from "./encoding.js";
3
3
  import { ensureEntity, moveEntityToArchetype } from "./entity.js";
4
4
  import { fireObserverEvent } from "./observer.js";
@@ -49,15 +49,50 @@ export function addComponent(world, entityId, componentId, data) {
49
49
  toArchetype = archetypeTraverseAdd(world, toArchetype, encodePair(relation, Wildcard));
50
50
  }
51
51
  moveEntityToArchetype(world, entityMeta, toArchetype);
52
+ // Write initial field data inline to avoid repeated ensureEntity lookups
53
+ // and support stride-aware writes for vector fields
52
54
  if (data) {
53
- for (const fieldName in data) {
54
- const value = data[fieldName];
55
- setComponentValue(world, entityId, componentId, fieldName, value);
55
+ const fieldColumns = entityMeta.archetype.columns.get(componentId);
56
+ if (fieldColumns) {
57
+ for (const fieldName in data) {
58
+ const value = data[fieldName];
59
+ const column = fieldColumns[fieldName];
60
+ if (!column) {
61
+ continue;
62
+ }
63
+ const stride = getColumnStride(column, entityMeta.archetype.capacity);
64
+ if (stride === 1) {
65
+ column[entityMeta.row] = value;
66
+ }
67
+ else {
68
+ const offset = entityMeta.row * stride;
69
+ for (let i = 0; i < stride; i++) {
70
+ column[offset + i] = value[i];
71
+ }
72
+ }
73
+ }
74
+ const ticks = entityMeta.archetype.ticks.get(componentId);
75
+ if (ticks) {
76
+ ticks.changed[entityMeta.row] = world.execution.tick;
77
+ }
78
+ fireObserverEvent(world, "componentChanged", componentId, entityId);
56
79
  }
57
80
  }
58
81
  // Fire after move so observers can access component data
59
82
  fireObserverEvent(world, "componentAdded", componentId, entityId);
60
83
  }
84
+ export function addComponents(world, entityId, entries) {
85
+ for (let i = 0; i < entries.length; i++) {
86
+ const entry = entries[i];
87
+ if (typeof entry === "number") {
88
+ addComponent(world, entityId, entry);
89
+ }
90
+ else {
91
+ const [componentId, data] = entry;
92
+ addComponent(world, entityId, componentId, data);
93
+ }
94
+ }
95
+ }
61
96
  /**
62
97
  * Remove component from entity.
63
98
  *
@@ -181,6 +216,53 @@ export function emitComponentChanged(world, entityId, componentId) {
181
216
  }
182
217
  fireObserverEvent(world, "componentChanged", componentId, entityId);
183
218
  }
219
+ export function getComponentVectorValue(world, entityId, componentId, fieldName) {
220
+ const { archetype, row } = ensureEntity(world, entityId);
221
+ const fieldColumns = archetype.columns.get(componentId);
222
+ if (!fieldColumns)
223
+ return;
224
+ const column = fieldColumns[fieldName];
225
+ if (!column)
226
+ return;
227
+ const stride = getColumnStride(column, archetype.capacity);
228
+ const offset = row * stride;
229
+ const result = [];
230
+ for (let i = 0; i < stride; i++) {
231
+ result[i] = column[offset + i];
232
+ }
233
+ return result;
234
+ }
235
+ export function setComponentVectorValue(world, entityId, componentId, fieldName, value) {
236
+ const { archetype, row } = ensureEntity(world, entityId);
237
+ const fieldColumns = archetype.columns.get(componentId);
238
+ if (!fieldColumns)
239
+ return;
240
+ const column = fieldColumns[fieldName];
241
+ if (!column)
242
+ return;
243
+ const stride = getColumnStride(column, archetype.capacity);
244
+ const offset = row * stride;
245
+ for (let i = 0; i < stride; i++) {
246
+ column[offset + i] = value[i];
247
+ }
248
+ const ticks = archetype.ticks.get(componentId);
249
+ if (ticks) {
250
+ ticks.changed[row] = world.execution.tick;
251
+ }
252
+ fireObserverEvent(world, "componentChanged", componentId, entityId);
253
+ }
254
+ export function getComponentVectorView(world, entityId, componentId, fieldName) {
255
+ const { archetype, row } = ensureEntity(world, entityId);
256
+ const fieldColumns = archetype.columns.get(componentId);
257
+ if (!fieldColumns)
258
+ return;
259
+ const column = fieldColumns[fieldName];
260
+ if (!column || Array.isArray(column))
261
+ return;
262
+ const stride = getColumnStride(column, archetype.capacity);
263
+ const offset = row * stride;
264
+ return column.subarray(offset, offset + stride);
265
+ }
184
266
  // ============================================================================
185
267
  // Component Cleanup
186
268
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA4BnF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,QAAkB,EAClB,WAAqB,EACrB,IAA2B;IAE3B,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEjD,oCAAoC;IACpC,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEjE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAEpC,wBAAwB;IACxB,IAAI,WAAW,GAAG,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEzF,6FAA6F;IAC7F,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE9C,WAAW,GAAG,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACrF,WAAW,GAAG,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAEtD,yEAAyE;IACzE,oDAAoD;IACpD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEnE,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;gBAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,SAAS;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAEtE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC;oBAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAChC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAI,KAAkB,CAAC,CAAC,CAAE,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YACvD,CAAC;YAED,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAiED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,QAAkB,EAAE,OAAkC;IAChG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAA6D,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAElC,YAAY,CACV,KAAK,EACL,QAAQ,EACR,WAAqE,EACrE,IAAuC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,QAAkB,EAAE,WAAqB;IACrF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3C,wBAAwB;IACxB,IAAI,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE9E,mBAAmB;IACnB,IAAI,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE9C,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC1C,IACE,MAAM,KAAK,WAAW;gBACtB,MAAM,KAAK,kBAAkB;gBAC7B,MAAM,KAAK,oBAAoB;gBAC/B,CAAC,MAAM,CAAC,MAAM,CAAC,EACf,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC5C,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;YAED,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACzC,gBAAgB,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAEhD,8DAA8D;IAC9D,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,QAAkB,EAClB,WAAc;IAEd,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAsCD,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,QAAkB,EAClB,WAA6C,EAC7C,SAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAsB,CAAC;AAC1C,CAAC;AAyCD,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,QAAkB,EAClB,WAA6C,EAC7C,SAAY,EACZ,KAAwB;IAExB,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAEpB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,QAAkB,EAAE,WAAqB;IAC1F,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC;AAsCD,MAAM,UAAU,uBAAuB,CACrC,KAAY,EACZ,QAAkB,EAClB,WAAyB,EACzB,SAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAA2B,CAAC;AACrC,CAAC;AAoCD,MAAM,UAAU,uBAAuB,CACrC,KAAY,EACZ,QAAkB,EAClB,WAAyB,EACzB,SAAY,EACZ,KAAwB;IAExB,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAI,KAAkB,CAAC,CAAC,CAAE,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC;AAqCD,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,QAAkB,EAClB,WAAyB,EACzB,SAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO;IAE7C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAuB,CAAC;AACxE,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,WAAqB;IACxE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;IAEnD,oEAAoE;IACpE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAErC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,2EAA2E;QAC3E,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAExC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;QAED,+DAA+D;QAC/D,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Generic directed acyclic graph.
3
+ *
4
+ * Stores nodes and directed edges with adjacency lists in both directions.
5
+ * Provides topological sort with caller-supplied comparator for deterministic
6
+ * tiebreaking. Cycle detection occurs during sort.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const dag = createDag<string>();
11
+ * addNode(dag, "a");
12
+ * addNode(dag, "b");
13
+ * addEdge(dag, "a", "b");
14
+ * const sorted = topologicalSort(dag); // ["a", "b"]
15
+ * ```
16
+ */
17
+ export type DirectedAcyclicGraph<N> = {
18
+ /** @internal */
19
+ nodes: Set<N>;
20
+ /** @internal Forward adjacency: node -> Set of successors. */
21
+ forward: Map<N, Set<N>>;
22
+ /** @internal Reverse adjacency: node -> Set of predecessors. */
23
+ reverse: Map<N, Set<N>>;
24
+ /** @internal Cached topological sort result. */
25
+ cachedSort: N[] | null;
26
+ };
27
+ /**
28
+ * Create an empty directed acyclic graph.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const dag = createDag<string>();
33
+ * ```
34
+ */
35
+ export declare function createDag<N>(): DirectedAcyclicGraph<N>;
36
+ /**
37
+ * Add a node to the graph. Idempotent.
38
+ *
39
+ * @param dag - Graph instance
40
+ * @param node - Node to add
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * addNode(dag, "physics");
45
+ * ```
46
+ */
47
+ export declare function addNode<N>(dag: DirectedAcyclicGraph<N>, node: N): void;
48
+ /**
49
+ * Add a directed edge from one node to another. Idempotent.
50
+ * Both nodes must already exist in the graph.
51
+ *
52
+ * @param dag - Graph instance
53
+ * @param from - Source node
54
+ * @param to - Target node
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * addEdge(dag, "a", "b"); // a must run before b
59
+ * ```
60
+ */
61
+ export declare function addEdge<N>(dag: DirectedAcyclicGraph<N>, from: N, to: N): void;
62
+ /**
63
+ * Remove a directed edge. Idempotent.
64
+ *
65
+ * @param dag - Graph instance
66
+ * @param from - Source node
67
+ * @param to - Target node
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * removeEdge(dag, "a", "b");
72
+ * ```
73
+ */
74
+ export declare function removeEdge<N>(dag: DirectedAcyclicGraph<N>, from: N, to: N): void;
75
+ /**
76
+ * Remove a node and all its connected edges. Idempotent.
77
+ *
78
+ * @param dag - Graph instance
79
+ * @param node - Node to remove
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * removeNode(dag, "obsolete");
84
+ * ```
85
+ */
86
+ export declare function removeNode<N>(dag: DirectedAcyclicGraph<N>, node: N): void;
87
+ /**
88
+ * Get all nodes in the graph.
89
+ *
90
+ * @internal
91
+ */
92
+ export declare function getNodes<N>(dag: DirectedAcyclicGraph<N>): ReadonlySet<N>;
93
+ /**
94
+ * Get successors (outgoing neighbors) of a node.
95
+ *
96
+ * @internal
97
+ */
98
+ export declare function getSuccessors<N>(dag: DirectedAcyclicGraph<N>, node: N): ReadonlySet<N>;
99
+ /**
100
+ * Get predecessors (incoming neighbors) of a node.
101
+ *
102
+ * @internal
103
+ */
104
+ export declare function getPredecessors<N>(dag: DirectedAcyclicGraph<N>, node: N): ReadonlySet<N>;
105
+ /**
106
+ * Topological sort via Kahn's algorithm.
107
+ *
108
+ * Returns nodes in dependency order (sources first). Uses the optional
109
+ * comparator for deterministic tiebreaking among nodes with no ordering
110
+ * constraint. Results are cached until the graph is mutated.
111
+ *
112
+ * @param dag - Graph instance
113
+ * @param comparator - Optional comparison function for tiebreaking
114
+ * @returns Sorted array of nodes
115
+ * @throws Error if the graph contains a cycle
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * const sorted = topologicalSort(dag, (a, b) => a.localeCompare(b));
120
+ * ```
121
+ */
122
+ export declare function topologicalSort<N>(dag: DirectedAcyclicGraph<N>, comparator?: (a: N, b: N) => number): N[];
123
+ //# sourceMappingURL=directed-acyclic-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directed-acyclic-graph.d.ts","sourceRoot":"","sources":["../src/directed-acyclic-graph.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,gBAAgB;IAChB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,8DAA8D;IAC9D,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,gEAAgE;IAChE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,gDAAgD;IAChD,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;CACxB,CAAC;AAMF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAOtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAUtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAW7E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAKhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CA4BzE;AASD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAExF;AA2BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CA6DzG"}