@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.
- package/assembly/package.json +1 -0
- package/blob/package.json +1 -0
- package/cache/package.json +1 -0
- package/ecs/database/combine-plugins.d.ts +21 -0
- package/ecs/database/combine-plugins.js +47 -0
- package/ecs/database/combine-plugins.js.map +1 -0
- package/ecs/database/create-plugin.d.ts +22 -55
- package/ecs/database/create-plugin.js +15 -24
- package/ecs/database/create-plugin.js.map +1 -1
- package/ecs/database/create-plugin.test.js +111 -65
- package/ecs/database/create-plugin.test.js.map +1 -1
- package/ecs/database/create-plugin.type-test.d.ts +1 -0
- package/ecs/database/create-plugin.type-test.js +671 -0
- package/ecs/database/create-plugin.type-test.js.map +1 -0
- package/ecs/database/database-schema/create-database-schema.d.ts +3 -3
- package/ecs/database/database-schema/database-schema.d.ts +3 -3
- package/ecs/database/database.d.ts +33 -45
- package/ecs/database/database.js +2 -16
- package/ecs/database/database.js.map +1 -1
- package/ecs/database/database.test.js +17 -11
- package/ecs/database/database.test.js.map +1 -1
- package/ecs/database/observed/create-observed-database.test.js +5 -6
- package/ecs/database/observed/create-observed-database.test.js.map +1 -1
- package/ecs/database/public/create-database-scheduler.test.d.ts +1 -0
- package/ecs/database/public/create-database-scheduler.test.js +82 -0
- package/ecs/database/public/create-database-scheduler.test.js.map +1 -0
- package/ecs/database/public/create-database.d.ts +18 -5
- package/ecs/database/public/create-database.js +73 -39
- package/ecs/database/public/create-database.js.map +1 -1
- package/ecs/database/public/create-database.test.js +156 -159
- package/ecs/database/public/create-database.test.js.map +1 -1
- package/ecs/database/reconciling/create-reconciling-database.d.ts +2 -2
- package/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
- package/ecs/database/reconciling/create-reconciling-database.test.js +4 -6
- package/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
- package/ecs/database/reconciling/reconciling-database.d.ts +2 -2
- package/ecs/index.d.ts +1 -2
- package/ecs/index.js +1 -1
- package/ecs/index.js.map +1 -1
- package/ecs/package.json +1 -0
- package/ecs/plugins/scheduler/scheduler.d.ts +6 -2
- package/ecs/plugins/scheduler/scheduler.js +17 -3
- package/ecs/plugins/scheduler/scheduler.js.map +1 -1
- package/ecs/store/action-functions.d.ts +9 -10
- package/ecs/store/action-functions.js +21 -0
- package/ecs/store/action-functions.js.map +1 -1
- package/ecs/store/archetype-components.d.ts +4 -2
- package/ecs/store/public/create-store.d.ts +1 -2
- package/ecs/store/store.d.ts +5 -5
- package/ecs/store/transaction-functions.d.ts +21 -0
- package/ecs/store/transaction-functions.js +2 -0
- package/ecs/store/transaction-functions.js.map +1 -0
- package/functions/package.json +1 -0
- package/lit/hooks/use-drag-transaction.d.ts +1 -1
- package/lit/package.json +1 -0
- package/math/package.json +1 -0
- package/observe/package.json +1 -0
- package/old-ecs/package.json +1 -0
- package/package.json +109 -1
- package/perftest/package.json +1 -0
- package/samples/package.json +1 -0
- package/samples/todo/services/state-service/create-todo-database.d.ts +2 -2
- package/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
- package/schema/package.json +1 -0
- package/service/package.json +1 -0
- package/table/package.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/typed-buffer/package.json +1 -0
- package/types/package.json +1 -0
- package/types/types.d.ts +1 -0
- 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,
|
|
27
|
+
export function createDatabase(storeOrPlugin, transactionDeclarations, systemDeclarationsOrActionDeclarations, actionDeclarations) {
|
|
28
28
|
if (!storeOrPlugin) {
|
|
29
29
|
return createDatabaseFromPlugin(Database.Plugin.create({}));
|
|
30
30
|
}
|
|
31
|
-
if (
|
|
32
|
-
|
|
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
|
|
186
|
-
|
|
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
|
-
//
|
|
197
|
-
|
|
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
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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({
|
|
823
|
+
const extended = database.extend(Database.Plugin.create({}));
|
|
824
824
|
expect(extended).toBe(database);
|
|
825
825
|
});
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
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
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
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
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
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
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
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
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
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
|