iris-ecs 0.0.3 → 0.0.4

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 CHANGED
@@ -41,11 +41,11 @@ import {
41
41
  addComponent,
42
42
  getComponentValue,
43
43
  setComponentValue,
44
- fetchEntities,
44
+ queryEntities,
45
45
  addSystem,
46
46
  runOnce,
47
47
  Type,
48
- } from "iris-ecs";
48
+ } from "iris-ecs";
49
49
 
50
50
  // Define components
51
51
  const Position = defineComponent("Position", { x: Type.f32(), y: Type.f32() });
@@ -62,7 +62,7 @@ addComponent(world, player, Player);
62
62
 
63
63
  // Define a system
64
64
  function movementSystem(world) {
65
- for (const e of fetchEntities(world, Position, Velocity)) {
65
+ queryEntities(world, [Position, Velocity], (e) => {
66
66
  const px = getComponentValue(world, e, Position, "x");
67
67
  const py = getComponentValue(world, e, Position, "y");
68
68
  const vx = getComponentValue(world, e, Velocity, "x");
@@ -70,7 +70,7 @@ function movementSystem(world) {
70
70
 
71
71
  setComponentValue(world, e, Position, "x", px + vx);
72
72
  setComponentValue(world, e, Position, "y", py + vy);
73
- }
73
+ });
74
74
  }
75
75
 
76
76
  // Register and run
@@ -246,9 +246,9 @@ if (hasResource(world, Time)) {
246
246
  Resources use the **component-on-self pattern** internally -- the component is added to itself as an entity. This means resources appear in queries:
247
247
 
248
248
  ```typescript
249
- for (const entity of fetchEntities(world, Time)) {
249
+ queryEntities(world, [Time], (entity) => {
250
250
  // entity === Time (the component ID itself)
251
- }
251
+ });
252
252
  ```
253
253
 
254
254
  Use resources for frame timing, configuration, asset registry, input state, physics settings, or any global data that systems need but doesn't belong to a specific entity.
@@ -262,7 +262,7 @@ import {
262
262
  defineRelation,
263
263
  pair,
264
264
  addComponent,
265
- fetchEntities,
265
+ queryEntities,
266
266
  getRelationTargets,
267
267
  Wildcard,
268
268
  } from "iris-ecs";
@@ -277,9 +277,9 @@ addComponent(world, player, pair(ChildOf, scene));
277
277
  addComponent(world, weapon, pair(ChildOf, player));
278
278
 
279
279
  // Query children of a specific parent
280
- for (const child of fetchEntities(world, pair(ChildOf, scene))) {
280
+ queryEntities(world, [pair(ChildOf, scene)], (child) => {
281
281
  // child === player
282
- }
282
+ });
283
283
 
284
284
  // Get all targets for a relation on an entity
285
285
  const parents = getRelationTargets(world, weapon, ChildOf); // [player]
@@ -292,11 +292,13 @@ Use relations for hierarchies (parent/child), ownership, targeting, dependencies
292
292
  Use `Wildcard` to match any relation or target:
293
293
 
294
294
  ```typescript
295
+ import { collectEntities } from "iris-ecs";
296
+
295
297
  // All entities with ANY ChildOf relation (any target)
296
- const allChildren = [...fetchEntities(world, pair(ChildOf, Wildcard))];
298
+ const allChildren = collectEntities(world, [pair(ChildOf, Wildcard)]);
297
299
 
298
300
  // All entities targeting a specific entity (any relation)
299
- const relatedToPlayer = [...fetchEntities(world, pair(Wildcard, player))];
301
+ const relatedToPlayer = collectEntities(world, [pair(Wildcard, player)]);
300
302
  ```
301
303
 
302
304
  #### Exclusive Relations
@@ -372,19 +374,19 @@ Adding or removing a component moves an entity to a different archetype. This is
372
374
 
373
375
  ### Queries
374
376
 
375
- A **Query** fetches entities that match a set of component constraints. Use `fetchEntities()` to iterate all matches or `fetchFirstEntity()` for singletons.
377
+ A **Query** fetches entities that match a set of component constraints. Use `queryEntities()` to iterate matches, `queryFirstEntity()` for singletons, or `collectEntities()` for array results.
376
378
 
377
379
  ```typescript
378
- import { fetchEntities, fetchFirstEntity, not } from "iris-ecs";
380
+ import { queryEntities, queryFirstEntity, not } from "iris-ecs";
379
381
 
380
382
  // Iterate all entities with Position and Velocity
381
- for (const entity of fetchEntities(world, Position, Velocity)) {
383
+ queryEntities(world, [Position, Velocity], (entity) => {
382
384
  const x = getComponentValue(world, entity, Position, "x");
383
385
  // ...
384
- }
386
+ });
385
387
 
386
388
  // Get a singleton (first match or undefined)
387
- const player = fetchFirstEntity(world, Player, not(Dead));
389
+ const player = queryFirstEntity(world, [Player, not(Dead)]);
388
390
  ```
389
391
 
390
392
  💡 **Tip:** Queries are cached internally -- the same component set returns the same cached query.
@@ -395,14 +397,14 @@ Use `not()` to exclude entities that have a component:
395
397
 
396
398
  ```typescript
397
399
  // All entities with Position but WITHOUT the Dead tag
398
- for (const entity of fetchEntities(world, Position, not(Dead))) {
400
+ queryEntities(world, [Position, not(Dead)], (entity) => {
399
401
  // Only living entities
400
- }
402
+ });
401
403
 
402
404
  // Multiple exclusions
403
- for (const entity of fetchEntities(world, Position, Velocity, not(Frozen), not(Disabled))) {
405
+ queryEntities(world, [Position, Velocity, not(Frozen), not(Disabled)], (entity) => {
404
406
  // Entities that can move
405
- }
407
+ });
406
408
  ```
407
409
 
408
410
  #### Filters and Archetypes (Under the Hood)
@@ -418,13 +420,13 @@ import {
418
420
  addSystem,
419
421
  run,
420
422
  stop,
421
- fetchEntities,
423
+ queryEntities,
422
424
  getComponentValue,
423
425
  setComponentValue,
424
426
  } from "iris-ecs";
425
427
 
426
428
  function movementSystem(world) {
427
- for (const e of fetchEntities(world, Position, Velocity)) {
429
+ queryEntities(world, [Position, Velocity], (e) => {
428
430
  const px = getComponentValue(world, e, Position, "x");
429
431
  const py = getComponentValue(world, e, Position, "y");
430
432
  const vx = getComponentValue(world, e, Velocity, "x");
@@ -432,7 +434,7 @@ function movementSystem(world) {
432
434
 
433
435
  setComponentValue(world, e, Position, "x", px + vx);
434
436
  setComponentValue(world, e, Position, "y", py + vy);
435
- }
437
+ });
436
438
  }
437
439
 
438
440
  addSystem(world, movementSystem);
@@ -576,7 +578,7 @@ Actions are initialized lazily and cached per world -- calling `spawnActions(wor
576
578
  An **Event** is an ephemeral message for communication between systems. Unlike components (persistent data on entities), events are fire-and-forget: emit once, consume once per system, then gone.
577
579
 
578
580
  ```typescript
579
- import { defineEvent, emitEvent, fetchEvents, Type } from "iris-ecs";
581
+ import { defineEvent, emitEvent, readEvents, Type } from "iris-ecs";
580
582
 
581
583
  // Tag event (no data)
582
584
  const GameStarted = defineEvent("GameStarted");
@@ -593,9 +595,9 @@ emitEvent(world, DamageDealt, { target: enemy, amount: 25 });
593
595
 
594
596
  // Consume events in a system
595
597
  function damageSystem(world) {
596
- for (const event of fetchEvents(world, DamageDealt)) {
598
+ readEvents(world, DamageDealt, (event) => {
597
599
  applyDamage(event.target, event.amount);
598
- }
600
+ });
599
601
  }
600
602
  ```
601
603
 
@@ -607,15 +609,15 @@ Each system independently tracks which events it has consumed. Multiple systems
607
609
 
608
610
  ```typescript
609
611
  function uiSystem(world) {
610
- for (const e of fetchEvents(world, DamageDealt)) {
612
+ readEvents(world, DamageDealt, (e) => {
611
613
  showDamageNumber(e.target, e.amount);
612
- }
614
+ });
613
615
  }
614
616
 
615
617
  function audioSystem(world) {
616
- for (const e of fetchEvents(world, DamageDealt)) {
618
+ readEvents(world, DamageDealt, (e) => {
617
619
  playHitSound(e.amount);
618
- }
620
+ });
619
621
  }
620
622
 
621
623
  // Both systems see the same DamageDealt events
@@ -627,7 +629,7 @@ function audioSystem(world) {
627
629
  import {
628
630
  hasEvents,
629
631
  countEvents,
630
- fetchLastEvent,
632
+ readLastEvent,
631
633
  clearEvents,
632
634
  } from "iris-ecs";
633
635
 
@@ -637,7 +639,7 @@ if (hasEvents(world, DamageDealt)) {
637
639
  }
638
640
 
639
641
  // Get only the most recent event (marks all as read)
640
- const lastInput = fetchLastEvent(world, InputChanged);
642
+ const lastInput = readLastEvent(world, InputChanged);
641
643
 
642
644
  // Skip events without processing
643
645
  if (isPaused) {
@@ -648,7 +650,7 @@ if (isPaused) {
648
650
 
649
651
  #### Event Lifetime
650
652
 
651
- Events use double-buffered storage. Buffers rotate automatically at the end of each frame -- events survive one frame (so systems that run next frame can still read them), then are discarded. Calling `fetchEvents()` marks events as read for that system -- a second call in the same system sees nothing new.
653
+ Events use double-buffered storage. Buffers rotate automatically at the end of each frame -- events survive one frame (so systems that run next frame can still read them), then are discarded. Calling `readEvents()` marks events as read for that system -- a second call in the same system sees nothing new.
652
654
 
653
655
  ⚠️ **Events are not entities.** Unlike components and tags, events exist outside the entity-component model. You cannot query for events or attach them to entities.
654
656
 
@@ -658,27 +660,27 @@ Events use double-buffered storage. Buffers rotate automatically at the end of e
658
660
 
659
661
  ```typescript
660
662
  import {
661
- fetchEntities,
663
+ queryEntities,
662
664
  added,
663
665
  changed,
664
666
  removed,
665
- fetchEvents,
667
+ readEvents,
666
668
  } from "iris-ecs";
667
669
 
668
670
  // Entities where Position was added this tick
669
- for (const entity of fetchEntities(world, added(Position))) {
671
+ queryEntities(world, [added(Position)], (entity) => {
670
672
  initializePhysicsBody(entity);
671
- }
673
+ });
672
674
 
673
675
  // Entities where Health was modified (added OR value changed)
674
- for (const entity of fetchEntities(world, changed(Health))) {
676
+ queryEntities(world, [changed(Health)], (entity) => {
675
677
  updateHealthBar(entity);
676
- }
678
+ });
677
679
 
678
680
  // Combine with regular filters
679
- for (const e of fetchEntities(world, Player, changed(Position), not(Dead))) {
681
+ queryEntities(world, [Player, changed(Position), not(Dead)], (e) => {
680
682
  updatePlayerOnMinimap(e);
681
- }
683
+ });
682
684
  ```
683
685
 
684
686
  Each system tracks changes independently -- if two systems query `added(Position)`, both see the same newly added entities.
@@ -689,9 +691,9 @@ Use `removed()` to detect when a component is removed from an entity. Unlike `ad
689
691
 
690
692
  ```typescript
691
693
  // Iterate removal events (not a query filter)
692
- for (const event of fetchEvents(world, removed(Health))) {
694
+ readEvents(world, removed(Health), (event) => {
693
695
  playDeathAnimation(event.entity);
694
- }
696
+ });
695
697
  ```
696
698
 
697
699
  #### Under the Hood
package/dist/component.js CHANGED
@@ -150,8 +150,8 @@ export function hasComponent(world, entityId, componentId) {
150
150
  * ```
151
151
  */
152
152
  export function getComponentValue(world, entityId, componentId, fieldName) {
153
- const meta = ensureEntity(world, entityId);
154
- const fieldColumns = meta.archetype.columns.get(componentId);
153
+ const { archetype, row } = ensureEntity(world, entityId);
154
+ const fieldColumns = archetype.columns.get(componentId);
155
155
  if (!fieldColumns) {
156
156
  return;
157
157
  }
@@ -159,7 +159,7 @@ export function getComponentValue(world, entityId, componentId, fieldName) {
159
159
  if (!column) {
160
160
  return;
161
161
  }
162
- return column[meta.row];
162
+ return column[row];
163
163
  }
164
164
  /**
165
165
  * Set component field value.
@@ -177,8 +177,8 @@ export function getComponentValue(world, entityId, componentId, fieldName) {
177
177
  * ```
178
178
  */
179
179
  export function setComponentValue(world, entityId, componentId, fieldName, value) {
180
- const meta = ensureEntity(world, entityId);
181
- const fieldColumns = meta.archetype.columns.get(componentId);
180
+ const { archetype, row } = ensureEntity(world, entityId);
181
+ const fieldColumns = archetype.columns.get(componentId);
182
182
  if (!fieldColumns) {
183
183
  return;
184
184
  }
@@ -186,10 +186,10 @@ export function setComponentValue(world, entityId, componentId, fieldName, value
186
186
  if (!column) {
187
187
  return;
188
188
  }
189
- column[meta.row] = value;
190
- const ticks = meta.archetype.ticks.get(componentId);
189
+ column[row] = value;
190
+ const ticks = archetype.ticks.get(componentId);
191
191
  if (ticks) {
192
- ticks.changed[meta.row] = world.execution.tick;
192
+ ticks.changed[row] = world.execution.tick;
193
193
  }
194
194
  fireObserverEvent(world, "componentChanged", componentId, entityId);
195
195
  }
@@ -204,10 +204,10 @@ export function setComponentValue(world, entityId, componentId, fieldName, value
204
204
  * emitComponentChanged(world, entity, Position); // Notify change tracking
205
205
  */
206
206
  export function emitComponentChanged(world, entityId, componentId) {
207
- const meta = ensureEntity(world, entityId);
208
- const ticks = meta.archetype.ticks.get(componentId);
207
+ const { archetype, row } = ensureEntity(world, entityId);
208
+ const ticks = archetype.ticks.get(componentId);
209
209
  if (ticks) {
210
- ticks.changed[meta.row] = world.execution.tick;
210
+ ticks.changed[row] = world.execution.tick;
211
211
  }
212
212
  fireObserverEvent(world, "componentChanged", componentId, entityId);
213
213
  }
@@ -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":"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"}
package/dist/event.d.ts CHANGED
@@ -135,23 +135,39 @@ export declare function ensureEventQueue<S extends EventSchema>(world: World, ev
135
135
  */
136
136
  export declare function emitEvent<S extends EventSchema>(world: World, event: Event<S>, ...args: keyof S extends never ? [] : [data: EventData<S>]): void;
137
137
  /**
138
- * Fetch events emitted since last call.
138
+ * Read events emitted since last call via callback.
139
139
  *
140
140
  * Per-system isolated: each system has independent tracking of which events
141
141
  * it has consumed. Multiple systems can consume the same events independently.
142
142
  *
143
143
  * @param world - World instance
144
144
  * @param event - Event definition
145
- * @returns Generator yielding event data
145
+ * @param callback - Called for each unread event. Return `false` to stop iteration early
146
146
  *
147
147
  * @example
148
148
  * ```typescript
149
- * for (const event of fetchEvents(world, DamageDealt)) {
149
+ * readEvents(world, DamageDealt, (event) => {
150
150
  * applyDamage(event.target, event.amount);
151
+ * });
152
+ * ```
153
+ */
154
+ export declare function readEvents<S extends EventSchema>(world: World, event: Event<S>, callback: (data: EventData<S>) => unknown): void;
155
+ /**
156
+ * Collect all unread events into an array.
157
+ *
158
+ * @param world - World instance
159
+ * @param event - Event definition
160
+ * @returns Array of unread event data
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const events = collectEvents(world, DamageDealt);
165
+ * for (let i = 0; i < events.length; i++) {
166
+ * applyDamage(events[i]!.target, events[i]!.amount);
151
167
  * }
152
168
  * ```
153
169
  */
154
- export declare function fetchEvents<S extends EventSchema>(world: World, event: Event<S>): Generator<EventData<S>>;
170
+ export declare function collectEvents<S extends EventSchema>(world: World, event: Event<S>): EventData<S>[];
155
171
  /**
156
172
  * Check if there are unread events for current context.
157
173
  *
@@ -186,7 +202,7 @@ export declare function hasEvents<S extends EventSchema>(world: World, event: Ev
186
202
  */
187
203
  export declare function countEvents<S extends EventSchema>(world: World, event: Event<S>): number;
188
204
  /**
189
- * Fetch only the most recent event, marking all as read.
205
+ * Read only the most recent event, marking all as read.
190
206
  *
191
207
  * Useful when only the latest state matters (e.g., input, config changes).
192
208
  *
@@ -197,13 +213,13 @@ export declare function countEvents<S extends EventSchema>(world: World, event:
197
213
  * @example
198
214
  * ```typescript
199
215
  * // Only care about the latest input state
200
- * const input = fetchLastEvent(world, InputChanged);
216
+ * const input = readLastEvent(world, InputChanged);
201
217
  * if (input) {
202
218
  * updatePlayerDirection(input.direction);
203
219
  * }
204
220
  * ```
205
221
  */
206
- export declare function fetchLastEvent<S extends EventSchema>(world: World, event: Event<S>): EventData<S> | undefined;
222
+ export declare function readLastEvent<S extends EventSchema>(world: World, event: Event<S>): EventData<S> | undefined;
207
223
  /**
208
224
  * Clear events (mark as read without processing).
209
225
  *
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;GAEG;AACH,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AAEzC;;GAEG;AACH,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAMhD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,WAAW,IAAI,MAAM,CAAC,SAAS,KAAK,GAChE,SAAS,GACT;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,MAAM,GAAG;IAClE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IACpB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IACvD;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAC5D;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAChE;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACzB;;;OAGG;IACH,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAmCF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAY5G;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAexG;AAMD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,EAC7C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,GAAG,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GACzD,IAAI,CAMN;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,GACxC,IAAI,CAgCN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAMlG;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CA0BvF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CA4BxF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAmC5G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAUtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAO9C"}
package/dist/event.js CHANGED
@@ -92,7 +92,7 @@ export function emitEvent(world, event, ...args) {
92
92
  /**
93
93
  * Update lastTick for current system.
94
94
  *
95
- * Internal helper shared by fetchEvents, fetchLastEvent, and clearEvents.
95
+ * Internal helper shared by readEvents, readLastEvent, and clearEvents.
96
96
  *
97
97
  * @param world - World instance
98
98
  * @param queue - Event queue metadata
@@ -102,25 +102,25 @@ function markEventsRead(world, queue) {
102
102
  queue.lastTick.set(systemId, tick);
103
103
  }
104
104
  /**
105
- * Fetch events emitted since last call.
105
+ * Read events emitted since last call via callback.
106
106
  *
107
107
  * Per-system isolated: each system has independent tracking of which events
108
108
  * it has consumed. Multiple systems can consume the same events independently.
109
109
  *
110
110
  * @param world - World instance
111
111
  * @param event - Event definition
112
- * @returns Generator yielding event data
112
+ * @param callback - Called for each unread event. Return `false` to stop iteration early
113
113
  *
114
114
  * @example
115
115
  * ```typescript
116
- * for (const event of fetchEvents(world, DamageDealt)) {
116
+ * readEvents(world, DamageDealt, (event) => {
117
117
  * applyDamage(event.target, event.amount);
118
- * }
118
+ * });
119
119
  * ```
120
120
  */
121
- export function* fetchEvents(world, event) {
121
+ export function readEvents(world, event, callback) {
122
122
  const { systemId, tick } = world.execution;
123
- // Outside system context: yield nothing
123
+ // Outside system context: no-op
124
124
  if (systemId === null) {
125
125
  return;
126
126
  }
@@ -133,13 +133,15 @@ export function* fetchEvents(world, event) {
133
133
  for (let i = 0; i < prevLen; i++) {
134
134
  const entry = queue.previous[i];
135
135
  if (entry.tick > lastTick && entry.tick <= tick) {
136
- yield entry.data;
136
+ if (callback(entry.data) === false)
137
+ return;
137
138
  }
138
139
  }
139
140
  for (let i = 0; i < currLen; i++) {
140
141
  const entry = queue.current[i];
141
142
  if (entry.tick > lastTick && entry.tick <= tick) {
142
- yield entry.data;
143
+ if (callback(entry.data) === false)
144
+ return;
143
145
  }
144
146
  }
145
147
  }
@@ -147,6 +149,28 @@ export function* fetchEvents(world, event) {
147
149
  markEventsRead(world, queue);
148
150
  }
149
151
  }
152
+ /**
153
+ * Collect all unread events into an array.
154
+ *
155
+ * @param world - World instance
156
+ * @param event - Event definition
157
+ * @returns Array of unread event data
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * const events = collectEvents(world, DamageDealt);
162
+ * for (let i = 0; i < events.length; i++) {
163
+ * applyDamage(events[i]!.target, events[i]!.amount);
164
+ * }
165
+ * ```
166
+ */
167
+ export function collectEvents(world, event) {
168
+ const result = [];
169
+ readEvents(world, event, (data) => {
170
+ result.push(data);
171
+ });
172
+ return result;
173
+ }
150
174
  // ============================================================================
151
175
  // Utility Functions
152
176
  // ============================================================================
@@ -227,7 +251,7 @@ export function countEvents(world, event) {
227
251
  return count;
228
252
  }
229
253
  /**
230
- * Fetch only the most recent event, marking all as read.
254
+ * Read only the most recent event, marking all as read.
231
255
  *
232
256
  * Useful when only the latest state matters (e.g., input, config changes).
233
257
  *
@@ -238,13 +262,13 @@ export function countEvents(world, event) {
238
262
  * @example
239
263
  * ```typescript
240
264
  * // Only care about the latest input state
241
- * const input = fetchLastEvent(world, InputChanged);
265
+ * const input = readLastEvent(world, InputChanged);
242
266
  * if (input) {
243
267
  * updatePlayerDirection(input.direction);
244
268
  * }
245
269
  * ```
246
270
  */
247
- export function fetchLastEvent(world, event) {
271
+ export function readLastEvent(world, event) {
248
272
  const { systemId, tick } = world.execution;
249
273
  // Outside system context: always undefined
250
274
  if (systemId === null) {
package/dist/event.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
package/dist/filters.d.ts CHANGED
@@ -102,20 +102,4 @@ export declare function findMatchingArchetypes(world: World, terms: FilterTerms)
102
102
  * // filter.archetypes contains all matching archetypes
103
103
  */
104
104
  export declare function ensureFilter(world: World, terms: FilterTerms): FilterMeta;
105
- /**
106
- * Iterates all entities matching a filter in reverse order.
107
- *
108
- * Reverse iteration allows safe entity deletion during iteration without
109
- * skipping entities or invalidating indices.
110
- *
111
- * @param filter - Filter metadata containing cached matching archetypes
112
- * @returns Generator yielding entity IDs from all matching archetypes
113
- *
114
- * @example
115
- * for (const entity of iterateFilterEntities(filter)) {
116
- * // Safe to delete entity here due to reverse iteration
117
- * destroyEntity(world, entity);
118
- * }
119
- */
120
- export declare function iterateFilterEntities(filter: FilterMeta): IterableIterator<EntityId>;
121
105
  //# sourceMappingURL=filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAChD;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACnD,CAAC;AAMF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAK1D;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBpF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,CAyCpF;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,UAAU,CAyCzE;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAYrF"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAChD;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACnD,CAAC;AAMF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAK1D;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBpF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,CAyCpF;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,UAAU,CAyCzE"}
package/dist/filters.js CHANGED
@@ -171,33 +171,4 @@ export function ensureFilter(world, terms) {
171
171
  }
172
172
  return filterMeta;
173
173
  }
174
- // ============================================================================
175
- // Filter Iteration
176
- // ============================================================================
177
- /**
178
- * Iterates all entities matching a filter in reverse order.
179
- *
180
- * Reverse iteration allows safe entity deletion during iteration without
181
- * skipping entities or invalidating indices.
182
- *
183
- * @param filter - Filter metadata containing cached matching archetypes
184
- * @returns Generator yielding entity IDs from all matching archetypes
185
- *
186
- * @example
187
- * for (const entity of iterateFilterEntities(filter)) {
188
- * // Safe to delete entity here due to reverse iteration
189
- * destroyEntity(world, entity);
190
- * }
191
- */
192
- export function* iterateFilterEntities(filter) {
193
- const archetypes = filter.archetypes;
194
- for (let a = 0; a < archetypes.length; a++) {
195
- const archetype = archetypes[a];
196
- const entities = archetype.entities;
197
- // Reverse iteration enables safe deletion during traversal
198
- for (let i = entities.length - 1; i >= 0; i--) {
199
- yield entities[i];
200
- }
201
- }
202
- }
203
174
  //# sourceMappingURL=filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { defineComponent, defineRelation, defineTag, Wildcard } from "./registry
6
6
  export { getPairRelation, getPairTarget, getRelationTargets, pair } from "./relation.js";
7
7
  export { addResource, getResourceValue, hasResource, removeResource, setResourceValue, } from "./resource.js";
8
8
  export { getName, lookupByName, Name, removeName, setName } from "./name.js";
9
- export { added, changed, destroyQuery, ensureQuery, fetchEntities, fetchEntitiesWithQuery, fetchFirstEntity, not, } from "./query.js";
9
+ export { added, changed, collectEntities, destroyQuery, ensureQuery, not, queryEntities, queryFirstEntity, } from "./query.js";
10
10
  export { addSystem, defineSchedule, First, insertScheduleAfter, insertScheduleBefore, Last, PostUpdate, PreUpdate, run, runOnce, Shutdown, Startup, stop, Update, } from "./scheduler.js";
11
11
  export type { ActionGetter, ActionInitializer, Actions } from "./actions.js";
12
12
  export type { Component, Entity, EntityId, Pair, Relation, RelationTargetId, Tag } from "./encoding.js";
@@ -17,7 +17,7 @@ export type { AddedModifier, ChangedModifier, ModifierType, NotModifier, QueryMe
17
17
  export type { ScheduleLabel, SystemMeta, SystemOptions, SystemRunner } from "./scheduler.js";
18
18
  export type { InferSchemaRecord, Schema, SchemaRecord } from "./schema.js";
19
19
  export type { World } from "./world.js";
20
- export { clearEvents, countEvents, defineEvent, emitEvent, fetchEvents, fetchLastEvent, hasEvents, } from "./event.js";
20
+ export { clearEvents, collectEvents, countEvents, defineEvent, emitEvent, hasEvents, readEvents, readLastEvent, } from "./event.js";
21
21
  export { removed } from "./removal.js";
22
22
  export { registerObserverCallback, unregisterObserverCallback } from "./observer.js";
23
23
  export { Type } from "./schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMlH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAMxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMlH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,eAAe,EACf,YAAY,EACZ,WAAW,EACX,GAAG,EACH,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAMxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ export { getName, lookupByName, Name, removeName, setName } from "./name.js";
33
33
  // ============================================================================
34
34
  // Query Operations
35
35
  // ============================================================================
36
- export { added, changed, destroyQuery, ensureQuery, fetchEntities, fetchEntitiesWithQuery, fetchFirstEntity, not, } from "./query.js";
36
+ export { added, changed, collectEntities, destroyQuery, ensureQuery, not, queryEntities, queryFirstEntity, } from "./query.js";
37
37
  // ============================================================================
38
38
  // System Operations
39
39
  // ============================================================================
@@ -41,7 +41,7 @@ export { addSystem, defineSchedule, First, insertScheduleAfter, insertScheduleBe
41
41
  // ============================================================================
42
42
  // Event System
43
43
  // ============================================================================
44
- export { clearEvents, countEvents, defineEvent, emitEvent, fetchEvents, fetchLastEvent, hasEvents, } from "./event.js";
44
+ export { clearEvents, collectEvents, countEvents, defineEvent, emitEvent, hasEvents, readEvents, readLastEvent, } from "./event.js";
45
45
  // ============================================================================
46
46
  // Removal Detection
47
47
  // ============================================================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAgBxB,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,eAAe,EACf,YAAY,EACZ,WAAW,EACX,GAAG,EACH,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAgBxB,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/query.d.ts CHANGED
@@ -59,7 +59,7 @@ export type QueryModifier = NotModifier | AddedModifier | ChangedModifier;
59
59
  *
60
60
  * @example
61
61
  * ```typescript
62
- * fetchEntities(world, Position, not(Dead))
62
+ * queryEntities(world, [Position, not(Dead)], (entity) => { ... });
63
63
  * ```
64
64
  */
65
65
  export declare function not(componentId: EntityId): NotModifier;
@@ -72,7 +72,7 @@ export declare function not(componentId: EntityId): NotModifier;
72
72
  * @returns Added modifier
73
73
  *
74
74
  * @example
75
- * for (const entity of fetchEntities(world, added(Enemy))) { ... }
75
+ * queryEntities(world, [added(Enemy)], (entity) => { ... });
76
76
  */
77
77
  export declare function added(componentId: EntityId): AddedModifier;
78
78
  /**
@@ -84,7 +84,7 @@ export declare function added(componentId: EntityId): AddedModifier;
84
84
  * @returns Changed modifier
85
85
  *
86
86
  * @example
87
- * for (const entity of fetchEntities(world, changed(Health))) { ... }
87
+ * queryEntities(world, [changed(Health)], (entity) => { ... });
88
88
  */
89
89
  export declare function changed(componentId: EntityId): ChangedModifier;
90
90
  /**
@@ -114,25 +114,6 @@ export declare function hashQuery(include: EntityId[], exclude: EntityId[], adde
114
114
  * const query = ensureQuery(world, Position, Velocity, not(Dead));
115
115
  */
116
116
  export declare function ensureQuery(world: World, ...terms: (EntityId | QueryModifier)[]): QueryMeta;
117
- /**
118
- * Fetch entities using pre-registered query metadata.
119
- *
120
- * Filters by change modifiers (added/changed) when present and updates
121
- * lastTick after iteration for per-query/per-system change tracking.
122
- *
123
- * @param world - World instance
124
- * @param queryMeta - Query metadata from ensureQuery()
125
- * @returns Entity IDs in backward order (safe for deletion during iteration)
126
- *
127
- * @example
128
- * ```typescript
129
- * const query = ensureQuery(world, Position, Velocity);
130
- * for (const entity of fetchEntitiesWithQuery(world, query)) {
131
- * // Process entity
132
- * }
133
- * ```
134
- */
135
- export declare function fetchEntitiesWithQuery(world: World, queryMeta: QueryMeta): IterableIterator<EntityId>;
136
117
  /**
137
118
  * Destroy query and clean up associated resources.
138
119
  *
@@ -150,40 +131,66 @@ export declare function fetchEntitiesWithQuery(world: World, queryMeta: QueryMet
150
131
  */
151
132
  export declare function destroyQuery(world: World, queryMeta: QueryMeta): void;
152
133
  /**
153
- * Fetch entities matching components and modifiers.
134
+ * Iterate entities matching components and modifiers via callback.
154
135
  *
155
136
  * Iterates backward for safe entity destruction during iteration.
156
137
  * Creates/reuses cached query internally.
157
138
  *
158
139
  * @param world - World instance
159
- * @param terms - Component IDs and query modifiers (not, added, changed)
160
- * @returns Entity IDs in deletion-safe order
140
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
141
+ * @param callback - Called for each matching entity. Return `false` to stop iteration early
161
142
  *
162
143
  * @example
163
144
  * ```typescript
164
- * for (const entity of fetchEntities(world, Position, Velocity, not(Dead))) {
165
- * const pos = get(world, entity, Position);
166
- * // Entity can be safely destroyed here
167
- * }
145
+ * // With inline terms
146
+ * queryEntities(world, [Position, Velocity, not(Dead)], (entity) => {
147
+ * const pos = getComponentValue(world, entity, Position, "x");
148
+ * });
149
+ *
150
+ * // With pre-built query
151
+ * const q = ensureQuery(world, Position, Velocity);
152
+ * queryEntities(world, q, (entity) => { ... });
153
+ *
154
+ * // Early exit
155
+ * queryEntities(world, [Position], (entity) => {
156
+ * if (done) return false;
157
+ * });
168
158
  * ```
169
159
  */
170
- export declare function fetchEntities(world: World, ...terms: (EntityId | QueryModifier)[]): IterableIterator<EntityId>;
160
+ export declare function queryEntities(world: World, termsOrQuery: (EntityId | QueryModifier)[] | QueryMeta, callback: (entity: EntityId) => unknown): void;
171
161
  /**
172
- * Fetch first entity matching components and modifiers.
162
+ * Get first entity matching components and modifiers.
173
163
  *
174
164
  * Useful for singleton patterns or when only one match is expected.
175
165
  *
176
166
  * @param world - World instance
177
- * @param terms - Component IDs and query modifiers (not, added, changed)
167
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
178
168
  * @returns First matching entity ID, or undefined if no matches
179
169
  *
180
170
  * @example
181
171
  * ```typescript
182
- * const player = fetchFirstEntity(world, Player, not(Dead));
172
+ * const player = queryFirstEntity(world, [Player, not(Dead)]);
183
173
  * if (player !== undefined) {
184
- * const health = get(world, player, Health);
174
+ * const health = getComponentValue(world, player, Health, "value");
185
175
  * }
186
176
  * ```
187
177
  */
188
- export declare function fetchFirstEntity(world: World, ...terms: (EntityId | QueryModifier)[]): EntityId | undefined;
178
+ export declare function queryFirstEntity(world: World, termsOrQuery: (EntityId | QueryModifier)[] | QueryMeta): EntityId | undefined;
179
+ /**
180
+ * Collect all matching entities into an array.
181
+ *
182
+ * @param world - World instance
183
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
184
+ * @returns Array of matching entity IDs
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * const entities = collectEntities(world, [Position, Velocity]);
189
+ *
190
+ * // Pre-sort before iteration
191
+ * const sorted = collectEntities(world, [Position]);
192
+ * sorted.sort((a, b) => getComponentValue(world, a, Position, "x")! - getComponentValue(world, b, Position, "x")!);
193
+ * ```
194
+ */
195
+ export declare function collectEntities(world: World, termsOrQuery: (EntityId | QueryModifier)[] | QueryMeta): EntityId[];
189
196
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,CAE9D;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKlH;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,CAkE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAwEtG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAMrE;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAI/G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,QAAQ,GAAG,SAAS,CAQ3G"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,CAE9D;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKlH;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,CAkE3F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAMrE;AA6FD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,EACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,GACtC,IAAI,CAEN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,GACrD,QAAQ,GAAG,SAAS,CAStB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,GAAG,QAAQ,EAAE,CAQhH"}
package/dist/query.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { assert, InvalidArgument } from "./error.js";
2
- import { ensureFilter, iterateFilterEntities } from "./filters.js";
2
+ import { ensureFilter } from "./filters.js";
3
3
  import { registerObserverCallback, unregisterObserverCallback } from "./observer.js";
4
4
  /**
5
5
  * Create exclusion modifier for query.
@@ -9,7 +9,7 @@ import { registerObserverCallback, unregisterObserverCallback } from "./observer
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * fetchEntities(world, Position, not(Dead))
12
+ * queryEntities(world, [Position, not(Dead)], (entity) => { ... });
13
13
  * ```
14
14
  */
15
15
  export function not(componentId) {
@@ -24,7 +24,7 @@ export function not(componentId) {
24
24
  * @returns Added modifier
25
25
  *
26
26
  * @example
27
- * for (const entity of fetchEntities(world, added(Enemy))) { ... }
27
+ * queryEntities(world, [added(Enemy)], (entity) => { ... });
28
28
  */
29
29
  export function added(componentId) {
30
30
  return { type: "added", componentId };
@@ -38,7 +38,7 @@ export function added(componentId) {
38
38
  * @returns Changed modifier
39
39
  *
40
40
  * @example
41
- * for (const entity of fetchEntities(world, changed(Health))) { ... }
41
+ * queryEntities(world, [changed(Health)], (entity) => { ... });
42
42
  */
43
43
  export function changed(componentId) {
44
44
  return { type: "changed", componentId };
@@ -140,48 +140,49 @@ export function ensureQuery(world, ...terms) {
140
140
  return queryMeta;
141
141
  }
142
142
  /**
143
- * Fetch entities using pre-registered query metadata.
143
+ * Destroy query and clean up associated resources.
144
144
  *
145
- * Filters by change modifiers (added/changed) when present and updates
146
- * lastTick after iteration for per-query/per-system change tracking.
145
+ * Unregisters observer callbacks and removes from query registry.
147
146
  *
148
147
  * @param world - World instance
149
- * @param queryMeta - Query metadata from ensureQuery()
150
- * @returns Entity IDs in backward order (safe for deletion during iteration)
148
+ * @param queryMeta - Query metadata to destroy
151
149
  *
152
150
  * @example
153
151
  * ```typescript
154
- * const query = ensureQuery(world, Position, Velocity);
155
- * for (const entity of fetchEntitiesWithQuery(world, query)) {
156
- * // Process entity
157
- * }
152
+ * const query = ensureQuery(world, Position);
153
+ * // ... use query ...
154
+ * destroyQuery(world, query);
158
155
  * ```
159
156
  */
160
- export function* fetchEntitiesWithQuery(world, queryMeta) {
157
+ export function destroyQuery(world, queryMeta) {
158
+ const queryId = hashQuery(queryMeta.include, queryMeta.exclude, queryMeta.added, queryMeta.changed);
159
+ unregisterObserverCallback(world, "filterDestroyed", queryMeta.onFilterDestroy);
160
+ world.queries.byId.delete(queryId);
161
+ }
162
+ // ============================================================================
163
+ // Query Iteration (Internal)
164
+ // ============================================================================
165
+ /**
166
+ * Iterate entities using pre-registered query metadata via callback.
167
+ */
168
+ function queryEntitiesWithMeta(world, queryMeta, callback) {
161
169
  const hasChangeModifiers = queryMeta.added.length > 0 || queryMeta.changed.length > 0;
162
- // Fast path: no change modifiers
163
- if (!hasChangeModifiers) {
164
- yield* iterateFilterEntities(queryMeta.filter);
165
- return;
166
- }
167
- // Outside system context: change detection returns empty (no meaningful tick tracking)
168
170
  const { systemId, tick } = world.execution;
169
- if (systemId === null) {
171
+ // Change detection requires system context, no meaningful tick tracking otherwise
172
+ if (hasChangeModifiers && systemId === null) {
170
173
  return;
171
174
  }
172
- // Slow path: filter by change detection using archetype-local tick arrays.
173
- // Each component tracks when it was added/changed per-entity via tick timestamps.
174
- const lastTick = queryMeta.lastTick.get(systemId) ?? 0;
175
+ const lastTick = hasChangeModifiers ? (queryMeta.lastTick.get(systemId) ?? 0) : 0;
175
176
  const archetypes = queryMeta.filter.archetypes;
176
177
  // Pre-allocated arrays reused across archetypes to avoid allocation in hot loop
177
178
  const addedTickArrays = [];
178
179
  const changedTickArrays = [];
179
- // Use try/finally to ensure lastTick updates even on early exit (break/return/throw).
180
+ // Use try/finally to ensure lastTick updates even on early exit
180
181
  try {
181
182
  for (let a = 0; a < archetypes.length; a++) {
182
183
  const archetype = archetypes[a];
183
184
  const entities = archetype.entities;
184
- // Pre-fetch tick arrays for this archetype (one Map lookup per component per archetype)
185
+ // Pre-fetch tick arrays for this archetype
185
186
  addedTickArrays.length = 0;
186
187
  for (let j = 0; j < queryMeta.added.length; j++) {
187
188
  const ticks = archetype.ticks.get(queryMeta.added[j]);
@@ -211,83 +212,108 @@ export function* fetchEntitiesWithQuery(world, queryMeta) {
211
212
  continue entityLoop;
212
213
  }
213
214
  }
214
- yield entityId;
215
+ if (callback(entityId) === false) {
216
+ return;
217
+ }
215
218
  }
216
219
  }
217
220
  }
218
221
  finally {
219
- // Update lastTick after iteration completes (or on break/return/throw).
220
- // This ensures subsequent iterations only see changes since this execution.
221
- queryMeta.lastTick.set(systemId, tick);
222
+ if (hasChangeModifiers) {
223
+ // Update lastTick after iteration completes or on early exit, this ensures
224
+ // subsequent iterations only see changes since this execution
225
+ queryMeta.lastTick.set(systemId, tick);
226
+ }
222
227
  }
223
228
  }
224
229
  /**
225
- * Destroy query and clean up associated resources.
226
- *
227
- * Unregisters observer callbacks and removes from query registry.
228
- *
229
- * @param world - World instance
230
- * @param queryMeta - Query metadata to destroy
231
- *
232
- * @example
233
- * ```typescript
234
- * const query = ensureQuery(world, Position);
235
- * // ... use query ...
236
- * destroyQuery(world, query);
237
- * ```
230
+ * Resolve terms-or-query argument to QueryMeta.
238
231
  */
239
- export function destroyQuery(world, queryMeta) {
240
- const queryId = hashQuery(queryMeta.include, queryMeta.exclude, queryMeta.added, queryMeta.changed);
241
- unregisterObserverCallback(world, "filterDestroyed", queryMeta.onFilterDestroy);
242
- world.queries.byId.delete(queryId);
232
+ function resolveQuery(world, termsOrQuery) {
233
+ if (!Array.isArray(termsOrQuery)) {
234
+ return termsOrQuery;
235
+ }
236
+ return ensureQuery(world, ...termsOrQuery);
243
237
  }
244
238
  // ============================================================================
245
- // Query Iteration
239
+ // Query Iteration (Public)
246
240
  // ============================================================================
247
241
  /**
248
- * Fetch entities matching components and modifiers.
242
+ * Iterate entities matching components and modifiers via callback.
249
243
  *
250
244
  * Iterates backward for safe entity destruction during iteration.
251
245
  * Creates/reuses cached query internally.
252
246
  *
253
247
  * @param world - World instance
254
- * @param terms - Component IDs and query modifiers (not, added, changed)
255
- * @returns Entity IDs in deletion-safe order
248
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
249
+ * @param callback - Called for each matching entity. Return `false` to stop iteration early
256
250
  *
257
251
  * @example
258
252
  * ```typescript
259
- * for (const entity of fetchEntities(world, Position, Velocity, not(Dead))) {
260
- * const pos = get(world, entity, Position);
261
- * // Entity can be safely destroyed here
262
- * }
253
+ * // With inline terms
254
+ * queryEntities(world, [Position, Velocity, not(Dead)], (entity) => {
255
+ * const pos = getComponentValue(world, entity, Position, "x");
256
+ * });
257
+ *
258
+ * // With pre-built query
259
+ * const q = ensureQuery(world, Position, Velocity);
260
+ * queryEntities(world, q, (entity) => { ... });
261
+ *
262
+ * // Early exit
263
+ * queryEntities(world, [Position], (entity) => {
264
+ * if (done) return false;
265
+ * });
263
266
  * ```
264
267
  */
265
- export function* fetchEntities(world, ...terms) {
266
- const queryMeta = ensureQuery(world, ...terms);
267
- yield* fetchEntitiesWithQuery(world, queryMeta);
268
+ export function queryEntities(world, termsOrQuery, callback) {
269
+ queryEntitiesWithMeta(world, resolveQuery(world, termsOrQuery), callback);
268
270
  }
269
271
  /**
270
- * Fetch first entity matching components and modifiers.
272
+ * Get first entity matching components and modifiers.
271
273
  *
272
274
  * Useful for singleton patterns or when only one match is expected.
273
275
  *
274
276
  * @param world - World instance
275
- * @param terms - Component IDs and query modifiers (not, added, changed)
277
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
276
278
  * @returns First matching entity ID, or undefined if no matches
277
279
  *
278
280
  * @example
279
281
  * ```typescript
280
- * const player = fetchFirstEntity(world, Player, not(Dead));
282
+ * const player = queryFirstEntity(world, [Player, not(Dead)]);
281
283
  * if (player !== undefined) {
282
- * const health = get(world, player, Health);
284
+ * const health = getComponentValue(world, player, Health, "value");
283
285
  * }
284
286
  * ```
285
287
  */
286
- export function fetchFirstEntity(world, ...terms) {
287
- const queryMeta = ensureQuery(world, ...terms);
288
- for (const entityId of fetchEntitiesWithQuery(world, queryMeta)) {
289
- return entityId;
290
- }
291
- return undefined;
288
+ export function queryFirstEntity(world, termsOrQuery) {
289
+ let result;
290
+ queryEntitiesWithMeta(world, resolveQuery(world, termsOrQuery), (entity) => {
291
+ result = entity;
292
+ return false;
293
+ });
294
+ return result;
295
+ }
296
+ /**
297
+ * Collect all matching entities into an array.
298
+ *
299
+ * @param world - World instance
300
+ * @param termsOrQuery - Array of component IDs and query modifiers, or pre-built QueryMeta
301
+ * @returns Array of matching entity IDs
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * const entities = collectEntities(world, [Position, Velocity]);
306
+ *
307
+ * // Pre-sort before iteration
308
+ * const sorted = collectEntities(world, [Position]);
309
+ * sorted.sort((a, b) => getComponentValue(world, a, Position, "x")! - getComponentValue(world, b, Position, "x")!);
310
+ * ```
311
+ */
312
+ export function collectEntities(world, termsOrQuery) {
313
+ const result = [];
314
+ queryEntitiesWithMeta(world, resolveQuery(world, termsOrQuery), (entity) => {
315
+ result.push(entity);
316
+ });
317
+ return result;
292
318
  }
293
319
  //# sourceMappingURL=query.js.map
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
package/dist/removal.d.ts CHANGED
@@ -12,9 +12,9 @@ declare const RemovalEventSchema: {
12
12
  * @param componentId - Component to track removals for
13
13
  * @returns Event that fires when the component is removed from any entity
14
14
  * @example
15
- * for (const { entity } of fetchEvents(world, removed(Health))) {
15
+ * readEvents(world, removed(Health), ({ entity }) => {
16
16
  * playDeathEffect(entity);
17
- * }
17
+ * });
18
18
  */
19
19
  export declare function removed(componentId: EntityId): Event<typeof RemovalEventSchema>;
20
20
  /**
package/dist/removal.js CHANGED
@@ -25,9 +25,9 @@ const removalEvents = new Map();
25
25
  * @param componentId - Component to track removals for
26
26
  * @returns Event that fires when the component is removed from any entity
27
27
  * @example
28
- * for (const { entity } of fetchEvents(world, removed(Health))) {
28
+ * readEvents(world, removed(Health), ({ entity }) => {
29
29
  * playDeathEffect(entity);
30
- * }
30
+ * });
31
31
  */
32
32
  export function removed(componentId) {
33
33
  let event = removalEvents.get(componentId);
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "iris-ecs",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
- "description": "High-performance TypeScript Entity Component System",
5
+ "description": "Entity Component System implementation for TypeScript",
6
6
  "author": "Yury Tomilin (https://github.com/r04423)",
7
7
  "homepage": "https://github.com/r04423/iris#readme",
8
8
  "bugs": "https://github.com/r04423/iris/issues",