@adobe/data 0.2.13 → 0.3.1

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 (62) hide show
  1. package/README.md +1 -1
  2. package/dist/ecs/archetype/archetype.d.ts +8 -3
  3. package/dist/ecs/archetype/create-archetype.js +2 -1
  4. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  5. package/dist/ecs/database/create-database.js +18 -3
  6. package/dist/ecs/database/create-database.js.map +1 -1
  7. package/dist/ecs/database/create-database.test.js +237 -3
  8. package/dist/ecs/database/create-database.test.js.map +1 -1
  9. package/dist/ecs/database/database.d.ts +7 -4
  10. package/dist/ecs/database/observe-dependent-value.test.js +1 -1
  11. package/dist/ecs/database/observe-dependent-value.test.js.map +1 -1
  12. package/dist/ecs/database/observe-select-entities.d.ts +1 -1
  13. package/dist/ecs/database/observe-select-entities.js +57 -2
  14. package/dist/ecs/database/observe-select-entities.js.map +1 -1
  15. package/dist/ecs/database/observe-select-entities.performance.test.d.ts +1 -0
  16. package/dist/ecs/database/observe-select-entities.performance.test.js +175 -0
  17. package/dist/ecs/database/observe-select-entities.performance.test.js.map +1 -0
  18. package/dist/ecs/database/observe-select-entities.test.js +6 -7
  19. package/dist/ecs/database/observe-select-entities.test.js.map +1 -1
  20. package/dist/ecs/database/transactional-store/create-transactional-store.js +12 -8
  21. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  22. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +193 -3
  23. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  24. package/dist/ecs/database/transactional-store/patch-entity-values.d.ts +2 -0
  25. package/dist/ecs/database/transactional-store/patch-entity-values.js +7 -0
  26. package/dist/ecs/database/transactional-store/patch-entity-values.js.map +1 -0
  27. package/dist/ecs/database/transactional-store/patch.d.ts +3 -0
  28. package/dist/ecs/database/transactional-store/patch.js +7 -0
  29. package/dist/ecs/database/transactional-store/patch.js.map +1 -0
  30. package/dist/ecs/database/transactional-store/transactional-store.d.ts +1 -1
  31. package/dist/ecs/store/core/core.d.ts +21 -7
  32. package/dist/ecs/store/core/create-core.js +15 -4
  33. package/dist/ecs/store/core/create-core.js.map +1 -1
  34. package/dist/ecs/store/core/create-core.test.js +119 -1
  35. package/dist/ecs/store/core/create-core.test.js.map +1 -1
  36. package/dist/ecs/store/core/select-entities.d.ts +1 -1
  37. package/dist/ecs/store/core/select-entities.js.map +1 -1
  38. package/dist/ecs/store/create-store.js.map +1 -1
  39. package/dist/ecs/store/create-store.test.js +21 -0
  40. package/dist/ecs/store/create-store.test.js.map +1 -1
  41. package/dist/ecs/store/store.d.ts +1 -1
  42. package/dist/observe/to-async-generator.d.ts +9 -0
  43. package/dist/observe/to-async-generator.js +129 -0
  44. package/dist/observe/to-async-generator.js.map +1 -0
  45. package/dist/observe/to-async-generator.test.d.ts +1 -0
  46. package/dist/observe/to-async-generator.test.js +413 -0
  47. package/dist/observe/to-async-generator.test.js.map +1 -0
  48. package/dist/schema/f32 copy.d.ts +6 -0
  49. package/dist/schema/f32 copy.js +6 -0
  50. package/dist/schema/f32 copy.js.map +1 -0
  51. package/dist/schema/f64.d.ts +6 -0
  52. package/dist/schema/f64.js +6 -0
  53. package/dist/schema/f64.js.map +1 -0
  54. package/dist/schema/time.d.ts +1 -1
  55. package/dist/schema/time.js +2 -2
  56. package/dist/table/select-rows.d.ts +3 -4
  57. package/dist/table/select-rows.js +6 -3
  58. package/dist/table/select-rows.js.map +1 -1
  59. package/dist/table/select-rows.test.js +6 -6
  60. package/dist/table/select-rows.test.js.map +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +1 -1
