@adobe/data 0.6.3 → 0.7.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 (136) hide show
  1. package/dist/ecs/database/create-database.d.ts +1 -1
  2. package/dist/ecs/database/create-database.js +123 -198
  3. package/dist/ecs/database/create-database.js.map +1 -1
  4. package/dist/ecs/database/create-database.test.js +155 -684
  5. package/dist/ecs/database/create-database.test.js.map +1 -1
  6. package/dist/ecs/database/database.d.ts +1 -0
  7. package/dist/ecs/database/index.d.ts +5 -0
  8. package/dist/ecs/database/index.js +5 -0
  9. package/dist/ecs/database/index.js.map +1 -1
  10. package/dist/ecs/database/observe-select-entities.performance.test.js +6 -5
  11. package/dist/ecs/database/observe-select-entities.performance.test.js.map +1 -1
  12. package/dist/ecs/database/observed/create-observed-database.d.ts +7 -0
  13. package/dist/ecs/database/observed/create-observed-database.js +154 -0
  14. package/dist/ecs/database/observed/create-observed-database.js.map +1 -0
  15. package/dist/ecs/database/observed/create-observed-database.test.js +557 -0
  16. package/dist/ecs/database/observed/create-observed-database.test.js.map +1 -0
  17. package/dist/ecs/database/observed/observed-database.d.ts +36 -0
  18. package/dist/ecs/database/observed/observed-database.js +19 -0
  19. package/dist/ecs/database/observed/observed-database.js.map +1 -0
  20. package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +8 -0
  21. package/dist/ecs/database/reconciling/create-reconciling-database.js +146 -0
  22. package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -0
  23. package/dist/ecs/database/reconciling/create-reconciling-database.test.d.ts +1 -0
  24. package/dist/ecs/database/reconciling/create-reconciling-database.test.js +94 -0
  25. package/dist/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -0
  26. package/dist/ecs/database/reconciling/reconciling-database.d.ts +21 -0
  27. package/dist/ecs/database/reconciling/reconciling-database.js +22 -0
  28. package/dist/ecs/database/reconciling/reconciling-database.js.map +1 -0
  29. package/dist/ecs/database/reconciling/reconciling-entry.d.ts +30 -0
  30. package/dist/ecs/database/reconciling/reconciling-entry.js +88 -0
  31. package/dist/ecs/database/reconciling/reconciling-entry.js.map +1 -0
  32. package/dist/ecs/database/transactional-store/entity-id-preservation.test.d.ts +1 -0
  33. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +106 -0
  34. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +1 -0
  35. package/dist/ecs/entity/entity.d.ts +8 -0
  36. package/dist/ecs/entity/entity.js +3 -0
  37. package/dist/ecs/entity/entity.js.map +1 -0
  38. package/dist/ecs/entity/u32.d.ts +8 -0
  39. package/dist/{lit/elements/service-context.js → ecs/entity/u32.js} +3 -3
  40. package/dist/ecs/entity/u32.js.map +1 -0
  41. package/dist/ecs/store/store-schema/create-store-schema-test.js +2 -2
  42. package/dist/ecs/store/store-schema/create-store-schema-test.js.map +1 -1
  43. package/dist/ecs/store/store-schema/create-store-schema.d.ts +1 -11
  44. package/dist/ecs/store/store-schema/create-store-schema.js +44 -30
  45. package/dist/ecs/store/store-schema/create-store-schema.js.map +1 -1
  46. package/dist/ecs/store/store-schema/index.d.ts +1 -2
  47. package/dist/ecs/store/store-schema/index.js +20 -23
  48. package/dist/ecs/store/store-schema/index.js.map +1 -1
  49. package/dist/ecs/store/store-schema/store-schema.d.ts +1 -12
  50. package/dist/ecs/store/store-schema/store-schema.js +55 -21
  51. package/dist/ecs/store/store-schema/store-schema.js.map +1 -1
  52. package/dist/functions/serialization/index.d.ts +1 -0
  53. package/dist/functions/serialization/index.js +1 -0
  54. package/dist/functions/serialization/index.js.map +1 -1
  55. package/dist/functions/serialization/serialize-to-json.d.ts +9 -0
  56. package/dist/functions/serialization/serialize-to-json.js +161 -0
  57. package/dist/functions/serialization/serialize-to-json.js.map +1 -0
  58. package/dist/functions/serialization/serialize-to-json.test.d.ts +1 -0
  59. package/dist/functions/serialization/serialize-to-json.test.js +244 -0
  60. package/dist/functions/serialization/serialize-to-json.test.js.map +1 -0
  61. package/dist/graphics/frame.d.ts +1 -22
  62. package/dist/graphics/frame.js +14 -11
  63. package/dist/graphics/frame.js.map +1 -1
  64. package/dist/graphics/get-web-gpu-device-and-context.d.ts +1 -2
  65. package/dist/graphics/get-web-gpu-device-and-context.js +23 -20
  66. package/dist/graphics/get-web-gpu-device-and-context.js.map +1 -1
  67. package/dist/graphics/graphics-context.d.ts +1 -5
  68. package/dist/graphics/graphics-context.js +5 -0
  69. package/dist/graphics/graphics-context.js.map +1 -1
  70. package/dist/math/aabb-face/face.d.ts +51 -0
  71. package/dist/math/aabb-face/face.js +110 -0
  72. package/dist/math/aabb-face/face.js.map +1 -0
  73. package/dist/math/aabb-face/face.test.d.ts +1 -0
  74. package/dist/math/aabb-face/face.test.js +94 -0
  75. package/dist/math/aabb-face/face.test.js.map +1 -0
  76. package/dist/math/box/box.d.ts +50 -0
  77. package/dist/math/box/box.js +23 -0
  78. package/dist/math/box/box.js.map +1 -0
  79. package/dist/math/face/face.d.ts +51 -0
  80. package/dist/math/face/face.js +110 -0
  81. package/dist/math/face/face.js.map +1 -0
  82. package/dist/math/face/face.test.d.ts +1 -0
  83. package/dist/math/face/face.test.js +94 -0
  84. package/dist/math/face/face.test.js.map +1 -0
  85. package/dist/math/picking/face.d.ts +1 -0
  86. package/dist/math/picking/face.js +2 -0
  87. package/dist/math/picking/face.js.map +1 -0
  88. package/dist/math/picking/get-closest-entity-to-line.js +1 -1
  89. package/dist/math/picking/get-closest-entity-to-line.js.map +1 -1
  90. package/dist/math/picking/get-closest-entity-to-point.js +1 -1
  91. package/dist/math/picking/get-closest-entity-to-point.js.map +1 -1
  92. package/dist/math/picking/getClosestEntityToLine.d.ts +4 -0
  93. package/dist/math/picking/getClosestEntityToLine.js +29 -0
  94. package/dist/math/picking/getClosestEntityToLine.js.map +1 -0
  95. package/dist/math/picking/getClosestEntityToPoint.d.ts +4 -0
  96. package/dist/math/picking/getClosestEntityToPoint.js +27 -0
  97. package/dist/math/picking/getClosestEntityToPoint.js.map +1 -0
  98. package/dist/math/picking/getIntersectingEntities.d.ts +12 -0
  99. package/dist/math/picking/getIntersectingEntities.js +15 -0
  100. package/dist/math/picking/getIntersectingEntities.js.map +1 -0
  101. package/dist/math/picking/pick-from-tables.js +1 -1
  102. package/dist/math/picking/pick-from-tables.js.map +1 -1
  103. package/dist/math/picking/pick-result.d.ts +4 -2
  104. package/dist/math/transform/debug-inverse.d.ts +1 -0
  105. package/dist/math/transform/debug-inverse.js +28 -0
  106. package/dist/math/transform/debug-inverse.js.map +1 -0
  107. package/dist/math/transform/debug-quat.d.ts +1 -0
  108. package/dist/math/transform/debug-quat.js +23 -0
  109. package/dist/math/transform/debug-quat.js.map +1 -0
  110. package/dist/math/transform/debug-test.d.ts +1 -0
  111. package/dist/math/transform/debug-test.js +34 -0
  112. package/dist/math/transform/debug-test.js.map +1 -0
  113. package/dist/math/transform/transform.d.ts +58 -0
  114. package/dist/math/transform/transform.js +101 -0
  115. package/dist/math/transform/transform.js.map +1 -0
  116. package/dist/math/transform/transform.test.d.ts +1 -0
  117. package/dist/math/transform/transform.test.js +309 -0
  118. package/dist/math/transform/transform.test.js.map +1 -0
  119. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +1 -1
  120. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  121. package/dist/tsconfig.tsbuildinfo +1 -1
  122. package/package.json +1 -1
  123. package/dist/lit/elements/service-application.d.ts +0 -9
  124. package/dist/lit/elements/service-application.js +0 -55
  125. package/dist/lit/elements/service-application.js.map +0 -1
  126. package/dist/lit/elements/service-context.d.ts +0 -1
  127. package/dist/lit/elements/service-context.js.map +0 -1
  128. package/dist/lit/elements/service-element.d.ts +0 -6
  129. package/dist/lit/elements/service-element.js +0 -43
  130. package/dist/lit/elements/service-element.js.map +0 -1
  131. package/dist/table/compact-table.d.ts +0 -7
  132. package/dist/table/compact-table.js +0 -15
  133. package/dist/table/compact-table.js.map +0 -1
  134. package/dist/table/compact-table.test.js +0 -121
  135. package/dist/table/compact-table.test.js.map +0 -1
  136. /package/dist/{table/compact-table.test.d.ts → ecs/database/observed/create-observed-database.test.d.ts} +0 -0
