@adobe/data 0.8.6 → 0.9.0

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 (93) hide show
  1. package/dist/ecs/database/calculate-system-order.d.ts +18 -0
  2. package/dist/ecs/database/calculate-system-order.js +113 -0
  3. package/dist/ecs/database/calculate-system-order.js.map +1 -0
  4. package/dist/ecs/database/calculate-system-order.test.d.ts +1 -0
  5. package/dist/ecs/database/calculate-system-order.test.js +168 -0
  6. package/dist/ecs/database/calculate-system-order.test.js.map +1 -0
  7. package/dist/ecs/database/create-plugin.d.ts +67 -0
  8. package/dist/ecs/database/create-plugin.js +47 -0
  9. package/dist/ecs/database/create-plugin.js.map +1 -0
  10. package/dist/ecs/database/create-plugin.test.d.ts +1 -0
  11. package/dist/ecs/database/create-plugin.test.js +435 -0
  12. package/dist/ecs/database/create-plugin.test.js.map +1 -0
  13. package/dist/ecs/database/database-schema/create-database-schema.d.ts +3 -3
  14. package/dist/ecs/database/database-schema/database-schema.d.ts +4 -3
  15. package/dist/ecs/database/database.d.ts +56 -18
  16. package/dist/ecs/database/database.js +42 -0
  17. package/dist/ecs/database/database.js.map +1 -1
  18. package/dist/ecs/database/database.test.d.ts +1 -0
  19. package/dist/ecs/database/database.test.js +200 -0
  20. package/dist/ecs/database/database.test.js.map +1 -0
  21. package/dist/ecs/database/observe-select-entities.test.js +3 -3
  22. package/dist/ecs/database/observe-select-entities.test.js.map +1 -1
  23. package/dist/ecs/database/observed/create-observed-database.js +6 -1
  24. package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
  25. package/dist/ecs/database/observed/create-observed-database.test.js +105 -49
  26. package/dist/ecs/database/observed/create-observed-database.test.js.map +1 -1
  27. package/dist/ecs/database/observed/observed-database.d.ts +3 -0
  28. package/dist/ecs/database/public/create-database-from-schema.test.d.ts +1 -0
  29. package/dist/ecs/database/public/create-database-from-schema.test.js +153 -0
  30. package/dist/ecs/database/public/create-database-from-schema.test.js.map +1 -0
  31. package/dist/ecs/database/public/create-database.d.ts +17 -2
  32. package/dist/ecs/database/public/create-database.js +283 -79
  33. package/dist/ecs/database/public/create-database.js.map +1 -1
  34. package/dist/ecs/database/public/create-database.test.js +178 -47
  35. package/dist/ecs/database/public/create-database.test.js.map +1 -1
  36. package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +2 -2
  37. package/dist/ecs/database/reconciling/create-reconciling-database.js +7 -2
  38. package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
  39. package/dist/ecs/database/reconciling/create-reconciling-database.test.js +18 -9
  40. package/dist/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
  41. package/dist/ecs/database/reconciling/reconciling-database.d.ts +5 -3
  42. package/dist/ecs/database/transactional-store/coalesce-actions.d.ts +16 -0
  43. package/dist/ecs/database/transactional-store/coalesce-actions.js +140 -0
  44. package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -0
  45. package/dist/ecs/database/transactional-store/coalesce-actions.test.d.ts +1 -0
  46. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +433 -0
  47. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -0
  48. package/dist/ecs/database/transactional-store/create-transactional-store.js +18 -2
  49. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  50. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +13 -3
  51. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  52. package/dist/ecs/database/transactional-store/transactional-store.d.ts +2 -0
  53. package/dist/ecs/database/type-inference-example.d.ts +1 -0
  54. package/dist/ecs/database/type-inference-example.js +2 -0
  55. package/dist/ecs/database/type-inference-example.js.map +1 -0
  56. package/dist/ecs/plugins/index.d.ts +1 -0
  57. package/dist/ecs/plugins/index.js +23 -0
  58. package/dist/ecs/plugins/index.js.map +1 -0
  59. package/dist/ecs/plugins/scheduler/index.d.ts +1 -0
  60. package/dist/ecs/plugins/scheduler/index.js +23 -0
  61. package/dist/ecs/plugins/scheduler/index.js.map +1 -0
  62. package/dist/ecs/plugins/scheduler/scheduler.d.ts +8 -0
  63. package/dist/ecs/plugins/scheduler/scheduler.js +52 -0
  64. package/dist/ecs/plugins/scheduler/scheduler.js.map +1 -0
  65. package/dist/ecs/store/action-functions.d.ts +21 -0
  66. package/dist/ecs/store/action-functions.js +2 -0
  67. package/dist/ecs/store/action-functions.js.map +1 -0
  68. package/dist/ecs/store/create-store-schema-test.js +70 -8
  69. package/dist/ecs/store/create-store-schema-test.js.map +1 -1
  70. package/dist/ecs/store/public/create-store.js +9 -8
  71. package/dist/ecs/store/public/create-store.js.map +1 -1
  72. package/dist/ecs/store/public/create-store.test.js +5 -0
  73. package/dist/ecs/store/public/create-store.test.js.map +1 -1
  74. package/dist/ecs/store/store.d.ts +46 -13
  75. package/dist/ecs/store/store.js +35 -2
  76. package/dist/ecs/store/store.js.map +1 -1
  77. package/dist/ecs/store/store.test.d.ts +1 -0
  78. package/dist/ecs/store/store.test.js +211 -0
  79. package/dist/ecs/store/store.test.js.map +1 -0
  80. package/dist/ecs/undo-redo-service/create-undo-redo-service.js +1 -1
  81. package/dist/ecs/undo-redo-service/create-undo-redo-service.js.map +1 -1
  82. package/dist/lit/hooks/use-drag-transaction.d.ts +1 -1
  83. package/dist/samples/todo/services/main-service/todo-main-service.d.ts +1 -1
  84. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +3 -3
  85. package/dist/samples/todo/services/state-service/create-todo-database.js +2 -2
  86. package/dist/samples/todo/services/state-service/create-todo-database.js.map +1 -1
  87. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  88. package/dist/samples/todo/services/state-service/transactions/toggle-complete.js +1 -1
  89. package/dist/samples/todo/services/state-service/transactions/toggle-complete.js.map +1 -1
  90. package/dist/tsconfig.tsbuildinfo +1 -1
  91. package/dist/types/types.d.ts +2 -0
  92. package/dist/types/types.js.map +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,153 @@
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, it, expect } from "vitest";
23
+ import { Database } from "../database.js";
24
+ import { F32 } from "../../../math/f32/index.js";
25
+ describe("Database.create from plugin", () => {
26
+ it("should create and use database from Database.Plugin", () => {
27
+ const databasePlugin = Database.Plugin.create({
28
+ components: {
29
+ position: {
30
+ type: "object",
31
+ properties: {
32
+ x: F32.schema,
33
+ y: F32.schema,
34
+ z: F32.schema,
35
+ },
36
+ required: ["x", "y", "z"],
37
+ additionalProperties: false,
38
+ },
39
+ },
40
+ resources: {
41
+ time: { default: { delta: 0.016, elapsed: 0 } },
42
+ },
43
+ archetypes: {
44
+ PositionEntity: ["position"],
45
+ },
46
+ transactions: {
47
+ createPositionEntity(t, args) {
48
+ return t.archetypes.PositionEntity.insert(args);
49
+ },
50
+ updateTime(t, args) {
51
+ t.resources.time = args;
52
+ }
53
+ }
54
+ });
55
+ const database = Database.create(databasePlugin);
56
+ const entity = database.transactions.createPositionEntity({
57
+ position: { x: 1, y: 2, z: 3 },
58
+ });
59
+ expect(entity).toBeDefined();
60
+ expect(typeof entity).toBe("number");
61
+ const entityData = database.read(entity);
62
+ expect(entityData).toEqual({
63
+ id: entity,
64
+ position: { x: 1, y: 2, z: 3 },
65
+ });
66
+ database.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
67
+ expect(database.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
68
+ const entities = database.select(["position"]);
69
+ expect(entities).toHaveLength(1);
70
+ expect(entities[0]).toBe(entity);
71
+ });
72
+ it("should extend database with new actions", () => {
73
+ const databasePlugin = Database.Plugin.create({
74
+ components: {
75
+ position: {
76
+ type: "object",
77
+ properties: {
78
+ x: F32.schema,
79
+ y: F32.schema,
80
+ z: F32.schema,
81
+ },
82
+ required: ["x", "y", "z"],
83
+ additionalProperties: false,
84
+ },
85
+ },
86
+ resources: {
87
+ foo: { default: 0 }
88
+ },
89
+ archetypes: {
90
+ PositionEntity: ["position"]
91
+ },
92
+ transactions: {
93
+ createPositionEntity(t, args) {
94
+ return t.archetypes.PositionEntity.insert(args);
95
+ }
96
+ }
97
+ });
98
+ const database = Database.create(databasePlugin);
99
+ const extensionPlugin = Database.Plugin.create({
100
+ components: {
101
+ velocity: {
102
+ type: "object",
103
+ properties: {
104
+ x: F32.schema,
105
+ y: F32.schema,
106
+ z: F32.schema,
107
+ },
108
+ required: ["x", "y", "z"],
109
+ additionalProperties: false,
110
+ }
111
+ },
112
+ archetypes: {
113
+ MovingEntity: ["position", "velocity"]
114
+ },
115
+ transactions: {
116
+ createMovingEntity(t, args) {
117
+ return t.archetypes.MovingEntity.insert(args);
118
+ },
119
+ updatePosition(t, args) {
120
+ t.update(args.entity, { position: args.position });
121
+ }
122
+ }
123
+ });
124
+ const extendedDatabase = database.extend(extensionPlugin);
125
+ // Verify original transaction still exists
126
+ const staticEntity = extendedDatabase.transactions.createPositionEntity({
127
+ position: { x: 1, y: 2, z: 3 },
128
+ });
129
+ expect(staticEntity).toBeDefined();
130
+ expect(typeof staticEntity).toBe("number");
131
+ // Verify new transaction exists and works
132
+ const movingEntity = extendedDatabase.transactions.createMovingEntity({
133
+ position: { x: 10, y: 20, z: 30 },
134
+ velocity: { x: 1, y: 2, z: 3 },
135
+ });
136
+ expect(movingEntity).toBeDefined();
137
+ expect(typeof movingEntity).toBe("number");
138
+ const movingEntityData = extendedDatabase.read(movingEntity);
139
+ expect(movingEntityData).toEqual({
140
+ id: movingEntity,
141
+ position: { x: 10, y: 20, z: 30 },
142
+ velocity: { x: 1, y: 2, z: 3 },
143
+ });
144
+ // Verify extended updatePosition transaction works
145
+ extendedDatabase.transactions.updatePosition({
146
+ entity: movingEntity,
147
+ position: { x: 15, y: 25, z: 35 },
148
+ });
149
+ const updatedEntityData = extendedDatabase.read(movingEntity);
150
+ expect(updatedEntityData?.position).toEqual({ x: 15, y: 25, z: 35 });
151
+ });
152
+ });
153
+ //# sourceMappingURL=create-database-from-schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-database-from-schema.test.js","sourceRoot":"","sources":["../../../../src/ecs/database/public/create-database-from-schema.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,22 @@
1
1
  import { ResourceComponents } from "../../store/resource-components.js";
2
2
  import { Store } from "../../store/index.js";
3
- import type { Database, ToTransactionFunctions, TransactionDeclarations } from "../database.js";
3
+ import { Database } from "../database.js";
4
+ import type { ToActionFunctions, ActionDeclarations } from "../../store/action-functions.js";
4
5
  import { StringKeyof } from "../../../types/types.js";
5
6
  import { Components } from "../../store/components.js";
6
7
  import { ArchetypeComponents } from "../../store/archetype-components.js";
7
- export declare function createDatabase<const C extends Components, const R extends ResourceComponents, const A extends ArchetypeComponents<StringKeyof<C>>, const TD extends TransactionDeclarations<C, R, A>>(store: Store<C, R, A>, transactionDeclarations: TD): Database<C, R, A, ToTransactionFunctions<TD>>;
8
+ import { ComponentSchemas } from "../../component-schemas.js";
9
+ import { ResourceSchemas } from "../../resource-schemas.js";
10
+ import { FromSchemas } from "../../../schema/from-schemas.js";
11
+ export declare function createDatabase(): Database<{}, {}, {}, {}, never>;
12
+ export declare function createDatabase<CS extends ComponentSchemas, RS extends ResourceSchemas, A extends ArchetypeComponents<StringKeyof<CS>>, TD extends ActionDeclarations<FromSchemas<CS>, FromSchemas<RS>, A>, S extends string>(plugin: Database.Plugin<CS, RS, A, TD, S>): Database<FromSchemas<CS>, FromSchemas<RS>, A, ToActionFunctions<TD>, S>;
13
+ export declare function createDatabase<const C extends Components, const R extends ResourceComponents, const A extends ArchetypeComponents<StringKeyof<C>>, const TD extends ActionDeclarations<C, R, A>>(store: Store<C, R, A>, transactionDeclarations: TD): Database<C, R, A, ToActionFunctions<TD>, never>;
14
+ export declare function createDatabase<const C extends Components, const R extends ResourceComponents, const A extends ArchetypeComponents<StringKeyof<C>>, const TD extends ActionDeclarations<C, R, A>, const S extends string>(store: Store<C, R, A>, transactionDeclarations: TD, systemDeclarations: {
15
+ readonly [K in S]: {
16
+ readonly create: (db: Database<C, R, A, ToActionFunctions<TD>, S>) => () => void | Promise<void>;
17
+ readonly schedule?: {
18
+ readonly before?: readonly S[];
19
+ readonly after?: readonly S[];
20
+ };
21
+ };
22
+ }): Database<C, R, A, ToActionFunctions<TD>, S>;
@@ -18,113 +18,317 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
18
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
19
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
20
  SOFTWARE.*/
21
+ import { Store } from "../../store/index.js";
22
+ import { Database } from "../database.js";
21
23
  import { isPromise } from "../../../internal/promise/is-promise.js";
22
24
  import { isAsyncGenerator } from "../../../internal/async-generator/is-async-generator.js";
23
25
  import { createReconcilingDatabase } from "../reconciling/create-reconciling-database.js";
24
- export function createDatabase(store, transactionDeclarations) {
26
+ import { calculateSystemOrder } from "../calculate-system-order.js";
27
+ export function createDatabase(storeOrPlugin, transactionDeclarations, systemDeclarations) {
28
+ if (!storeOrPlugin) {
29
+ return createDatabaseFromPlugin(Database.Plugin.create({}));
30
+ }
31
+ if (systemDeclarations) {
32
+ return createDatabaseFromStoreTransactionsAndSystems(storeOrPlugin, transactionDeclarations, systemDeclarations);
33
+ }
34
+ if (transactionDeclarations) {
35
+ return createDatabaseFromStoreAndTransactions(storeOrPlugin, transactionDeclarations);
36
+ }
37
+ else {
38
+ // It's a Plugin
39
+ return createDatabaseFromPlugin(storeOrPlugin);
40
+ }
41
+ }
42
+ function createDatabaseFromPlugin(plugin) {
43
+ const systems = plugin.systems ?? {};
44
+ const transactions = plugin.transactions ?? {};
45
+ const storeSchema = {
46
+ components: plugin.components ?? {},
47
+ resources: plugin.resources ?? {},
48
+ archetypes: plugin.archetypes ?? {},
49
+ };
50
+ return createDatabase(Store.create(storeSchema), transactions, systems);
51
+ }
52
+ function createDatabaseFromStoreTransactionsAndSystems(store, transactionDeclarations, systemDeclarations) {
25
53
  const reconcilingDatabase = createReconcilingDatabase(store, transactionDeclarations);
26
54
  let nextTransactionId = 1;
27
55
  const applyEnvelope = (envelope) => reconcilingDatabase.apply(envelope);
56
+ const createTransactionWrapper = (name) => (args) => {
57
+ const transactionId = nextTransactionId;
58
+ nextTransactionId += 1;
59
+ let hasTransient = false;
60
+ const applyTransient = (payload) => {
61
+ hasTransient = true;
62
+ const timestamp = Date.now();
63
+ applyEnvelope({
64
+ id: transactionId,
65
+ name,
66
+ args: payload,
67
+ time: -timestamp,
68
+ });
69
+ };
70
+ const applyCommit = (payload) => {
71
+ const timestamp = Date.now();
72
+ const result = applyEnvelope({
73
+ id: transactionId,
74
+ name,
75
+ args: payload,
76
+ time: timestamp,
77
+ });
78
+ hasTransient = false;
79
+ return result;
80
+ };
81
+ const cancelPending = () => {
82
+ if (!hasTransient) {
83
+ return;
84
+ }
85
+ applyEnvelope({
86
+ id: transactionId,
87
+ name,
88
+ args: undefined,
89
+ time: 0,
90
+ });
91
+ hasTransient = false;
92
+ };
93
+ if (typeof args === "function") {
94
+ const asyncArgsProvider = args;
95
+ const providerResult = asyncArgsProvider();
96
+ if (isAsyncGenerator(providerResult)) {
97
+ return new Promise((resolve, reject) => {
98
+ (async () => {
99
+ let lastArgs;
100
+ try {
101
+ let iteration = await providerResult.next();
102
+ while (!iteration.done) {
103
+ lastArgs = iteration.value;
104
+ applyTransient(iteration.value);
105
+ iteration = await providerResult.next();
106
+ }
107
+ const finalArgs = iteration.value !== undefined ? iteration.value : lastArgs;
108
+ if (finalArgs !== undefined) {
109
+ const commitResult = applyCommit(finalArgs);
110
+ resolve(commitResult?.value);
111
+ }
112
+ else {
113
+ cancelPending();
114
+ resolve(undefined);
115
+ }
116
+ }
117
+ catch (error) {
118
+ cancelPending();
119
+ reject(error);
120
+ }
121
+ })();
122
+ });
123
+ }
124
+ if (isPromise(providerResult)) {
125
+ return (async () => {
126
+ try {
127
+ const resolved = await providerResult;
128
+ const commitResult = applyCommit(resolved);
129
+ return commitResult?.value;
130
+ }
131
+ catch (error) {
132
+ cancelPending();
133
+ throw error;
134
+ }
135
+ })();
136
+ }
137
+ const syncResult = applyCommit(providerResult);
138
+ return syncResult?.value;
139
+ }
140
+ const result = applyCommit(args);
141
+ return result?.value;
142
+ };
28
143
  const transactions = {
29
144
  serviceName: "ecs-database-transactions-service",
30
145
  };
146
+ // Create unwrapped actions that execute directly on the store
147
+ const actions = {};
31
148
  for (const name of Object.keys(transactionDeclarations)) {
32
- transactions[name] = (args) => {
33
- const transactionId = nextTransactionId;
34
- nextTransactionId += 1;
35
- let hasTransient = false;
36
- const applyTransient = (payload) => {
37
- hasTransient = true;
38
- const timestamp = Date.now();
39
- applyEnvelope({
40
- id: transactionId,
41
- name,
42
- args: payload,
43
- time: -timestamp,
44
- });
45
- };
46
- const applyCommit = (payload) => {
47
- const timestamp = Date.now();
48
- const result = applyEnvelope({
49
- id: transactionId,
50
- name,
51
- args: payload,
52
- time: timestamp,
53
- });
54
- hasTransient = false;
55
- return result;
56
- };
57
- const cancelPending = () => {
58
- if (!hasTransient) {
59
- return;
60
- }
61
- applyEnvelope({
62
- id: transactionId,
63
- name,
64
- args: undefined,
65
- time: 0,
66
- });
67
- hasTransient = false;
149
+ actions[name] = transactionDeclarations[name].bind(null, store);
150
+ }
151
+ // Assign unwrapped actions to store
152
+ store.actions = actions;
153
+ const addTransactionWrappers = (transactionDecls) => {
154
+ for (const name of Object.keys(transactionDecls)) {
155
+ transactions[name] = createTransactionWrapper(name);
156
+ }
157
+ };
158
+ addTransactionWrappers(transactionDeclarations);
159
+ // Calculate system execution order
160
+ const systemOrder = calculateSystemOrder(systemDeclarations);
161
+ // Create partial database for system initialization (two-phase)
162
+ const partialDatabase = {
163
+ serviceName: "ecs-database-service",
164
+ ...reconcilingDatabase,
165
+ store: store,
166
+ transactions,
167
+ system: {
168
+ functions: {}, // Empty initially
169
+ order: systemOrder
170
+ },
171
+ extend: undefined // Will be set later
172
+ };
173
+ // Instantiate system functions with partial database
174
+ const systemFunctions = {};
175
+ for (const name in systemDeclarations) {
176
+ systemFunctions[name] = systemDeclarations[name].create(partialDatabase);
177
+ }
178
+ partialDatabase.system.functions = systemFunctions;
179
+ const extend = (plugin) => {
180
+ // Delegate to reconcilingDatabase which handles store/transactionalStore extension
181
+ reconcilingDatabase.extend(plugin);
182
+ const pluginTransactions = plugin.transactions ?? {};
183
+ // Add transaction wrappers for the new transactions
184
+ 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
+ }
189
+ // If plugin has new systems, we need to recreate the database with merged systems
190
+ if (plugin.systems && Object.keys(plugin.systems).length > 0) {
191
+ // Merge system declarations
192
+ const mergedSystemDeclarations = {
193
+ ...systemDeclarations,
194
+ ...plugin.systems
68
195
  };
69
- if (typeof args === "function") {
70
- const asyncArgsProvider = args;
71
- const providerResult = asyncArgsProvider();
72
- if (isAsyncGenerator(providerResult)) {
73
- return new Promise((resolve, reject) => {
74
- (async () => {
75
- let lastArgs;
76
- try {
77
- let iteration = await providerResult.next();
78
- while (!iteration.done) {
79
- lastArgs = iteration.value;
80
- applyTransient(iteration.value);
81
- iteration = await providerResult.next();
82
- }
83
- const finalArgs = iteration.value !== undefined ? iteration.value : lastArgs;
84
- if (finalArgs !== undefined) {
85
- const commitResult = applyCommit(finalArgs);
86
- resolve(commitResult?.value);
87
- }
88
- else {
89
- cancelPending();
90
- resolve(undefined);
91
- }
196
+ // Create new database with merged systems
197
+ return createDatabaseFromStoreTransactionsAndSystems(store, { ...transactionDeclarations, ...pluginTransactions }, mergedSystemDeclarations);
198
+ }
199
+ // No new systems, return the same database instance
200
+ return partialDatabase;
201
+ };
202
+ partialDatabase.extend = extend;
203
+ return partialDatabase;
204
+ }
205
+ function createDatabaseFromStoreAndTransactions(store, transactionDeclarations) {
206
+ const reconcilingDatabase = createReconcilingDatabase(store, transactionDeclarations);
207
+ let nextTransactionId = 1;
208
+ const applyEnvelope = (envelope) => reconcilingDatabase.apply(envelope);
209
+ const createTransactionWrapper = (name) => (args) => {
210
+ const transactionId = nextTransactionId;
211
+ nextTransactionId += 1;
212
+ let hasTransient = false;
213
+ const applyTransient = (payload) => {
214
+ hasTransient = true;
215
+ const timestamp = Date.now();
216
+ applyEnvelope({
217
+ id: transactionId,
218
+ name,
219
+ args: payload,
220
+ time: -timestamp,
221
+ });
222
+ };
223
+ const applyCommit = (payload) => {
224
+ const timestamp = Date.now();
225
+ const result = applyEnvelope({
226
+ id: transactionId,
227
+ name,
228
+ args: payload,
229
+ time: timestamp,
230
+ });
231
+ hasTransient = false;
232
+ return result;
233
+ };
234
+ const cancelPending = () => {
235
+ if (!hasTransient) {
236
+ return;
237
+ }
238
+ applyEnvelope({
239
+ id: transactionId,
240
+ name,
241
+ args: undefined,
242
+ time: 0,
243
+ });
244
+ hasTransient = false;
245
+ };
246
+ if (typeof args === "function") {
247
+ const asyncArgsProvider = args;
248
+ const providerResult = asyncArgsProvider();
249
+ if (isAsyncGenerator(providerResult)) {
250
+ return new Promise((resolve, reject) => {
251
+ (async () => {
252
+ let lastArgs;
253
+ try {
254
+ let iteration = await providerResult.next();
255
+ while (!iteration.done) {
256
+ lastArgs = iteration.value;
257
+ applyTransient(iteration.value);
258
+ iteration = await providerResult.next();
259
+ }
260
+ const finalArgs = iteration.value !== undefined ? iteration.value : lastArgs;
261
+ if (finalArgs !== undefined) {
262
+ const commitResult = applyCommit(finalArgs);
263
+ resolve(commitResult?.value);
92
264
  }
93
- catch (error) {
265
+ else {
94
266
  cancelPending();
95
- reject(error);
267
+ resolve(undefined);
96
268
  }
97
- })();
98
- });
99
- }
100
- if (isPromise(providerResult)) {
101
- return (async () => {
102
- try {
103
- const resolved = await providerResult;
104
- const commitResult = applyCommit(resolved);
105
- return commitResult?.value;
106
269
  }
107
270
  catch (error) {
108
271
  cancelPending();
109
- throw error;
272
+ reject(error);
110
273
  }
111
274
  })();
112
- }
113
- const syncResult = applyCommit(providerResult);
114
- return syncResult?.value;
275
+ });
115
276
  }
116
- const result = applyCommit(args);
117
- return result?.value;
118
- };
277
+ if (isPromise(providerResult)) {
278
+ return (async () => {
279
+ try {
280
+ const resolved = await providerResult;
281
+ const commitResult = applyCommit(resolved);
282
+ return commitResult?.value;
283
+ }
284
+ catch (error) {
285
+ cancelPending();
286
+ throw error;
287
+ }
288
+ })();
289
+ }
290
+ const syncResult = applyCommit(providerResult);
291
+ return syncResult?.value;
292
+ }
293
+ const result = applyCommit(args);
294
+ return result?.value;
295
+ };
296
+ const transactions = {
297
+ serviceName: "ecs-database-transactions-service",
298
+ };
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);
119
303
  }
304
+ // Assign unwrapped actions to store
305
+ store.actions = actions;
306
+ const addTransactionWrappers = (transactionDecls) => {
307
+ for (const name of Object.keys(transactionDecls)) {
308
+ transactions[name] = createTransactionWrapper(name);
309
+ }
310
+ };
311
+ addTransactionWrappers(transactionDeclarations);
120
312
  const extend = (schema) => {
121
- store.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);
320
+ }
122
321
  return database;
123
322
  };
124
323
  const database = {
125
324
  serviceName: "ecs-database-service",
126
325
  ...reconcilingDatabase,
326
+ store: store,
127
327
  transactions,
328
+ system: {
329
+ functions: {},
330
+ order: []
331
+ },
128
332
  extend,
129
333
  };
130
334
  return database;
@@ -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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"}