@adobe/data 0.9.2 → 0.9.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.
Files changed (71) hide show
  1. package/assembly/package.json +1 -0
  2. package/blob/package.json +1 -0
  3. package/cache/package.json +1 -0
  4. package/ecs/database/combine-plugins.d.ts +21 -0
  5. package/ecs/database/combine-plugins.js +47 -0
  6. package/ecs/database/combine-plugins.js.map +1 -0
  7. package/ecs/database/create-plugin.d.ts +22 -55
  8. package/ecs/database/create-plugin.js +15 -24
  9. package/ecs/database/create-plugin.js.map +1 -1
  10. package/ecs/database/create-plugin.test.js +111 -65
  11. package/ecs/database/create-plugin.test.js.map +1 -1
  12. package/ecs/database/create-plugin.type-test.d.ts +1 -0
  13. package/ecs/database/create-plugin.type-test.js +671 -0
  14. package/ecs/database/create-plugin.type-test.js.map +1 -0
  15. package/ecs/database/database-schema/create-database-schema.d.ts +3 -3
  16. package/ecs/database/database-schema/database-schema.d.ts +3 -3
  17. package/ecs/database/database.d.ts +33 -45
  18. package/ecs/database/database.js +2 -16
  19. package/ecs/database/database.js.map +1 -1
  20. package/ecs/database/database.test.js +17 -11
  21. package/ecs/database/database.test.js.map +1 -1
  22. package/ecs/database/observed/create-observed-database.test.js +5 -6
  23. package/ecs/database/observed/create-observed-database.test.js.map +1 -1
  24. package/ecs/database/public/create-database-scheduler.test.d.ts +1 -0
  25. package/ecs/database/public/create-database-scheduler.test.js +82 -0
  26. package/ecs/database/public/create-database-scheduler.test.js.map +1 -0
  27. package/ecs/database/public/create-database.d.ts +18 -5
  28. package/ecs/database/public/create-database.js +73 -39
  29. package/ecs/database/public/create-database.js.map +1 -1
  30. package/ecs/database/public/create-database.test.js +156 -159
  31. package/ecs/database/public/create-database.test.js.map +1 -1
  32. package/ecs/database/reconciling/create-reconciling-database.d.ts +2 -2
  33. package/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
  34. package/ecs/database/reconciling/create-reconciling-database.test.js +4 -6
  35. package/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
  36. package/ecs/database/reconciling/reconciling-database.d.ts +2 -2
  37. package/ecs/index.d.ts +1 -2
  38. package/ecs/index.js +1 -1
  39. package/ecs/index.js.map +1 -1
  40. package/ecs/package.json +1 -0
  41. package/ecs/plugins/scheduler/scheduler.d.ts +6 -2
  42. package/ecs/plugins/scheduler/scheduler.js +17 -3
  43. package/ecs/plugins/scheduler/scheduler.js.map +1 -1
  44. package/ecs/store/action-functions.d.ts +9 -10
  45. package/ecs/store/action-functions.js +21 -0
  46. package/ecs/store/action-functions.js.map +1 -1
  47. package/ecs/store/archetype-components.d.ts +4 -2
  48. package/ecs/store/public/create-store.d.ts +1 -2
  49. package/ecs/store/store.d.ts +5 -5
  50. package/ecs/store/transaction-functions.d.ts +21 -0
  51. package/ecs/store/transaction-functions.js +2 -0
  52. package/ecs/store/transaction-functions.js.map +1 -0
  53. package/functions/package.json +1 -0
  54. package/lit/hooks/use-drag-transaction.d.ts +1 -1
  55. package/lit/package.json +1 -0
  56. package/math/package.json +1 -0
  57. package/observe/package.json +1 -0
  58. package/old-ecs/package.json +1 -0
  59. package/package.json +109 -1
  60. package/perftest/package.json +1 -0
  61. package/samples/package.json +1 -0
  62. package/samples/todo/services/state-service/create-todo-database.d.ts +2 -2
  63. package/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  64. package/schema/package.json +1 -0
  65. package/service/package.json +1 -0
  66. package/table/package.json +1 -0
  67. package/tsconfig.tsbuildinfo +1 -1
  68. package/typed-buffer/package.json +1 -0
  69. package/types/package.json +1 -0
  70. package/types/types.d.ts +1 -0
  71. package/types/types.js.map +1 -1