@@ -40,6 +40,8 @@ const healthSchema = {
40
40
  current: F32Schema,
41
41
  max: F32Schema,
42
42
  },
43
+ required: ["current", "max"],
44
+ additionalProperties: false,
43
45
  };
44
46
  describe("createTransactionalStore", () => {
45
47
  it("should create transactional store with basic components", () => {
@@ -141,8 +143,6 @@ describe("createTransactionalStore", () => {
141
143
  expect(store.componentSchemas).toBeDefined();
142
144
  expect(store.resources).toBeDefined();
143
145
  expect(store.queryArchetypes).toBeDefined();
144
- expect(store.ensureArchetype).toBeDefined();
145
- expect(store.locate).toBeDefined();
146
146
  expect(store.read).toBeDefined();
147
147
  expect(store.execute).toBeDefined();
148
148
  // Verify we can use the store normally for read operations
@@ -182,9 +182,199 @@ describe("createTransactionalStore", () => {
182
182
  health: { current: 100, max: 100 }
183
183
  });
184
184
  });
185
- expect(result.changedEntities).toEqual(new Set([result.value]));
185
+ expect(result.changedEntities).toEqual(new Map([[result.value, { position: { x: 1, y: 2, z: 3 }, health: { current: 100, max: 100 } }]]));
186
186
  expect(result.changedComponents).toEqual(new Set(["position", "health"]));
187
187
  expect(result.changedArchetypes).toEqual(new Set([store.archetypes.PositionHealth.id]));
188
188
  });
189
+ it("should track changedEntities as Map with combined values for multiple updates", () => {
190
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
191
+ const store = createTransactionalStore(baseStore);
192
+ const result = store.execute((transactionStore) => {
193
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
194
+ const entity = archetype.insert({
195
+ position: { x: 1, y: 2, z: 3 },
196
+ health: { current: 100, max: 100 }
197
+ });
198
+ // Multiple updates to the same entity
199
+ transactionStore.update(entity, { position: { x: 10, y: 20, z: 30 } });
200
+ transactionStore.update(entity, { health: { current: 50, max: 100 } });
201
+ transactionStore.update(entity, { position: { x: 15, y: 25, z: 35 } });
202
+ return entity;
203
+ });
204
+ // Should have combined final values from all updates
205
+ expect(result.value).toBeDefined();
206
+ expect(typeof result.value).toBe('number');
207
+ const entity = result.value;
208
+ expect(result.changedEntities).toEqual(new Map([[entity, {
209
+ position: { x: 15, y: 25, z: 35 },
210
+ health: { current: 50, max: 100 }
211
+ }]]));
212
+ });
213
+ it("should track changedEntities as Map with null for deleted entities", () => {
214
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
215
+ const store = createTransactionalStore(baseStore);
216
+ // First create an entity
217
+ let entity;
218
+ store.execute((transactionStore) => {
219
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
220
+ entity = archetype.insert({
221
+ position: { x: 1, y: 2, z: 3 },
222
+ health: { current: 100, max: 100 }
223
+ });
224
+ });
225
+ // Then delete it in a separate transaction
226
+ const result = store.execute((transactionStore) => {
227
+ transactionStore.delete(entity);
228
+ });
229
+ // Should have null value for the deleted entity
230
+ expect(result.changedEntities).toEqual(new Map([[entity, null]]));
231
+ });
232
+ it("should track changedEntities with combined values when entity is updated then deleted", () => {
233
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
234
+ const store = createTransactionalStore(baseStore);
235
+ // First create an entity
236
+ let entity;
237
+ store.execute((transactionStore) => {
238
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
239
+ entity = archetype.insert({
240
+ position: { x: 1, y: 2, z: 3 },
241
+ health: { current: 100, max: 100 }
242
+ });
243
+ });
244
+ // Then update and delete in the same transaction
245
+ const result = store.execute((transactionStore) => {
246
+ transactionStore.update(entity, { position: { x: 10, y: 20, z: 30 } });
247
+ transactionStore.update(entity, { health: { current: 50, max: 100 } });
248
+ transactionStore.delete(entity);
249
+ });
250
+ // Should have null since the entity was deleted
251
+ expect(result.changedEntities).toEqual(new Map([[entity, null]]));
252
+ });
253
+ it("should track deleted components in changedComponents when entity is deleted", () => {
254
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
255
+ const store = createTransactionalStore(baseStore);
256
+ // First create an entity with multiple components
257
+ let entity;
258
+ store.execute((transactionStore) => {
259
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
260
+ entity = archetype.insert({
261
+ position: { x: 1, y: 2, z: 3 },
262
+ health: { current: 100, max: 100 }
263
+ });
264
+ });
265
+ // Then delete it in a separate transaction
266
+ const result = store.execute((transactionStore) => {
267
+ transactionStore.delete(entity);
268
+ });
269
+ // Should have null value for the deleted entity
270
+ expect(result.changedEntities).toEqual(new Map([[entity, null]]));
271
+ // Should track the deleted components in changedComponents
272
+ expect(result.changedComponents).toEqual(new Set(["position", "health"]));
273
+ });
274
+ it("should track deleted components when entity is updated then deleted", () => {
275
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
276
+ const store = createTransactionalStore(baseStore);
277
+ // First create an entity
278
+ let entity;
279
+ store.execute((transactionStore) => {
280
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
281
+ entity = archetype.insert({
282
+ position: { x: 1, y: 2, z: 3 },
283
+ health: { current: 100, max: 100 }
284
+ });
285
+ });
286
+ // Then update and delete in the same transaction
287
+ const result = store.execute((transactionStore) => {
288
+ transactionStore.update(entity, { position: { x: 10, y: 20, z: 30 } });
289
+ transactionStore.update(entity, { health: { current: 50, max: 100 } });
290
+ transactionStore.delete(entity);
291
+ });
292
+ // Should have null since the entity was deleted
293
+ expect(result.changedEntities).toEqual(new Map([[entity, null]]));
294
+ // Should track all components that were affected (updated and then deleted)
295
+ expect(result.changedComponents).toEqual(new Set(["position", "health"]));
296
+ });
297
+ it("should track changedEntities with final combined values for complex update sequences", () => {
298
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
299
+ const store = createTransactionalStore(baseStore);
300
+ const result = store.execute((transactionStore) => {
301
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
302
+ const entity = archetype.insert({
303
+ position: { x: 1, y: 2, z: 3 },
304
+ health: { current: 100, max: 100 }
305
+ });
306
+ // Complex sequence of updates
307
+ transactionStore.update(entity, { position: { x: 10, y: 20, z: 30 } });
308
+ transactionStore.update(entity, { health: { current: 75, max: 100 } });
309
+ transactionStore.update(entity, { position: { x: 15, y: 25, z: 35 } });
310
+ transactionStore.update(entity, { health: { current: 50, max: 100 } });
311
+ transactionStore.update(entity, { position: { x: 20, y: 30, z: 40 } });
312
+ return entity;
313
+ });
314
+ // Should have the final combined state
315
+ expect(result.changedEntities).toEqual(new Map([[result.value, {
316
+ position: { x: 20, y: 30, z: 40 },
317
+ health: { current: 50, max: 100 }
318
+ }]]));
319
+ });
320
+ it("should track multiple entities with different operations in changedEntities", () => {
321
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
322
+ const store = createTransactionalStore(baseStore);
323
+ const result = store.execute((transactionStore) => {
324
+ const archetype = transactionStore.ensureArchetype(["id", "position", "health"]);
325
+ // Create first entity
326
+ const entity1 = archetype.insert({
327
+ position: { x: 1, y: 2, z: 3 },
328
+ health: { current: 100, max: 100 }
329
+ });
330
+ // Create second entity
331
+ const entity2 = archetype.insert({
332
+ position: { x: 10, y: 20, z: 30 },
333
+ health: { current: 200, max: 200 }
334
+ });
335
+ // Update first entity
336
+ transactionStore.update(entity1, { position: { x: 5, y: 6, z: 7 } });
337
+ // Delete second entity
338
+ transactionStore.delete(entity2);
339
+ return entity1;
340
+ });
341
+ // Should have both entities tracked with appropriate values
342
+ expect(result.changedEntities.size).toBe(2);
343
+ expect(result.changedEntities.get(result.value)).toEqual({
344
+ position: { x: 5, y: 6, z: 7 },
345
+ health: { current: 100, max: 100 }
346
+ });
347
+ // Find the deleted entity
348
+ const deletedEntity = Array.from(result.changedEntities.entries()).find(([_, values]) => values === null)?.[0];
349
+ expect(deletedEntity).toBeDefined();
350
+ expect(result.changedEntities.get(deletedEntity)).toBeNull();
351
+ });
352
+ it("should increment .rows property after each insert operation within a transaction", () => {
353
+ const baseStore = createStore({ position: positionSchema, health: healthSchema }, {});
354
+ const store = createTransactionalStore(baseStore);
355
+ // Get the archetype before any inserts
356
+ const archetype = baseStore.ensureArchetype(["id", "position"]);
357
+ const initialRows = archetype.rows;
358
+ store.execute((transactionStore) => {
359
+ const transactionArchetype = transactionStore.ensureArchetype(["id", "position"]);
360
+ // First insert - rows should be incremented
361
+ const entity1 = transactionArchetype.insert({
362
+ position: { x: 1, y: 2, z: 3 }
363
+ });
364
+ expect(transactionArchetype.rows).toBe(initialRows + 1);
365
+ // Second insert - rows should be incremented again
366
+ const entity2 = transactionArchetype.insert({
367
+ position: { x: 10, y: 20, z: 30 }
368
+ });
369
+ expect(transactionArchetype.rows).toBe(initialRows + 2);
370
+ // Third insert - rows should be incremented again
371
+ const entity3 = transactionArchetype.insert({
372
+ position: { x: 100, y: 200, z: 300 }
373
+ });
374
+ expect(transactionArchetype.rows).toBe(initialRows + 3);
375
+ });
376
+ // After transaction, the base store should also reflect the changes
377
+ expect(archetype.rows).toBe(initialRows + 3);
378
+ });
189
379
  });