@@ -4,4 +4,4 @@ import { Database, ToTransactionFunctions, TransactionDeclarations } from "./dat
4
4
  import { StringKeyof } from "../../types/types.js";
5
5
  import { Components } from "../store/components.js";
6
6
  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>>;
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, now?: () => number): Database<C, R, A, ToTransactionFunctions<TD>>;
@@ -1,233 +1,158 @@
1
- import { mapEntries } from "../../internal/object/index.js";
2
- import { withMap } from "../../observe/index.js";
3
- import { createTransactionalStore } from "./transactional-store/create-transactional-store.js";
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 do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.*/
4
21
  import { isPromise } from "../../internal/promise/is-promise.js";
5
22
  import { isAsyncGenerator } from "../../internal/async-generator/is-async-generator.js";
6
- import { observeSelectEntities } from "./observe-select-entities.js";
7
- import { applyOperations } from "../index.js";
8
- export function createDatabase(store, transactionDeclarations) {
9
- const transactionalStore = createTransactionalStore(store);
10
- // variables to track the observers
11
- const componentObservers = new Map();
12
- const archetypeObservers = new Map();
13
- const entityObservers = new Map();
14
- const transactionObservers = new Set();
15
- // observation interface
16
- const observeEntity = (entity, minArchetype) => (observer) => {
17
- if (minArchetype) {
18
- const originalObserver = observer;
19
- observer = (values) => {
20
- if (values) {
21
- const { archetype } = store.locate(entity);
22
- if (archetype.id !== minArchetype.id && !archetype.components.isSupersetOf(minArchetype.components)) {
23
- // when a min archetype is provided the entity will be considered null
24
- // if the entity does not satisfy the min archetype components.
25
- values = null;
26
- }
27
- }
28
- originalObserver(values);
29
- };
30
- }
31
- // Call immediately with current values
32
- observer(store.read(entity));
33
- // Add to observers for future changes
34
- const dispose = addToMapSet(entity, entityObservers)(observer);
35
- return dispose;
36
- };
37
- const observeArchetype = (archetype) => addToMapSet(archetype, archetypeObservers);
38
- const observeComponent = mapEntries(store.componentSchemas, ([component]) => addToMapSet(component, componentObservers));
39
- // Resource observation - resources are stored as entities with specific archetypes
40
- const observeResource = Object.fromEntries(Object.entries(store.resources).map(([resource]) => {
41
- const archetype = store.ensureArchetype(["id", resource]);
42
- const resourceId = archetype.columns.id.get(0);
43
- return [resource, withMap(observeEntity(resourceId), (values) => values?.[resource] ?? null)];
44
- }));
45
- const observeTransaction = (notify) => {
46
- transactionObservers.add(notify);
47
- return () => {
48
- transactionObservers.delete(notify);
49
- };
50
- };
51
- const observe = {
52
- components: observeComponent,
53
- resources: observeResource,
54
- transactions: observeTransaction,
55
- entity: observeEntity,
56
- archetype: observeArchetype,
57
- select: observeSelectEntities(transactionalStore, observeTransaction),
58
- };
59
- const { execute: transactionDatabaseExecute, resources, ...rest } = transactionalStore;
60
- const notifyObservers = (result) => {
61
- // Notify transaction observers
62
- for (const transactionObserver of transactionObservers) {
63
- transactionObserver(result);
64
- }
65
- // Notify component observers
66
- for (const changedComponent of result.changedComponents) {
67
- const observers = componentObservers.get(changedComponent);
68
- if (observers) {
69
- for (const observer of observers) {
70
- observer();
71
- }
72
- }
73
- }
74
- // Notify archetype observers
75
- for (const changedArchetype of result.changedArchetypes) {
76
- const observers = archetypeObservers.get(changedArchetype);
77
- if (observers) {
78
- for (const observer of observers) {
79
- observer();
80
- }
81
- }
82
- }
83
- // Notify entity observers
84
- for (const changedEntity of result.changedEntities.keys()) {
85
- const observers = entityObservers.get(changedEntity);
86
- if (observers) {
87
- const values = store.read(changedEntity);
88
- for (const observer of observers) {
89
- observer(values);
90
- }
91
- }
92
- }
93
- };
94
- const execute = (handler, options) => {
95
- const result = transactionDatabaseExecute(handler, options);
96
- notifyObservers(result);
97
- return result;
98
- };
23
+ import { createReconcilingDatabase } from "./reconciling/create-reconciling-database.js";
24
+ export function createDatabase(store, transactionDeclarations, now = Date.now) {
25
+ const reconcilingDatabase = createReconcilingDatabase(store, transactionDeclarations);
26
+ const applyCore = reconcilingDatabase.apply;
27
+ let nextTransactionId = 1;
28
+ const applyEnvelope = (envelope) => applyCore(envelope);
99
29
  const transactions = {
100
30
  serviceName: "ecs-database-transactions-service",
101
31
  };
102
- for (const [name, transactionUntyped] of Object.entries(transactionDeclarations)) {
103
- const transaction = transactionUntyped;
32
+ for (const name of Object.keys(transactionDeclarations)) {
104
33
  transactions[name] = (args) => {
105
- // Check if args is an AsyncArgsProvider function
106
- if (typeof args === 'function') {
34
+ const transactionId = nextTransactionId;
35
+ nextTransactionId += 1;
36
+ let hasTransient = false;
37
+ const applyTransient = (payload) => {
38
+ hasTransient = true;
39
+ const timestamp = now();
40
+ applyEnvelope({
41
+ id: transactionId,
42
+ name,
43
+ args: payload,
44
+ time: -timestamp,
45
+ });
46
+ };
47
+ const applyCommit = (payload) => {
48
+ const timestamp = now();
49
+ const result = applyEnvelope({
50
+ id: transactionId,
51
+ name,
52
+ args: payload,
53
+ time: timestamp,
54
+ });
55
+ hasTransient = false;
56
+ return result;
57
+ };
58
+ const cancelPending = () => {
59
+ if (!hasTransient) {
60
+ return;
61
+ }
62
+ applyEnvelope({
63
+ id: transactionId,
64
+ name,
65
+ args: undefined,
66
+ time: 0,
67
+ });
68
+ hasTransient = false;
69
+ };
70
+ if (typeof args === "function") {
107
71
  const asyncArgsProvider = args;
108
- const asyncResult = asyncArgsProvider();
109
- if (isAsyncGenerator(asyncResult)) {
110
- const count = 0;
72
+ const providerResult = asyncArgsProvider();
73
+ if (isAsyncGenerator(providerResult)) {
111
74
  return new Promise((resolve, reject) => {
112
75
  (async () => {
76
+ let lastArgs;
113
77
  try {
114
- let lastArgs = undefined;
115
- let lastTransaction;
116
- const executeNext = (asyncArgs, transient) => {
117
- lastArgs = asyncArgs;
118
- if (lastTransaction) {
119
- // rollback previous transaction.
120
- execute(t => {
121
- if (lastTransaction) {
122
- // Rollback the previous transaction to restore the state before it
123
- applyOperations(t, lastTransaction.undo);
124
- }
125
- }, { transient: true });
126
- }
127
- lastTransaction = execute(t => transaction(t, asyncArgs), { transient });
128
- if (!transient) {
129
- // this is the last value so we will resolve to it
130
- resolve(lastTransaction.value);
131
- }
132
- };
133
- // Manually iterate through the generator to capture both yield and return values
134
- let result = await asyncResult.next();
135
- // Process yield values one by one with rollback
136
- // We can't know if a yield is final until the generator completes,
137
- // so we mark all yields as transient initially
138
- while (!result.done) {
139
- // This is a yield value - always transient initially
140
- executeNext(result.value, true);
141
- result = await asyncResult.next();
78
+ let iteration = await providerResult.next();
79
+ while (!iteration.done) {
80
+ lastArgs = iteration.value;
81
+ applyTransient(iteration.value);
82
+ iteration = await providerResult.next();
142
83
  }
143
- if (result.value !== undefined) {
144
- executeNext(result.value, false);
84
+ const finalArgs = iteration.value !== undefined ? iteration.value : lastArgs;
85
+ if (finalArgs !== undefined) {
86
+ const commitResult = applyCommit(finalArgs);
87
+ resolve(commitResult?.value);
145
88
  }
146
- else if (lastArgs !== undefined) { // Only execute if lastArgs exists
147
- executeNext(lastArgs, false);
89
+ else {
90
+ cancelPending();
91
+ resolve(undefined);
148
92
  }
149
93
  }
150
94
  catch (error) {
151
- console.error('AsyncGenerator error:', error);
95
+ cancelPending();
152
96
  reject(error);
153
97
  }
154
98
  })();
155
99
  });
156
100
  }
157
- else if (isPromise(asyncResult)) {
158
- return new Promise((resolve, reject) => {
159
- (async () => {
160
- try {
161
- const input = await asyncResult;
162
- const result = execute(t => transaction(t, input));
163
- resolve(result);
164
- }
165
- catch (error) {
166
- reject(error);
167
- }
168
- })();
169
- });
101
+ if (isPromise(providerResult)) {
102
+ return (async () => {
103
+ try {
104
+ const resolved = await providerResult;
105
+ const commitResult = applyCommit(resolved);
106
+ return commitResult?.value;
107
+ }
108
+ catch (error) {
109
+ cancelPending();
110
+ throw error;
111
+ }
112
+ })();
170
113
  }
171
- else {
172
- // Function returned a synchronous value
173
- return execute(t => transaction(t, asyncResult));
174
- }
175
- }
176
- else {
177
- // Synchronous argument
178
- return execute(t => transaction(t, args)).value;
114
+ const syncResult = applyCommit(providerResult);
115
+ return syncResult?.value;
179
116
  }
117
+ const result = applyCommit(args);
118
+ return result?.value;
180
119
  };
181
120
  }
182
- const notifyAllObserversStoreReloaded = () => {
183
- const notifyResult = {
184
- changedComponents: new Set(componentObservers.keys()),
185
- changedArchetypes: new Set(archetypeObservers.keys()),
186
- changedEntities: new Map([...entityObservers.keys()].map((entity) => {
187
- const values = store.read(entity);
188
- let updateValues = null;
189
- if (values) {
190
- const { id, ...rest } = values;
191
- updateValues = rest;
121
+ const { apply, cancel, observe, resources, toData: reconcilingToData, fromData: reconcilingFromData, ...storeMethods } = reconcilingDatabase;
122
+ void apply;
123
+ const toData = () => reconcilingToData();
124
+ const fromData = (data) => {
125
+ reconcilingFromData(data);
126
+ let maxId = 0;
127
+ if (typeof data === "object" && data !== null && "appliedEntries" in data) {
128
+ const appliedEntriesData = data.appliedEntries;
129
+ if (Array.isArray(appliedEntriesData)) {
130
+ for (const entry of appliedEntriesData) {
131
+ const rawId = entry?.id;
132
+ if (rawId !== undefined) {
133
+ const idNumber = Number(rawId);
134
+ if (!Number.isNaN(idNumber)) {
135
+ maxId = Math.max(maxId, idNumber);
136
+ }
137
+ }
192
138
  }
193
- return [
194
- entity,
195
- updateValues
196
- ];
197
- })),
198
- transient: false,
199
- value: undefined,
200
- undo: [],
201
- redo: [],
202
- undoable: null,
203
- };
204
- notifyObservers(notifyResult);
139
+ }
140
+ }
141
+ nextTransactionId = Math.max(nextTransactionId, maxId + 1);
142
+ };
143
+ const cancelReconcilingEntry = (id) => {
144
+ cancel(id);
205
145
  };
206
- // Return the complete observable store
207
146
  const database = {
208
147
  serviceName: "ecs-database-service",
209
- ...rest,
148
+ ...storeMethods,
210
149
  resources,
211
150
  transactions,
212
151
  observe,
213
- toData: () => store.toData(),
214
- fromData: (data) => {
215
- store.fromData(data);
216
- notifyAllObserversStoreReloaded();
217
- },
152
+ toData,
153
+ fromData,
154
+ cancelTransaction: cancelReconcilingEntry,
218
155
  };
219
156
  return database;
220
157
  }
221
- const addToMapSet = (key, map) => (value) => {
222
- let set = map.get(key);
223
- if (set) {
224
- set.add(value);
225
- }
226
- else {
227
- map.set(key, (set = new Set([value])));
228
- }
229
- return () => {
230
- set.delete(value);
231
- };
232
- };
233
158
  //# sourceMappingURL=create-database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-database.js","sourceRoot":"","sources":["../../../src/ecs/database/create-database.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAW,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAGxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,UAAU,cAAc,CAM1B,KAAqB,EACrB,uBAA2B;IAI3B,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAE3D,oCAAoC;IACpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmC,CAAC;IACtE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAgC,CAAC;IACnE,MAAM,eAAe,GAAG,IAAI,GAAG,EAA6D,CAAC;IAC7F,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA+C,CAAC;IAEpF,yBAAyB;IACzB,MAAM,aAAa,GAAG,CAA2B,MAAc,EAAE,YAAkD,EAAE,EAAE,CAAC,CAAC,QAAsD,EAAE,EAAE;QAC/K,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAClC,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;gBAClB,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;oBAC5C,IAAI,SAAS,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;wBAClG,sEAAsE;wBACtE,+DAA+D;wBAC/D,MAAM,GAAG,IAAI,CAAC;oBAClB,CAAC;gBACL,CAAC;gBACD,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAA;QACL,CAAC;QACD,uCAAuC;QACvC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7B,sCAAsC;QACtC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,SAAsB,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzH,mFAAmF;IACnF,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,IAAsB,EAAE,QAAqC,CAAC,CAAC,CAAC;QACzG,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,QAAqC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/H,CAAC,CAAC,CACwC,CAAC;IAE/C,MAAM,kBAAkB,GAAkC,CAAC,MAAmD,EAAE,EAAE;QAC9G,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACR,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAA;IACL,CAAC,CAAA;IAED,MAAM,OAAO,GAA8B;QACvC,UAAU,EAAE,gBAAgB;QAC5B,SAAS,EAAE,eAAe;QAC1B,YAAY,EAAE,kBAAkB;QAChC,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;KACxE,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,kBAAkB,CAAC;IAEvF,MAAM,eAAe,GAAG,CAAC,MAA4B,EAAE,EAAE;QACrD,+BAA+B;QAC/B,KAAK,MAAM,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;YACrD,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,gBAAkC,CAAC,CAAC;YAC7E,IAAI,SAAS,EAAE,CAAC;gBACZ,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC/B,QAAQ,EAAE,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACZ,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC/B,QAAQ,EAAE,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,OAAqC,EAAE,OAAiC,EAAE,EAAE;QACzF,MAAM,MAAM,GAAG,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAA;IAED,MAAM,YAAY,GAAG;QACjB,WAAW,EAAE,mCAAmC;KAC5B,CAAC;IAEzB,KAAK,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/E,MAAM,WAAW,GAAG,kBAAgE,CAAC;QACpF,YAAoB,CAAC,IAAe,CAAC,GAAG,CAAC,IAAa,EAAE,EAAE;YACvD,iDAAiD;YACjD,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,iBAAiB,GAAG,IAAgD,CAAC;gBAC3E,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;gBAExC,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,CAAC,CAAC;oBAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACnC,CAAC,KAAK,IAAI,EAAE;4BACR,IAAI,CAAC;gCACD,IAAI,QAAQ,GAAQ,SAAS,CAAC;gCAC9B,IAAI,eAAiD,CAAC;gCAEtD,MAAM,WAAW,GAAG,CAAC,SAAc,EAAE,SAAkB,EAAE,EAAE;oCACvD,QAAQ,GAAG,SAAS,CAAC;oCAErB,IAAI,eAAe,EAAE,CAAC;wCAClB,iCAAiC;wCACjC,OAAO,CAAC,CAAC,CAAC,EAAE;4CACR,IAAI,eAAe,EAAE,CAAC;gDAClB,mEAAmE;gDACnE,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;4CAC7C,CAAC;wCACL,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;oCAC3B,CAAC;oCACD,eAAe,GAAG,OAAO,CACrB,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAC9B,EAAE,SAAS,EAAE,CAChB,CAAC;oCAEF,IAAI,CAAC,SAAS,EAAE,CAAC;wCACb,kDAAkD;wCAClD,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oCACnC,CAAC;gCACL,CAAC,CAAA;gCAED,iFAAiF;gCACjF,IAAI,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gCAEtC,gDAAgD;gCAChD,mEAAmE;gCACnE,+CAA+C;gCAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oCAClB,qDAAqD;oCACrD,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oCAChC,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gCACtC,CAAC;gCAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oCAC7B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gCACrC,CAAC;qCAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC,CAAE,kCAAkC;oCACpE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gCACjC,CAAC;4BACL,CAAC;4BACD,OAAO,KAAK,EAAE,CAAC;gCACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gCAC9C,MAAM,CAAC,KAAK,CAAC,CAAC;4BAClB,CAAC;wBACL,CAAC,CAAC,EAAE,CAAC;oBACT,CAAC,CAAC,CAAC;gBACP,CAAC;qBACI,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACnC,CAAC,KAAK,IAAI,EAAE;4BACR,IAAI,CAAC;gCACD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;gCAChC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gCACnD,OAAO,CAAC,MAAM,CAAC,CAAC;4BACpB,CAAC;4BACD,OAAO,KAAK,EAAE,CAAC;gCACX,MAAM,CAAC,KAAK,CAAC,CAAC;4BAClB,CAAC;wBACL,CAAC,CAAC,EAAE,CAAC;oBACT,CAAC,CAAC,CAAC;gBACP,CAAC;qBACI,CAAC;oBACF,wCAAwC;oBACxC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,uBAAuB;gBACvB,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAED,MAAM,+BAA+B,GAAG,GAAG,EAAE;QACzC,MAAM,YAAY,GAAyB;YACvC,iBAAiB,EAAE,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,iBAAiB,EAAE,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,YAAY,GAAiC,IAAI,CAAC;gBACtD,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;oBAC/B,YAAY,GAAG,IAA6B,CAAC;gBACjD,CAAC;gBACD,OAAO;oBACH,MAAM;oBACN,YAAY;iBACf,CAAA;YACL,CAAC,CAAC,CAAC;YACH,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,IAAI;SACjB,CAAA;QACD,eAAe,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAA;IAED,uCAAuC;IACvC,MAAM,QAAQ,GAAG;QACb,WAAW,EAAE,sBAAsB;QACnC,GAAG,IAAI;QACP,SAAS;QACT,YAAY;QACZ,OAAO;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE;YACxB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,+BAA+B,EAAE,CAAC;QACtC,CAAC;KACoB,CAAC;IAC1B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,WAAW,GAAG,CAAO,GAAM,EAAE,GAAmB,EAAE,EAAE,CAAC,CAAC,KAAQ,EAAE,EAAE;IACpE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,GAAG,EAAE,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,EAAE;QACR,GAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"create-database.js","sourceRoot":"","sources":["../../../src/ecs/database/create-database.ts"],"names":[],"mappings":"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"}