@@ -24,32 +24,46 @@ import { isPromise } from "../../../internal/promise/is-promise.js";
24
24
  import { isAsyncGenerator } from "../../../internal/async-generator/is-async-generator.js";
25
25
  import { createReconcilingDatabase } from "../reconciling/create-reconciling-database.js";
26
26
  import { calculateSystemOrder } from "../calculate-system-order.js";
27
- export function createDatabase(storeOrPlugin, transactionDeclarations, systemDeclarations) {
27
+ export function createDatabase(storeOrPlugin, transactionDeclarations, systemDeclarationsOrActionDeclarations, actionDeclarations) {
28
28
  if (!storeOrPlugin) {
29
29
  return createDatabaseFromPlugin(Database.Plugin.create({}));
30
30
  }
31
- if (systemDeclarations) {
32
- return createDatabaseFromStoreTransactionsAndSystems(storeOrPlugin, transactionDeclarations, systemDeclarations);
31
+ // Check if it's a Plugin (has components, resources, archetypes, transactions, systems, or actions properties)
32
+ if (typeof storeOrPlugin === 'object' && 'components' in storeOrPlugin) {
33
+ return createDatabaseFromPlugin(storeOrPlugin);
34
+ }
35
+ // Check if systemDeclarationsOrActionDeclarations is systemDeclarations (has create property)
36
+ if (systemDeclarationsOrActionDeclarations && typeof systemDeclarationsOrActionDeclarations === 'object' && !Array.isArray(systemDeclarationsOrActionDeclarations)) {
37
+ const firstKey = Object.keys(systemDeclarationsOrActionDeclarations)[0];
38
+ if (firstKey && systemDeclarationsOrActionDeclarations[firstKey]?.create) {
39
+ // It's systemDeclarations
40
+ return createDatabaseFromStoreTransactionsAndSystems(storeOrPlugin, transactionDeclarations, systemDeclarationsOrActionDeclarations, actionDeclarations);
41
+ }
33
42
  }
34
43
  if (transactionDeclarations) {
44
+ // Check if systemDeclarationsOrActionDeclarations is actually actionDeclarations
45
+ if (systemDeclarationsOrActionDeclarations && !systemDeclarationsOrActionDeclarations[Object.keys(systemDeclarationsOrActionDeclarations)[0]]?.create) {
46
+ return createDatabaseFromStoreAndTransactions(storeOrPlugin, transactionDeclarations, systemDeclarationsOrActionDeclarations);
47
+ }
35
48
  return createDatabaseFromStoreAndTransactions(storeOrPlugin, transactionDeclarations);
36
49
  }
37
50
  else {
38
- // It's a Plugin
51
+ // It's a Plugin (fallback)
39
52
  return createDatabaseFromPlugin(storeOrPlugin);
40
53
  }
41
54
  }
42
55
  function createDatabaseFromPlugin(plugin) {
43
56
  const systems = plugin.systems ?? {};
44
57
  const transactions = plugin.transactions ?? {};
58
+ const actions = (plugin.actions ?? {});
45
59
  const storeSchema = {
46
60
  components: plugin.components ?? {},
47
61
  resources: plugin.resources ?? {},
48
62
  archetypes: plugin.archetypes ?? {},
49
63
  };
50
- return createDatabase(Store.create(storeSchema), transactions, systems);
64
+ return createDatabase(Store.create(storeSchema), transactions, systems, actions);
51
65
  }
52
- function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclarations, systemDeclarations) {
66
+ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclarations, systemDeclarations, actionDeclarations) {
53
67
  const reconcilingDatabase = createReconcilingDatabase(store, transactionDeclarations);
54
68
  let nextTransactionId = 1;
55
69
  const applyEnvelope = (envelope) => reconcilingDatabase.apply(envelope);
@@ -143,19 +157,23 @@ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclara
143
157
  const transactions = {
144
158
  serviceName: "ecs-database-transactions-service",
145
159
  };
146
- // Create unwrapped actions that execute directly on the store
147
- const actions = {};
148
- for (const name of Object.keys(transactionDeclarations)) {
149
- actions[name] = transactionDeclarations[name].bind(null, store);
150
- }
151
- // Assign unwrapped actions to store
152
- store.actions = actions;
153
160
  const addTransactionWrappers = (transactionDecls) => {
154
161
  for (const name of Object.keys(transactionDecls)) {
155
162
  transactions[name] = createTransactionWrapper(name);
156
163
  }
157
164
  };
158
165
  addTransactionWrappers(transactionDeclarations);
166
+ const actions = {
167
+ serviceName: "ecs-database-actions-service",
168
+ };
169
+ const addActionWrappers = (actionDecls, db) => {
170
+ for (const name of Object.keys(actionDecls)) {
171
+ const actionDecl = actionDecls[name];
172
+ actions[name] = (args) => {
173
+ return actionDecl(db, args);
174
+ };
175
+ }
176
+ };
159
177
  // Calculate system execution order
160
178
  const systemOrder = calculateSystemOrder(systemDeclarations);
161
179
  // Create partial database for system initialization (two-phase)
@@ -164,12 +182,17 @@ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclara
164
182
  ...reconcilingDatabase,
165
183
  store: store,
166
184
  transactions,
185
+ actions, // Set actions before adding wrappers
167
186
  system: {
168
187
  functions: {}, // Empty initially
169
188
  order: systemOrder
170
189
  },
171
190
  extend: undefined // Will be set later
172
191
  };
192
+ // Initialize actions if provided
193
+ if (actionDeclarations) {
194
+ addActionWrappers(actionDeclarations, partialDatabase);
195
+ }
173
196
  // Instantiate system functions with partial database
174
197
  const systemFunctions = {};
175
198
  for (const name in systemDeclarations) {
@@ -180,12 +203,11 @@ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclara
180
203
  // Delegate to reconcilingDatabase which handles store/transactionalStore extension
181
204
  reconcilingDatabase.extend(plugin);
182
205
  const pluginTransactions = plugin.transactions ?? {};
206
+ const pluginActions = plugin.actions ?? {};
183
207
  // Add transaction wrappers for the new transactions
184
208
  addTransactionWrappers(pluginTransactions);
185
- // Add unwrapped actions to store.actions
186
- for (const name of Object.keys(pluginTransactions)) {
187
- store.actions[name] = pluginTransactions[name].bind(null, store);
188
- }
209
+ // Add action wrappers for the new actions
210
+ addActionWrappers(pluginActions, partialDatabase);
189
211
  // If plugin has new systems, we need to recreate the database with merged systems
190
212
  if (plugin.systems && Object.keys(plugin.systems).length > 0) {
191
213
  // Merge system declarations
@@ -193,8 +215,13 @@ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclara
193
215
  ...systemDeclarations,
194
216
  ...plugin.systems
195
217
  };
196
- // Create new database with merged systems
197
- return createDatabaseFromStoreTransactionsAndSystems(store, { ...transactionDeclarations, ...pluginTransactions }, mergedSystemDeclarations);
218
+ // Merge action declarations
219
+ const mergedActionDeclarations = {
220
+ ...(actionDeclarations ?? {}),
221
+ ...pluginActions
222
+ };
223
+ // Create new database with merged systems and actions
224
+ return createDatabaseFromStoreTransactionsAndSystems(store, { ...transactionDeclarations, ...pluginTransactions }, mergedSystemDeclarations, Object.keys(mergedActionDeclarations).length > 0 ? mergedActionDeclarations : undefined);
198
225
  }
199
226
  // No new systems, return the same database instance
200
227
  return partialDatabase;
@@ -202,7 +229,7 @@ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclara
202
229
  partialDatabase.extend = extend;
203
230
  return partialDatabase;
204
231
  }