190
380
  //# sourceMappingURL=create-transactional-store.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-transactional-store.test.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-transactional-store.test.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { EntityReadValues, EntityUpdateValues } from "../../store/core/index.js";
2
+ export declare function patchEntityValues<C extends object>(a: EntityUpdateValues<C> | EntityReadValues<C> | null | undefined, b: EntityUpdateValues<C> | null): Partial<Omit<C, "id">> | null;
@@ -0,0 +1,7 @@
1
+ export function patchEntityValues(a, b) {
2
+ if (!a || !b) {
3
+ return b;
4
+ }
5
+ return { ...a, ...b };
6
+ }
7
+ //# sourceMappingURL=patch-entity-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-entity-values.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/patch-entity-values.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAmB,CAAiE,EAAE,CAA+B;IAClJ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACb,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { EntityUpdateValues } from "../../store/core/index.js";
2
+ import { Components } from "../../store/components.js";
3
+ export declare function patch<C extends Components>(a: EntityUpdateValues<C> | null | undefined, b: EntityUpdateValues<C> | null): Partial<Omit<C, "id">> | null;
@@ -0,0 +1,7 @@
1
+ export function patch(a, b) {
2
+ if (!a || !b) {
3
+ return b;
4
+ }
5
+ return { ...a, ...b };
6
+ }
7
+ //# sourceMappingURL=patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/patch.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,KAAK,CAAuB,CAA2C,EAAE,CAA+B;IACpH,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACb,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1B,CAAC"}
@@ -41,7 +41,7 @@ export interface TransactionResult<C> {
41
41
  readonly transient: boolean;
42
42
  readonly redo: TransactionWriteOperation<C>[];
43
43
  readonly undo: TransactionWriteOperation<C>[];
44
- readonly changedEntities: Set<Entity>;
44
+ readonly changedEntities: Map<Entity, EntityUpdateValues<C> | null>;
45
45
  readonly changedComponents: Set<keyof C>;
46
46
  readonly changedArchetypes: Set<ArchetypeId>;
47
47
  }
