@adobe/data 0.7.2 → 0.7.3

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 (209) hide show
  1. package/dist/ecs/archetype/archetype.d.ts +3 -3
  2. package/dist/ecs/archetype/create-archetype.d.ts +4 -4
  3. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  4. package/dist/ecs/archetype/create-archetype.test.js +6 -6
  5. package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
  6. package/dist/ecs/archetype/delete-row.d.ts +2 -2
  7. package/dist/ecs/archetype/delete-row.js.map +1 -1
  8. package/dist/ecs/archetype/delete-row.test.js +4 -4
  9. package/dist/ecs/archetype/delete-row.test.js.map +1 -1
  10. package/dist/ecs/core-components.d.ts +3 -3
  11. package/dist/ecs/database/database.d.ts +4 -4
  12. package/dist/ecs/database/observe-select-entities.d.ts +2 -2
  13. package/dist/ecs/database/observe-select-entities.js.map +1 -1
  14. package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
  15. package/dist/ecs/database/observed/observed-database.d.ts +3 -3
  16. package/dist/ecs/database/replicate.js.map +1 -1
  17. package/dist/ecs/entity-location-table/create-entity-location-table.d.ts +1 -1
  18. package/dist/ecs/entity-location-table/create-entity-location-table.js +14 -1
  19. package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
  20. package/dist/ecs/entity-location-table/create-entity-location-table.test.js +14 -0
  21. package/dist/ecs/entity-location-table/create-entity-location-table.test.js.map +1 -1
  22. package/dist/ecs/entity.d.ts +9 -7
  23. package/dist/ecs/entity.js +5 -2
  24. package/dist/ecs/entity.js.map +1 -1
  25. package/dist/ecs/index.d.ts +1 -1
  26. package/dist/ecs/index.js +1 -1
  27. package/dist/ecs/index.js.map +1 -1
  28. package/dist/ecs/optional-components.d.ts +3 -0
  29. package/dist/ecs/optional-components.js +2 -0
  30. package/dist/ecs/optional-components.js.map +1 -0
  31. package/dist/ecs/required-components.d.ts +4 -0
  32. package/dist/ecs/required-components.js +2 -0
  33. package/dist/ecs/required-components.js.map +1 -0
  34. package/dist/ecs/store/core/core.d.ts +15 -15
  35. package/dist/ecs/store/core/create-core.d.ts +2 -1
  36. package/dist/ecs/store/core/create-core.js +29 -12
  37. package/dist/ecs/store/core/create-core.js.map +1 -1
  38. package/dist/ecs/store/core/create-core.test.d.ts +1 -1
  39. package/dist/ecs/store/core/create-core.test.js +30 -2
  40. package/dist/ecs/store/core/create-core.test.js.map +1 -1
  41. package/dist/ecs/store/core/select-entities.d.ts +2 -2
  42. package/dist/ecs/store/core/select-entities.js.map +1 -1
  43. package/dist/ecs/store/create-store.d.ts +2 -1
  44. package/dist/ecs/store/create-store.js +3 -1
  45. package/dist/ecs/store/create-store.js.map +1 -1
  46. package/dist/ecs/store/store.d.ts +6 -6
  47. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +1 -1
  48. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +4 -3
  51. package/dist/blob/download-handle.d.ts +0 -4
  52. package/dist/blob/download-handle.js +0 -2
  53. package/dist/blob/download-handle.js.map +0 -1
  54. package/dist/blob/upload-handle.d.ts +0 -4
  55. package/dist/blob/upload-handle.js +0 -2
  56. package/dist/blob/upload-handle.js.map +0 -1
  57. package/dist/ecs/database/applied/applied-database.d.ts +0 -47
  58. package/dist/ecs/database/applied/applied-database.js +0 -22
  59. package/dist/ecs/database/applied/applied-database.js.map +0 -1
  60. package/dist/ecs/database/applied/applied-entry.d.ts +0 -30
  61. package/dist/ecs/database/applied/applied-entry.js +0 -84
  62. package/dist/ecs/database/applied/applied-entry.js.map +0 -1
  63. package/dist/ecs/database/applied/create-applied-database.d.ts +0 -8
  64. package/dist/ecs/database/applied/create-applied-database.js +0 -266
  65. package/dist/ecs/database/applied/create-applied-database.js.map +0 -1
  66. package/dist/ecs/database/applied/create-applied-database.test.d.ts +0 -1
  67. package/dist/ecs/database/applied/create-applied-database.test.js +0 -94
  68. package/dist/ecs/database/applied/create-applied-database.test.js.map +0 -1
  69. package/dist/ecs/database/create-applied-database.d.ts +0 -49
  70. package/dist/ecs/database/create-applied-database.js +0 -275
  71. package/dist/ecs/database/create-applied-database.js.map +0 -1
  72. package/dist/ecs/database/reconciling/applied-database.d.ts +0 -47
  73. package/dist/ecs/database/reconciling/applied-database.js +0 -22
  74. package/dist/ecs/database/reconciling/applied-database.js.map +0 -1
  75. package/dist/ecs/database/reconciling/applied-entry.d.ts +0 -30
  76. package/dist/ecs/database/reconciling/applied-entry.js +0 -84
  77. package/dist/ecs/database/reconciling/applied-entry.js.map +0 -1
  78. package/dist/ecs/database/reconciling/create-applied-database.d.ts +0 -8
  79. package/dist/ecs/database/reconciling/create-applied-database.js +0 -266
  80. package/dist/ecs/database/reconciling/create-applied-database.js.map +0 -1
  81. package/dist/ecs/database/reconciling/create-applied-database.test.d.ts +0 -1
  82. package/dist/ecs/database/reconciling/create-applied-database.test.js +0 -94
  83. package/dist/ecs/database/reconciling/create-applied-database.test.js.map +0 -1
  84. package/dist/ecs/store/store-schema/create-store-schema-test.d.ts +0 -1
  85. package/dist/ecs/store/store-schema/create-store-schema-test.js +0 -33
  86. package/dist/ecs/store/store-schema/create-store-schema-test.js.map +0 -1
  87. package/dist/ecs/store/store-schema/create-store-schema.d.ts +0 -11
  88. package/dist/ecs/store/store-schema/create-store-schema.js +0 -31
  89. package/dist/ecs/store/store-schema/create-store-schema.js.map +0 -1
  90. package/dist/ecs/store/store-schema/index.d.ts +0 -2
  91. package/dist/ecs/store/store-schema/index.js +0 -24
  92. package/dist/ecs/store/store-schema/index.js.map +0 -1
  93. package/dist/ecs/store/store-schema/store-schema.d.ts +0 -12
  94. package/dist/ecs/store/store-schema/store-schema.js +0 -23
  95. package/dist/ecs/store/store-schema/store-schema.js.map +0 -1
  96. package/dist/ecs/world/create-world.d.ts +0 -7
  97. package/dist/ecs/world/create-world.js +0 -113
  98. package/dist/ecs/world/create-world.js.map +0 -1
  99. package/dist/ecs/world/create-world.test.d.ts +0 -1
  100. package/dist/ecs/world/create-world.test.js +0 -499
  101. package/dist/ecs/world/create-world.test.js.map +0 -1
  102. package/dist/ecs/world/index.d.ts +0 -5
  103. package/dist/ecs/world/index.js +0 -27
  104. package/dist/ecs/world/index.js.map +0 -1
  105. package/dist/ecs/world/system-phase.d.ts +0 -5
  106. package/dist/ecs/world/system-phase.js +0 -14
  107. package/dist/ecs/world/system-phase.js.map +0 -1
  108. package/dist/ecs/world/system.d.ts +0 -25
  109. package/dist/ecs/world/system.js +0 -2
  110. package/dist/ecs/world/system.js.map +0 -1
  111. package/dist/ecs/world/world-schema/create-world-schema-test.d.ts +0 -1
  112. package/dist/ecs/world/world-schema/create-world-schema-test.js +0 -55
  113. package/dist/ecs/world/world-schema/create-world-schema-test.js.map +0 -1
  114. package/dist/ecs/world/world-schema/create-world-schema.d.ts +0 -19
  115. package/dist/ecs/world/world-schema/create-world-schema.js +0 -33
  116. package/dist/ecs/world/world-schema/create-world-schema.js.map +0 -1
  117. package/dist/ecs/world/world-schema/index.d.ts +0 -2
  118. package/dist/ecs/world/world-schema/index.js +0 -24
  119. package/dist/ecs/world/world-schema/index.js.map +0 -1
  120. package/dist/ecs/world/world-schema/world-schema.d.ts +0 -18
  121. package/dist/ecs/world/world-schema/world-schema.js +0 -23
  122. package/dist/ecs/world/world-schema/world-schema.js.map +0 -1
  123. package/dist/ecs/world/world.d.ts +0 -11
  124. package/dist/ecs/world/world.js +0 -2
  125. package/dist/ecs/world/world.js.map +0 -1
  126. package/dist/graphics/camera/camera.d.ts +0 -62
  127. package/dist/graphics/camera/camera.js +0 -17
  128. package/dist/graphics/camera/camera.js.map +0 -1
  129. package/dist/graphics/camera/index.d.ts +0 -4
  130. package/dist/graphics/camera/index.js +0 -5
  131. package/dist/graphics/camera/index.js.map +0 -1
  132. package/dist/graphics/camera/screen-to-world-ray.d.ts +0 -12
  133. package/dist/graphics/camera/screen-to-world-ray.js +0 -49
  134. package/dist/graphics/camera/screen-to-world-ray.js.map +0 -1
  135. package/dist/graphics/camera/screen-to-world-ray.test.d.ts +0 -1
  136. package/dist/graphics/camera/screen-to-world-ray.test.js +0 -171
  137. package/dist/graphics/camera/screen-to-world-ray.test.js.map +0 -1
  138. package/dist/graphics/camera/to-view-projection.d.ts +0 -3
  139. package/dist/graphics/camera/to-view-projection.js +0 -8
  140. package/dist/graphics/camera/to-view-projection.js.map +0 -1
  141. package/dist/graphics/camera/world-to-screen.d.ts +0 -12
  142. package/dist/graphics/camera/world-to-screen.js +0 -38
  143. package/dist/graphics/camera/world-to-screen.js.map +0 -1
  144. package/dist/graphics/camera/world-to-screen.test.d.ts +0 -1
  145. package/dist/graphics/camera/world-to-screen.test.js +0 -124
  146. package/dist/graphics/camera/world-to-screen.test.js.map +0 -1
  147. package/dist/graphics/create-struct-gpu-buffer.d.ts +0 -7
  148. package/dist/graphics/create-struct-gpu-buffer.js +0 -17
  149. package/dist/graphics/create-struct-gpu-buffer.js.map +0 -1
  150. package/dist/graphics/extract-wgsl-bindings.d.ts +0 -5
  151. package/dist/graphics/extract-wgsl-bindings.js +0 -10
  152. package/dist/graphics/extract-wgsl-bindings.js.map +0 -1
  153. package/dist/graphics/frame.d.ts +0 -22
  154. package/dist/graphics/frame.js +0 -12
  155. package/dist/graphics/frame.js.map +0 -1
  156. package/dist/graphics/get-web-gpu-device-and-context.d.ts +0 -2
  157. package/dist/graphics/get-web-gpu-device-and-context.js +0 -21
  158. package/dist/graphics/get-web-gpu-device-and-context.js.map +0 -1
  159. package/dist/graphics/graphics-context.d.ts +0 -5
  160. package/dist/graphics/graphics-context.js +0 -2
  161. package/dist/graphics/graphics-context.js.map +0 -1
  162. package/dist/graphics/index.d.ts +0 -5
  163. package/dist/graphics/index.js +0 -5
  164. package/dist/graphics/index.js.map +0 -1
  165. package/dist/graphics/to-gpu-buffer.d.ts +0 -2
  166. package/dist/graphics/to-gpu-buffer.js +0 -14
  167. package/dist/graphics/to-gpu-buffer.js.map +0 -1
  168. package/dist/internal/array-buffer-like/grow.d.ts +0 -1
  169. package/dist/internal/array-buffer-like/grow.js +0 -9
  170. package/dist/internal/array-buffer-like/grow.js.map +0 -1
  171. package/dist/lit/elements/service-application.d.ts +0 -9
  172. package/dist/lit/elements/service-application.js +0 -55
  173. package/dist/lit/elements/service-application.js.map +0 -1
  174. package/dist/lit/elements/service-context.d.ts +0 -1
  175. package/dist/lit/elements/service-context.js +0 -24
  176. package/dist/lit/elements/service-context.js.map +0 -1
  177. package/dist/lit/elements/service-element.d.ts +0 -6
  178. package/dist/lit/elements/service-element.js +0 -43
  179. package/dist/lit/elements/service-element.js.map +0 -1
  180. package/dist/math/picking/get-closest-entity-to-line.d.ts +0 -4
  181. package/dist/math/picking/get-closest-entity-to-line.js +0 -30
  182. package/dist/math/picking/get-closest-entity-to-line.js.map +0 -1
  183. package/dist/math/picking/get-closest-entity-to-point.d.ts +0 -4
  184. package/dist/math/picking/get-closest-entity-to-point.js +0 -27
  185. package/dist/math/picking/get-closest-entity-to-point.js.map +0 -1
  186. package/dist/math/picking/get-intersecting-entities.d.ts +0 -12
  187. package/dist/math/picking/get-intersecting-entities.js +0 -15
  188. package/dist/math/picking/get-intersecting-entities.js.map +0 -1
  189. package/dist/math/picking/index.d.ts +0 -5
  190. package/dist/math/picking/index.js +0 -27
  191. package/dist/math/picking/index.js.map +0 -1
  192. package/dist/math/picking/pick-from-tables.d.ts +0 -19
  193. package/dist/math/picking/pick-from-tables.js +0 -63
  194. package/dist/math/picking/pick-from-tables.js.map +0 -1
  195. package/dist/math/picking/pick-result.d.ts +0 -10
  196. package/dist/math/picking/pick-result.js +0 -23
  197. package/dist/math/picking/pick-result.js.map +0 -1
  198. package/dist/old-ecs/privacy/helper-functions.d.ts +0 -43
  199. package/dist/old-ecs/privacy/helper-functions.js +0 -76
  200. package/dist/old-ecs/privacy/helper-functions.js.map +0 -1
  201. package/dist/old-ecs/privacy/helper-functions.test.d.ts +0 -1
  202. package/dist/old-ecs/privacy/helper-functions.test.js +0 -173
  203. package/dist/old-ecs/privacy/helper-functions.test.js.map +0 -1
  204. package/dist/table/compact-table.d.ts +0 -7
  205. package/dist/table/compact-table.js +0 -15
  206. package/dist/table/compact-table.js.map +0 -1
  207. package/dist/table/compact-table.test.d.ts +0 -1
  208. package/dist/table/compact-table.test.js +0 -121
  209. package/dist/table/compact-table.test.js.map +0 -1