205
- function createDatabaseFromStoreAndTransactions(store, transactionDeclarations) {
232
+ function createDatabaseFromStoreAndTransactions(store, transactionDeclarations, actionDeclarations) {
206
233
  const reconcilingDatabase = createReconcilingDatabase(store, transactionDeclarations);
207
234
  let nextTransactionId = 1;
208
235
  const applyEnvelope = (envelope) => reconcilingDatabase.apply(envelope);
@@ -296,41 +323,48 @@ function createDatabaseFromStoreAndTransactions(store, transactionDeclarations)
296
323
  const transactions = {
297
324
  serviceName: "ecs-database-transactions-service",
298
325
  };
299
- // Create unwrapped actions that execute directly on the store
300
- const actions = {};
301
- for (const name of Object.keys(transactionDeclarations)) {
302
- actions[name] = transactionDeclarations[name].bind(null, store);
303
- }
304
- // Assign unwrapped actions to store
305
- store.actions = actions;
306
326
  const addTransactionWrappers = (transactionDecls) => {
307
327
  for (const name of Object.keys(transactionDecls)) {
308
328
  transactions[name] = createTransactionWrapper(name);
309
329
  }
310
330
  };
311
331
  addTransactionWrappers(transactionDeclarations);
312
- const extend = (schema) => {
313
- // Delegate to reconcilingDatabase which handles store/transactionalStore extension
314
- reconcilingDatabase.extend(schema);
315
- // Add transaction wrappers for the new transactions
316
- addTransactionWrappers(schema.transactions);
317
- // Add unwrapped actions to store.actions
318
- for (const name of Object.keys(schema.transactions)) {
319
- store.actions[name] = schema.transactions[name].bind(null, store);
332
+ const actions = {
333
+ serviceName: "ecs-database-actions-service",
334
+ };
335
+ const addActionWrappers = (actionDecls, db) => {
336
+ for (const name of Object.keys(actionDecls)) {
337
+ const actionDecl = actionDecls[name];
338
+ actions[name] = (args) => {
339
+ return actionDecl(db, args);
340
+ };
320
341
  }
321
- return database;
322
342
  };
323
- const database = {
343
+ // Create partial database for action initialization
344
+ const partialDatabaseForActions = {
324
345
  serviceName: "ecs-database-service",
325
346
  ...reconcilingDatabase,
326
347
  store: store,
327
348
  transactions,
349
+ actions, // Set actions before adding wrappers
328
350
  system: {
329
351
  functions: {},
330
352
  order: []
331
353
  },
332
- extend,
333
354
  };
334
- return database;
355
+ if (actionDeclarations) {
356
+ addActionWrappers(actionDeclarations, partialDatabaseForActions);
357
+ }
358
+ const extend = (schema) => {
359
+ // Delegate to reconcilingDatabase which handles store/transactionalStore extension
360
+ reconcilingDatabase.extend(schema);
361
+ // Add transaction wrappers for the new transactions
362
+ addTransactionWrappers(schema.transactions);
363
+ // Add action wrappers for the new actions
364
+ addActionWrappers(schema.actions ?? {}, partialDatabaseForActions);
365
+ return partialDatabaseForActions;
366
+ };
367
+ partialDatabaseForActions.extend = extend;
368
+ return partialDatabaseForActions;
335
369
  }
336
370
  //# sourceMappingURL=create-database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/public/create-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-database.js","sourceRoot":"","sources":["../../../../src/ecs/database/public/create-database.ts"],"names":[],"mappings":"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"}
@@ -820,174 +820,171 @@ describe("createDatabase", () => {
820
820
  });
821
821
  it("should return the same instance when extended", () => {
822
822
  const database = createTestDatabase();
823
- const extended = database.extend({ components: {}, resources: {}, archetypes: {}, transactions: {} });
823
+ const extended = database.extend(Database.Plugin.create({}));
824
824
  expect(extended).toBe(database);
825
825
  });
826
- describe("database.store.actions (unwrapped actions)", () => {
827
- it("should expose unwrapped actions on store that execute directly", () => {
828
- const database = createTestDatabase();
829
- // Execute using unwrapped action
830
- const entity = database.store.actions.createPositionEntity({
831
- position: { x: 1, y: 2, z: 3 },
832
- });
833
- // Verify entity was created
834
- expect(entity).toBeDefined();
835
- const location = database.locate(entity);
836
- expect(location).not.toBeNull();
837
- expect(location?.archetype).toBe(database.archetypes.Position);
838
- });
839
- it("should not trigger observable notifications when using store.actions", async () => {
840
- const database = createTestDatabase();
841
- const transactionObserver = vi.fn();
842
- const componentObserver = vi.fn();
843
- // Subscribe to observables
844
- const unsubscribeTransaction = database.observe.transactions(transactionObserver);
845
- const unsubscribeComponent = database.observe.components.position(componentObserver);
846
- // Execute using unwrapped action (should NOT notify)
847
- database.store.actions.createPositionEntity({
848
- position: { x: 1, y: 2, z: 3 },
849
- });
850
- // Wait for any potential async notifications
851
- await Promise.resolve();
852
- // Verify NO notifications were sent
853
- expect(transactionObserver).not.toHaveBeenCalled();
854
- expect(componentObserver).not.toHaveBeenCalled();
855
- // Now use wrapped transaction to verify observers work
856
- database.transactions.createPositionEntity({
857
- position: { x: 4, y: 5, z: 6 },
858
- });
859
- await Promise.resolve();
860
- // Verify notifications WERE sent for wrapped transaction
861
- expect(transactionObserver).toHaveBeenCalledTimes(1);
862
- expect(componentObserver).toHaveBeenCalledTimes(1);
863
- unsubscribeTransaction();
864
- unsubscribeComponent();
865
- });
866
- it("should not create undo entries when using store.actions", async () => {
867
- const database = createTestDatabase();
868
- // Track transaction notifications to verify behavior
869
- const transactionObserver = vi.fn();
870
- const unsubscribe = database.observe.transactions(transactionObserver);
871
- // Execute using unwrapped action
872
- database.store.actions.createPositionEntity({
873
- position: { x: 1, y: 2, z: 3 },
874
- });
875
- await Promise.resolve();
876
- // Verify NO transaction notification (meaning no undo entry would be created)
877
- expect(transactionObserver).not.toHaveBeenCalled();
878
- // Execute using wrapped transaction
879
- database.transactions.createPositionEntity({
880
- position: { x: 4, y: 5, z: 6 },
881
- });
882
- await Promise.resolve();
883
- // Verify transaction notification WAS sent (meaning undo entry would be created)
884
- expect(transactionObserver).toHaveBeenCalledTimes(1);
885
- unsubscribe();
826
+ });
827
+ describe("database.transactions", () => {
828
+ it("should execute transactions directly", () => {
829
+ const database = createTestDatabase();
830
+ // Execute using transactions
831
+ const entity = database.transactions.createPositionEntity({
832
+ position: { x: 1, y: 2, z: 3 },
886
833
  });
887
- it("should support all transaction types on store.actions", () => {
888
- const database = createTestDatabase();
889
- // Test entity creation
890
- const entity = database.store.actions.createPositionEntity({
891
- position: { x: 1, y: 2, z: 3 },
892
- });
893
- expect(entity).toBeDefined();
894
- expect(database.locate(entity)).not.toBeNull();
895
- // Test entity update
896
- database.store.actions.updateEntity({
897
- entity,
898
- values: { position: { x: 10, y: 20, z: 30 } },
899
- });
900
- expect(database.locate(entity)).not.toBeNull();
901
- // Test resource update
902
- database.store.actions.updateTime({ delta: 0.033, elapsed: 1.5 });
903
- expect(database.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
904
- // Test entity deletion
905
- database.store.actions.deleteEntity({ entity });
906
- expect(database.locate(entity)).toBeNull();
907
- });
908
- it("should add new actions to store.actions when database is extended", () => {
909
- const database = createTestDatabase();
910
- // Verify original action exists
911
- expect(database.store.actions.createPositionEntity).toBeDefined();
912
- // Define extension with new transaction
913
- const extensionSchema = {
914
- components: {
915
- velocity: {
916
- type: "object",
917
- properties: {
918
- x: { type: "number", precision: 1, default: 0 },
919
- y: { type: "number", precision: 1, default: 0 },
920
- z: { type: "number", precision: 1, default: 0 },
921
- },
922
- required: ["x", "y", "z"],
923
- additionalProperties: false,
834
+ // Verify entity was created
835
+ expect(entity).toBeDefined();
836
+ const location = database.locate(entity);
837
+ expect(location).not.toBeNull();
838
+ expect(location?.archetype).toBe(database.archetypes.Position);
839
+ });
840
+ it("should trigger observable notifications when using transactions", async () => {
841
+ const database = createTestDatabase();
842
+ const transactionObserver = vi.fn();
843
+ const componentObserver = vi.fn();
844
+ // Subscribe to observables
845
+ const unsubscribeTransaction = database.observe.transactions(transactionObserver);
846
+ const unsubscribeComponent = database.observe.components.position(componentObserver);
847
+ // Execute using transactions (should notify)
848
+ database.transactions.createPositionEntity({
849
+ position: { x: 1, y: 2, z: 3 },
850
+ });
851
+ // Wait for any potential async notifications
852
+ await Promise.resolve();
853
+ // Verify notifications WERE sent
854
+ expect(transactionObserver).toHaveBeenCalledTimes(1);
855
+ expect(componentObserver).toHaveBeenCalledTimes(1);
856
+ // Execute another transaction
857
+ database.transactions.createPositionEntity({
858
+ position: { x: 4, y: 5, z: 6 },
859
+ });
860
+ await Promise.resolve();
861
+ // Verify notifications were sent again
862
+ expect(transactionObserver).toHaveBeenCalledTimes(2);
863
+ expect(componentObserver).toHaveBeenCalledTimes(2);
864
+ unsubscribeTransaction();
865
+ unsubscribeComponent();
866
+ });
867
+ it("should create undo entries when using transactions", async () => {
868
+ const database = createTestDatabase();
869
+ // Track transaction notifications to verify behavior
870
+ const transactionObserver = vi.fn();
871
+ const unsubscribe = database.observe.transactions(transactionObserver);
872
+ // Execute using transactions
873
+ database.transactions.createPositionEntity({
874
+ position: { x: 1, y: 2, z: 3 },
875
+ });
876
+ await Promise.resolve();
877
+ // Verify transaction notification WAS sent (meaning undo entry would be created)
878
+ expect(transactionObserver).toHaveBeenCalledTimes(1);
879
+ // Execute another transaction
880
+ database.transactions.createPositionEntity({
881
+ position: { x: 4, y: 5, z: 6 },
882
+ });
883
+ await Promise.resolve();
884
+ // Verify transaction notification WAS sent again
885
+ expect(transactionObserver).toHaveBeenCalledTimes(2);
886
+ unsubscribe();
887
+ });
888
+ it("should support all transaction types on transactions", () => {
889
+ const database = createTestDatabase();
890
+ // Test entity creation
891
+ const entity = database.transactions.createPositionEntity({
892
+ position: { x: 1, y: 2, z: 3 },
893
+ });
894
+ expect(entity).toBeDefined();
895
+ expect(database.locate(entity)).not.toBeNull();
896
+ // Test entity update
897
+ database.transactions.updateEntity({
898
+ entity,
899
+ values: { position: { x: 10, y: 20, z: 30 } },
900
+ });
901
+ expect(database.locate(entity)).not.toBeNull();
902
+ // Test resource update
903
+ database.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
904
+ expect(database.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
905
+ // Test entity deletion
906
+ database.transactions.deleteEntity({ entity });
907
+ expect(database.locate(entity)).toBeNull();
908
+ });
909
+ it("should add new actions to transactions when database is extended", () => {
910
+ const database = createTestDatabase();
911
+ // Verify original action exists
912
+ expect(database.transactions.createPositionEntity).toBeDefined();
913
+ // Define extension with new transaction
914
+ const extensionSchema = Database.Plugin.create({
915
+ components: {
916
+ position: positionSchema,
917
+ velocity: {
918
+ type: "object",
919
+ properties: {
920
+ x: { type: "number", precision: 1, default: 0 },
921
+ y: { type: "number", precision: 1, default: 0 },
922
+ z: { type: "number", precision: 1, default: 0 },
924
923
  },
924
+ required: ["x", "y", "z"],
925
+ additionalProperties: false,
925
926
  },
926
- resources: {},
927
- archetypes: {
928
- Moving: ["position", "velocity"],
929
- },
930
- transactions: {
931
- createMovingEntity(t, args) {
932
- return t.archetypes.Moving.insert({
933
- position: args.position,
934
- velocity: args.velocity,
935
- });
936
- },
927
+ },
928
+ archetypes: {
929
+ Moving: ["position", "velocity"],
930
+ },
931
+ transactions: {
932
+ createMovingEntity(t, args) {
933
+ return t.archetypes.Moving.insert({
934
+ position: args.position,
935
+ velocity: args.velocity,
936
+ });
937
937
  },
938
- };
939
- // Extend database
940
- const extendedDatabase = database.extend(extensionSchema);
941
- // Verify new action exists on store.actions
942
- expect(extendedDatabase.store.actions.createMovingEntity).toBeDefined();
943
- expect(typeof extendedDatabase.store.actions.createMovingEntity).toBe("function");
944
- // Verify new action exists on transactions
945
- expect(extendedDatabase.transactions.createMovingEntity).toBeDefined();
946
- expect(typeof extendedDatabase.transactions.createMovingEntity).toBe("function");
947
- // Test that the new unwrapped action works
948
- const entity = extendedDatabase.store.actions.createMovingEntity({
949
- position: { x: 1, y: 2, z: 3 },
950
- velocity: { x: 0.1, y: 0.2, z: 0.3 },
951
- });
952
- expect(entity).toBeDefined();
953
- const location = extendedDatabase.locate(entity);
954
- expect(location).not.toBeNull();
955
- // Verify entity was created successfully
956
- expect(typeof entity).toBe("number");
938
+ },
957
939
  });
958
- it("should execute store.actions synchronously and return values immediately", () => {
959
- const database = createTestDatabase();
960
- // Unwrapped action should return immediately (no promise)
961
- const entity = database.store.actions.createPositionEntity({
962
- position: { x: 1, y: 2, z: 3 },
963
- });
964
- // Should be a number, not a promise
965
- expect(typeof entity).toBe("number");
966
- expect(entity).toBeGreaterThan(0);
967
- // Verify entity exists immediately
968
- const location = database.locate(entity);
969
- expect(location).not.toBeNull();
940
+ // Extend database
941
+ const extendedDatabase = database.extend(extensionSchema);
942
+ // Verify new transaction exists on transactions
943
+ expect(extendedDatabase.transactions.createMovingEntity).toBeDefined();
944
+ expect(typeof extendedDatabase.transactions.createMovingEntity).toBe("function");
945
+ // Test that the new transaction works
946
+ const entity = extendedDatabase.transactions.createMovingEntity({
947
+ position: { x: 1, y: 2, z: 3 },
948
+ velocity: { x: 0.1, y: 0.2, z: 0.3 },
970
949
  });
971
- it("should have store.actions work independently from transactions", async () => {
972
- const database = createTestDatabase();
973
- const observer = vi.fn();
974
- const unsubscribe = database.observe.transactions(observer);
975
- // Create entity using store.actions (no notification)
976
- const entity1 = database.store.actions.createPositionEntity({
977
- position: { x: 1, y: 2, z: 3 },
978
- });
979
- // Create entity using transactions (with notification)
980
- const entity2 = database.transactions.createPositionEntity({
981
- position: { x: 4, y: 5, z: 6 },
982
- });
983
- await Promise.resolve();
984
- // Only one notification (from transactions, not store.actions)
985
- expect(observer).toHaveBeenCalledTimes(1);
986
- // Both entities should exist
987
- expect(database.locate(entity1)).not.toBeNull();
988
- expect(database.locate(entity2)).not.toBeNull();
989
- unsubscribe();
950
+ expect(entity).toBeDefined();
951
+ const location = extendedDatabase.locate(entity);
952
+ expect(location).not.toBeNull();
953
+ // Verify entity was created successfully
954
+ expect(typeof entity).toBe("number");
955
+ });
956
+ it("should execute transactions synchronously and return values immediately", () => {
957
+ const database = createTestDatabase();
958
+ // Transaction should return immediately (no promise)
959
+ const entity = database.transactions.createPositionEntity({
960
+ position: { x: 1, y: 2, z: 3 },
961
+ });
962
+ // Should be a number, not a promise
963
+ expect(typeof entity).toBe("number");
964
+ expect(entity).toBeGreaterThan(0);
965
+ // Verify entity exists immediately
966
+ const location = database.locate(entity);
967
+ expect(location).not.toBeNull();
968
+ });
969
+ it("should have transactions trigger notifications", async () => {
970
+ const database = createTestDatabase();
971
+ const observer = vi.fn();
972
+ const unsubscribe = database.observe.transactions(observer);
973
+ // Create entity using transactions (with notification)
974
+ const entity1 = database.transactions.createPositionEntity({
975
+ position: { x: 1, y: 2, z: 3 },
976
+ });
977
+ // Create entity using transactions (with notification)
978
+ const entity2 = database.transactions.createPositionEntity({
979
+ position: { x: 4, y: 5, z: 6 },
990
980
  });
981
+ await Promise.resolve();
982
+ // Both transactions should trigger notifications
983
+ expect(observer).toHaveBeenCalledTimes(2);
984
+ // Both entities should exist
985
+ expect(database.locate(entity1)).not.toBeNull();
986
+ expect(database.locate(entity2)).not.toBeNull();
987
+ unsubscribe();
991
988
  });
992
989
  });
993
990
  //# sourceMappingURL=create-database.test.js.map