@@ -1,11 +1,13 @@
1
1
  import { Entity } from "../../entity.js";
2
2
  import { Archetype, ReadonlyArchetype } from "../../archetype/archetype.js";
3
3
  import { Schema } from "../../../schema/schema.js";
4
- import { EntityLocation } from "../../entity-location-table/entity-location.js";
5
4
  import { CoreComponents } from "../../core-components.js";
6
5
  import { StringKeyof } from "../../../types/index.js";
7
6
  import { Components } from "../components.js";
8
- export type EntityValues<C> = CoreComponents & {
7
+ export type EntityValues<C> = {
8
+ readonly [K in (CoreComponents & StringKeyof<C>)]: C[K];
9
+ };
10
+ export type EntityReadValues<C> = CoreComponents & {
9
11
  readonly [K in StringKeyof<C>]?: C[K];
10
12
  };
11
13
  export type EntityUpdateValues<C> = Partial<Omit<C, "id">>;
@@ -16,21 +18,33 @@ export interface ReadonlyCore<C extends Components = never> {
16
18
  readonly componentSchemas: {
17
19
  readonly [K in StringKeyof<C & CoreComponents>]: Schema;
18
20
  };
19
- queryArchetypes<Include extends StringKeyof<C & CoreComponents>>(include: readonly Include[], options?: ArchetypeQueryOptions<C>): readonly ReadonlyArchetype<CoreComponents & Pick<C & CoreComponents, Include>>[];
20
- ensureArchetype: <const CC extends StringKeyof<C | CoreComponents>>(components: readonly CC[]) => ReadonlyArchetype<CoreComponents & {
21
+ queryArchetypes<Include extends StringKeyof<C & CoreComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C>): readonly ReadonlyArchetype<CoreComponents & Pick<C & CoreComponents, Include>>[];
22
+ ensureArchetype: <const CC extends StringKeyof<C & CoreComponents>>(components: readonly CC[]) => ReadonlyArchetype<CoreComponents & {
21
23
  [K in CC]: (C & CoreComponents)[K];
22
24
  }>;
23
- locate: (entity: Entity) => EntityLocation | null;
24
- read: (entity: Entity) => EntityValues<C> | null;
25
+ locate: (entity: Entity) => {
26
+ archetype: ReadonlyArchetype<CoreComponents>;
27
+ row: number;
28
+ } | null;
29
+ read<T extends CoreComponents>(entity: Entity, minArchetype: ReadonlyArchetype<T> | Archetype<T>): {
30
+ readonly [K in (StringKeyof<CoreComponents & T>)]: (CoreComponents & T)[K];
31
+ } & EntityReadValues<C> | null;
32
+ read(entity: Entity): {
33
+ readonly [K in (StringKeyof<CoreComponents & C>)]: (CoreComponents & C)[K];
34
+ } | null;
25
35
  }
26
36
  /**
27
37
  * This is the main interface for the low level ECS Core.
28
38
  */
29
39
  export interface Core<C extends Components = never> extends ReadonlyCore<C> {
30
- queryArchetypes<Include extends StringKeyof<C & CoreComponents>>(include: readonly Include[], options?: ArchetypeQueryOptions<C>): readonly Archetype<CoreComponents & Pick<C & CoreComponents, Include>>[];
40
+ queryArchetypes<Include extends StringKeyof<C & CoreComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C>): readonly Archetype<CoreComponents & Pick<C & CoreComponents, Include>>[];
31
41
  ensureArchetype: <const CC extends StringKeyof<C & CoreComponents>>(components: readonly CC[]) => Archetype<CoreComponents & {
32
42
  [K in CC]: (C & CoreComponents)[K];
33
43
  }>;
44
+ locate: (entity: Entity) => {
45
+ archetype: Archetype<CoreComponents>;
46
+ row: number;
47
+ } | null;
34
48
  delete: (entity: Entity) => void;
35
49
  update: (entity: Entity, values: EntityUpdateValues<C>) => void;
36
50
  }
