@adobe/data 0.9.5 → 0.9.6

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 (240) hide show
  1. package/ecs/database/create-plugin-cryos-pattern.test.d.ts +3 -0
  2. package/ecs/database/create-plugin-cryos-pattern.test.js +83 -0
  3. package/ecs/database/create-plugin-cryos-pattern.test.js.map +1 -0
  4. package/ecs/database/create-plugin-graphics.test.d.ts +93 -0
  5. package/ecs/database/create-plugin-graphics.test.js +135 -0
  6. package/ecs/database/create-plugin-graphics.test.js.map +1 -0
  7. package/ecs/database/create-plugin-type.type-test.js +563 -0
  8. package/ecs/database/create-plugin-type.type-test.js.map +1 -0
  9. package/ecs/database/create-plugin-type.type.test.js +563 -0
  10. package/ecs/database/create-plugin-type.type.test.js.map +1 -0
  11. package/ecs/database/database.d.ts +6 -1
  12. package/ecs/database/database.js.map +1 -1
  13. package/ecs/database/experimental-action-types.js +275 -0
  14. package/ecs/database/experimental-action-types.js.map +1 -0
  15. package/ecs/database/from-plugin.type-test.js +180 -0
  16. package/ecs/database/from-plugin.type-test.js.map +1 -0
  17. package/ecs/database/plugin-types.js +5 -0
  18. package/ecs/database/plugin-types.js.map +1 -0
  19. package/ecs/database/type-investigation.test.js +54 -0
  20. package/ecs/database/type-investigation.test.js.map +1 -0
  21. package/ecs/store/core/create-core.test.js +21 -0
  22. package/ecs/store/core/create-core.test.js.map +1 -1
  23. package/package.json +1 -1
  24. package/tsconfig.tsbuildinfo +1 -1
  25. package/typed-buffer/create-array-buffer.js +10 -0
  26. package/typed-buffer/create-array-buffer.js.map +1 -1
  27. package/typed-buffer/create-array-buffer.test.js +50 -0
  28. package/typed-buffer/create-array-buffer.test.js.map +1 -1
  29. package/typed-buffer/create-const-buffer.js +3 -0
  30. package/typed-buffer/create-const-buffer.js.map +1 -1
  31. package/typed-buffer/create-const-buffer.test.js +24 -0
  32. package/typed-buffer/create-const-buffer.test.js.map +1 -1
  33. package/typed-buffer/create-number-buffer.js +4 -0
  34. package/typed-buffer/create-number-buffer.js.map +1 -1
  35. package/typed-buffer/create-number-buffer.test.js +38 -0
  36. package/typed-buffer/create-number-buffer.test.js.map +1 -1
  37. package/typed-buffer/create-struct-buffer.js +11 -0
  38. package/typed-buffer/create-struct-buffer.js.map +1 -1
  39. package/typed-buffer/create-struct-buffer.test.js +60 -0
  40. package/typed-buffer/create-struct-buffer.test.js.map +1 -1
  41. package/typed-buffer/typed-buffer.d.ts +2 -0
  42. package/typed-buffer/typed-buffer.js.map +1 -1
  43. package/assembly/package.json +0 -1
  44. package/blob/package.json +0 -1
  45. package/cache/package.json +0 -1
  46. package/debug-type-test.js +0 -12
  47. package/debug-type-test.js.map +0 -1
  48. package/ecs/database/archetype-type-safety-test.d.ts +0 -21
  49. package/ecs/database/archetype-type-safety-test.js +0 -36
  50. package/ecs/database/archetype-type-safety-test.js.map +0 -1
  51. package/ecs/database/create-database-schema-test.js +0 -150
  52. package/ecs/database/create-database-schema-test.js.map +0 -1
  53. package/ecs/database/create-plugin-v2.d.ts +0 -79
  54. package/ecs/database/create-plugin-v2.js +0 -68
  55. package/ecs/database/create-plugin-v2.js.map +0 -1
  56. package/ecs/database/create-plugin-v2.test.js +0 -362
  57. package/ecs/database/create-plugin-v2.test.js.map +0 -1
  58. package/ecs/database/create-plugin.OLD.d.ts +0 -138
  59. package/ecs/database/create-plugin.OLD.js +0 -59
  60. package/ecs/database/create-plugin.OLD.js.map +0 -1
  61. package/ecs/database/database-with-systems.test.js +0 -292
  62. package/ecs/database/database-with-systems.test.js.map +0 -1
  63. package/ecs/database/database.plugin.create.test.OLD.js +0 -601
  64. package/ecs/database/database.plugin.create.test.OLD.js.map +0 -1
  65. package/ecs/database/database.plugin.create.test.js +0 -321
  66. package/ecs/database/database.plugin.create.test.js.map +0 -1
  67. package/ecs/database/database.plugin.test.d.ts +0 -1
  68. package/ecs/database/database.plugin.test.js +0 -90
  69. package/ecs/database/database.plugin.test.js.map +0 -1
  70. package/ecs/database/database.test copy.d.ts +0 -1
  71. package/ecs/database/database.test copy.js +0 -199
  72. package/ecs/database/database.test copy.js.map +0 -1
  73. package/ecs/database/multi-param-inference-poc.test.d.ts +0 -1
  74. package/ecs/database/multi-param-inference-poc.test.js +0 -96
  75. package/ecs/database/multi-param-inference-poc.test.js.map +0 -1
  76. package/ecs/database/old-plugin-create-with-dependencies-array.d.ts +0 -61
  77. package/ecs/database/old-plugin-create-with-dependencies-array.js +0 -76
  78. package/ecs/database/old-plugin-create-with-dependencies-array.js.map +0 -1
  79. package/ecs/database/overload-inference-poc.test.d.ts +0 -1
  80. package/ecs/database/overload-inference-poc.test.js +0 -109
  81. package/ecs/database/overload-inference-poc.test.js.map +0 -1
  82. package/ecs/database/schedule-type-check-demo.d.ts +0 -10
  83. package/ecs/database/schedule-type-check-demo.js +0 -71
  84. package/ecs/database/schedule-type-check-demo.js.map +0 -1
  85. package/ecs/database/test-archetype-validation.d.ts +0 -9
  86. package/ecs/database/test-archetype-validation.js +0 -14
  87. package/ecs/database/test-archetype-validation.js.map +0 -1
  88. package/ecs/database/test-exactkeys.d.ts +0 -1
  89. package/ecs/database/test-exactkeys.js +0 -17
  90. package/ecs/database/test-exactkeys.js.map +0 -1
  91. package/ecs/database/transactional-store/coalesce-transactions.test.js +0 -433
  92. package/ecs/database/transactional-store/coalesce-transactions.test.js.map +0 -1
  93. package/ecs/database/type-inference-demo.d.ts +0 -75
  94. package/ecs/database/type-inference-demo.js +0 -73
  95. package/ecs/database/type-inference-demo.js.map +0 -1
  96. package/ecs/database/type-inference-poc.test.d.ts +0 -1
  97. package/ecs/database/type-inference-poc.test.js +0 -73
  98. package/ecs/database/type-inference-poc.test.js.map +0 -1
  99. package/ecs/package.json +0 -1
  100. package/ecs/plugins/scheduler/create-scheduler-plugin.d.ts +0 -8
  101. package/ecs/plugins/scheduler/create-scheduler-plugin.js +0 -54
  102. package/ecs/plugins/scheduler/create-scheduler-plugin.js.map +0 -1
  103. package/ecs/plugins/scheduler/create-scheduler-plugin.test.d.ts +0 -1
  104. package/ecs/plugins/scheduler/create-scheduler-plugin.test.js +0 -198
  105. package/ecs/plugins/scheduler/create-scheduler-plugin.test.js.map +0 -1
  106. package/ecs/plugins/scheduler/type-inference-test.d.ts +0 -1
  107. package/ecs/plugins/scheduler/type-inference-test.js +0 -2
  108. package/ecs/plugins/scheduler/type-inference-test.js.map +0 -1
  109. package/ecs/store/entity-functions.d.ts +0 -7
  110. package/ecs/store/entity-functions.js +0 -2
  111. package/ecs/store/entity-functions.js.map +0 -1
  112. package/ecs/store/functions.d.ts +0 -2
  113. package/ecs/store/functions.js +0 -2
  114. package/ecs/store/functions.js.map +0 -1
  115. package/ecs/system/system-declaration.d.ts +0 -7
  116. package/ecs/system/system-declaration.js +0 -23
  117. package/ecs/system/system-declaration.js.map +0 -1
  118. package/ecs/system/system-declarations.d.ts +0 -4
  119. package/ecs/system/system-declarations.js +0 -23
  120. package/ecs/system/system-declarations.js.map +0 -1
  121. package/ecs/system/system-factory/public/create copy.d.ts +0 -12
  122. package/ecs/system/system-factory/public/create copy.js +0 -8
  123. package/ecs/system/system-factory/public/create copy.js.map +0 -1
  124. package/ecs/system/system-factory/public/create.d.ts +0 -12
  125. package/ecs/system/system-factory/public/create.js +0 -8
  126. package/ecs/system/system-factory/public/create.js.map +0 -1
  127. package/ecs/system/system-factory/public/create.test.d.ts +0 -1
  128. package/ecs/system/system-factory/public/create.test.js +0 -42
  129. package/ecs/system/system-factory/public/create.test.js.map +0 -1
  130. package/ecs/system/system-factory/public/index.d.ts +0 -1
  131. package/ecs/system/system-factory/public/index.js +0 -2
  132. package/ecs/system/system-factory/public/index.js.map +0 -1
  133. package/ecs/system/system-factory/system-factory.d.ts +0 -17
  134. package/ecs/system/system-factory/system-factory.js +0 -23
  135. package/ecs/system/system-factory/system-factory.js.map +0 -1
  136. package/ecs/system/system-factory.d.ts +0 -9
  137. package/ecs/system/system-factory.js +0 -23
  138. package/ecs/system/system-factory.js.map +0 -1
  139. package/ecs/system/system-interface.d.ts +0 -5
  140. package/ecs/system/system-interface.js +0 -2
  141. package/ecs/system/system-interface.js.map +0 -1
  142. package/ecs/system/system.d.ts +0 -4
  143. package/ecs/system/system.js +0 -23
  144. package/ecs/system/system.js.map +0 -1
  145. package/ecs/system/systems-type.d.ts +0 -2
  146. package/ecs/system/systems-type.js +0 -2
  147. package/ecs/system/systems-type.js.map +0 -1
  148. package/ecs/system/systems.d.ts +0 -2
  149. package/ecs/system/systems.js +0 -23
  150. package/ecs/system/systems.js.map +0 -1
  151. package/ecs/system/world-schema/public/create.d.ts +0 -12
  152. package/ecs/system/world-schema/public/create.js +0 -8
  153. package/ecs/system/world-schema/public/create.js.map +0 -1
  154. package/ecs/system/world-schema/public/create.test.d.ts +0 -1
  155. package/ecs/system/world-schema/public/create.test.js +0 -42
  156. package/ecs/system/world-schema/public/create.test.js.map +0 -1
  157. package/ecs/system/world-schema/public/index.d.ts +0 -1
  158. package/ecs/system/world-schema/public/index.js +0 -2
  159. package/ecs/system/world-schema/public/index.js.map +0 -1
  160. package/ecs/system/world-schema/system-factory.d.ts +0 -17
  161. package/ecs/system/world-schema/system-factory.js +0 -23
  162. package/ecs/system/world-schema/system-factory.js.map +0 -1
  163. package/ecs/world/calculate-system-order.d.ts +0 -18
  164. package/ecs/world/calculate-system-order.js +0 -113
  165. package/ecs/world/calculate-system-order.js.map +0 -1
  166. package/ecs/world/calculate-system-order.test.d.ts +0 -1
  167. package/ecs/world/calculate-system-order.test.js +0 -168
  168. package/ecs/world/calculate-system-order.test.js.map +0 -1
  169. package/ecs/world/create-world-schema-test.d.ts +0 -1
  170. package/ecs/world/create-world-schema-test.js +0 -294
  171. package/ecs/world/create-world-schema-test.js.map +0 -1
  172. package/ecs/world/create-world-type-test.d.ts +0 -1
  173. package/ecs/world/create-world-type-test.js +0 -129
  174. package/ecs/world/create-world-type-test.js.map +0 -1
  175. package/ecs/world/create-world.d.ts +0 -19
  176. package/ecs/world/create-world.js +0 -80
  177. package/ecs/world/create-world.js.map +0 -1
  178. package/ecs/world/create-world.test.d.ts +0 -1
  179. package/ecs/world/create-world.test.js +0 -292
  180. package/ecs/world/create-world.test.js.map +0 -1
  181. package/ecs/world/public/world-schema/public/create.d.ts +0 -12
  182. package/ecs/world/public/world-schema/public/create.js +0 -8
  183. package/ecs/world/public/world-schema/public/create.js.map +0 -1
  184. package/ecs/world/public/world-schema/public/create.test.d.ts +0 -1
  185. package/ecs/world/public/world-schema/public/create.test.js +0 -42
  186. package/ecs/world/public/world-schema/public/create.test.js.map +0 -1
  187. package/ecs/world/public/world-schema/public/index.d.ts +0 -1
  188. package/ecs/world/public/world-schema/public/index.js +0 -2
  189. package/ecs/world/public/world-schema/public/index.js.map +0 -1
  190. package/ecs/world/public/world-schema/world-schema.d.ts +0 -17
  191. package/ecs/world/public/world-schema/world-schema.js +0 -23
  192. package/ecs/world/public/world-schema/world-schema.js.map +0 -1
  193. package/ecs/world/system-declaration.d.ts +0 -1
  194. package/ecs/world/system-declaration.js +0 -23
  195. package/ecs/world/system-declaration.js.map +0 -1
  196. package/ecs/world/system-schedule-typing-test.d.ts +0 -1
  197. package/ecs/world/system-schedule-typing-test.js +0 -83
  198. package/ecs/world/system-schedule-typing-test.js.map +0 -1
  199. package/ecs/world/world-schema/public/create.d.ts +0 -12
  200. package/ecs/world/world-schema/public/create.js +0 -10
  201. package/ecs/world/world-schema/public/create.js.map +0 -1
  202. package/ecs/world/world-schema/public/create.test.d.ts +0 -1
  203. package/ecs/world/world-schema/public/create.test.js +0 -41
  204. package/ecs/world/world-schema/public/create.test.js.map +0 -1
  205. package/ecs/world/world-schema/public/index.d.ts +0 -1
  206. package/ecs/world/world-schema/public/index.js +0 -2
  207. package/ecs/world/world-schema/public/index.js.map +0 -1
  208. package/ecs/world/world-schema/system-factory.d.ts +0 -17
  209. package/ecs/world/world-schema/system-factory.js +0 -23
  210. package/ecs/world/world-schema/system-factory.js.map +0 -1
  211. package/ecs/world/world-schema/world-schema.d.ts +0 -19
  212. package/ecs/world/world-schema/world-schema.js +0 -23
  213. package/ecs/world/world-schema/world-schema.js.map +0 -1
  214. package/ecs/world/world.d.ts +0 -86
  215. package/ecs/world/world.js +0 -81
  216. package/ecs/world/world.js.map +0 -1
  217. package/ecs/world/world.test.d.ts +0 -1
  218. package/ecs/world/world.test.js +0 -176
  219. package/ecs/world/world.test.js.map +0 -1
  220. package/functions/package.json +0 -1
  221. package/lit/elements/application-element copy.d.ts +0 -9
  222. package/lit/elements/application-element copy.js +0 -62
  223. package/lit/elements/application-element copy.js.map +0 -1
  224. package/lit/package.json +0 -1
  225. package/math/package.json +0 -1
  226. package/observe/package.json +0 -1
  227. package/old-ecs/package.json +0 -1
  228. package/perftest/package.json +0 -1
  229. package/samples/package.json +0 -1
  230. package/schema/package.json +0 -1
  231. package/service/package.json +0 -1
  232. package/table/package.json +0 -1
  233. package/typed-buffer/package.json +0 -1
  234. package/types/package.json +0 -1
  235. /package/{debug-type-test.d.ts → ecs/database/create-plugin-type.type-test.d.ts} +0 -0
  236. /package/ecs/database/{create-database-schema-test.d.ts → create-plugin-type.type.test.d.ts} +0 -0
  237. /package/ecs/database/{create-plugin-v2.test.d.ts → experimental-action-types.d.ts} +0 -0
  238. /package/ecs/database/{database-with-systems.test.d.ts → from-plugin.type-test.d.ts} +0 -0
  239. /package/ecs/database/{database.plugin.create.test.OLD.d.ts → plugin-types.d.ts} +0 -0
  240. /package/ecs/database/{database.plugin.create.test.d.ts → type-investigation.test.d.ts} +0 -0
