@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,601 +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 { Database } from "./database.js";
24
- import { Vec3 } from "../../math/index.js";
25
- describe("Database.Plugin.create", () => {
26
- describe("type inference", () => {
27
- it("should infer db type correctly with 1 args", () => {
28
- const plugin = Database.Plugin.create({
29
- resources: {
30
- time: { default: 0 },
31
- },
32
- systems: {
33
- physicsSystem: {
34
- create: (db) => () => {
35
- const time = db.resources.time;
36
- // @ts-expect-error - this should be an error
37
- const dt = db.resources.deltaTime2;
38
- },
39
- }
40
- }
41
- });
42
- expect(plugin).toBeDefined();
43
- expect(plugin.components).toBeDefined();
44
- expect(plugin.resources).toBeDefined();
45
- expect(plugin.systems).toBeDefined();
46
- });
47
- it("should infer db type correctly with 2 args", () => {
48
- const plugin = Database.Plugin.create({
49
- resources: {
50
- time: { default: 0 },
51
- },
52
- systems: {
53
- firstSystem: {
54
- create: (db) => () => {
55
- const time = db.resources.time;
56
- // @ts-expect-error - this should be an error
57
- const dt = db.resources.deltaTime2;
58
- }
59
- }
60
- }
61
- }, {
62
- systems: {
63
- physicsSystem: {
64
- create: (db) => () => {
65
- const time = db.resources.time;
66
- // @ts-expect-error - this should be an error
67
- const dt = db.resources.deltaTime2;
68
- },
69
- schedule: {
70
- // References system from first argument
71
- after: ["firstSystem"]
72
- }
73
- }
74
- }
75
- });
76
- expect(plugin).toBeDefined();
77
- expect(plugin.components).toBeDefined();
78
- expect(plugin.resources).toBeDefined();
79
- expect(plugin.systems).toBeDefined();
80
- });
81
- it("should infer db type correctly with 3 args", () => {
82
- const plugin = Database.Plugin.create({
83
- resources: {
84
- time: { default: 0 },
85
- },
86
- }, {}, {
87
- systems: {
88
- physicsSystem: {
89
- create: (db) => () => {
90
- const time = db.resources.time;
91
- // @ts-expect-error - deltaTime is not defined in resources
92
- const dt = db.resources.deltaTime;
93
- }
94
- }
95
- }
96
- });
97
- expect(plugin).toBeDefined();
98
- expect(plugin.components).toBeDefined();
99
- expect(plugin.resources).toBeDefined();
100
- expect(plugin.systems).toBeDefined();
101
- });
102
- it("should infer db type correctly with 4 args", () => {
103
- const plugin = Database.Plugin.create({
104
- components: {
105
- position: Vec3.schema,
106
- },
107
- resources: {
108
- time: { default: 0 },
109
- },
110
- }, {}, {}, {
111
- systems: {
112
- physicsSystem: {
113
- create: (db) => () => {
114
- const entities = db.select(["position"]);
115
- const time = db.resources.time;
116
- }
117
- }
118
- }
119
- });
120
- expect(plugin).toBeDefined();
121
- expect(plugin.components).toBeDefined();
122
- expect(plugin.resources).toBeDefined();
123
- expect(plugin.systems).toBeDefined();
124
- });
125
- it("should throw error for non-existent system in schedule.after", () => {
126
- expect(() => {
127
- Database.Plugin.create({
128
- systems: {
129
- system1: {
130
- create: (_db) => () => { }
131
- },
132
- system2: {
133
- create: (_db) => () => { },
134
- schedule: {
135
- after: ["nonExistentSystem"]
136
- }
137
- }
138
- }
139
- });
140
- }).toThrow('System "system2" references non-existent system "nonExistentSystem" in schedule.after');
141
- });
142
- it("should throw error for non-existent system in schedule.before", () => {
143
- expect(() => {
144
- Database.Plugin.create({
145
- systems: {
146
- system1: {
147
- create: (_db) => () => { },
148
- schedule: {
149
- before: ["anotherNonExistentSystem"]
150
- }
151
- }
152
- }
153
- });
154
- }).toThrow('System "system1" references non-existent system "anotherNonExistentSystem" in schedule.before');
155
- });
156
- it("should not throw error for valid system references in schedule", () => {
157
- expect(() => {
158
- Database.Plugin.create({
159
- systems: {
160
- system1: {
161
- create: (_db) => () => { }
162
- },
163
- system2: {
164
- create: (_db) => () => { },
165
- schedule: {
166
- after: ["system1"]
167
- }
168
- }
169
- }
170
- });
171
- }).not.toThrow();
172
- });
173
- it("should validate system references across merged plugin arguments", () => {
174
- // Valid reference across plugin arguments
175
- expect(() => {
176
- Database.Plugin.create({
177
- systems: {
178
- system1: {
179
- create: (_db) => () => { }
180
- }
181
- }
182
- }, {
183
- systems: {
184
- system2: {
185
- create: (_db) => () => { },
186
- schedule: {
187
- after: ["system1"]
188
- }
189
- }
190
- }
191
- });
192
- }).not.toThrow();
193
- // Invalid reference across plugin arguments
194
- expect(() => {
195
- Database.Plugin.create({
196
- systems: {
197
- system1: {
198
- create: (_db) => () => { }
199
- }
200
- }
201
- }, {
202
- systems: {
203
- system2: {
204
- create: (_db) => () => { },
205
- schedule: {
206
- after: ["nonExistentSystem"]
207
- }
208
- }
209
- }
210
- });
211
- }).toThrow('System "system2" references non-existent system "nonExistentSystem" in schedule.after');
212
- });
213
- });
214
- describe("basic plugin creation", () => {
215
- it("should create plugin with components, resources, and archetypes", () => {
216
- const plugin = Database.Plugin.create({
217
- components: {
218
- velocity: { type: "number" },
219
- particle: { type: "boolean" },
220
- },
221
- resources: {
222
- mousePosition: { type: "number", default: 0 },
223
- fooPosition: { type: "number", default: 0 },
224
- },
225
- archetypes: {
226
- Particle: ["particle"],
227
- DynamicParticle: ["particle", "velocity"],
228
- }
229
- });
230
- expect(plugin.components).toBeDefined();
231
- expect("velocity" in plugin.components).toBe(true);
232
- expect("particle" in plugin.components).toBe(true);
233
- expect(plugin.resources).toBeDefined();
234
- expect("mousePosition" in plugin.resources).toBe(true);
235
- expect("fooPosition" in plugin.resources).toBe(true);
236
- expect(plugin.archetypes).toBeDefined();
237
- expect("Particle" in plugin.archetypes).toBe(true);
238
- expect("DynamicParticle" in plugin.archetypes).toBe(true);
239
- });
240
- });
241
- describe("schema merging", () => {
242
- it("should merge multiple plugins with components, resources, and archetypes", () => {
243
- const aPlugin = Database.Plugin.create({
244
- components: {
245
- a: { type: "number" },
246
- b: { type: "string" }
247
- },
248
- resources: {
249
- c: { default: "string" }
250
- },
251
- archetypes: {
252
- one: ["a", "b"]
253
- }
254
- });
255
- const bPlugin = Database.Plugin.create({
256
- components: {
257
- x: { type: "number" },
258
- y: { type: "string" }
259
- },
260
- resources: {
261
- z: { default: "string" }
262
- },
263
- archetypes: {
264
- two: ["x", "y"]
265
- }
266
- });
267
- const mergedPlugin = Database.Plugin.create(aPlugin, bPlugin, {
268
- components: {
269
- m: { type: "number" },
270
- n: { type: "string" }
271
- },
272
- resources: {
273
- c: { default: "string" } // Override resource c
274
- },
275
- archetypes: {
276
- three: ["m", "n", "x"]
277
- }
278
- });
279
- // Verify all components from all plugins are present
280
- expect("a" in mergedPlugin.components).toBe(true);
281
- expect("b" in mergedPlugin.components).toBe(true);
282
- expect("x" in mergedPlugin.components).toBe(true);
283
- expect("y" in mergedPlugin.components).toBe(true);
284
- expect("m" in mergedPlugin.components).toBe(true);
285
- expect("n" in mergedPlugin.components).toBe(true);
286
- // Verify all resources are present
287
- expect("c" in mergedPlugin.resources).toBe(true);
288
- expect("z" in mergedPlugin.resources).toBe(true);
289
- // Verify all archetypes are present
290
- expect("one" in mergedPlugin.archetypes).toBe(true);
291
- expect("two" in mergedPlugin.archetypes).toBe(true);
292
- expect("three" in mergedPlugin.archetypes).toBe(true);
293
- });
294
- it("should merge plugins with transactions", () => {
295
- const basePlugin = Database.Plugin.create({
296
- components: {
297
- position: { type: "number" },
298
- health: { type: "number" }
299
- },
300
- resources: {
301
- time: { default: 0 }
302
- },
303
- transactions: {
304
- updateHealth: () => { }
305
- }
306
- });
307
- const extendedPlugin = Database.Plugin.create(basePlugin, {
308
- components: {
309
- velocity: { type: "number" }
310
- },
311
- resources: {
312
- delta: { default: 0 }
313
- },
314
- archetypes: {
315
- Moving: ["position", "velocity"]
316
- },
317
- transactions: {
318
- move: () => { }
319
- }
320
- });
321
- // Verify components from both plugins
322
- expect("position" in extendedPlugin.components).toBe(true);
323
- expect("health" in extendedPlugin.components).toBe(true);
324
- expect("velocity" in extendedPlugin.components).toBe(true);
325
- // Verify resources from both plugins
326
- expect("time" in extendedPlugin.resources).toBe(true);
327
- expect("delta" in extendedPlugin.resources).toBe(true);
328
- // Verify transactions from both plugins
329
- expect("updateHealth" in extendedPlugin.transactions).toBe(true);
330
- expect("move" in extendedPlugin.transactions).toBe(true);
331
- // Verify archetypes
332
- expect("Moving" in extendedPlugin.archetypes).toBe(true);
333
- });
334
- });
335
- describe("systems", () => {
336
- it("should create empty database with no systems", () => {
337
- const db = Database.create();
338
- expect(db.system.functions).toEqual({});
339
- expect(db.system.order).toEqual([]);
340
- });
341
- it("should create database from plugin with systems", () => {
342
- const executionLog = [];
343
- const plugin = Database.Plugin.create({
344
- components: {
345
- position: { type: "object", default: { x: 0, y: 0, z: 0 } }
346
- }
347
- }, {
348
- systems: {
349
- updateSystem: {
350
- create: (_db) => () => {
351
- executionLog.push("update");
352
- }
353
- },
354
- renderSystem: {
355
- create: (_db) => () => {
356
- executionLog.push("render");
357
- }
358
- }
359
- }
360
- });
361
- const db = Database.create(plugin);
362
- expect(db.system.functions.updateSystem).toBeDefined();
363
- expect(db.system.functions.renderSystem).toBeDefined();
364
- expect(db.system.order).toHaveLength(1);
365
- expect(db.system.order[0]).toHaveLength(2);
366
- // Execute systems
367
- db.system.functions.updateSystem();
368
- db.system.functions.renderSystem();
369
- expect(executionLog).toEqual(["update", "render"]);
370
- });
371
- it("should respect system scheduling dependencies", () => {
372
- const executionLog = [];
373
- const plugin = Database.Plugin.create({
374
- components: {
375
- position: { type: "object", default: { x: 0, y: 0, z: 0 } }
376
- },
377
- systems: {
378
- inputSystem: {
379
- create: (_db) => () => {
380
- executionLog.push("input");
381
- }
382
- },
383
- physicsSystem: {
384
- create: (_db) => () => {
385
- executionLog.push("physics");
386
- },
387
- schedule: {
388
- after: ["inputSystem"]
389
- }
390
- },
391
- renderSystem: {
392
- create: (_db) => () => {
393
- executionLog.push("render");
394
- },
395
- schedule: {
396
- after: ["physicsSystem"]
397
- }
398
- }
399
- }
400
- });
401
- const db = Database.create(plugin);
402
- // Should have 3 tiers: input -> physics -> render
403
- expect(db.system.order).toHaveLength(3);
404
- expect(db.system.order[0]).toEqual(["inputSystem"]);
405
- expect(db.system.order[1]).toEqual(["physicsSystem"]);
406
- expect(db.system.order[2]).toEqual(["renderSystem"]);
407
- // Execute in order
408
- for (const tier of db.system.order) {
409
- for (const systemName of tier) {
410
- db.system.functions[systemName]();
411
- }
412
- }
413
- expect(executionLog).toEqual(["input", "physics", "render"]);
414
- });
415
- it("should support parallel system execution in same tier", () => {
416
- const plugin = Database.Plugin.create({
417
- components: {},
418
- archetypes: {},
419
- systems: {
420
- system1: {
421
- create: (_db) => () => { }
422
- },
423
- system2: {
424
- create: (_db) => () => { }
425
- },
426
- system3: {
427
- create: (_db) => () => { }
428
- }
429
- }
430
- });
431
- const db = Database.create(plugin);
432
- // All independent systems should be in one tier
433
- expect(db.system.order).toHaveLength(1);
434
- expect(db.system.order[0]).toHaveLength(3);
435
- });
436
- it("should support async systems", async () => {
437
- const executionLog = [];
438
- const plugin = Database.Plugin.create({
439
- components: {},
440
- archetypes: {},
441
- systems: {
442
- asyncSystem: {
443
- create: (_db) => async () => {
444
- await new Promise(resolve => setTimeout(resolve, 10));
445
- executionLog.push("async");
446
- }
447
- }
448
- }
449
- });
450
- const db = Database.create(plugin);
451
- await db.system.functions.asyncSystem();
452
- expect(executionLog).toEqual(["async"]);
453
- });
454
- });
455
- describe("plugin composition", () => {
456
- it("should support plugin composition through dependencies", () => {
457
- const executionLog = [];
458
- const inputPlugin = Database.Plugin.create({
459
- components: {},
460
- systems: {
461
- inputSystem: {
462
- create: (_db) => () => {
463
- executionLog.push("input");
464
- }
465
- }
466
- }
467
- });
468
- const physicsPlugin = Database.Plugin.create(inputPlugin, {
469
- components: {
470
- velocity: { type: "object", default: { x: 0, y: 0, z: 0 } }
471
- }
472
- }, {
473
- systems: {
474
- physicsSystem: {
475
- create: (_db) => () => {
476
- executionLog.push("physics");
477
- },
478
- schedule: {
479
- after: ["inputSystem"]
480
- }
481
- }
482
- }
483
- });
484
- const db = Database.create(physicsPlugin);
485
- // Should have both systems
486
- expect(db.system.functions.inputSystem).toBeDefined();
487
- expect(db.system.functions.physicsSystem).toBeDefined();
488
- // Execute in order
489
- for (const tier of db.system.order) {
490
- for (const systemName of tier) {
491
- db.system.functions[systemName]();
492
- }
493
- }
494
- expect(executionLog).toEqual(["input", "physics"]);
495
- });
496
- });
497
- describe("database extension", () => {
498
- it("should extend database with new systems", () => {
499
- const executionLog = [];
500
- const basePlugin = Database.Plugin.create({
501
- components: {
502
- position: { type: "object", default: { x: 0, y: 0, z: 0 } }
503
- },
504
- systems: {
505
- updateSystem: {
506
- create: (_db) => () => {
507
- executionLog.push("update");
508
- }
509
- }
510
- }
511
- });
512
- const extensionPlugin = Database.Plugin.create({
513
- components: {
514
- velocity: { type: "object", default: { x: 0, y: 0, z: 0 } }
515
- },
516
- systems: {
517
- physicsSystem: {
518
- create: (_db) => () => {
519
- executionLog.push("physics");
520
- }
521
- }
522
- }
523
- });
524
- const db = Database.create(basePlugin);
525
- const extended = db.extend(extensionPlugin);
526
- expect(extended.system.functions.updateSystem).toBeDefined();
527
- expect(extended.system.functions.physicsSystem).toBeDefined();
528
- // Both systems should be available
529
- extended.system.functions.updateSystem();
530
- extended.system.functions.physicsSystem();
531
- expect(executionLog).toEqual(["update", "physics"]);
532
- });
533
- it("should maintain system order when extending", () => {
534
- const basePlugin = Database.Plugin.create({
535
- components: {},
536
- archetypes: {},
537
- systems: {
538
- system1: {
539
- create: (_db) => () => { }
540
- }
541
- }
542
- });
543
- const extensionPlugin = Database.Plugin.create({
544
- components: {},
545
- archetypes: {},
546
- systems: {
547
- system2: {
548
- create: (_db) => () => { }
549
- }
550
- }
551
- });
552
- const db = Database.create(basePlugin);
553
- const extended = db.extend(extensionPlugin);
554
- // Both systems should be in the same tier (no dependencies)
555
- expect(extended.system.order).toHaveLength(1);
556
- expect(extended.system.order[0]).toContain("system1");
557
- expect(extended.system.order[0]).toContain("system2");
558
- });
559
- it("should extend database without systems and return same instance", () => {
560
- const plugin = Database.Plugin.create({
561
- components: {
562
- position: { type: "object", default: { x: 0, y: 0, z: 0 } }
563
- }
564
- });
565
- const extensionPlugin = Database.Plugin.create({
566
- components: {
567
- velocity: { type: "object", default: { x: 0, y: 0, z: 0 } }
568
- }
569
- });
570
- const db = Database.create(plugin);
571
- const extended = db.extend(extensionPlugin);
572
- // When no systems involved, should return same instance
573
- expect(extended).toBe(db);
574
- });
575
- it("should create new database instance when extending with systems", () => {
576
- const basePlugin = Database.Plugin.create({
577
- components: {
578
- position: { type: "object", default: { x: 0, y: 0, z: 0 } }
579
- },
580
- systems: {
581
- system1: {
582
- create: (_db) => () => { }
583
- }
584
- }
585
- });
586
- const extensionPlugin = Database.Plugin.create({
587
- components: {},
588
- systems: {
589
- system2: {
590
- create: (_db) => () => { }
591
- }
592
- }
593
- });
594
- const db = Database.create(basePlugin);
595
- const extended = db.extend(extensionPlugin);
596
- // When systems are involved, should create new instance
597
- expect(extended).not.toBe(db);
598
- });
599
- });
600
- });
601
- //# sourceMappingURL=database.plugin.create.test.OLD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.plugin.create.test.OLD.js","sourceRoot":"","sources":["../../../src/ecs/database/database.plugin.create.test.OLD.ts"],"names":[],"mappings":"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"}