@@ -1,113 +0,0 @@
1
- import { topologicalSort } from "../../internal/array/index.js";
2
- import { SystemPhaseSchema } from "./system-phase.js";
3
- export function createWorld(store, database, systems) {
4
- // Cache for topological sort results to avoid re-computing for same system sets
5
- const topologicalSortCache = new Map();
6
- const runSystems = (systemNames) => {
7
- try {
8
- // Check cache first (by array identity)
9
- let sortedSystems = topologicalSortCache.get(systemNames);
10
- if (!sortedSystems) {
11
- // Build dependency graph for system scheduling
12
- const edges = buildSystemEdges(systemNames, systems);
13
- sortedSystems = topologicalSort(systemNames, edges);
14
- // Cache the result
15
- topologicalSortCache.set(systemNames, sortedSystems);
16
- }
17
- // Track if any system is async
18
- const asyncPromises = [];
19
- // Execute systems in dependency order
20
- for (const systemName of sortedSystems) {
21
- const system = systems[systemName];
22
- try {
23
- let result = undefined;
24
- if (system.type === "store") {
25
- result = system.run(store);
26
- }
27
- else if (system.type === "database") {
28
- result = system.run(database);
29
- }
30
- // Check if the result is a Promise
31
- if (result && typeof result === 'object' && 'then' in result) {
32
- // If we find any async system, we need to handle all remaining systems async
33
- asyncPromises.push(result);
34
- // Switch to async mode for remaining systems
35
- return executeRemainingAsync(sortedSystems, systemName, asyncPromises);
36
- }
37
- // If result is not a Promise, continue synchronously
38
- }
39
- catch (error) {
40
- console.error(`System ${String(systemName)} failed:`, error);
41
- return Promise.reject(error);
42
- }
43
- }
44
- // If we reach here, all systems were synchronous
45
- return Promise.resolve();
46
- }
47
- catch (error) {
48
- // Handle errors from topological sort (e.g., circular dependencies)
49
- return Promise.reject(error);
50
- }
51
- };
52
- const runPhases = async (phases) => {
53
- if (phases) {
54
- return runSystems(Object.keys(systems).filter(name => systems[name].phase && phases.includes(systems[name].phase)));
55
- }
56
- for (const phase of SystemPhaseSchema.enum) {
57
- await runPhases([phase]);
58
- }
59
- };
60
- // Helper function to handle async execution once we encounter the first async system
61
- const executeRemainingAsync = async (sortedSystems, currentSystemName, pendingPromises) => {
62
- // Wait for the current async system to complete
63
- await Promise.all(pendingPromises);
64
- // Find the index of current system to continue from next one
65
- const currentIndex = sortedSystems.indexOf(currentSystemName);
66
- // Execute remaining systems asynchronously
67
- for (let i = currentIndex + 1; i < sortedSystems.length; i++) {
68
- const systemName = sortedSystems[i];
69
- const system = systems[systemName];
70
- try {
71
- if (system.type === "store") {
72
- await system.run(store);
73
- }
74
- else if (system.type === "database") {
75
- await system.run(database);
76
- }
77
- }
78
- catch (error) {
79
- console.error(`System ${String(systemName)} failed:`, error);
80
- throw error;
81
- }
82
- }
83
- };
84
- // Build edges for system dependency graph
85
- const buildSystemEdges = (systemNames, systemMap) => {
86
- const edges = [];
87
- systemNames.forEach(name => {
88
- const system = systemMap[name];
89
- const nameStr = String(name);
90
- // Convert 'before' constraints to edges: current → dependency
91
- // (current system must run before the dependency)
92
- system.schedule?.before?.forEach(dep => {
93
- if (systemNames.includes(dep)) {
94
- edges.push([nameStr, String(dep)]);
95
- }
96
- });
97
- // Convert 'after' constraints to edges: dependency → current
98
- // (current system must run after the dependency)
99
- system.schedule?.after?.forEach(dep => {
100
- if (systemNames.includes(dep)) {
101
- edges.push([String(dep), nameStr]);
102
- }
103
- });
104
- });
105
- return edges;
106
- };
107
- return {
108
- ...database,
109
- runPhases,
110
- runSystems,
111
- };
112
- }
113
- //# sourceMappingURL=create-world.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-world.js","sourceRoot":"","sources":["../../../src/ecs/world/create-world.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,499 +0,0 @@
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 { createWorld } from "./create-world.js";
24
- import { createStore } from "../store/create-store.js";
25
- import { createDatabase } from "../database/create-database.js";
26
- function createTestStore() {
27
- return createStore({}, {
28
- result: { type: "string", default: "" },
29
- counter: { default: 0 }
30
- }, {});
31
- }
32
- function createTestDatabase() {
33
- const store = createTestStore();
34
- const database = createDatabase(store, {
35
- appendToResult(t, char) {
36
- t.resources.result += char;
37
- },
38
- incrementCounter(t) {
39
- t.resources.counter += 1;
40
- }
41
- });
42
- return database;
43
- }
44
- function createTestWorld() {
45
- const store = createTestStore();
46
- const database = createDatabase(store, {
47
- appendToResult(t, char) {
48
- t.resources.result += char;
49
- },
50
- incrementCounter(t) {
51
- t.resources.counter += 1;
52
- }
53
- });
54
- return { store, database };
55
- }
56
- describe("createWorld", () => {
57
- describe("system execution order", () => {
58
- it("should execute systems with dependency constraints in correct order", async () => {
59
- const { store, database } = createTestWorld();
60
- // Deliberately define systems in WRONG order to test dependency resolution
61
- const world = createWorld(store, database, {
62
- third: {
63
- type: "store",
64
- run: (s) => { s.resources.result += "C"; }
65
- },
66
- first: {
67
- type: "store",
68
- run: (s) => { s.resources.result += "A"; },
69
- schedule: { before: ["second"] }
70
- },
71
- second: {
72
- type: "store",
73
- run: (s) => { s.resources.result += "B"; },
74
- schedule: { after: ["first"], before: ["third"] }
75
- }
76
- });
77
- // Pass systems in wrong order - dependency resolution should fix it
78
- await world.runSystems(["third", "second", "first"]);
79
- expect(store.resources.result).toBe("ABC");
80
- });
81
- it("should execute systems with after constraints in correct order", async () => {
82
- const { store, database } = createTestWorld();
83
- // Define systems in reverse dependency order to test resolution
84
- const world = createWorld(store, database, {
85
- render: {
86
- type: "store",
87
- run: (s) => { s.resources.result += "R"; },
88
- schedule: { after: ["physics"] }
89
- },
90
- physics: {
91
- type: "store",
92
- run: (s) => { s.resources.result += "P"; },
93
- schedule: { after: ["input"] }
94
- },
95
- input: {
96
- type: "store",
97
- run: (s) => { s.resources.result += "I"; }
98
- }
99
- });
100
- // Pass systems in completely wrong order - should still execute I→P→R
101
- await world.runSystems(["render", "physics", "input"]);
102
- expect(store.resources.result).toBe("IPR");
103
- });
104
- it("should handle complex dependency graph", async () => {
105
- const { store, database } = createTestWorld();
106
- // Define systems in completely reverse order from dependencies
107
- const world = createWorld(store, database, {
108
- d: {
109
- type: "store",
110
- run: (s) => { s.resources.result += "D"; }
111
- },
112
- b: {
113
- type: "store",
114
- run: (s) => { s.resources.result += "B"; },
115
- schedule: { before: ["d"] }
116
- },
117
- c: {
118
- type: "store",
119
- run: (s) => { s.resources.result += "C"; },
120
- schedule: { before: ["d"] }
121
- },
122
- a: {
123
- type: "store",
124
- run: (s) => { s.resources.result += "A"; },
125
- schedule: { before: ["b", "c"] }
126
- }
127
- });
128
- // Pass in reverse dependency order - topological sort must fix it
129
- await world.runSystems(["d", "c", "b", "a"]);
130
- // A must come first, then B and C in any order, then D
131
- expect(store.resources.result).toMatch(/^A[BC][BC]D$/);
132
- });
133
- });
134
- describe("system types", () => {
135
- it("should execute store systems directly on store", async () => {
136
- const { store, database } = createTestWorld();
137
- const world = createWorld(store, database, {
138
- storeSystem: {
139
- type: "store",
140
- run: (s) => { s.resources.result += "STORE"; }
141
- }
142
- });
143
- await world.runSystems(["storeSystem"]);
144
- expect(store.resources.result).toBe("STORE");
145
- });
146
- it("should execute database systems with transactions", async () => {
147
- const { store, database } = createTestWorld();
148
- const world = createWorld(store, database, {
149
- dbSystem: {
150
- type: "database",
151
- run: (db) => { db.transactions.appendToResult("DB"); }
152
- }
153
- });
154
- await world.runSystems(["dbSystem"]);
155
- expect(store.resources.result).toBe("DB");
156
- });
157
- it("should handle mixed store and database systems", async () => {
158
- const { store, database } = createTestWorld();
159
- // Define database system first, but it should run after store system
160
- const world = createWorld(store, database, {
161
- dbSecond: {
162
- type: "database",
163
- run: (db) => { db.transactions.appendToResult("D"); }
164
- },
165
- storeFirst: {
166
- type: "store",
167
- run: (s) => { s.resources.result += "S"; },
168
- schedule: { before: ["dbSecond"] }
169
- }
170
- });
171
- // Pass systems in wrong order - dependency should fix it
172
- await world.runSystems(["dbSecond", "storeFirst"]);
173
- expect(store.resources.result).toBe("SD");
174
- });
175
- });
176
- describe("synchronous vs asynchronous execution", () => {
177
- it("should handle all synchronous systems", async () => {
178
- const { store, database } = createTestWorld();
179
- // Define second system first to test dependency resolution
180
- const world = createWorld(store, database, {
181
- sync2: {
182
- type: "store",
183
- run: (s) => {
184
- s.resources.result += "2";
185
- }
186
- },
187
- sync1: {
188
- type: "store",
189
- run: (s) => {
190
- s.resources.result += "1";
191
- },
192
- schedule: { before: ["sync2"] }
193
- }
194
- });
195
- // Pass in reverse order - dependency resolution should fix it
196
- await world.runSystems(["sync2", "sync1"]);
197
- // Result "12" proves sync1 ran before sync2
198
- expect(store.resources.result).toBe("12");
199
- });
200
- it("should complete synchronously when all systems are sync", () => {
201
- const { store, database } = createTestWorld();
202
- const world = createWorld(store, database, {
203
- syncA: {
204
- type: "store",
205
- run: (s) => {
206
- s.resources.result += "A";
207
- }
208
- },
209
- syncB: {
210
- type: "store",
211
- run: (s) => {
212
- s.resources.result += "B";
213
- }
214
- }
215
- });
216
- // Time the execution to ensure it's immediate for sync systems
217
- const startTime = performance.now();
218
- world.runSystems(["syncA", "syncB"]);
219
- const endTime = performance.now();
220
- expect(store.resources.result).toBe("AB");
221
- // Sync systems should complete in < 1ms (no waiting for timers/promises)
222
- expect(endTime - startTime).toBeLessThan(1);
223
- });
224
- it("should properly await asynchronous systems", async () => {
225
- const { store, database } = createTestWorld();
226
- // Define second async system first to test dependency resolution
227
- const world = createWorld(store, database, {
228
- async2: {
229
- type: "store",
230
- run: async (s) => {
231
- await new Promise(resolve => setTimeout(resolve, 5));
232
- s.resources.result += "B";
233
- }
234
- },
235
- async1: {
236
- type: "store",
237
- run: async (s) => {
238
- await new Promise(resolve => setTimeout(resolve, 10));
239
- s.resources.result += "A";
240
- },
241
- schedule: { before: ["async2"] }
242
- }
243
- });
244
- // Pass in wrong order - should still execute A then B due to dependencies
245
- await world.runSystems(["async2", "async1"]);
246
- // Result "AB" proves async1 awaited before async2 started
247
- expect(store.resources.result).toBe("AB");
248
- });
249
- it("should fully await async systems completion", async () => {
250
- const { store, database } = createTestWorld();
251
- const timestamps = [];
252
- const world = createWorld(store, database, {
253
- delayedSystem: {
254
- type: "store",
255
- run: async (s) => {
256
- timestamps.push(performance.now());
257
- await new Promise(resolve => setTimeout(resolve, 20));
258
- timestamps.push(performance.now());
259
- s.resources.result += "DONE";
260
- }
261
- }
262
- });
263
- const startTime = performance.now();
264
- await world.runSystems(["delayedSystem"]);
265
- const endTime = performance.now();
266
- // Verify the system actually completed its async work
267
- expect(store.resources.result).toBe("DONE");
268
- expect(timestamps).toHaveLength(2);
269
- // Verify we waited for the full async operation (at least 20ms)
270
- expect(endTime - startTime).toBeGreaterThanOrEqual(19);
271
- // Verify the async operation completed before runSystems returned
272
- expect(timestamps[1]).toBeLessThanOrEqual(endTime);
273
- });
274
- it("should demonstrate sync systems complete immediately without Promise overhead", () => {
275
- const { store, database } = createTestWorld();
276
- let syncExecuted = false;
277
- const world = createWorld(store, database, {
278
- syncSystem: {
279
- type: "store",
280
- run: (s) => {
281
- syncExecuted = true;
282
- s.resources.result += "SYNC";
283
- // Return a non-Promise value to test sync behavior
284
- return undefined;
285
- }
286
- }
287
- });
288
- // Call runSystems but don't await it initially
289
- const promise = world.runSystems(["syncSystem"]);
290
- // For truly sync systems, the execution should have completed synchronously
291
- expect(syncExecuted).toBe(true);
292
- expect(store.resources.result).toBe("SYNC");
293
- // The promise should still be returned for consistent API
294
- expect(promise).toBeInstanceOf(Promise);
295
- });
296
- it("should demonstrate that async systems don't complete until awaited", async () => {
297
- const { store, database } = createTestWorld();
298
- let asyncStarted = false;
299
- let asyncCompleted = false;
300
- const world = createWorld(store, database, {
301
- asyncSystem: {
302
- type: "store",
303
- run: async (s) => {
304
- asyncStarted = true;
305
- await new Promise(resolve => setTimeout(resolve, 10));
306
- asyncCompleted = true;
307
- s.resources.result += "ASYNC";
308
- }
309
- }
310
- });
311
- // Start the async operation but don't await it
312
- const promise = world.runSystems(["asyncSystem"]);
313
- // The async system might have started but shouldn't be completed
314
- expect(asyncStarted).toBe(true);
315
- expect(asyncCompleted).toBe(false);
316
- expect(store.resources.result).toBe(""); // Should be empty until completion
317
- // Now await the promise
318
- await promise;
319
- // Now it should be completed
320
- expect(asyncCompleted).toBe(true);
321
- expect(store.resources.result).toBe("ASYNC");
322
- });
323
- it("should prove sync systems complete before Promise resolves but async systems don't", async () => {
324
- const { store, database } = createTestWorld();
325
- const executionLog = [];
326
- const world = createWorld(store, database, {
327
- syncFirst: {
328
- type: "store",
329
- run: (s) => {
330
- executionLog.push("sync-start");
331
- s.resources.result += "S";
332
- executionLog.push("sync-end");
333
- // Intentionally not returning a Promise
334
- },
335
- schedule: { before: ["asyncSecond"] }
336
- },
337
- asyncSecond: {
338
- type: "store",
339
- run: async (s) => {
340
- executionLog.push("async-start");
341
- await new Promise(resolve => {
342
- setTimeout(() => {
343
- executionLog.push("timeout-fired");
344
- resolve(undefined);
345
- }, 15);
346
- });
347
- executionLog.push("async-end");
348
- s.resources.result += "A";
349
- }
350
- }
351
- });
352
- const startTime = performance.now();
353
- // This should wait for BOTH systems to complete
354
- await world.runSystems(["syncFirst", "asyncSecond"]);
355
- const endTime = performance.now();
356
- // Verify both systems completed
357
- expect(store.resources.result).toBe("SA");
358
- // Verify execution order in log
359
- expect(executionLog).toEqual([
360
- "sync-start",
361
- "sync-end",
362
- "async-start",
363
- "timeout-fired",
364
- "async-end"
365
- ]);
366
- // Verify we waited for the async operation (at least 15ms)
367
- expect(endTime - startTime).toBeGreaterThanOrEqual(14);
368
- });
369
- it("should handle mixed sync and async systems", async () => {
370
- const { store, database } = createTestWorld();
371
- // Define systems in completely reverse dependency order
372
- const world = createWorld(store, database, {
373
- syncAfter: {
374
- type: "store",
375
- run: (s) => {
376
- s.resources.result += "E";
377
- }
378
- },
379
- async: {
380
- type: "database",
381
- run: async (db) => {
382
- await new Promise(resolve => setTimeout(resolve, 10));
383
- db.transactions.appendToResult("A");
384
- },
385
- schedule: { before: ["syncAfter"] }
386
- },
387
- sync: {
388
- type: "store",
389
- run: (s) => {
390
- s.resources.result += "S";
391
- },
392
- schedule: { before: ["async"] }
393
- }
394
- });
395
- // Pass in completely wrong order - dependency resolution must fix it
396
- await world.runSystems(["syncAfter", "async", "sync"]);
397
- // Result "SAE" proves execution order: sync → async → syncAfter
398
- expect(store.resources.result).toBe("SAE");
399
- });
400
- });
401
- describe("caching behavior", () => {
402
- it("should cache topological sort results for repeated calls", async () => {
403
- const { store, database } = createTestWorld();
404
- // We can't directly mock the internal topological sort, so we'll test through behavior
405
- const world = createWorld(store, database, {
406
- a: {
407
- type: "store",
408
- run: (s) => { s.resources.counter += 1; }
409
- }
410
- });
411
- const systemArray = ["a"];
412
- // First call - should compute and cache
413
- await world.runSystems(systemArray);
414
- expect(store.resources.counter).toBe(1);
415
- // Second call with same array reference - should use cache
416
- await world.runSystems(systemArray);
417
- expect(store.resources.counter).toBe(2);
418
- // Different array with same contents - should compute again
419
- await world.runSystems(["a"]);
420
- expect(store.resources.counter).toBe(3);
421
- });
422
- it("should cache empty array (all systems) separately", async () => {
423
- const { store, database } = createTestWorld();
424
- const world = createWorld(store, database, {
425
- system1: {
426
- type: "store",
427
- run: (s) => { s.resources.result += "1"; }
428
- },
429
- system2: {
430
- type: "store",
431
- run: (s) => { s.resources.result += "2"; }
432
- }
433
- });
434
- const emptyArray = [];
435
- // First call with empty array - should run all systems
436
- await world.runSystems(emptyArray);
437
- const firstResult = store.resources.result;
438
- expect(firstResult.length).toBe(2);
439
- expect(firstResult).toMatch(/[12][12]/);
440
- // Reset result
441
- store.resources.result = "";
442
- // Second call with same empty array reference - should use cache
443
- await world.runSystems(emptyArray);
444
- expect(store.resources.result).toBe(firstResult);
445
- });
446
- });
447
- describe("error handling", () => {
448
- it("should throw error and stop execution when system fails", async () => {
449
- const { store, database } = createTestWorld();
450
- const world = createWorld(store, database, {
451
- before: {
452
- type: "store",
453
- run: (s) => { s.resources.result += "B"; },
454
- schedule: { before: ["failing"] }
455
- },
456
- failing: {
457
- type: "store",
458
- run: () => { throw new Error("System failed"); },
459
- schedule: { before: ["after"] }
460
- },
461
- after: {
462
- type: "store",
463
- run: (s) => { s.resources.result += "A"; }
464
- }
465
- });
466
- await expect(world.runSystems(["before", "failing", "after"]))
467
- .rejects.toThrow("System failed");
468
- // Only the "before" system should have executed
469
- expect(store.resources.result).toBe("B");
470
- });
471
- });
472
- describe("dependency validation", () => {
473
- it("should detect circular dependencies", async () => {
474
- const { store, database } = createTestWorld();
475
- // Define systems in random order to ensure circular detection works regardless
476
- const world = createWorld(store, database, {
477
- c: {
478
- type: "store",
479
- run: (s) => { s.resources.result += "C"; },
480
- schedule: { before: ["a"] } // Creates circular dependency: c→a, a→b, b→c
481
- },
482
- a: {
483
- type: "store",
484
- run: (s) => { s.resources.result += "A"; },
485
- schedule: { before: ["b"] }
486
- },
487
- b: {
488
- type: "store",
489
- run: (s) => { s.resources.result += "B"; },
490
- schedule: { before: ["c"] }
491
- }
492
- });
493
- // Order shouldn't matter - circular dependency should always be detected
494
- await expect(world.runSystems(["c", "a", "b"]))
495
- .rejects.toThrow("Circular dependency detected involving node:");
496
- });
497
- });
498
- });
499
- //# sourceMappingURL=create-world.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-world.test.js","sourceRoot":"","sources":["../../../src/ecs/world/create-world.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export * from "./world.js";
2
- export * from "./system.js";
3
- export * from "./create-world.js";
4
- export * from "./world-schema/index.js";
5
- export * from "./system-phase.js";