@@ -1,294 +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 { World } from "./world.js";
23
- const worldSchema = World.Schema.create({
24
- components: {
25
- velocity: { type: "number" },
26
- particle: { type: "boolean" },
27
- },
28
- resources: {
29
- mousePosition: { type: "number", default: 0 },
30
- fooPosition: { type: "number", default: 0 },
31
- },
32
- archetypes: {
33
- Particle: ["particle"],
34
- DynamicParticle: ["particle", "velocity"],
35
- },
36
- systems: {
37
- renderSystem: {
38
- create: (world) => () => { }
39
- },
40
- updateSystem: {
41
- create: (world) => () => { }
42
- }
43
- }
44
- });
45
- // Test world schema dependencies and merging
46
- const aSchema = World.Schema.create({
47
- components: {
48
- a: { type: "number" },
49
- b: { type: "string" }
50
- },
51
- resources: {
52
- c: { default: "string" }
53
- },
54
- archetypes: {
55
- one: ["a", "b"]
56
- },
57
- systems: {
58
- systemA: {
59
- create: (world) => () => { }
60
- }
61
- }
62
- });
63
- const bSchema = World.Schema.create({
64
- components: {
65
- x: { type: "number" },
66
- y: { type: "string" }
67
- },
68
- resources: {
69
- z: { default: "string" }
70
- },
71
- archetypes: {
72
- two: ["x", "y"]
73
- },
74
- systems: {
75
- systemB: {
76
- create: (world) => () => { }
77
- }
78
- }
79
- });
80
- const cSchema = World.Schema.create({
81
- components: {
82
- m: { type: "number" },
83
- n: { type: "string" }
84
- },
85
- resources: {
86
- c: { default: "string" }
87
- },
88
- archetypes: {
89
- three: ["m", "n", "x"]
90
- },
91
- systems: {
92
- systemC: {
93
- create: (world) => () => { }
94
- }
95
- }
96
- }, [aSchema, bSchema]);
97
- // Note: Systems also includes the 'create' property from the schema
98
- // type CheckMergedSystems = Assert<Equal<keyof MergedSchemaSystems, "systemA" | "systemB" | "systemC">>;
99
- // Runtime checks: verify the merged schema contains all properties
100
- const hasAllComponents = "a" in cSchema.components &&
101
- "b" in cSchema.components &&
102
- "x" in cSchema.components &&
103
- "y" in cSchema.components &&
104
- "m" in cSchema.components &&
105
- "n" in cSchema.components;
106
- const hasAllResources = "c" in cSchema.resources &&
107
- "z" in cSchema.resources;
108
- const hasAllArchetypes = "one" in cSchema.archetypes &&
109
- "two" in cSchema.archetypes &&
110
- "three" in cSchema.archetypes;
111
- const hasAllSystems = "systemA" in cSchema.systems &&
112
- "systemB" in cSchema.systems &&
113
- "systemC" in cSchema.systems;
114
- if (!hasAllComponents) {
115
- throw new Error("World schema merging failed: missing components");
116
- }
117
- if (!hasAllResources) {
118
- throw new Error("World schema merging failed: missing resources");
119
- }
120
- if (!hasAllArchetypes) {
121
- throw new Error("World schema merging failed: missing archetypes");
122
- }
123
- if (!hasAllSystems) {
124
- throw new Error("World schema merging failed: missing systems");
125
- }
126
- // Test system declarations are present
127
- const hasAllSystemDeclarations = "systemA" in cSchema.systems &&
128
- "systemB" in cSchema.systems &&
129
- "systemC" in cSchema.systems &&
130
- typeof cSchema.systems.systemA.create === "function" &&
131
- typeof cSchema.systems.systemB.create === "function" &&
132
- typeof cSchema.systems.systemC.create === "function";
133
- if (!hasAllSystemDeclarations) {
134
- throw new Error("World schema merging failed: missing system declarations");
135
- }
136
- // Test that individual system creates work
137
- const mockDb = {};
138
- const systemA = cSchema.systems.systemA.create(mockDb);
139
- const systemB = cSchema.systems.systemB.create(mockDb);
140
- const systemC = cSchema.systems.systemC.create(mockDb);
141
- if (typeof systemA !== "function" || typeof systemB !== "function" || typeof systemC !== "function") {
142
- throw new Error("System create functions failed to return system functions");
143
- }
144
- // Test with more complex dependencies
145
- const baseSchemaWithSystems = World.Schema.create({
146
- components: {
147
- position: { type: "number" },
148
- health: { type: "number" }
149
- },
150
- resources: {
151
- time: { default: 0 }
152
- },
153
- transactions: {
154
- updateHealth: () => { }
155
- },
156
- systems: {
157
- healthSystem: {
158
- create: (world) => () => { }
159
- }
160
- }
161
- });
162
- const extendedSchemaWithSystems = World.Schema.create({
163
- components: {
164
- velocity: { type: "number" }
165
- },
166
- resources: {
167
- delta: { default: 0 }
168
- },
169
- archetypes: {
170
- Moving: ["position", "velocity"]
171
- },
172
- transactions: {
173
- move: () => { }
174
- },
175
- systems: {
176
- movementSystem: {
177
- create: (world) => () => { }
178
- },
179
- collisionSystem: {
180
- create: (world) => () => { }
181
- }
182
- }
183
- }, [baseSchemaWithSystems]);
184
- // Runtime checks for extended schema
185
- const hasExtendedComponents = "position" in extendedSchemaWithSystems.components &&
186
- "health" in extendedSchemaWithSystems.components &&
187
- "velocity" in extendedSchemaWithSystems.components;
188
- const hasExtendedResources = "time" in extendedSchemaWithSystems.resources &&
189
- "delta" in extendedSchemaWithSystems.resources;
190
- const hasExtendedTransactions = "updateHealth" in extendedSchemaWithSystems.transactions &&
191
- "move" in extendedSchemaWithSystems.transactions;
192
- const hasExtendedSystems = "healthSystem" in extendedSchemaWithSystems.systems &&
193
- "movementSystem" in extendedSchemaWithSystems.systems &&
194
- "collisionSystem" in extendedSchemaWithSystems.systems;
195
- const hasExtendedArchetypes = "Moving" in extendedSchemaWithSystems.archetypes;
196
- if (!hasExtendedComponents) {
197
- throw new Error("Extended world schema merging failed: missing components");
198
- }
199
- if (!hasExtendedResources) {
200
- throw new Error("Extended world schema merging failed: missing resources");
201
- }
202
- if (!hasExtendedTransactions) {
203
- throw new Error("Extended world schema merging failed: missing transactions");
204
- }
205
- if (!hasExtendedSystems) {
206
- throw new Error("Extended world schema merging failed: missing systems");
207
- }
208
- if (!hasExtendedArchetypes) {
209
- throw new Error("Extended world schema merging failed: missing archetypes");
210
- }
211
- // Test system declarations are present in extended schema
212
- const hasAllExtendedSystemDeclarations = "healthSystem" in extendedSchemaWithSystems.systems &&
213
- "movementSystem" in extendedSchemaWithSystems.systems &&
214
- "collisionSystem" in extendedSchemaWithSystems.systems &&
215
- typeof extendedSchemaWithSystems.systems.healthSystem.create === "function" &&
216
- typeof extendedSchemaWithSystems.systems.movementSystem.create === "function" &&
217
- typeof extendedSchemaWithSystems.systems.collisionSystem.create === "function";
218
- if (!hasAllExtendedSystemDeclarations) {
219
- throw new Error("Extended world schema merging failed: missing system declarations");
220
- }
221
- // Test that individual system creates work for extended schema
222
- const healthSystem = extendedSchemaWithSystems.systems.healthSystem.create(mockDb);
223
- const movementSystem = extendedSchemaWithSystems.systems.movementSystem.create(mockDb);
224
- const collisionSystem = extendedSchemaWithSystems.systems.collisionSystem.create(mockDb);
225
- if (typeof healthSystem !== "function" || typeof movementSystem !== "function" || typeof collisionSystem !== "function") {
226
- throw new Error("Extended schema system create functions failed to return system functions");
227
- }
228
- // Test system schedule type constraints
229
- const scheduleTestBaseSchema = World.Schema.create({
230
- components: {
231
- transform: { type: "number" }
232
- },
233
- systems: {
234
- inputSystem: {
235
- create: (world) => () => { }
236
- },
237
- updateSystem: {
238
- create: (world) => () => { },
239
- // Valid: references system in same schema
240
- schedule: {
241
- after: ["inputSystem"]
242
- }
243
- },
244
- physicsSystem: {
245
- create: (world) => () => { },
246
- // Valid: references multiple systems in same schema
247
- schedule: {
248
- after: ["inputSystem", "updateSystem"]
249
- }
250
- },
251
- renderSystem: {
252
- create: (world) => () => { },
253
- // Valid: uses both before and after
254
- schedule: {
255
- after: ["physicsSystem"],
256
- before: ["debugSystem"]
257
- }
258
- },
259
- debugSystem: {
260
- create: (world) => () => { },
261
- // Valid: references system using before
262
- schedule: {
263
- after: []
264
- }
265
- }
266
- }
267
- });
268
- // Test that schedule properties are accessible at runtime
269
- const hasSchedule = scheduleTestBaseSchema.systems.updateSystem.schedule !== undefined;
270
- const afterInput = scheduleTestBaseSchema.systems.updateSystem.schedule?.after?.[0] === "inputSystem";
271
- if (!hasSchedule || !afterInput) {
272
- throw new Error("System schedule runtime properties missing");
273
- }
274
- // Note: Due to TypeScript's incremental type inference during object literal construction,
275
- // invalid system names in schedule clauses cannot be perfectly caught at compile time.
276
- // The type system provides good IDE hints for valid names but doesn't error on invalid ones during construction.
277
- // Runtime validation would be needed for strict enforcement.
278
- const invalidScheduleExample = World.Schema.create({
279
- systems: {
280
- systemA: {
281
- create: (world) => () => { },
282
- },
283
- systemB: {
284
- create: (world) => () => { },
285
- schedule: {
286
- // This would ideally error but TypeScript infers "nonExistentSystem" as a valid name
287
- // @ts-expect-error - Type error: "nonExistentSystem" is not assignable to "systemA"
288
- after: ["nonExistentSystem"],
289
- before: ["systemA"]
290
- }
291
- }
292
- }
293
- });
294
- //# sourceMappingURL=create-world-schema-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-world-schema-test.js","sourceRoot":"","sources":["../../../src/ecs/world/create-world-schema-test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,129 +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 { createWorld } from "./create-world.js";
23
- import { World } from "./world.js";
24
- // Type Test 1: Empty World
25
- const emptyWorld = createWorld();
26
- // Type Test 2: World from Schema with Components and Systems
27
- const schema1 = World.Schema.create({
28
- components: {
29
- position: { type: "vec3", default: { x: 0, y: 0, z: 0 } },
30
- velocity: { type: "vec3", default: { x: 0, y: 0, z: 0 } }
31
- },
32
- resources: {
33
- time: { default: { delta: 0, elapsed: 0 } }
34
- },
35
- systems: {
36
- physicsSystem: {
37
- create: (db) => () => { }
38
- },
39
- renderSystem: {
40
- create: (db) => () => { }
41
- }
42
- }
43
- });
44
- const world1 = createWorld(schema1);
45
- // Type Test 3: Extended World Types
46
- const baseSchema = World.Schema.create({
47
- components: {
48
- position: { type: "vec3", default: { x: 0, y: 0, z: 0 } }
49
- },
50
- systems: {
51
- systemA: {
52
- create: () => () => { }
53
- }
54
- }
55
- });
56
- const extensionSchema = World.Schema.create({
57
- components: {
58
- velocity: { type: "vec3", default: { x: 0, y: 0, z: 0 } }
59
- },
60
- systems: {
61
- systemB: {
62
- create: () => () => { }
63
- }
64
- }
65
- });
66
- const baseWorld = createWorld(baseSchema);
67
- const extendedWorld = baseWorld.extend(extensionSchema);
68
- // Type Test 5: System Order Array Type
69
- const orderedSchema = World.Schema.create({
70
- systems: {
71
- inputSystem: {
72
- create: () => () => { }
73
- },
74
- physicsSystem: {
75
- create: () => () => { },
76
- schedule: { after: ["inputSystem"] }
77
- },
78
- renderSystem: {
79
- create: () => () => { },
80
- schedule: { after: ["physicsSystem"] }
81
- }
82
- }
83
- });
84
- const orderedWorld = createWorld(orderedSchema);
85
- // Type Test 6: Database Access in System
86
- const dbAccessSchema = World.Schema.create({
87
- components: {
88
- position: { type: "vec3", default: { x: 0, y: 0, z: 0 } }
89
- },
90
- transactions: {
91
- moveEntity: (store, entityId, newPos) => {
92
- store.update(entityId, { position: newPos });
93
- }
94
- },
95
- systems: {
96
- testSystem: {
97
- create: (db) => {
98
- // Type check: db should have proper types
99
- const _store = db.store;
100
- const _transactions = db.transactions;
101
- return () => {
102
- // System can access database
103
- const entities = db.select(["position"]);
104
- db.transactions.moveEntity(entities[0] ?? 0, { x: 1, y: 2, z: 3 });
105
- };
106
- }
107
- }
108
- }
109
- });
110
- const dbWorld = createWorld(dbAccessSchema);
111
- // Type Test 7: Async System Support
112
- const asyncSchema = World.Schema.create({
113
- systems: {
114
- asyncSystem: {
115
- create: () => async () => {
116
- await Promise.resolve();
117
- }
118
- },
119
- syncSystem: {
120
- create: () => () => {
121
- // sync
122
- }
123
- }
124
- }
125
- });
126
- const asyncWorld = createWorld(asyncSchema);
127
- // Runtime type check - if this file compiles, all type tests pass!
128
- console.log("✅ All createWorld type tests passed!");
129
- //# sourceMappingURL=create-world-type-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-world-type-test.js","sourceRoot":"","sources":["../../../src/ecs/world/create-world-type-test.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { FromSchemas } from "../../schema/index.js";
2
- import { StringKeyof } from "../../types/types.js";
3
- import { ArchetypeComponents, ComponentSchemas, Components, Database, OptionalComponents, ResourceComponents, ResourceSchemas } from "../index.js";
4
- import { ActionDeclarations, ActionFunctions, ToActionFunctions } from "../store/action-functions.js";
5
- import { World } from "./world.js";
6
- type SystemFunction = () => void | Promise<void>;
7
- type SystemDeclaration<C extends Components = any, R extends ResourceComponents = any, A extends ArchetypeComponents<StringKeyof<C & OptionalComponents>> = any, F extends ActionFunctions = any, S extends string = any> = {
8
- readonly create: (world: World<C, R, A, F, S>) => SystemFunction;
9
- readonly schedule?: {
10
- readonly before?: readonly string[];
11
- readonly after?: readonly string[];
12
- };
13
- };
14
- export declare function createWorld(): World<{}, {}, {}, {}, never>;
15
- export declare function createWorld<CS extends ComponentSchemas, RS extends ResourceSchemas, A extends ArchetypeComponents<StringKeyof<CS>>, TD extends ActionDeclarations<FromSchemas<CS>, FromSchemas<RS>, A>, S extends string>(schema: World.Schema<CS, RS, A, TD, S>): World<FromSchemas<CS>, FromSchemas<RS>, A, ToActionFunctions<TD>, S>;
16
- export declare function createWorld<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C & OptionalComponents>>, F extends ActionFunctions, S extends string>(database: Database<C, R, A, F>, systemDeclarations: {
17
- readonly [K in S]: SystemDeclaration<C, R, A, F, S>;
18
- }): World<C, R, A, F, S>;
19
- export {};
@@ -1,80 +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 { Database } from "../index.js";
23
- import { World } from "./world.js";
24
- import { calculateSystemOrder } from "./calculate-system-order.js";
25
- export function createWorld(schemaOrDatabase, systemDeclarations) {
26
- if (!schemaOrDatabase) {
27
- return createWorldFromSchema(World.Schema.create({}));
28
- }
29
- if (systemDeclarations) {
30
- return createWorldFromDatabaseAndSystems(schemaOrDatabase, systemDeclarations);
31
- }
32
- else {
33
- return createWorldFromSchema(schemaOrDatabase);
34
- }
35
- }
36
- function createWorldFromSchema(schema) {
37
- const dbSchema = {
38
- components: schema.components,
39
- resources: schema.resources,
40
- archetypes: schema.archetypes,
41
- transactions: schema.transactions
42
- };
43
- const database = Database.create(dbSchema);
44
- return createWorldFromDatabaseAndSystems(database, schema.systems);
45
- }
46
- function createWorldFromDatabaseAndSystems(database, systemDeclarations) {
47
- // Calculate execution order from schedule constraints
48
- const executionOrder = calculateSystemOrder(systemDeclarations);
49
- // Create partial world shell (two-phase initialization to avoid circular dependency)
50
- const partialWorld = {
51
- database,
52
- system: {
53
- functions: {}, // Empty initially
54
- order: executionOrder
55
- },
56
- extend: undefined // Will be set later
57
- };
58
- // NOW instantiate system functions with full world reference
59
- const systemFunctions = {};
60
- for (const name in systemDeclarations) {
61
- systemFunctions[name] = systemDeclarations[name].create(partialWorld);
62
- }
63
- // Assign systems to world
64
- partialWorld.system.functions = systemFunctions;
65
- // Add extend method
66
- const extend = (schema) => {
67
- // Extend database with new components, resources, transactions
68
- const extendedDatabase = database.extend(schema);
69
- // Merge system declarations
70
- const mergedSystemDeclarations = {
71
- ...systemDeclarations,
72
- ...schema.systems
73
- };
74
- // Create new world with merged systems
75
- return createWorldFromDatabaseAndSystems(extendedDatabase, mergedSystemDeclarations);
76
- };
77
- partialWorld.extend = extend;
78
- return partialWorld;
79
- }
80
- //# 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":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AAIX,OAAO,EAAqD,QAAQ,EAA2D,MAAM,aAAa,CAAC;AAEnJ,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AA0CnE,MAAM,UAAU,WAAW,CACvB,gBAAuF,EACvF,kBAAwB;IAExB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,kBAAkB,EAAE,CAAC;QACrB,OAAO,iCAAiC,CAAC,gBAAuB,EAAE,kBAAkB,CAAC,CAAC;IAC1F,CAAC;SAAM,CAAC;QACJ,OAAO,qBAAqB,CAAC,gBAAuB,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAM5B,MAAsC;IAOpC,MAAM,QAAQ,GAAG;QACb,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;KACpC,CAAC;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,iCAAiC,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,iCAAiC,CAOtC,QAA8B,EAC9B,kBAA2E;IAI3E,sDAAsD;IACtD,MAAM,cAAc,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAEhE,qFAAqF;IACrF,MAAM,YAAY,GAAQ;QACtB,QAAQ;QACR,MAAM,EAAE;YACJ,SAAS,EAAE,EAAE,EAAG,kBAAkB;YAClC,KAAK,EAAE,cAAc;SACxB;QACD,MAAM,EAAE,SAAS,CAAE,oBAAoB;KAC1C,CAAC;IAEF,6DAA6D;IAC7D,MAAM,eAAe,GAAQ,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACpC,eAAe,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1E,CAAC;IAED,0BAA0B;IAC1B,YAAY,CAAC,MAAM,CAAC,SAAS,GAAG,eAAe,CAAC;IAEhD,oBAAoB;IACpB,MAAM,MAAM,GAAG,CACX,MAAU,EACP,EAAE;QACL,+DAA+D;QAC/D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,4BAA4B;QAC5B,MAAM,wBAAwB,GAAG;YAC7B,GAAG,kBAAkB;YACrB,GAAG,MAAM,CAAC,OAAO;SACb,CAAC;QAET,uCAAuC;QACvC,OAAO,iCAAiC,CAAC,gBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAChG,CAAC,CAAC;IAEF,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;IAE7B,OAAO,YAA8C,CAAC;AAC1D,CAAC"}
@@ -1 +0,0 @@
1
- export {};