@adobe/data 0.2.12 → 0.2.13

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 (131) hide show
  1. package/dist/ecs/database/create-database.js +11 -7
  2. package/dist/ecs/database/create-database.js.map +1 -1
  3. package/dist/ecs/database/create-database.test.js +8 -8
  4. package/dist/ecs/database/create-database.test.js.map +1 -1
  5. package/dist/ecs/database/database-schema/create-database-schema-test.js +21 -0
  6. package/dist/ecs/database/database-schema/create-database-schema-test.js.map +1 -1
  7. package/dist/ecs/database/database-schema/create-database-schema.js +21 -0
  8. package/dist/ecs/database/database-schema/create-database-schema.js.map +1 -1
  9. package/dist/ecs/database/database-schema/database-schema.js +21 -0
  10. package/dist/ecs/database/database-schema/database-schema.js.map +1 -1
  11. package/dist/ecs/database/database-schema/index.js +21 -0
  12. package/dist/ecs/database/database-schema/index.js.map +1 -1
  13. package/dist/ecs/database/database.d.ts +3 -0
  14. package/dist/ecs/database/observe-select-entities.d.ts +7 -0
  15. package/dist/ecs/database/observe-select-entities.js +62 -0
  16. package/dist/ecs/database/observe-select-entities.js.map +1 -0
  17. package/dist/ecs/database/observe-select-entities.test.d.ts +1 -0
  18. package/dist/ecs/database/observe-select-entities.test.js +545 -0
  19. package/dist/ecs/database/observe-select-entities.test.js.map +1 -0
  20. package/dist/ecs/database/transactional-store/create-transactional-store.js +1 -0
  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 +15 -13
  23. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  24. package/dist/ecs/store/core/core.d.ts +4 -6
  25. package/dist/ecs/store/core/create-core.js.map +1 -1
  26. package/dist/ecs/store/core/select-entities.d.ts +6 -0
  27. package/dist/ecs/store/core/select-entities.js +78 -0
  28. package/dist/ecs/store/core/select-entities.js.map +1 -0
  29. package/dist/ecs/store/core/select-entities.test.d.ts +1 -0
  30. package/dist/ecs/store/core/select-entities.test.js +375 -0
  31. package/dist/ecs/store/core/select-entities.test.js.map +1 -0
  32. package/dist/ecs/store/create-store.js +2 -14
  33. package/dist/ecs/store/create-store.js.map +1 -1
  34. package/dist/ecs/store/create-store.test.js.map +1 -1
  35. package/dist/ecs/store/entity-select-options.d.ts +15 -0
  36. package/dist/ecs/store/entity-select-options.js +23 -0
  37. package/dist/ecs/store/entity-select-options.js.map +1 -0
  38. package/dist/ecs/store/query.d.ts +47 -0
  39. package/dist/ecs/store/query.js +2 -0
  40. package/dist/ecs/store/query.js.map +1 -0
  41. package/dist/ecs/store/select-options.d.ts +1 -0
  42. package/dist/ecs/store/select-options.js +16 -0
  43. package/dist/ecs/store/select-options.js.map +1 -0
  44. package/dist/ecs/store/select.d.ts +44 -0
  45. package/dist/ecs/store/select.js +2 -0
  46. package/dist/ecs/store/select.js.map +1 -0
  47. package/dist/ecs/store/store.d.ts +3 -2
  48. package/dist/equals-shallow.js +21 -0
  49. package/dist/equals-shallow.js.map +1 -1
  50. package/dist/equals-shallow.test.js +21 -0
  51. package/dist/equals-shallow.test.js.map +1 -1
  52. package/dist/functions/apply-args.js +21 -0
  53. package/dist/functions/apply-args.js.map +1 -1
  54. package/dist/functions/index.js +21 -0
  55. package/dist/functions/index.js.map +1 -1
  56. package/dist/internal/function/memoize-factory.js +21 -0
  57. package/dist/internal/function/memoize-factory.js.map +1 -1
  58. package/dist/is-data.js +21 -0
  59. package/dist/is-data.js.map +1 -1
  60. package/dist/lit/decorators/apply-decorator.js +21 -0
  61. package/dist/lit/decorators/apply-decorator.js.map +1 -1
  62. package/dist/lit/decorators/apply-service-decorators.js +21 -0
  63. package/dist/lit/decorators/apply-service-decorators.js.map +1 -1
  64. package/dist/lit/decorators/require-service.js +21 -0
  65. package/dist/lit/decorators/require-service.js.map +1 -1
  66. package/dist/lit/elements/index.js +21 -0
  67. package/dist/lit/elements/index.js.map +1 -1
  68. package/dist/lit/elements/service-application.js +21 -0
  69. package/dist/lit/elements/service-application.js.map +1 -1
  70. package/dist/lit/elements/service-context.js +21 -0
  71. package/dist/lit/elements/service-context.js.map +1 -1
  72. package/dist/lit/elements/service-element.js +21 -0
  73. package/dist/lit/elements/service-element.js.map +1 -1
  74. package/dist/lit/hooks/component/component.js +21 -0
  75. package/dist/lit/hooks/component/component.js.map +1 -1
  76. package/dist/lit/hooks/component/stack.js +21 -0
  77. package/dist/lit/hooks/component/stack.js.map +1 -1
  78. package/dist/lit/hooks/index.js +21 -0
  79. package/dist/lit/hooks/index.js.map +1 -1
  80. package/dist/lit/hooks/use-connected.js +21 -0
  81. package/dist/lit/hooks/use-connected.js.map +1 -1
  82. package/dist/lit/hooks/use-effect.js +21 -0
  83. package/dist/lit/hooks/use-effect.js.map +1 -1
  84. package/dist/lit/hooks/use-element.js +21 -0
  85. package/dist/lit/hooks/use-element.js.map +1 -1
  86. package/dist/lit/hooks/use-memo.js +21 -0
  87. package/dist/lit/hooks/use-memo.js.map +1 -1
  88. package/dist/lit/hooks/use-observable-values.js +21 -0
  89. package/dist/lit/hooks/use-observable-values.js.map +1 -1
  90. package/dist/lit/hooks/use-observable.js +21 -0
  91. package/dist/lit/hooks/use-observable.js.map +1 -1
  92. package/dist/lit/hooks/use-ref.js +21 -0
  93. package/dist/lit/hooks/use-ref.js.map +1 -1
  94. package/dist/lit/hooks/use-resize-observer.js +21 -0
  95. package/dist/lit/hooks/use-resize-observer.js.map +1 -1
  96. package/dist/lit/hooks/use-state.js +21 -0
  97. package/dist/lit/hooks/use-state.js.map +1 -1
  98. package/dist/lit/hooks/use-window-event.js +21 -0
  99. package/dist/lit/hooks/use-window-event.js.map +1 -1
  100. package/dist/lit/hooks/with-hooks.js +21 -0
  101. package/dist/lit/hooks/with-hooks.js.map +1 -1
  102. package/dist/lit/index.js +21 -0
  103. package/dist/lit/index.js.map +1 -1
  104. package/dist/observe/create-query-state.js +21 -0
  105. package/dist/observe/create-query-state.js.map +1 -1
  106. package/dist/schema/boolean.js +21 -0
  107. package/dist/schema/boolean.js.map +1 -1
  108. package/dist/schema/time.js +21 -0
  109. package/dist/schema/time.js.map +1 -1
  110. package/dist/schema/tuple.js +21 -0
  111. package/dist/schema/tuple.js.map +1 -1
  112. package/dist/service/is-service.js +21 -0
  113. package/dist/service/is-service.js.map +1 -1
  114. package/dist/table/copy-column-to-gpu-buffer.js +21 -0
  115. package/dist/table/copy-column-to-gpu-buffer.js.map +1 -1
  116. package/dist/table/ensure-capacity copy.d.ts +2 -0
  117. package/dist/table/ensure-capacity copy.js +15 -0
  118. package/dist/table/ensure-capacity copy.js.map +1 -0
  119. package/dist/table/filter-rows.d.ts +2 -0
  120. package/dist/table/filter-rows.js +15 -0
  121. package/dist/table/filter-rows.js.map +1 -0
  122. package/dist/table/select-rows.d.ts +28 -0
  123. package/dist/table/select-rows.js +51 -0
  124. package/dist/table/select-rows.js.map +1 -0
  125. package/dist/table/select-rows.test.d.ts +1 -0
  126. package/dist/table/select-rows.test.js +131 -0
  127. package/dist/table/select-rows.test.js.map +1 -0
  128. package/dist/tsconfig.tsbuildinfo +1 -1
  129. package/dist/typed-buffer/copy-to-gpu-buffer.js +21 -0
  130. package/dist/typed-buffer/copy-to-gpu-buffer.js.map +1 -1
  131. package/package.json +1 -1