@@ -7,9 +7,10 @@ export function createCore(newComponentSchemas) {
7
7
  const entityLocationTable = createEntityLocationTable();
8
8
  const archetypes = [];
9
9
  const queryArchetypes = (include, options) => {
10
+ const includeArray = Array.from(include);
10
11
  const results = [];
11
12
  for (const archetype of archetypes) {
12
- const hasAllRequired = include.every(comp => archetype.columns[comp] !== undefined);
13
+ const hasAllRequired = includeArray.every(comp => archetype.columns[comp] !== undefined);
13
14
  const hasNoExcluded = !options?.exclude || options.exclude.every(comp => archetype.columns[comp] === undefined);
14
15
  if (hasAllRequired && hasNoExcluded) {
15
16
  results.push(archetype);
@@ -40,12 +41,16 @@ export function createCore(newComponentSchemas) {
40
41
  return archetype;
41
42
  };
42
43
  const { locate } = entityLocationTable;
43
- const readEntity = (entity) => {
44
+ const readEntity = (entity, minArchetype) => {
44
45
  const location = locate(entity);
45
46
  if (location === null) {
46
47
  return null;
47
48
  }
48
- return location !== null ? TABLE.getRowData(archetypes[location.archetype], location.row) : null;
49
+ const archetype = archetypes[location.archetype];
50
+ if (minArchetype && location.archetype !== minArchetype.id && !archetype.components.isSupersetOf(minArchetype.components)) {
51
+ return null;
52
+ }
53
+ return TABLE.getRowData(archetype, location.row);
49
54
  };
50
55
  const deleteEntity = (entity) => {
51
56
  const location = locate(entity);
@@ -111,7 +116,13 @@ export function createCore(newComponentSchemas) {
111
116
  componentSchemas: componentSchemas,
112
117
  queryArchetypes,
113
118
  ensureArchetype,
114
- locate,
119
+ locate: (entity) => {
120
+ const location = locate(entity);
121
+ if (location === null) {
122
+ return null;
123
+ }
124
+ return { archetype: archetypes[location.archetype], row: location.row };
125
+ },
115
126
  read: readEntity,
116
127
  delete: deleteEntity,
117
128
  update: updateEntity,
@@ -1 +1 @@
1
- {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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"}
@@ -147,7 +147,7 @@ export function createCoreTestSuite(name, factory = createCore) {
147
147
  const entity = archetype.insert({ position: { x: 1, y: 2, z: 3 } });
148
148
  const location = core.locate(entity);
149
149
  expect(location).not.toBeNull();
150
- expect(location?.archetype).toBe(archetype.id);
150
+ expect(location?.archetype.id).toBe(archetype.id);
151
151
  expect(location?.row).toBeGreaterThanOrEqual(0);
152
152
  });
153
153
  it("should return null when locating non-existent entity", () => {
@@ -353,6 +353,124 @@ export function createCoreTestSuite(name, factory = createCore) {
353
353
  expect(core.locate(entities[i])).toBeNull();
354
354
  }
355
355
  });
356
+ describe("core read with minArchetype", () => {
357
+ it("should read entity data when entity has matching components", () => {
358
+ const core = factory({
359
+ position: positionSchema,
360
+ health: healthSchema,
361
+ });
362
+ const positionArchetype = core.ensureArchetype(["id", "position"]);
363
+ const entity = positionArchetype.insert({ position: { x: 1, y: 2, z: 3 } });
364
+ const data = core.read(entity, positionArchetype);
365
+ expect(data).not.toBeNull();
366
+ expect(data?.id).toBe(entity);
367
+ expect(data?.position).toEqual({ x: 1, y: 2, z: 3 });
368
+ });
369
+ it("should return null when entity doesn't exist", () => {
370
+ const core = factory({
371
+ position: positionSchema,
372
+ });
373
+ const archetype = core.ensureArchetype(["id", "position"]);
374
+ const data = core.read(999, archetype);
375
+ expect(data).toBeNull();
376
+ });
377
+ it("should return null when entity exists but doesn't have required components", () => {
378
+ const core = factory({
379
+ position: positionSchema,
380
+ health: healthSchema,
381
+ });
382
+ // Create entity with only position
383
+ const positionArchetype = core.ensureArchetype(["id", "position"]);
384
+ const entity = positionArchetype.insert({ position: { x: 1, y: 2, z: 3 } });
385
+ // Try to read from health archetype
386
+ const healthArchetype = core.ensureArchetype(["id", "health"]);
387
+ const data = core.read(entity, healthArchetype);
388
+ expect(data).toBeNull();
389
+ });
390
+ it("should read entity data when entity has more components than archetype requires", () => {
391
+ const core = factory({
392
+ position: positionSchema,
393
+ health: healthSchema,
394
+ });
395
+ // Create entity with both position and health
396
+ const fullArchetype = core.ensureArchetype(["id", "position", "health"]);
397
+ const entity = fullArchetype.insert({
398
+ position: { x: 1, y: 2, z: 3 },
399
+ health: { current: 100, max: 100 }
400
+ });
401
+ // Should be able to read from position-only archetype
402
+ const positionArchetype = core.ensureArchetype(["id", "position"]);
403
+ const data = core.read(entity, positionArchetype);
404
+ expect(data).not.toBeNull();
405
+ expect(data?.id).toBe(entity);
406
+ expect(data?.position).toEqual({ x: 1, y: 2, z: 3 });
407
+ });
408
+ it("should return null when entity has different components than archetype", () => {
409
+ const core = factory({
410
+ position: positionSchema,
411
+ health: healthSchema,
412
+ name: nameSchema,
413
+ });
414
+ // Create entity with position and health
415
+ const positionHealthArchetype = core.ensureArchetype(["id", "position", "health"]);
416
+ const entity = positionHealthArchetype.insert({
417
+ position: { x: 1, y: 2, z: 3 },
418
+ health: { current: 100, max: 100 }
419
+ });
420
+ // Try to read from name archetype
421
+ const nameArchetype = core.ensureArchetype(["id", "name"]);
422
+ const data = core.read(entity, nameArchetype);
423
+ expect(data).toBeNull();
424
+ });
425
+ it("should read entity data after component updates", () => {
426
+ const core = factory({
427
+ position: positionSchema,
428
+ health: healthSchema,
429
+ });
430
+ const positionArchetype = core.ensureArchetype(["id", "position"]);
431
+ const entity = positionArchetype.insert({ position: { x: 1, y: 2, z: 3 } });
432
+ // Update position
433
+ core.update(entity, { position: { x: 10, y: 20, z: 30 } });
434
+ const data = core.read(entity, positionArchetype);
435
+ expect(data).not.toBeNull();
436
+ expect(data?.position).toEqual({ x: 10, y: 20, z: 30 });
437
+ });
438
+ it("should return null after entity is deleted", () => {
439
+ const core = factory({
440
+ position: positionSchema,
441
+ });
442
+ const archetype = core.ensureArchetype(["id", "position"]);
443
+ const entity = archetype.insert({ position: { x: 1, y: 2, z: 3 } });
444
+ // Verify entity exists
445
+ expect(core.read(entity, archetype)).not.toBeNull();
446
+ // Delete entity
447
+ core.delete(entity);
448
+ // Verify entity is no longer readable
449
+ expect(core.read(entity, archetype)).toBeNull();
450
+ });
451
+ it("should handle multiple entities in same archetype", () => {
452
+ const core = factory({
453
+ position: positionSchema,
454
+ });
455
+ const archetype = core.ensureArchetype(["id", "position"]);
456
+ const entity1 = archetype.insert({ position: { x: 1, y: 2, z: 3 } });
457
+ const entity2 = archetype.insert({ position: { x: 4, y: 5, z: 6 } });
458
+ const data1 = core.read(entity1, archetype);
459
+ const data2 = core.read(entity2, archetype);
460
+ expect(data1).not.toBeNull();
461
+ expect(data2).not.toBeNull();
462
+ expect(data1?.position).toEqual({ x: 1, y: 2, z: 3 });
463
+ expect(data2?.position).toEqual({ x: 4, y: 5, z: 6 });
464
+ });
465
+ it("should return null for invalid entity ID -1", () => {
466
+ const core = factory({
467
+ position: positionSchema,
468
+ });
469
+ const archetype = core.ensureArchetype(["id", "position"]);
470
+ const data = core.read(-1, archetype);
471
+ expect(data).toBeNull();
472
+ });
473
+ });
356
474
  });
357
475
  }
358
476
  // Original core-specific tests