@@ -0,0 +1,545 @@
1
+ /*MIT License
2
+
3
+ © Copyright 2025 Adobe. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.*/
22
+ import { describe, expect, it, beforeEach, vi } from "vitest";
23
+ import { createStore } from "../store/create-store.js";
24
+ import { createDatabase } from "./create-database.js";
25
+ import { F32Schema } from "../../schema/f32.js";
26
+ import { BooleanSchema } from "../../schema/boolean.js";
27
+ describe("observeSelectEntities", () => {
28
+ let database;
29
+ let entities;
30
+ function createTestDatabase() {
31
+ const store = createStore({
32
+ position: F32Schema,
33
+ health: F32Schema,
34
+ name: { type: "string" },
35
+ score: F32Schema,
36
+ active: BooleanSchema
37
+ }, {}, {
38
+ Position: ["position"],
39
+ Health: ["health"],
40
+ Name: ["name"],
41
+ PositionHealth: ["position", "health"],
42
+ PositionName: ["position", "name"],
43
+ HealthName: ["health", "name"],
44
+ Full: ["position", "health", "name", "score", "active"]
45
+ });
46
+ return createDatabase(store, store => ({
47
+ createPositionEntity(args) {
48
+ return store.archetypes.Position.insert(args);
49
+ },
50
+ createHealthEntity(args) {
51
+ return store.archetypes.Health.insert(args);
52
+ },
53
+ createNameEntity(args) {
54
+ return store.archetypes.Name.insert(args);
55
+ },
56
+ createPositionHealthEntity(args) {
57
+ return store.archetypes.PositionHealth.insert(args);
58
+ },
59
+ createPositionNameEntity(args) {
60
+ return store.archetypes.PositionName.insert(args);
61
+ },
62
+ createHealthNameEntity(args) {
63
+ return store.archetypes.HealthName.insert(args);
64
+ },
65
+ createFullEntity(args) {
66
+ return store.archetypes.Full.insert(args);
67
+ },
68
+ updateEntity(args) {
69
+ return store.update(args.entity, args.values);
70
+ },
71
+ deleteEntity(args) {
72
+ return store.delete(args.entity);
73
+ }
74
+ }));
75
+ }
76
+ beforeEach(() => {
77
+ database = createTestDatabase();
78
+ // Create test entities across different archetypes
79
+ entities = {
80
+ // Position only archetype
81
+ pos1: database.transactions.createPositionEntity({ position: 1 }),
82
+ pos2: database.transactions.createPositionEntity({ position: 2 }),
83
+ pos3: database.transactions.createPositionEntity({ position: 3 }),
84
+ // Health only archetype
85
+ health1: database.transactions.createHealthEntity({ health: 50 }),
86
+ health2: database.transactions.createHealthEntity({ health: 75 }),
87
+ health3: database.transactions.createHealthEntity({ health: 25 }),
88
+ // Name only archetype
89
+ name1: database.transactions.createNameEntity({ name: "Alice" }),
90
+ name2: database.transactions.createNameEntity({ name: "Bob" }),
91
+ name3: database.transactions.createNameEntity({ name: "Charlie" }),
92
+ // Position + Health archetype
93
+ posHealth1: database.transactions.createPositionHealthEntity({
94
+ position: 10,
95
+ health: 80
96
+ }),
97
+ posHealth2: database.transactions.createPositionHealthEntity({
98
+ position: 13,
99
+ health: 90
100
+ }),
101
+ // Position + Name archetype
102
+ posName1: database.transactions.createPositionNameEntity({
103
+ position: 16,
104
+ name: "David"
105
+ }),
106
+ posName2: database.transactions.createPositionNameEntity({
107
+ position: 19,
108
+ name: "Eve"
109
+ }),
110
+ // Health + Name archetype
111
+ healthName1: database.transactions.createHealthNameEntity({
112
+ health: 60,
113
+ name: "Frank"
114
+ }),
115
+ healthName2: database.transactions.createHealthNameEntity({
116
+ health: 40,
117
+ name: "Grace"
118
+ }),
119
+ // Full archetype with all components
120
+ full1: database.transactions.createFullEntity({
121
+ position: 22,
122
+ health: 95,
123
+ name: "Henry",
124
+ score: 85.5,
125
+ active: true
126
+ }),
127
+ full2: database.transactions.createFullEntity({
128
+ position: 25,
129
+ health: 30,
130
+ name: "Iris",
131
+ score: 92.0,
132
+ active: false
133
+ }),
134
+ full3: database.transactions.createFullEntity({
135
+ position: 28,
136
+ health: 70,
137
+ name: "Jack",
138
+ score: 78.3,
139
+ active: true
140
+ }),
141
+ };
142
+ });
143
+ describe("Basic functionality", () => {
144
+ it("should observe entities with position component", () => {
145
+ const observer = vi.fn();
146
+ const unsubscribe = database.observe.select(["position"])(observer);
147
+ // Should include entities from position-only, position+health, position+name, and full archetypes
148
+ const expected = [
149
+ entities.pos1, entities.pos2, entities.pos3,
150
+ entities.posHealth1, entities.posHealth2,
151
+ entities.posName1, entities.posName2,
152
+ entities.full1, entities.full2, entities.full3
153
+ ];
154
+ expect(observer).toHaveBeenCalledWith(expect.arrayContaining(expected));
155
+ expect(observer).toHaveBeenCalledTimes(1);
156
+ unsubscribe();
157
+ });
158
+ it("should observe entities with health component", () => {
159
+ const observer = vi.fn();
160
+ const unsubscribe = database.observe.select(["health"])(observer);
161
+ // Should include entities from health-only, position+health, health+name, and full archetypes
162
+ const expected = [
163
+ entities.health1, entities.health2, entities.health3,
164
+ entities.posHealth1, entities.posHealth2,
165
+ entities.healthName1, entities.healthName2,
166
+ entities.full1, entities.full2, entities.full3
167
+ ];
168
+ expect(observer).toHaveBeenCalledWith(expect.arrayContaining(expected));
169
+ expect(observer).toHaveBeenCalledTimes(1);
170
+ unsubscribe();
171
+ });
172
+ it("should observe entities with name component", () => {
173
+ const observer = vi.fn();
174
+ const unsubscribe = database.observe.select(["name"])(observer);
175
+ // Should include entities from name-only, position+name, health+name, and full archetypes
176
+ const expected = [
177
+ entities.name1, entities.name2, entities.name3,
178
+ entities.posName1, entities.posName2,
179
+ entities.healthName1, entities.healthName2,
180
+ entities.full1, entities.full2, entities.full3
181
+ ];
182
+ expect(observer).toHaveBeenCalledWith(expect.arrayContaining(expected));
183
+ expect(observer).toHaveBeenCalledTimes(1);
184
+ unsubscribe();
185
+ });
186
+ it("should observe entities with multiple components", () => {
187
+ const observer = vi.fn();
188
+ const unsubscribe = database.observe.select(["position", "health"])(observer);
189
+ // Should only include entities from position+health and full archetypes
190
+ const expected = [
191
+ entities.posHealth1, entities.posHealth2,
192
+ entities.full1, entities.full2, entities.full3
193
+ ];
194
+ expect(observer).toHaveBeenCalledWith(expect.arrayContaining(expected));
195
+ expect(observer).toHaveBeenCalledTimes(1);
196
+ unsubscribe();
197
+ });
198
+ it("should observe entities with all components", () => {
199
+ const observer = vi.fn();
200
+ const unsubscribe = database.observe.select(["position", "health", "name", "score", "active"])(observer);
201
+ // Should only include entities from full archetype
202
+ const expected = [entities.full1, entities.full2, entities.full3];
203
+ expect(observer).toHaveBeenCalledWith(expect.arrayContaining(expected));
204
+ expect(observer).toHaveBeenCalledTimes(1);
205
+ unsubscribe();
206
+ });
207
+ });
208
+ describe("Reactive updates", () => {
209
+ it("should notify when relevant components change", async () => {
210
+ const observer = vi.fn();
211
+ const unsubscribe = database.observe.select(["position"])(observer);
212
+ // Initial notification
213
+ expect(observer).toHaveBeenCalledTimes(1);
214
+ const initialCall = observer.mock.calls[0][0];
215
+ expect(initialCall).toContain(entities.pos1);
216
+ // Update position component - should trigger new notification
217
+ database.transactions.updateEntity({
218
+ entity: entities.pos1,
219
+ values: { position: 999 }
220
+ });
221
+ // Wait for microtask to complete
222
+ await Promise.resolve();
223
+ expect(observer).toHaveBeenCalledTimes(2);
224
+ const updatedCall = observer.mock.calls[1][0];
225
+ expect(updatedCall).toContain(entities.pos1);
226
+ unsubscribe();
227
+ });
228
+ it("should not notify when irrelevant components change", async () => {
229
+ const observer = vi.fn();
230
+ const unsubscribe = database.observe.select(["position"])(observer);
231
+ // Initial notification
232
+ expect(observer).toHaveBeenCalledTimes(1);
233
+ // Update health component - should NOT trigger notification for position query
234
+ database.transactions.updateEntity({
235
+ entity: entities.health1,
236
+ values: { health: 999 }
237
+ });
238
+ // Wait for microtask to complete
239
+ await Promise.resolve();
240
+ // Should still only be called once (no new notification)
241
+ expect(observer).toHaveBeenCalledTimes(1);
242
+ unsubscribe();
243
+ });
244
+ it("should handle entity creation", async () => {
245
+ const observer = vi.fn();
246
+ const unsubscribe = database.observe.select(["position"])(observer);
247
+ // Initial notification
248
+ expect(observer).toHaveBeenCalledTimes(1);
249
+ const initialCount = observer.mock.calls[0][0].length;
250
+ // Create new entity with position component
251
+ const newEntity = database.transactions.createPositionEntity({ position: 100 });
252
+ // Wait for microtask to complete
253
+ await Promise.resolve();
254
+ // Should get new notification with additional entity
255
+ expect(observer).toHaveBeenCalledTimes(2);
256
+ const updatedCall = observer.mock.calls[1][0];
257
+ expect(updatedCall).toContain(newEntity);
258
+ expect(updatedCall.length).toBe(initialCount + 1);
259
+ unsubscribe();
260
+ });
261
+ it("should handle entity deletion", async () => {
262
+ const observer = vi.fn();
263
+ const unsubscribe = database.observe.select(["position"])(observer);
264
+ // Initial notification
265
+ expect(observer).toHaveBeenCalledTimes(1);
266
+ const initialCall = observer.mock.calls[0][0];
267
+ expect(initialCall).toContain(entities.pos1);
268
+ // Delete entity with position component
269
+ database.transactions.deleteEntity({ entity: entities.pos1 });
270
+ // Wait for microtask to complete
271
+ await Promise.resolve();
272
+ // Should get new notification without the deleted entity
273
+ expect(observer).toHaveBeenCalledTimes(2);
274
+ const updatedCall = observer.mock.calls[1][0];
275
+ expect(updatedCall).not.toContain(entities.pos1);
276
+ unsubscribe();
277
+ });
278
+ it("should handle entity updates", async () => {
279
+ const observer = vi.fn();
280
+ const unsubscribe = database.observe.select(["position", "health"])(observer);
281
+ // Initial notification
282
+ expect(observer).toHaveBeenCalledTimes(1);
283
+ expect(observer.mock.calls[0][0]).toContain(entities.posHealth1);
284
+ // Update both position and health components
285
+ database.transactions.updateEntity({
286
+ entity: entities.posHealth1,
287
+ values: { position: 999, health: 888 }
288
+ });
289
+ // Wait for microtask to complete
290
+ await Promise.resolve();
291
+ // Should get new notification
292
+ expect(observer).toHaveBeenCalledTimes(2);
293
+ unsubscribe();
294
+ });
295
+ });
296
+ describe("Caching behavior", () => {
297
+ it("should cache observe functions for identical queries", () => {
298
+ const observer1 = vi.fn();
299
+ const observer2 = vi.fn();
300
+ // Create two observers with identical queries
301
+ const unsubscribe1 = database.observe.select(["position"])(observer1);
302
+ const unsubscribe2 = database.observe.select(["position"])(observer2);
303
+ // Both should be called with the same initial data
304
+ expect(observer1).toHaveBeenCalledTimes(1);
305
+ expect(observer2).toHaveBeenCalledTimes(1);
306
+ expect(observer1.mock.calls[0][0]).toEqual(observer2.mock.calls[0][0]);
307
+ // Verify they're the same function reference (cached)
308
+ const observe1 = database.observe.select(["position"]);
309
+ const observe2 = database.observe.select(["position"]);
310
+ expect(observe1).toBe(observe2);
311
+ unsubscribe1();
312
+ unsubscribe2();
313
+ });
314
+ it("should create new observe functions for different queries", () => {
315
+ const observer1 = vi.fn();
316
+ const observer2 = vi.fn();
317
+ // Create observers with different queries
318
+ const unsubscribe1 = database.observe.select(["position"])(observer1);
319
+ const unsubscribe2 = database.observe.select(["health"])(observer2);
320
+ // Both should be called with different initial data
321
+ expect(observer1).toHaveBeenCalledTimes(1);
322
+ expect(observer2).toHaveBeenCalledTimes(1);
323
+ expect(observer1.mock.calls[0][0]).not.toEqual(observer2.mock.calls[0][0]);
324
+ // Verify they're different function references
325
+ const observe1 = database.observe.select(["position"]);
326
+ const observe2 = database.observe.select(["health"]);
327
+ expect(observe1).not.toBe(observe2);
328
+ unsubscribe1();
329
+ unsubscribe2();
330
+ });
331
+ it("should batch multiple synchronous transactions into single notification", async () => {
332
+ const observer = vi.fn();
333
+ const unsubscribe = database.observe.select(["position"])(observer);
334
+ // Initial notification
335
+ expect(observer).toHaveBeenCalledTimes(1);
336
+ const initialCount = observer.mock.calls[0][0].length;
337
+ // Execute multiple transactions synchronously
338
+ const entity1 = database.transactions.createPositionEntity({ position: 100 });
339
+ const entity2 = database.transactions.createPositionEntity({ position: 200 });
340
+ const entity3 = database.transactions.createPositionEntity({ position: 300 });
341
+ // Wait for microtask to complete
342
+ await Promise.resolve();
343
+ // Should only get one additional notification (not three)
344
+ expect(observer).toHaveBeenCalledTimes(2);
345
+ const updatedCall = observer.mock.calls[1][0];
346
+ expect(updatedCall).toContain(entity1);
347
+ expect(updatedCall).toContain(entity2);
348
+ expect(updatedCall).toContain(entity3);
349
+ expect(updatedCall.length).toBe(initialCount + 3);
350
+ unsubscribe();
351
+ });
352
+ it("should handle mixed synchronous and asynchronous transactions", async () => {
353
+ const observer = vi.fn();
354
+ const unsubscribe = database.observe.select(["position"])(observer);
355
+ // Initial notification
356
+ expect(observer).toHaveBeenCalledTimes(1);
357
+ const initialCount = observer.mock.calls[0][0].length;
358
+ // First synchronous transaction
359
+ const entity1 = database.transactions.createPositionEntity({ position: 100 });
360
+ // Wait for microtask
361
+ await Promise.resolve();
362
+ // Second synchronous transaction
363
+ const entity2 = database.transactions.createPositionEntity({ position: 200 });
364
+ // Wait for microtask
365
+ await Promise.resolve();
366
+ // Should get two additional notifications (one for each batch)
367
+ expect(observer).toHaveBeenCalledTimes(3);
368
+ const firstUpdate = observer.mock.calls[1][0];
369
+ expect(firstUpdate).toContain(entity1);
370
+ expect(firstUpdate.length).toBe(initialCount + 1);
371
+ const secondUpdate = observer.mock.calls[2][0];
372
+ expect(secondUpdate).toContain(entity2);
373
+ expect(secondUpdate.length).toBe(initialCount + 2);
374
+ unsubscribe();
375
+ });
376
+ });
377
+ describe("Filtering and ordering", () => {
378
+ it("should support where clause filtering", () => {
379
+ const observer = vi.fn();
380
+ const unsubscribe = database.observe.select(["name"], {
381
+ where: { name: "Alice" }
382
+ })(observer);
383
+ // Should only include the entity with name "Alice"
384
+ expect(observer).toHaveBeenCalledTimes(1);
385
+ const result = observer.mock.calls[0][0];
386
+ expect(result).toHaveLength(1);
387
+ expect(result).toContain(entities.name1);
388
+ unsubscribe();
389
+ });
390
+ it("should support numeric comparison filtering", () => {
391
+ const observer = vi.fn();
392
+ const unsubscribe = database.observe.select(["score"], {
393
+ where: { score: { ">": 80 } }
394
+ })(observer);
395
+ // Should only include entities with score > 80
396
+ expect(observer).toHaveBeenCalledTimes(1);
397
+ const result = observer.mock.calls[0][0];
398
+ expect(result).toHaveLength(2);
399
+ expect(result).toContain(entities.full1); // score: 85.5
400
+ expect(result).toContain(entities.full2); // score: 92.0
401
+ unsubscribe();
402
+ });
403
+ it("should support boolean filtering", () => {
404
+ const observer = vi.fn();
405
+ const unsubscribe = database.observe.select(["active"], {
406
+ where: { active: true }
407
+ })(observer);
408
+ // Should only include entities with active: true
409
+ expect(observer).toHaveBeenCalledTimes(1);
410
+ const result = observer.mock.calls[0][0];
411
+ expect(result).toHaveLength(2);
412
+ expect(result).toContain(entities.full1);
413
+ expect(result).toContain(entities.full3);
414
+ unsubscribe();
415
+ });
416
+ it("should support multiple condition filtering", () => {
417
+ const observer = vi.fn();
418
+ const unsubscribe = database.observe.select(["position", "health"], {
419
+ where: {
420
+ position: 22,
421
+ health: 95
422
+ }
423
+ })(observer);
424
+ // Should only include entities with exact position and health values
425
+ expect(observer).toHaveBeenCalledTimes(1);
426
+ const result = observer.mock.calls[0][0];
427
+ expect(result).toHaveLength(1);
428
+ expect(result).toContain(entities.full1);
429
+ unsubscribe();
430
+ });
431
+ it("should support order clause sorting", () => {
432
+ const observer = vi.fn();
433
+ const unsubscribe = database.observe.select(["score"], {
434
+ order: { score: true }
435
+ })(observer);
436
+ // Should be ordered by score ascending
437
+ expect(observer).toHaveBeenCalledTimes(1);
438
+ const result = observer.mock.calls[0][0];
439
+ expect(result).toHaveLength(3);
440
+ expect(result[0]).toBe(entities.full3); // 78.3
441
+ expect(result[1]).toBe(entities.full1); // 85.5
442
+ expect(result[2]).toBe(entities.full2); // 92.0
443
+ unsubscribe();
444
+ });
445
+ it("should support descending order", () => {
446
+ const observer = vi.fn();
447
+ const unsubscribe = database.observe.select(["score"], {
448
+ order: { score: false }
449
+ })(observer);
450
+ // Should be ordered by score descending
451
+ expect(observer).toHaveBeenCalledTimes(1);
452
+ const result = observer.mock.calls[0][0];
453
+ expect(result).toHaveLength(3);
454
+ expect(result[0]).toBe(entities.full2); // 92.0
455
+ expect(result[1]).toBe(entities.full1); // 85.5
456
+ expect(result[2]).toBe(entities.full3); // 78.3
457
+ unsubscribe();
458
+ });
459
+ it("should support string ordering", () => {
460
+ const observer = vi.fn();
461
+ const unsubscribe = database.observe.select(["name"], {
462
+ order: { name: true }
463
+ })(observer);
464
+ // Should be ordered alphabetically
465
+ expect(observer).toHaveBeenCalledTimes(1);
466
+ const result = observer.mock.calls[0][0];
467
+ expect(result).toHaveLength(10);
468
+ expect(result[0]).toBe(entities.name1); // Alice
469
+ expect(result[1]).toBe(entities.name2); // Bob
470
+ expect(result[2]).toBe(entities.name3); // Charlie
471
+ unsubscribe();
472
+ });
473
+ it("should support combined filtering and ordering", () => {
474
+ const observer = vi.fn();
475
+ const unsubscribe = database.observe.select(["score"], {
476
+ where: { score: { ">": 80 } },
477
+ order: { score: true }
478
+ })(observer);
479
+ // Should filter to score > 80 and order ascending
480
+ expect(observer).toHaveBeenCalledTimes(1);
481
+ const result = observer.mock.calls[0][0];
482
+ expect(result).toHaveLength(2);
483
+ expect(result[0]).toBe(entities.full1); // 85.5
484
+ expect(result[1]).toBe(entities.full2); // 92.0
485
+ unsubscribe();
486
+ });
487
+ it("should handle empty results from filtering", () => {
488
+ const observer = vi.fn();
489
+ const unsubscribe = database.observe.select(["name"], {
490
+ where: { name: "NonExistent" }
491
+ })(observer);
492
+ // Should return empty array for non-existent name
493
+ expect(observer).toHaveBeenCalledTimes(1);
494
+ const result = observer.mock.calls[0][0];
495
+ expect(result).toHaveLength(0);
496
+ unsubscribe();
497
+ });
498
+ it("should reactively update filtered results", async () => {
499
+ const observer = vi.fn();
500
+ const unsubscribe = database.observe.select(["score"], {
501
+ where: { score: { ">": 80 } }
502
+ })(observer);
503
+ // Initial notification
504
+ expect(observer).toHaveBeenCalledTimes(1);
505
+ const initialResult = observer.mock.calls[0][0];
506
+ expect(initialResult).toHaveLength(2);
507
+ // Update score to make it eligible for the filter
508
+ database.transactions.updateEntity({
509
+ entity: entities.full3,
510
+ values: { score: 95.0 }
511
+ });
512
+ // Wait for microtask to complete
513
+ await Promise.resolve();
514
+ // Should get new notification with updated results
515
+ expect(observer).toHaveBeenCalledTimes(2);
516
+ const updatedResult = observer.mock.calls[1][0];
517
+ expect(updatedResult).toHaveLength(3);
518
+ expect(updatedResult).toContain(entities.full3);
519
+ unsubscribe();
520
+ });
521
+ it("should reactively update ordered results", async () => {
522
+ const observer = vi.fn();
523
+ const unsubscribe = database.observe.select(["score"], {
524
+ order: { score: true }
525
+ })(observer);
526
+ // Initial notification
527
+ expect(observer).toHaveBeenCalledTimes(1);
528
+ const initialResult = observer.mock.calls[0][0];
529
+ expect(initialResult[0]).toBe(entities.full3); // 78.3
530
+ // Update score to change the order
531
+ database.transactions.updateEntity({
532
+ entity: entities.full3,
533
+ values: { score: 100.0 }
534
+ });
535
+ // Wait for microtask to complete
536
+ await Promise.resolve();
537
+ // Should get new notification with reordered results
538
+ expect(observer).toHaveBeenCalledTimes(2);
539
+ const updatedResult = observer.mock.calls[1][0];
540
+ expect(updatedResult[2]).toBe(entities.full3); // Now last (100.0)
541
+ unsubscribe();
542
+ });
543
+ });
544
+ });
545
+ //# sourceMappingURL=observe-select-entities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-select-entities.test.js","sourceRoot":"","sources":["../../../src/ecs/database/observe-select-entities.test.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,7 @@ export function createTransactionalStore(store) {
109
109
  // Create transaction-aware store
110
110
  const transactionStore = {
111
111
  ...store,
112
+ archetypes: Object.fromEntries(Object.entries(store.archetypes).map(([key, value]) => [key, getWrappedArchetype(value)])),
112
113
  resources,
113
114
  ensureArchetype: (componentNames) => {
114
115
  const archetype = store.ensureArchetype(componentNames);
@@ -1 +1 @@
1
- {"version":3,"file":"create-transactional-store.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-transactional-store.js","sourceRoot":"","sources":["../../../../src/ecs/database/transactional-store/create-transactional-store.ts"],"names":[],"mappings":"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"}