@adobe/data 0.9.0 → 0.9.1

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 (969) hide show
  1. package/dist/debug-type-test.js +12 -0
  2. package/dist/debug-type-test.js.map +1 -0
  3. package/dist/ecs/database/archetype-type-safety-test.d.ts +21 -0
  4. package/dist/ecs/database/archetype-type-safety-test.js +36 -0
  5. package/dist/ecs/database/archetype-type-safety-test.js.map +1 -0
  6. package/dist/ecs/database/calculate-system-order.d.ts +10 -0
  7. package/dist/ecs/database/calculate-system-order.js +152 -26
  8. package/dist/ecs/database/calculate-system-order.js.map +1 -1
  9. package/dist/ecs/database/calculate-system-order.test.js +228 -0
  10. package/dist/ecs/database/calculate-system-order.test.js.map +1 -1
  11. package/dist/ecs/database/create-database-schema-test.js +150 -0
  12. package/dist/ecs/database/create-database-schema-test.js.map +1 -0
  13. package/dist/ecs/database/create-plugin-v2.d.ts +79 -0
  14. package/dist/ecs/database/create-plugin-v2.js +68 -0
  15. package/dist/ecs/database/create-plugin-v2.js.map +1 -0
  16. package/dist/ecs/database/create-plugin-v2.test.js +362 -0
  17. package/dist/ecs/database/create-plugin-v2.test.js.map +1 -0
  18. package/dist/ecs/database/create-plugin.OLD.d.ts +138 -0
  19. package/dist/ecs/database/create-plugin.OLD.js +59 -0
  20. package/dist/ecs/database/create-plugin.OLD.js.map +1 -0
  21. package/dist/ecs/database/create-plugin.d.ts +2 -0
  22. package/dist/ecs/database/create-plugin.js.map +1 -1
  23. package/dist/ecs/database/create-plugin.test.js +2 -0
  24. package/dist/ecs/database/create-plugin.test.js.map +1 -1
  25. package/dist/ecs/database/database-with-systems.test.js +292 -0
  26. package/dist/ecs/database/database-with-systems.test.js.map +1 -0
  27. package/dist/ecs/database/database.d.ts +7 -0
  28. package/dist/ecs/database/database.js.map +1 -1
  29. package/dist/ecs/database/database.plugin.create.test.OLD.js +601 -0
  30. package/dist/ecs/database/database.plugin.create.test.OLD.js.map +1 -0
  31. package/dist/ecs/database/database.plugin.create.test.js +321 -0
  32. package/dist/ecs/database/database.plugin.create.test.js.map +1 -0
  33. package/dist/ecs/database/database.plugin.test.js +90 -0
  34. package/dist/ecs/database/database.plugin.test.js.map +1 -0
  35. package/dist/ecs/database/database.test copy.js +199 -0
  36. package/dist/ecs/database/database.test copy.js.map +1 -0
  37. package/dist/ecs/database/multi-param-inference-poc.test.js +96 -0
  38. package/dist/ecs/database/multi-param-inference-poc.test.js.map +1 -0
  39. package/dist/ecs/database/old-plugin-create-with-dependencies-array.d.ts +61 -0
  40. package/dist/ecs/database/old-plugin-create-with-dependencies-array.js +76 -0
  41. package/dist/ecs/database/old-plugin-create-with-dependencies-array.js.map +1 -0
  42. package/dist/ecs/database/overload-inference-poc.test.js +109 -0
  43. package/dist/ecs/database/overload-inference-poc.test.js.map +1 -0
  44. package/dist/ecs/database/public/create-database.d.ts +1 -0
  45. package/dist/ecs/database/schedule-type-check-demo.d.ts +10 -0
  46. package/dist/ecs/database/schedule-type-check-demo.js +71 -0
  47. package/dist/ecs/database/schedule-type-check-demo.js.map +1 -0
  48. package/dist/ecs/database/test-archetype-validation.d.ts +9 -0
  49. package/dist/ecs/database/test-archetype-validation.js +14 -0
  50. package/dist/ecs/database/test-archetype-validation.js.map +1 -0
  51. package/dist/ecs/database/test-exactkeys.js +17 -0
  52. package/dist/ecs/database/test-exactkeys.js.map +1 -0
  53. package/dist/ecs/database/transactional-store/coalesce-transactions.test.js +3 -3
  54. package/dist/ecs/database/transactional-store/coalesce-transactions.test.js.map +1 -1
  55. package/dist/ecs/database/type-inference-demo.d.ts +75 -0
  56. package/dist/ecs/database/type-inference-demo.js +73 -0
  57. package/dist/ecs/database/type-inference-demo.js.map +1 -0
  58. package/dist/ecs/database/type-inference-poc.test.js +73 -0
  59. package/dist/ecs/database/type-inference-poc.test.js.map +1 -0
  60. package/dist/ecs/index.d.ts +3 -0
  61. package/dist/ecs/index.js +2 -0
  62. package/dist/ecs/index.js.map +1 -1
  63. package/dist/ecs/plugins/scheduler/create-scheduler-plugin.d.ts +8 -0
  64. package/dist/ecs/plugins/scheduler/create-scheduler-plugin.js +54 -0
  65. package/dist/ecs/plugins/scheduler/create-scheduler-plugin.js.map +1 -0
  66. package/dist/ecs/plugins/scheduler/create-scheduler-plugin.test.js +198 -0
  67. package/dist/ecs/plugins/scheduler/create-scheduler-plugin.test.js.map +1 -0
  68. package/dist/ecs/plugins/scheduler/scheduler.d.ts +2 -3
  69. package/dist/ecs/plugins/scheduler/scheduler.js +2 -2
  70. package/dist/ecs/plugins/scheduler/scheduler.js.map +1 -1
  71. package/dist/ecs/plugins/scheduler/type-inference-test.js +2 -0
  72. package/dist/ecs/plugins/scheduler/type-inference-test.js.map +1 -0
  73. package/dist/ecs/store/entity-functions.d.ts +7 -0
  74. package/dist/ecs/store/entity-functions.js +2 -0
  75. package/dist/ecs/store/entity-functions.js.map +1 -0
  76. package/dist/ecs/store/functions.d.ts +2 -0
  77. package/dist/ecs/store/functions.js +2 -0
  78. package/dist/ecs/store/functions.js.map +1 -0
  79. package/dist/ecs/system/system-declaration.d.ts +7 -0
  80. package/dist/{math/aabb/functions.js → ecs/system/system-declaration.js} +1 -1
  81. package/dist/ecs/system/system-declaration.js.map +1 -0
  82. package/dist/ecs/system/system-declarations.d.ts +4 -0
  83. package/dist/ecs/system/system-declarations.js +23 -0
  84. package/dist/ecs/system/system-declarations.js.map +1 -0
  85. package/dist/ecs/system/system-factory/public/create copy.d.ts +12 -0
  86. package/dist/ecs/system/system-factory/public/create copy.js +8 -0
  87. package/dist/ecs/system/system-factory/public/create copy.js.map +1 -0
  88. package/dist/ecs/system/system-factory/public/create.d.ts +12 -0
  89. package/dist/ecs/system/system-factory/public/create.js +8 -0
  90. package/dist/ecs/system/system-factory/public/create.js.map +1 -0
  91. package/dist/ecs/system/system-factory/public/create.test.js +42 -0
  92. package/dist/ecs/system/system-factory/public/create.test.js.map +1 -0
  93. package/dist/ecs/system/system-factory/public/index.d.ts +1 -0
  94. package/dist/ecs/system/system-factory/public/index.js +2 -0
  95. package/dist/ecs/system/system-factory/public/index.js.map +1 -0
  96. package/dist/ecs/system/system-factory/system-factory.d.ts +17 -0
  97. package/dist/ecs/{store/public/schema/schema.js → system/system-factory/system-factory.js} +2 -2
  98. package/dist/ecs/system/system-factory/system-factory.js.map +1 -0
  99. package/dist/ecs/system/system-factory.d.ts +9 -0
  100. package/dist/{math/picking/pick-result.js → ecs/system/system-factory.js} +1 -1
  101. package/dist/ecs/system/system-factory.js.map +1 -0
  102. package/dist/ecs/system/system-interface.d.ts +5 -0
  103. package/dist/ecs/system/system-interface.js +2 -0
  104. package/dist/ecs/system/system-interface.js.map +1 -0
  105. package/dist/ecs/system/system.d.ts +4 -0
  106. package/dist/ecs/{store/constants/types.js → system/system.js} +1 -1
  107. package/dist/ecs/system/system.js.map +1 -0
  108. package/dist/ecs/system/systems-type.d.ts +2 -0
  109. package/dist/ecs/system/systems-type.js +2 -0
  110. package/dist/ecs/system/systems-type.js.map +1 -0
  111. package/dist/ecs/system/systems.d.ts +2 -0
  112. package/dist/ecs/{store/public/types.js → system/systems.js} +1 -1
  113. package/dist/ecs/system/systems.js.map +1 -0
  114. package/dist/ecs/system/world-schema/public/create.d.ts +12 -0
  115. package/dist/ecs/system/world-schema/public/create.js +8 -0
  116. package/dist/ecs/system/world-schema/public/create.js.map +1 -0
  117. package/dist/ecs/system/world-schema/public/create.test.js +42 -0
  118. package/dist/ecs/system/world-schema/public/create.test.js.map +1 -0
  119. package/dist/ecs/system/world-schema/public/index.d.ts +1 -0
  120. package/dist/ecs/system/world-schema/public/index.js +2 -0
  121. package/dist/ecs/system/world-schema/public/index.js.map +1 -0
  122. package/dist/ecs/system/world-schema/system-factory.d.ts +17 -0
  123. package/dist/ecs/system/world-schema/system-factory.js +23 -0
  124. package/dist/ecs/system/world-schema/system-factory.js.map +1 -0
  125. package/dist/ecs/world/calculate-system-order.d.ts +18 -0
  126. package/dist/ecs/world/calculate-system-order.js +113 -0
  127. package/dist/ecs/world/calculate-system-order.js.map +1 -0
  128. package/dist/ecs/world/calculate-system-order.test.js +168 -0
  129. package/dist/ecs/world/calculate-system-order.test.js.map +1 -0
  130. package/dist/ecs/world/create-world-schema-test.js +294 -0
  131. package/dist/ecs/world/create-world-schema-test.js.map +1 -0
  132. package/dist/ecs/world/create-world-type-test.js +129 -0
  133. package/dist/ecs/world/create-world-type-test.js.map +1 -0
  134. package/dist/ecs/world/create-world.d.ts +17 -5
  135. package/dist/ecs/world/create-world.js +75 -108
  136. package/dist/ecs/world/create-world.js.map +1 -1
  137. package/dist/ecs/world/create-world.test.js +227 -434
  138. package/dist/ecs/world/create-world.test.js.map +1 -1
  139. package/dist/ecs/world/public/world-schema/public/create.d.ts +12 -0
  140. package/dist/ecs/world/public/world-schema/public/create.js +8 -0
  141. package/dist/ecs/world/public/world-schema/public/create.js.map +1 -0
  142. package/dist/ecs/world/public/world-schema/public/create.test.js +42 -0
  143. package/dist/ecs/world/public/world-schema/public/create.test.js.map +1 -0
  144. package/dist/ecs/world/public/world-schema/public/index.d.ts +1 -0
  145. package/dist/ecs/world/public/world-schema/public/index.js +2 -0
  146. package/dist/ecs/world/public/world-schema/public/index.js.map +1 -0
  147. package/dist/ecs/world/public/world-schema/world-schema.d.ts +17 -0
  148. package/dist/ecs/{store/public/schema/public.js → world/public/world-schema/world-schema.js} +2 -2
  149. package/dist/ecs/world/public/world-schema/world-schema.js.map +1 -0
  150. package/dist/ecs/world/system-declaration.d.ts +1 -0
  151. package/dist/ecs/world/system-declaration.js +23 -0
  152. package/dist/ecs/world/system-declaration.js.map +1 -0
  153. package/dist/ecs/world/system-schedule-typing-test.js +83 -0
  154. package/dist/ecs/world/system-schedule-typing-test.js.map +1 -0
  155. package/dist/ecs/world/world-schema/public/create.d.ts +12 -0
  156. package/dist/ecs/world/world-schema/public/create.js +10 -0
  157. package/dist/ecs/world/world-schema/public/create.js.map +1 -0
  158. package/dist/ecs/world/world-schema/public/create.test.js +41 -0
  159. package/dist/ecs/world/world-schema/public/create.test.js.map +1 -0
  160. package/dist/ecs/world/world-schema/public/index.d.ts +1 -0
  161. package/dist/ecs/world/world-schema/public/index.js +2 -0
  162. package/dist/ecs/world/world-schema/public/index.js.map +1 -0
  163. package/dist/ecs/world/world-schema/system-factory.d.ts +17 -0
  164. package/dist/ecs/world/world-schema/system-factory.js +23 -0
  165. package/dist/ecs/world/world-schema/system-factory.js.map +1 -0
  166. package/dist/ecs/world/world-schema/world-schema.d.ts +17 -16
  167. package/dist/ecs/world/world-schema/world-schema.js +1 -1
  168. package/dist/ecs/world/world-schema/world-schema.js.map +1 -1
  169. package/dist/ecs/world/world.d.ts +85 -10
  170. package/dist/ecs/world/world.js +80 -1
  171. package/dist/ecs/world/world.js.map +1 -1
  172. package/dist/ecs/world/world.test.js +176 -0
  173. package/dist/ecs/world/world.test.js.map +1 -0
  174. package/dist/old-ecs/ecs/ecs.test.js +1 -0
  175. package/dist/old-ecs/ecs/ecs.test.js.map +1 -1
  176. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +2 -2
  177. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +1 -1
  180. package/dist/blob/download-handle.d.ts +0 -4
  181. package/dist/blob/download-handle.js +0 -2
  182. package/dist/blob/download-handle.js.map +0 -1
  183. package/dist/blob/upload-handle.d.ts +0 -4
  184. package/dist/blob/upload-handle.js +0 -2
  185. package/dist/blob/upload-handle.js.map +0 -1
  186. package/dist/ecs/database/create-database.d.ts +0 -7
  187. package/dist/ecs/database/create-database.js +0 -186
  188. package/dist/ecs/database/create-database.js.map +0 -1
  189. package/dist/ecs/database/create-database.test.js +0 -903
  190. package/dist/ecs/database/create-database.test.js.map +0 -1
  191. package/dist/ecs/database/replicate.d.ts +0 -9
  192. package/dist/ecs/database/replicate.js +0 -66
  193. package/dist/ecs/database/replicate.js.map +0 -1
  194. package/dist/ecs/database/replicate.test.js +0 -235
  195. package/dist/ecs/database/replicate.test.js.map +0 -1
  196. package/dist/ecs/database/transactional-store/coalesce-transactions.d.ts +0 -16
  197. package/dist/ecs/database/transactional-store/coalesce-transactions.js +0 -140
  198. package/dist/ecs/database/transactional-store/coalesce-transactions.js.map +0 -1
  199. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +0 -106
  200. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +0 -1
  201. package/dist/ecs/entity/entity.d.ts +0 -8
  202. package/dist/ecs/entity/entity.js +0 -3
  203. package/dist/ecs/entity/entity.js.map +0 -1
  204. package/dist/ecs/entity/u32.d.ts +0 -8
  205. package/dist/ecs/entity/u32.js +0 -24
  206. package/dist/ecs/entity/u32.js.map +0 -1
  207. package/dist/ecs/store/constants/functions.d.ts +0 -14
  208. package/dist/ecs/store/constants/functions.js +0 -31
  209. package/dist/ecs/store/constants/functions.js.map +0 -1
  210. package/dist/ecs/store/constants/index.d.ts +0 -2
  211. package/dist/ecs/store/constants/index.js +0 -24
  212. package/dist/ecs/store/constants/index.js.map +0 -1
  213. package/dist/ecs/store/constants/types.d.ts +0 -18
  214. package/dist/ecs/store/constants/types.js.map +0 -1
  215. package/dist/ecs/store/create-store.d.ts +0 -8
  216. package/dist/ecs/store/create-store.js +0 -126
  217. package/dist/ecs/store/create-store.js.map +0 -1
  218. package/dist/ecs/store/create-store.test.js +0 -725
  219. package/dist/ecs/store/create-store.test.js.map +0 -1
  220. package/dist/ecs/store/public/create-from-schema.d.ts +0 -6
  221. package/dist/ecs/store/public/create-from-schema.js +0 -26
  222. package/dist/ecs/store/public/create-from-schema.js.map +0 -1
  223. package/dist/ecs/store/public/index.d.ts +0 -3
  224. package/dist/ecs/store/public/index.js +0 -25
  225. package/dist/ecs/store/public/index.js.map +0 -1
  226. package/dist/ecs/store/public/readonly.d.ts +0 -19
  227. package/dist/ecs/store/public/readonly.js +0 -2
  228. package/dist/ecs/store/public/readonly.js.map +0 -1
  229. package/dist/ecs/store/public/schema/create-from-schema.d.ts +0 -6
  230. package/dist/ecs/store/public/schema/create-from-schema.js +0 -26
  231. package/dist/ecs/store/public/schema/create-from-schema.js.map +0 -1
  232. package/dist/ecs/store/public/schema/create.d.ts +0 -10
  233. package/dist/ecs/store/public/schema/create.js +0 -25
  234. package/dist/ecs/store/public/schema/create.js.map +0 -1
  235. package/dist/ecs/store/public/schema/createFromSchema.d.ts +0 -6
  236. package/dist/ecs/store/public/schema/createFromSchema.js +0 -5
  237. package/dist/ecs/store/public/schema/createFromSchema.js.map +0 -1
  238. package/dist/ecs/store/public/schema/public.d.ts +0 -1
  239. package/dist/ecs/store/public/schema/public.js.map +0 -1
  240. package/dist/ecs/store/public/schema/schema.d.ts +0 -11
  241. package/dist/ecs/store/public/schema/schema.js.map +0 -1
  242. package/dist/ecs/store/public/types.d.ts +0 -11
  243. package/dist/ecs/store/public/types.js.map +0 -1
  244. package/dist/ecs/store/store-schema/create-store-schema-test.js +0 -33
  245. package/dist/ecs/store/store-schema/create-store-schema-test.js.map +0 -1
  246. package/dist/ecs/store/store-schema/create-store-schema.js +0 -45
  247. package/dist/ecs/store/store-schema/create-store-schema.js.map +0 -1
  248. package/dist/ecs/store/store-schema/index.js +0 -21
  249. package/dist/ecs/store/store-schema/index.js.map +0 -1
  250. package/dist/ecs/store/store-schema/store-schema.js +0 -57
  251. package/dist/ecs/store/store-schema/store-schema.js.map +0 -1
  252. package/dist/ecs/world/index.d.ts +0 -5
  253. package/dist/ecs/world/index.js +0 -27
  254. package/dist/ecs/world/index.js.map +0 -1
  255. package/dist/ecs/world/system-phase.d.ts +0 -5
  256. package/dist/ecs/world/system-phase.js +0 -14
  257. package/dist/ecs/world/system-phase.js.map +0 -1
  258. package/dist/ecs/world/system.d.ts +0 -25
  259. package/dist/ecs/world/system.js +0 -2
  260. package/dist/ecs/world/system.js.map +0 -1
  261. package/dist/ecs/world/world-schema/create-world-schema-test.js +0 -55
  262. package/dist/ecs/world/world-schema/create-world-schema-test.js.map +0 -1
  263. package/dist/ecs/world/world-schema/create-world-schema.d.ts +0 -19
  264. package/dist/ecs/world/world-schema/create-world-schema.js +0 -33
  265. package/dist/ecs/world/world-schema/create-world-schema.js.map +0 -1
  266. package/dist/ecs/world/world-schema/index.d.ts +0 -2
  267. package/dist/ecs/world/world-schema/index.js +0 -24
  268. package/dist/ecs/world/world-schema/index.js.map +0 -1
  269. package/dist/graphics/camera/camera.d.ts +0 -62
  270. package/dist/graphics/camera/camera.js +0 -17
  271. package/dist/graphics/camera/camera.js.map +0 -1
  272. package/dist/graphics/camera/index.d.ts +0 -4
  273. package/dist/graphics/camera/index.js +0 -5
  274. package/dist/graphics/camera/index.js.map +0 -1
  275. package/dist/graphics/camera/screen-to-world-ray.d.ts +0 -12
  276. package/dist/graphics/camera/screen-to-world-ray.js +0 -49
  277. package/dist/graphics/camera/screen-to-world-ray.js.map +0 -1
  278. package/dist/graphics/camera/screen-to-world-ray.test.js +0 -171
  279. package/dist/graphics/camera/screen-to-world-ray.test.js.map +0 -1
  280. package/dist/graphics/camera/to-view-projection.d.ts +0 -3
  281. package/dist/graphics/camera/to-view-projection.js +0 -8
  282. package/dist/graphics/camera/to-view-projection.js.map +0 -1
  283. package/dist/graphics/camera/world-to-screen.d.ts +0 -12
  284. package/dist/graphics/camera/world-to-screen.js +0 -38
  285. package/dist/graphics/camera/world-to-screen.js.map +0 -1
  286. package/dist/graphics/camera/world-to-screen.test.js +0 -124
  287. package/dist/graphics/camera/world-to-screen.test.js.map +0 -1
  288. package/dist/graphics/create-struct-gpu-buffer.d.ts +0 -7
  289. package/dist/graphics/create-struct-gpu-buffer.js +0 -17
  290. package/dist/graphics/create-struct-gpu-buffer.js.map +0 -1
  291. package/dist/graphics/extract-wgsl-bindings.d.ts +0 -5
  292. package/dist/graphics/extract-wgsl-bindings.js +0 -10
  293. package/dist/graphics/extract-wgsl-bindings.js.map +0 -1
  294. package/dist/graphics/frame.js +0 -15
  295. package/dist/graphics/frame.js.map +0 -1
  296. package/dist/graphics/get-web-gpu-device-and-context.js +0 -24
  297. package/dist/graphics/get-web-gpu-device-and-context.js.map +0 -1
  298. package/dist/graphics/graphics-context.js +0 -7
  299. package/dist/graphics/graphics-context.js.map +0 -1
  300. package/dist/graphics/index.d.ts +0 -5
  301. package/dist/graphics/index.js +0 -5
  302. package/dist/graphics/index.js.map +0 -1
  303. package/dist/graphics/to-gpu-buffer.d.ts +0 -2
  304. package/dist/graphics/to-gpu-buffer.js +0 -14
  305. package/dist/graphics/to-gpu-buffer.js.map +0 -1
  306. package/dist/internal/array-buffer-like/grow.d.ts +0 -1
  307. package/dist/internal/array-buffer-like/grow.js +0 -9
  308. package/dist/internal/array-buffer-like/grow.js.map +0 -1
  309. package/dist/math/aabb/aabb.d.ts +0 -3
  310. package/dist/math/aabb/aabb.js +0 -2
  311. package/dist/math/aabb/aabb.js.map +0 -1
  312. package/dist/math/aabb/constants/functions.d.ts +0 -15
  313. package/dist/math/aabb/constants/functions.js +0 -76
  314. package/dist/math/aabb/constants/functions.js.map +0 -1
  315. package/dist/math/aabb/constants/index.d.ts +0 -3
  316. package/dist/math/aabb/constants/index.js +0 -25
  317. package/dist/math/aabb/constants/index.js.map +0 -1
  318. package/dist/math/aabb/constants/layout.d.ts +0 -1
  319. package/dist/math/aabb/constants/layout.js +0 -25
  320. package/dist/math/aabb/constants/layout.js.map +0 -1
  321. package/dist/math/aabb/constants/schema.d.ts +0 -33
  322. package/dist/math/aabb/constants/schema.js +0 -37
  323. package/dist/math/aabb/constants/schema.js.map +0 -1
  324. package/dist/math/aabb/functions.js.map +0 -1
  325. package/dist/math/aabb/lineIntersection.d.ts +0 -10
  326. package/dist/math/aabb/lineIntersection.js +0 -42
  327. package/dist/math/aabb/lineIntersection.js.map +0 -1
  328. package/dist/math/aabb-face/aabb-face.d.ts +0 -4
  329. package/dist/math/aabb-face/aabb-face.js +0 -23
  330. package/dist/math/aabb-face/aabb-face.js.map +0 -1
  331. package/dist/math/aabb-face/aabb-face.test.js +0 -54
  332. package/dist/math/aabb-face/aabb-face.test.js.map +0 -1
  333. package/dist/math/aabb-face/constants/functions.d.ts +0 -47
  334. package/dist/math/aabb-face/constants/functions.js +0 -148
  335. package/dist/math/aabb-face/constants/functions.js.map +0 -1
  336. package/dist/math/aabb-face/constants/index.d.ts +0 -2
  337. package/dist/math/aabb-face/constants/index.js +0 -24
  338. package/dist/math/aabb-face/constants/index.js.map +0 -1
  339. package/dist/math/aabb-face/constants/schema.d.ts +0 -5
  340. package/dist/math/aabb-face/constants/schema.js +0 -27
  341. package/dist/math/aabb-face/constants/schema.js.map +0 -1
  342. package/dist/math/aabb-face/face.d.ts +0 -51
  343. package/dist/math/aabb-face/face.js +0 -110
  344. package/dist/math/aabb-face/face.js.map +0 -1
  345. package/dist/math/aabb-face/face.test.js +0 -94
  346. package/dist/math/aabb-face/face.test.js.map +0 -1
  347. package/dist/math/aabb-face/functions.d.ts +0 -47
  348. package/dist/math/aabb-face/functions.js +0 -148
  349. package/dist/math/aabb-face/functions.js.map +0 -1
  350. package/dist/math/aabb-face/index.d.ts +0 -4
  351. package/dist/math/aabb-face/index.js +0 -23
  352. package/dist/math/aabb-face/index.js.map +0 -1
  353. package/dist/math/aabb-face/public.d.ts +0 -2
  354. package/dist/math/aabb-face/public.js +0 -24
  355. package/dist/math/aabb-face/public.js.map +0 -1
  356. package/dist/math/aabb-face/schema.d.ts +0 -5
  357. package/dist/math/aabb-face/schema.js +0 -27
  358. package/dist/math/aabb-face/schema.js.map +0 -1
  359. package/dist/math/box/box.d.ts +0 -50
  360. package/dist/math/box/box.js +0 -23
  361. package/dist/math/box/box.js.map +0 -1
  362. package/dist/math/f32/constants/index.d.ts +0 -1
  363. package/dist/math/f32/constants/index.js +0 -23
  364. package/dist/math/f32/constants/index.js.map +0 -1
  365. package/dist/math/f32/constants/schema.d.ts +0 -5
  366. package/dist/math/f32/constants/schema.js +0 -24
  367. package/dist/math/f32/constants/schema.js.map +0 -1
  368. package/dist/math/f32/f32.d.ts +0 -4
  369. package/dist/math/f32/f32.js +0 -23
  370. package/dist/math/f32/f32.js.map +0 -1
  371. package/dist/math/face/face.d.ts +0 -51
  372. package/dist/math/face/face.js +0 -110
  373. package/dist/math/face/face.js.map +0 -1
  374. package/dist/math/face/face.test.js +0 -94
  375. package/dist/math/face/face.test.js.map +0 -1
  376. package/dist/math/i32/constants/index.d.ts +0 -1
  377. package/dist/math/i32/constants/index.js +0 -23
  378. package/dist/math/i32/constants/index.js.map +0 -1
  379. package/dist/math/i32/constants/schema.d.ts +0 -6
  380. package/dist/math/i32/constants/schema.js +0 -24
  381. package/dist/math/i32/constants/schema.js.map +0 -1
  382. package/dist/math/i32/i32.d.ts +0 -4
  383. package/dist/math/i32/i32.js +0 -23
  384. package/dist/math/i32/i32.js.map +0 -1
  385. package/dist/math/line2/constants/functions.d.ts +0 -5
  386. package/dist/math/line2/constants/functions.js +0 -61
  387. package/dist/math/line2/constants/functions.js.map +0 -1
  388. package/dist/math/line2/constants/index.d.ts +0 -3
  389. package/dist/math/line2/constants/index.js +0 -25
  390. package/dist/math/line2/constants/index.js.map +0 -1
  391. package/dist/math/line2/constants/layout.d.ts +0 -1
  392. package/dist/math/line2/constants/layout.js +0 -25
  393. package/dist/math/line2/constants/layout.js.map +0 -1
  394. package/dist/math/line2/constants/schema.d.ts +0 -33
  395. package/dist/math/line2/constants/schema.js +0 -37
  396. package/dist/math/line2/constants/schema.js.map +0 -1
  397. package/dist/math/line2/line2.d.ts +0 -4
  398. package/dist/math/line2/line2.js +0 -23
  399. package/dist/math/line2/line2.js.map +0 -1
  400. package/dist/math/line3/constants/functions.d.ts +0 -17
  401. package/dist/math/line3/constants/functions.js +0 -70
  402. package/dist/math/line3/constants/functions.js.map +0 -1
  403. package/dist/math/line3/constants/index.d.ts +0 -3
  404. package/dist/math/line3/constants/index.js +0 -25
  405. package/dist/math/line3/constants/index.js.map +0 -1
  406. package/dist/math/line3/constants/layout.d.ts +0 -1
  407. package/dist/math/line3/constants/layout.js +0 -25
  408. package/dist/math/line3/constants/layout.js.map +0 -1
  409. package/dist/math/line3/constants/schema.d.ts +0 -33
  410. package/dist/math/line3/constants/schema.js +0 -37
  411. package/dist/math/line3/constants/schema.js.map +0 -1
  412. package/dist/math/line3/line3.d.ts +0 -4
  413. package/dist/math/line3/line3.js +0 -23
  414. package/dist/math/line3/line3.js.map +0 -1
  415. package/dist/math/mat4x4/constants/functions.d.ts +0 -23
  416. package/dist/math/mat4x4/constants/functions.js +0 -236
  417. package/dist/math/mat4x4/constants/functions.js.map +0 -1
  418. package/dist/math/mat4x4/constants/index.d.ts +0 -3
  419. package/dist/math/mat4x4/constants/index.js +0 -25
  420. package/dist/math/mat4x4/constants/index.js.map +0 -1
  421. package/dist/math/mat4x4/constants/layout.d.ts +0 -1
  422. package/dist/math/mat4x4/constants/layout.js +0 -25
  423. package/dist/math/mat4x4/constants/layout.js.map +0 -1
  424. package/dist/math/mat4x4/constants/schema.d.ts +0 -11
  425. package/dist/math/mat4x4/constants/schema.js +0 -30
  426. package/dist/math/mat4x4/constants/schema.js.map +0 -1
  427. package/dist/math/mat4x4/mat4x4.d.ts +0 -26
  428. package/dist/math/mat4x4/mat4x4.js +0 -45
  429. package/dist/math/mat4x4/mat4x4.js.map +0 -1
  430. package/dist/math/picking/face.js +0 -2
  431. package/dist/math/picking/face.js.map +0 -1
  432. package/dist/math/picking/get-closest-entity-to-line.d.ts +0 -4
  433. package/dist/math/picking/get-closest-entity-to-line.js +0 -30
  434. package/dist/math/picking/get-closest-entity-to-line.js.map +0 -1
  435. package/dist/math/picking/get-closest-entity-to-point.d.ts +0 -4
  436. package/dist/math/picking/get-closest-entity-to-point.js +0 -27
  437. package/dist/math/picking/get-closest-entity-to-point.js.map +0 -1
  438. package/dist/math/picking/get-intersecting-entities.d.ts +0 -12
  439. package/dist/math/picking/get-intersecting-entities.js +0 -15
  440. package/dist/math/picking/get-intersecting-entities.js.map +0 -1
  441. package/dist/math/picking/getClosestEntityToLine.d.ts +0 -4
  442. package/dist/math/picking/getClosestEntityToLine.js +0 -29
  443. package/dist/math/picking/getClosestEntityToLine.js.map +0 -1
  444. package/dist/math/picking/getClosestEntityToPoint.d.ts +0 -4
  445. package/dist/math/picking/getClosestEntityToPoint.js +0 -27
  446. package/dist/math/picking/getClosestEntityToPoint.js.map +0 -1
  447. package/dist/math/picking/getIntersectingEntities.d.ts +0 -12
  448. package/dist/math/picking/getIntersectingEntities.js +0 -15
  449. package/dist/math/picking/getIntersectingEntities.js.map +0 -1
  450. package/dist/math/picking/index.d.ts +0 -5
  451. package/dist/math/picking/index.js +0 -27
  452. package/dist/math/picking/index.js.map +0 -1
  453. package/dist/math/picking/pick-from-tables.d.ts +0 -19
  454. package/dist/math/picking/pick-from-tables.js +0 -63
  455. package/dist/math/picking/pick-from-tables.js.map +0 -1
  456. package/dist/math/picking/pick-result.d.ts +0 -12
  457. package/dist/math/picking/pick-result.js.map +0 -1
  458. package/dist/math/plane/constants/functions.d.ts +0 -16
  459. package/dist/math/plane/constants/functions.js +0 -54
  460. package/dist/math/plane/constants/functions.js.map +0 -1
  461. package/dist/math/plane/constants/index.d.ts +0 -3
  462. package/dist/math/plane/constants/index.js +0 -25
  463. package/dist/math/plane/constants/index.js.map +0 -1
  464. package/dist/math/plane/constants/layout.d.ts +0 -1
  465. package/dist/math/plane/constants/layout.js +0 -25
  466. package/dist/math/plane/constants/layout.js.map +0 -1
  467. package/dist/math/plane/constants/schema.d.ts +0 -24
  468. package/dist/math/plane/constants/schema.js +0 -33
  469. package/dist/math/plane/constants/schema.js.map +0 -1
  470. package/dist/math/plane/plane.d.ts +0 -4
  471. package/dist/math/plane/plane.js +0 -23
  472. package/dist/math/plane/plane.js.map +0 -1
  473. package/dist/math/quat/constants/index.d.ts +0 -3
  474. package/dist/math/quat/constants/index.js +0 -25
  475. package/dist/math/quat/constants/index.js.map +0 -1
  476. package/dist/math/quat/constants/layout.d.ts +0 -1
  477. package/dist/math/quat/constants/layout.js +0 -25
  478. package/dist/math/quat/constants/layout.js.map +0 -1
  479. package/dist/math/quat/constants/schema.d.ts +0 -11
  480. package/dist/math/quat/constants/schema.js +0 -30
  481. package/dist/math/quat/constants/schema.js.map +0 -1
  482. package/dist/math/quat/quat.d.ts +0 -4
  483. package/dist/math/quat/quat.js +0 -23
  484. package/dist/math/quat/quat.js.map +0 -1
  485. package/dist/math/transform/debug-inverse.js +0 -28
  486. package/dist/math/transform/debug-inverse.js.map +0 -1
  487. package/dist/math/transform/debug-quat.js +0 -23
  488. package/dist/math/transform/debug-quat.js.map +0 -1
  489. package/dist/math/transform/debug-test.js +0 -34
  490. package/dist/math/transform/debug-test.js.map +0 -1
  491. package/dist/math/transform/transform.d.ts +0 -58
  492. package/dist/math/transform/transform.js +0 -101
  493. package/dist/math/transform/transform.js.map +0 -1
  494. package/dist/math/transform/transform.test.d.ts +0 -1
  495. package/dist/math/transform/transform.test.js +0 -309
  496. package/dist/math/transform/transform.test.js.map +0 -1
  497. package/dist/math/u32/constants/index.d.ts +0 -1
  498. package/dist/math/u32/constants/index.js +0 -23
  499. package/dist/math/u32/constants/index.js.map +0 -1
  500. package/dist/math/u32/constants/schema.d.ts +0 -6
  501. package/dist/math/u32/constants/schema.js +0 -24
  502. package/dist/math/u32/constants/schema.js.map +0 -1
  503. package/dist/math/u32/u32.d.ts +0 -4
  504. package/dist/math/u32/u32.js +0 -23
  505. package/dist/math/u32/u32.js.map +0 -1
  506. package/dist/math/vec2/constants/functions.d.ts +0 -48
  507. package/dist/math/vec2/constants/functions.js +0 -104
  508. package/dist/math/vec2/constants/functions.js.map +0 -1
  509. package/dist/math/vec2/constants/index.d.ts +0 -3
  510. package/dist/math/vec2/constants/index.js +0 -25
  511. package/dist/math/vec2/constants/index.js.map +0 -1
  512. package/dist/math/vec2/constants/layout.d.ts +0 -1
  513. package/dist/math/vec2/constants/layout.js +0 -25
  514. package/dist/math/vec2/constants/layout.js.map +0 -1
  515. package/dist/math/vec2/constants/schema.d.ts +0 -11
  516. package/dist/math/vec2/constants/schema.js +0 -30
  517. package/dist/math/vec2/constants/schema.js.map +0 -1
  518. package/dist/math/vec2/functions/abs.d.ts +0 -2
  519. package/dist/math/vec2/functions/abs.js +0 -23
  520. package/dist/math/vec2/functions/abs.js.map +0 -1
  521. package/dist/math/vec2/functions/acos.d.ts +0 -2
  522. package/dist/math/vec2/functions/acos.js +0 -23
  523. package/dist/math/vec2/functions/acos.js.map +0 -1
  524. package/dist/math/vec2/functions/acosh.d.ts +0 -2
  525. package/dist/math/vec2/functions/acosh.js +0 -23
  526. package/dist/math/vec2/functions/acosh.js.map +0 -1
  527. package/dist/math/vec2/functions/add.d.ts +0 -2
  528. package/dist/math/vec2/functions/add.js +0 -23
  529. package/dist/math/vec2/functions/add.js.map +0 -1
  530. package/dist/math/vec2/functions/asin.d.ts +0 -2
  531. package/dist/math/vec2/functions/asin.js +0 -23
  532. package/dist/math/vec2/functions/asin.js.map +0 -1
  533. package/dist/math/vec2/functions/asinh.d.ts +0 -2
  534. package/dist/math/vec2/functions/asinh.js +0 -23
  535. package/dist/math/vec2/functions/asinh.js.map +0 -1
  536. package/dist/math/vec2/functions/atan.d.ts +0 -2
  537. package/dist/math/vec2/functions/atan.js +0 -23
  538. package/dist/math/vec2/functions/atan.js.map +0 -1
  539. package/dist/math/vec2/functions/atanh.d.ts +0 -2
  540. package/dist/math/vec2/functions/atanh.js +0 -23
  541. package/dist/math/vec2/functions/atanh.js.map +0 -1
  542. package/dist/math/vec2/functions/ceil.d.ts +0 -2
  543. package/dist/math/vec2/functions/ceil.js +0 -23
  544. package/dist/math/vec2/functions/ceil.js.map +0 -1
  545. package/dist/math/vec2/functions/clamp.d.ts +0 -2
  546. package/dist/math/vec2/functions/clamp.js +0 -25
  547. package/dist/math/vec2/functions/clamp.js.map +0 -1
  548. package/dist/math/vec2/functions/cos.d.ts +0 -2
  549. package/dist/math/vec2/functions/cos.js +0 -23
  550. package/dist/math/vec2/functions/cos.js.map +0 -1
  551. package/dist/math/vec2/functions/cosh.d.ts +0 -2
  552. package/dist/math/vec2/functions/cosh.js +0 -23
  553. package/dist/math/vec2/functions/cosh.js.map +0 -1
  554. package/dist/math/vec2/functions/distance.d.ts +0 -2
  555. package/dist/math/vec2/functions/distance.js +0 -25
  556. package/dist/math/vec2/functions/distance.js.map +0 -1
  557. package/dist/math/vec2/functions/dot.d.ts +0 -2
  558. package/dist/math/vec2/functions/dot.js +0 -23
  559. package/dist/math/vec2/functions/dot.js.map +0 -1
  560. package/dist/math/vec2/functions/exp-2.d.ts +0 -2
  561. package/dist/math/vec2/functions/exp-2.js +0 -23
  562. package/dist/math/vec2/functions/exp-2.js.map +0 -1
  563. package/dist/math/vec2/functions/exp.d.ts +0 -2
  564. package/dist/math/vec2/functions/exp.js +0 -23
  565. package/dist/math/vec2/functions/exp.js.map +0 -1
  566. package/dist/math/vec2/functions/face-forward.d.ts +0 -2
  567. package/dist/math/vec2/functions/face-forward.js +0 -25
  568. package/dist/math/vec2/functions/face-forward.js.map +0 -1
  569. package/dist/math/vec2/functions/floor.d.ts +0 -2
  570. package/dist/math/vec2/functions/floor.js +0 -23
  571. package/dist/math/vec2/functions/floor.js.map +0 -1
  572. package/dist/math/vec2/functions/fract.d.ts +0 -2
  573. package/dist/math/vec2/functions/fract.js +0 -23
  574. package/dist/math/vec2/functions/fract.js.map +0 -1
  575. package/dist/math/vec2/functions/functions.d.ts +0 -48
  576. package/dist/math/vec2/functions/functions.js +0 -104
  577. package/dist/math/vec2/functions/functions.js.map +0 -1
  578. package/dist/math/vec2/functions/index.d.ts +0 -3
  579. package/dist/math/vec2/functions/index.js +0 -25
  580. package/dist/math/vec2/functions/index.js.map +0 -1
  581. package/dist/math/vec2/functions/layout.d.ts +0 -1
  582. package/dist/math/vec2/functions/layout.js +0 -25
  583. package/dist/math/vec2/functions/layout.js.map +0 -1
  584. package/dist/math/vec2/functions/length.d.ts +0 -2
  585. package/dist/math/vec2/functions/length.js +0 -23
  586. package/dist/math/vec2/functions/length.js.map +0 -1
  587. package/dist/math/vec2/functions/log-2.d.ts +0 -2
  588. package/dist/math/vec2/functions/log-2.js +0 -23
  589. package/dist/math/vec2/functions/log-2.js.map +0 -1
  590. package/dist/math/vec2/functions/log.d.ts +0 -2
  591. package/dist/math/vec2/functions/log.js +0 -23
  592. package/dist/math/vec2/functions/log.js.map +0 -1
  593. package/dist/math/vec2/functions/max.d.ts +0 -2
  594. package/dist/math/vec2/functions/max.js +0 -23
  595. package/dist/math/vec2/functions/max.js.map +0 -1
  596. package/dist/math/vec2/functions/min.d.ts +0 -2
  597. package/dist/math/vec2/functions/min.js +0 -23
  598. package/dist/math/vec2/functions/min.js.map +0 -1
  599. package/dist/math/vec2/functions/mix.d.ts +0 -2
  600. package/dist/math/vec2/functions/mix.js +0 -26
  601. package/dist/math/vec2/functions/mix.js.map +0 -1
  602. package/dist/math/vec2/functions/mod.d.ts +0 -2
  603. package/dist/math/vec2/functions/mod.js +0 -26
  604. package/dist/math/vec2/functions/mod.js.map +0 -1
  605. package/dist/math/vec2/functions/modf.d.ts +0 -5
  606. package/dist/math/vec2/functions/modf.js +0 -26
  607. package/dist/math/vec2/functions/modf.js.map +0 -1
  608. package/dist/math/vec2/functions/negate.d.ts +0 -2
  609. package/dist/math/vec2/functions/negate.js +0 -23
  610. package/dist/math/vec2/functions/negate.js.map +0 -1
  611. package/dist/math/vec2/functions/normalize.d.ts +0 -2
  612. package/dist/math/vec2/functions/normalize.js +0 -28
  613. package/dist/math/vec2/functions/normalize.js.map +0 -1
  614. package/dist/math/vec2/functions/pow.d.ts +0 -2
  615. package/dist/math/vec2/functions/pow.js +0 -26
  616. package/dist/math/vec2/functions/pow.js.map +0 -1
  617. package/dist/math/vec2/functions/reflect.d.ts +0 -2
  618. package/dist/math/vec2/functions/reflect.js +0 -29
  619. package/dist/math/vec2/functions/reflect.js.map +0 -1
  620. package/dist/math/vec2/functions/refract.d.ts +0 -2
  621. package/dist/math/vec2/functions/refract.js +0 -34
  622. package/dist/math/vec2/functions/refract.js.map +0 -1
  623. package/dist/math/vec2/functions/round.d.ts +0 -2
  624. package/dist/math/vec2/functions/round.js +0 -23
  625. package/dist/math/vec2/functions/round.js.map +0 -1
  626. package/dist/math/vec2/functions/scale.d.ts +0 -2
  627. package/dist/math/vec2/functions/scale.js +0 -23
  628. package/dist/math/vec2/functions/scale.js.map +0 -1
  629. package/dist/math/vec2/functions/schema.d.ts +0 -11
  630. package/dist/math/vec2/functions/schema.js +0 -30
  631. package/dist/math/vec2/functions/schema.js.map +0 -1
  632. package/dist/math/vec2/functions/sign.d.ts +0 -2
  633. package/dist/math/vec2/functions/sign.js +0 -23
  634. package/dist/math/vec2/functions/sign.js.map +0 -1
  635. package/dist/math/vec2/functions/sin.d.ts +0 -2
  636. package/dist/math/vec2/functions/sin.js +0 -23
  637. package/dist/math/vec2/functions/sin.js.map +0 -1
  638. package/dist/math/vec2/functions/sinh.d.ts +0 -2
  639. package/dist/math/vec2/functions/sinh.js +0 -23
  640. package/dist/math/vec2/functions/sinh.js.map +0 -1
  641. package/dist/math/vec2/functions/smooth-step.d.ts +0 -2
  642. package/dist/math/vec2/functions/smooth-step.js +0 -27
  643. package/dist/math/vec2/functions/smooth-step.js.map +0 -1
  644. package/dist/math/vec2/functions/sqrt.d.ts +0 -2
  645. package/dist/math/vec2/functions/sqrt.js +0 -23
  646. package/dist/math/vec2/functions/sqrt.js.map +0 -1
  647. package/dist/math/vec2/functions/step.d.ts +0 -2
  648. package/dist/math/vec2/functions/step.js +0 -26
  649. package/dist/math/vec2/functions/step.js.map +0 -1
  650. package/dist/math/vec2/functions/subtract.d.ts +0 -2
  651. package/dist/math/vec2/functions/subtract.js +0 -23
  652. package/dist/math/vec2/functions/subtract.js.map +0 -1
  653. package/dist/math/vec2/functions/tan.d.ts +0 -2
  654. package/dist/math/vec2/functions/tan.js +0 -23
  655. package/dist/math/vec2/functions/tan.js.map +0 -1
  656. package/dist/math/vec2/functions/tanh.d.ts +0 -2
  657. package/dist/math/vec2/functions/tanh.js +0 -23
  658. package/dist/math/vec2/functions/tanh.js.map +0 -1
  659. package/dist/math/vec2/functions/trunc.d.ts +0 -2
  660. package/dist/math/vec2/functions/trunc.js +0 -23
  661. package/dist/math/vec2/functions/trunc.js.map +0 -1
  662. package/dist/math/vec2/vec2.d.ts +0 -4
  663. package/dist/math/vec2/vec2.js +0 -23
  664. package/dist/math/vec2/vec2.js.map +0 -1
  665. package/dist/math/vec3/constants/functions.d.ts +0 -59
  666. package/dist/math/vec3/constants/functions.js +0 -159
  667. package/dist/math/vec3/constants/functions.js.map +0 -1
  668. package/dist/math/vec3/constants/index.d.ts +0 -3
  669. package/dist/math/vec3/constants/index.js +0 -25
  670. package/dist/math/vec3/constants/index.js.map +0 -1
  671. package/dist/math/vec3/constants/layout.d.ts +0 -1
  672. package/dist/math/vec3/constants/layout.js +0 -25
  673. package/dist/math/vec3/constants/layout.js.map +0 -1
  674. package/dist/math/vec3/constants/schema.d.ts +0 -11
  675. package/dist/math/vec3/constants/schema.js +0 -30
  676. package/dist/math/vec3/constants/schema.js.map +0 -1
  677. package/dist/math/vec3/functions/abs.d.ts +0 -2
  678. package/dist/math/vec3/functions/abs.js +0 -23
  679. package/dist/math/vec3/functions/abs.js.map +0 -1
  680. package/dist/math/vec3/functions/acos.d.ts +0 -2
  681. package/dist/math/vec3/functions/acos.js +0 -23
  682. package/dist/math/vec3/functions/acos.js.map +0 -1
  683. package/dist/math/vec3/functions/acosh.d.ts +0 -2
  684. package/dist/math/vec3/functions/acosh.js +0 -23
  685. package/dist/math/vec3/functions/acosh.js.map +0 -1
  686. package/dist/math/vec3/functions/add.d.ts +0 -2
  687. package/dist/math/vec3/functions/add.js +0 -27
  688. package/dist/math/vec3/functions/add.js.map +0 -1
  689. package/dist/math/vec3/functions/asin.d.ts +0 -2
  690. package/dist/math/vec3/functions/asin.js +0 -23
  691. package/dist/math/vec3/functions/asin.js.map +0 -1
  692. package/dist/math/vec3/functions/asinh.d.ts +0 -2
  693. package/dist/math/vec3/functions/asinh.js +0 -23
  694. package/dist/math/vec3/functions/asinh.js.map +0 -1
  695. package/dist/math/vec3/functions/atan.d.ts +0 -2
  696. package/dist/math/vec3/functions/atan.js +0 -23
  697. package/dist/math/vec3/functions/atan.js.map +0 -1
  698. package/dist/math/vec3/functions/atanh.d.ts +0 -2
  699. package/dist/math/vec3/functions/atanh.js +0 -23
  700. package/dist/math/vec3/functions/atanh.js.map +0 -1
  701. package/dist/math/vec3/functions/ceil.d.ts +0 -2
  702. package/dist/math/vec3/functions/ceil.js +0 -23
  703. package/dist/math/vec3/functions/ceil.js.map +0 -1
  704. package/dist/math/vec3/functions/clamp.d.ts +0 -2
  705. package/dist/math/vec3/functions/clamp.js +0 -25
  706. package/dist/math/vec3/functions/clamp.js.map +0 -1
  707. package/dist/math/vec3/functions/cos.d.ts +0 -2
  708. package/dist/math/vec3/functions/cos.js +0 -23
  709. package/dist/math/vec3/functions/cos.js.map +0 -1
  710. package/dist/math/vec3/functions/cosh.d.ts +0 -2
  711. package/dist/math/vec3/functions/cosh.js +0 -23
  712. package/dist/math/vec3/functions/cosh.js.map +0 -1
  713. package/dist/math/vec3/functions/cross.d.ts +0 -2
  714. package/dist/math/vec3/functions/cross.js +0 -27
  715. package/dist/math/vec3/functions/cross.js.map +0 -1
  716. package/dist/math/vec3/functions/distance-squared.d.ts +0 -2
  717. package/dist/math/vec3/functions/distance-squared.js +0 -28
  718. package/dist/math/vec3/functions/distance-squared.js.map +0 -1
  719. package/dist/math/vec3/functions/distance.d.ts +0 -2
  720. package/dist/math/vec3/functions/distance.js +0 -25
  721. package/dist/math/vec3/functions/distance.js.map +0 -1
  722. package/dist/math/vec3/functions/dot.d.ts +0 -2
  723. package/dist/math/vec3/functions/dot.js +0 -23
  724. package/dist/math/vec3/functions/dot.js.map +0 -1
  725. package/dist/math/vec3/functions/equals.d.ts +0 -2
  726. package/dist/math/vec3/functions/equals.js +0 -23
  727. package/dist/math/vec3/functions/equals.js.map +0 -1
  728. package/dist/math/vec3/functions/exp-2.d.ts +0 -2
  729. package/dist/math/vec3/functions/exp-2.js +0 -23
  730. package/dist/math/vec3/functions/exp-2.js.map +0 -1
  731. package/dist/math/vec3/functions/exp.d.ts +0 -2
  732. package/dist/math/vec3/functions/exp.js +0 -23
  733. package/dist/math/vec3/functions/exp.js.map +0 -1
  734. package/dist/math/vec3/functions/face-forward.d.ts +0 -2
  735. package/dist/math/vec3/functions/face-forward.js +0 -25
  736. package/dist/math/vec3/functions/face-forward.js.map +0 -1
  737. package/dist/math/vec3/functions/floor.d.ts +0 -2
  738. package/dist/math/vec3/functions/floor.js +0 -23
  739. package/dist/math/vec3/functions/floor.js.map +0 -1
  740. package/dist/math/vec3/functions/fract.d.ts +0 -2
  741. package/dist/math/vec3/functions/fract.js +0 -27
  742. package/dist/math/vec3/functions/fract.js.map +0 -1
  743. package/dist/math/vec3/functions/index.d.ts +0 -54
  744. package/dist/math/vec3/functions/index.js +0 -76
  745. package/dist/math/vec3/functions/index.js.map +0 -1
  746. package/dist/math/vec3/functions/layout.d.ts +0 -1
  747. package/dist/math/vec3/functions/layout.js +0 -25
  748. package/dist/math/vec3/functions/layout.js.map +0 -1
  749. package/dist/math/vec3/functions/length-squared.d.ts +0 -2
  750. package/dist/math/vec3/functions/length-squared.js +0 -23
  751. package/dist/math/vec3/functions/length-squared.js.map +0 -1
  752. package/dist/math/vec3/functions/length.d.ts +0 -2
  753. package/dist/math/vec3/functions/length.js +0 -23
  754. package/dist/math/vec3/functions/length.js.map +0 -1
  755. package/dist/math/vec3/functions/log-2.d.ts +0 -2
  756. package/dist/math/vec3/functions/log-2.js +0 -23
  757. package/dist/math/vec3/functions/log-2.js.map +0 -1
  758. package/dist/math/vec3/functions/log.d.ts +0 -2
  759. package/dist/math/vec3/functions/log.js +0 -23
  760. package/dist/math/vec3/functions/log.js.map +0 -1
  761. package/dist/math/vec3/functions/max.d.ts +0 -2
  762. package/dist/math/vec3/functions/max.js +0 -27
  763. package/dist/math/vec3/functions/max.js.map +0 -1
  764. package/dist/math/vec3/functions/min.d.ts +0 -2
  765. package/dist/math/vec3/functions/min.js +0 -27
  766. package/dist/math/vec3/functions/min.js.map +0 -1
  767. package/dist/math/vec3/functions/mix.d.ts +0 -2
  768. package/dist/math/vec3/functions/mix.js +0 -27
  769. package/dist/math/vec3/functions/mix.js.map +0 -1
  770. package/dist/math/vec3/functions/mod.d.ts +0 -2
  771. package/dist/math/vec3/functions/mod.js +0 -27
  772. package/dist/math/vec3/functions/mod.js.map +0 -1
  773. package/dist/math/vec3/functions/modf.d.ts +0 -5
  774. package/dist/math/vec3/functions/modf.js +0 -26
  775. package/dist/math/vec3/functions/modf.js.map +0 -1
  776. package/dist/math/vec3/functions/multiply.d.ts +0 -5
  777. package/dist/math/vec3/functions/multiply.js +0 -30
  778. package/dist/math/vec3/functions/multiply.js.map +0 -1
  779. package/dist/math/vec3/functions/negate.d.ts +0 -2
  780. package/dist/math/vec3/functions/negate.js +0 -23
  781. package/dist/math/vec3/functions/negate.js.map +0 -1
  782. package/dist/math/vec3/functions/normalize.d.ts +0 -2
  783. package/dist/math/vec3/functions/normalize.js +0 -28
  784. package/dist/math/vec3/functions/normalize.js.map +0 -1
  785. package/dist/math/vec3/functions/one.d.ts +0 -2
  786. package/dist/math/vec3/functions/one.js +0 -23
  787. package/dist/math/vec3/functions/one.js.map +0 -1
  788. package/dist/math/vec3/functions/pow.d.ts +0 -2
  789. package/dist/math/vec3/functions/pow.js +0 -27
  790. package/dist/math/vec3/functions/pow.js.map +0 -1
  791. package/dist/math/vec3/functions/random.d.ts +0 -2
  792. package/dist/math/vec3/functions/random.js +0 -25
  793. package/dist/math/vec3/functions/random.js.map +0 -1
  794. package/dist/math/vec3/functions/reflect.d.ts +0 -2
  795. package/dist/math/vec3/functions/reflect.js +0 -29
  796. package/dist/math/vec3/functions/reflect.js.map +0 -1
  797. package/dist/math/vec3/functions/refract.d.ts +0 -2
  798. package/dist/math/vec3/functions/refract.js +0 -34
  799. package/dist/math/vec3/functions/refract.js.map +0 -1
  800. package/dist/math/vec3/functions/round.d.ts +0 -2
  801. package/dist/math/vec3/functions/round.js +0 -23
  802. package/dist/math/vec3/functions/round.js.map +0 -1
  803. package/dist/math/vec3/functions/scale.d.ts +0 -2
  804. package/dist/math/vec3/functions/scale.js +0 -23
  805. package/dist/math/vec3/functions/scale.js.map +0 -1
  806. package/dist/math/vec3/functions/schema.d.ts +0 -11
  807. package/dist/math/vec3/functions/schema.js +0 -30
  808. package/dist/math/vec3/functions/schema.js.map +0 -1
  809. package/dist/math/vec3/functions/sign.d.ts +0 -2
  810. package/dist/math/vec3/functions/sign.js +0 -23
  811. package/dist/math/vec3/functions/sign.js.map +0 -1
  812. package/dist/math/vec3/functions/sin.d.ts +0 -2
  813. package/dist/math/vec3/functions/sin.js +0 -23
  814. package/dist/math/vec3/functions/sin.js.map +0 -1
  815. package/dist/math/vec3/functions/sinh.d.ts +0 -2
  816. package/dist/math/vec3/functions/sinh.js +0 -23
  817. package/dist/math/vec3/functions/sinh.js.map +0 -1
  818. package/dist/math/vec3/functions/smooth-step.d.ts +0 -2
  819. package/dist/math/vec3/functions/smooth-step.js +0 -32
  820. package/dist/math/vec3/functions/smooth-step.js.map +0 -1
  821. package/dist/math/vec3/functions/sqrt.d.ts +0 -2
  822. package/dist/math/vec3/functions/sqrt.js +0 -23
  823. package/dist/math/vec3/functions/sqrt.js.map +0 -1
  824. package/dist/math/vec3/functions/step.d.ts +0 -2
  825. package/dist/math/vec3/functions/step.js +0 -27
  826. package/dist/math/vec3/functions/step.js.map +0 -1
  827. package/dist/math/vec3/functions/subtract.d.ts +0 -2
  828. package/dist/math/vec3/functions/subtract.js +0 -27
  829. package/dist/math/vec3/functions/subtract.js.map +0 -1
  830. package/dist/math/vec3/functions/tan.d.ts +0 -2
  831. package/dist/math/vec3/functions/tan.js +0 -23
  832. package/dist/math/vec3/functions/tan.js.map +0 -1
  833. package/dist/math/vec3/functions/tanh.d.ts +0 -2
  834. package/dist/math/vec3/functions/tanh.js +0 -23
  835. package/dist/math/vec3/functions/tanh.js.map +0 -1
  836. package/dist/math/vec3/functions/trunc.d.ts +0 -2
  837. package/dist/math/vec3/functions/trunc.js +0 -23
  838. package/dist/math/vec3/functions/trunc.js.map +0 -1
  839. package/dist/math/vec3/functions/zero.d.ts +0 -2
  840. package/dist/math/vec3/functions/zero.js +0 -23
  841. package/dist/math/vec3/functions/zero.js.map +0 -1
  842. package/dist/math/vec3/vec3.d.ts +0 -4
  843. package/dist/math/vec3/vec3.js +0 -23
  844. package/dist/math/vec3/vec3.js.map +0 -1
  845. package/dist/math/vec4/constants/functions.d.ts +0 -49
  846. package/dist/math/vec4/constants/functions.js +0 -150
  847. package/dist/math/vec4/constants/functions.js.map +0 -1
  848. package/dist/math/vec4/constants/index.d.ts +0 -3
  849. package/dist/math/vec4/constants/index.js +0 -25
  850. package/dist/math/vec4/constants/index.js.map +0 -1
  851. package/dist/math/vec4/constants/layout.d.ts +0 -1
  852. package/dist/math/vec4/constants/layout.js +0 -25
  853. package/dist/math/vec4/constants/layout.js.map +0 -1
  854. package/dist/math/vec4/constants/schema.d.ts +0 -11
  855. package/dist/math/vec4/constants/schema.js +0 -30
  856. package/dist/math/vec4/constants/schema.js.map +0 -1
  857. package/dist/math/vec4/functions/abs.d.ts +0 -2
  858. package/dist/math/vec4/functions/abs.js +0 -23
  859. package/dist/math/vec4/functions/abs.js.map +0 -1
  860. package/dist/math/vec4/functions/ceil.d.ts +0 -2
  861. package/dist/math/vec4/functions/ceil.js +0 -23
  862. package/dist/math/vec4/functions/ceil.js.map +0 -1
  863. package/dist/math/vec4/functions/clamp.d.ts +0 -2
  864. package/dist/math/vec4/functions/clamp.js +0 -25
  865. package/dist/math/vec4/functions/clamp.js.map +0 -1
  866. package/dist/math/vec4/functions/floor.d.ts +0 -2
  867. package/dist/math/vec4/functions/floor.js +0 -23
  868. package/dist/math/vec4/functions/floor.js.map +0 -1
  869. package/dist/math/vec4/functions/layout.d.ts +0 -1
  870. package/dist/math/vec4/functions/layout.js +0 -25
  871. package/dist/math/vec4/functions/layout.js.map +0 -1
  872. package/dist/math/vec4/functions/max.d.ts +0 -2
  873. package/dist/math/vec4/functions/max.js +0 -28
  874. package/dist/math/vec4/functions/max.js.map +0 -1
  875. package/dist/math/vec4/functions/min.d.ts +0 -2
  876. package/dist/math/vec4/functions/min.js +0 -28
  877. package/dist/math/vec4/functions/min.js.map +0 -1
  878. package/dist/math/vec4/functions/round.d.ts +0 -2
  879. package/dist/math/vec4/functions/round.js +0 -23
  880. package/dist/math/vec4/functions/round.js.map +0 -1
  881. package/dist/math/vec4/functions/schema.d.ts +0 -11
  882. package/dist/math/vec4/functions/schema.js +0 -30
  883. package/dist/math/vec4/functions/schema.js.map +0 -1
  884. package/dist/math/vec4/functions/trunc.d.ts +0 -2
  885. package/dist/math/vec4/functions/trunc.js +0 -23
  886. package/dist/math/vec4/functions/trunc.js.map +0 -1
  887. package/dist/math/vec4/vec4.d.ts +0 -4
  888. package/dist/math/vec4/vec4.js +0 -23
  889. package/dist/math/vec4/vec4.js.map +0 -1
  890. package/dist/observe/create-observable-event.d.ts +0 -10
  891. package/dist/observe/create-observable-event.js +0 -22
  892. package/dist/observe/create-observable-event.js.map +0 -1
  893. package/dist/observe/create-observable-state.d.ts +0 -7
  894. package/dist/observe/create-observable-state.js +0 -27
  895. package/dist/observe/create-observable-state.js.map +0 -1
  896. package/dist/observe/types.d.ts +0 -17
  897. package/dist/observe/types.js +0 -2
  898. package/dist/observe/types.js.map +0 -1
  899. package/dist/old-ecs/privacy/helper-functions.d.ts +0 -43
  900. package/dist/old-ecs/privacy/helper-functions.js +0 -76
  901. package/dist/old-ecs/privacy/helper-functions.js.map +0 -1
  902. package/dist/old-ecs/privacy/helper-functions.test.d.ts +0 -1
  903. package/dist/old-ecs/privacy/helper-functions.test.js +0 -173
  904. package/dist/old-ecs/privacy/helper-functions.test.js.map +0 -1
  905. package/dist/schema/boolean.d.ts +0 -3
  906. package/dist/schema/boolean.js +0 -25
  907. package/dist/schema/boolean.js.map +0 -1
  908. package/dist/schema/f32.d.ts +0 -6
  909. package/dist/schema/f32.js +0 -6
  910. package/dist/schema/f32.js.map +0 -1
  911. package/dist/schema/f64.d.ts +0 -6
  912. package/dist/schema/f64.js +0 -6
  913. package/dist/schema/f64.js.map +0 -1
  914. package/dist/schema/i32.d.ts +0 -7
  915. package/dist/schema/i32.js +0 -7
  916. package/dist/schema/i32.js.map +0 -1
  917. package/dist/schema/schema/index.d.ts +0 -2
  918. package/dist/schema/schema/index.js +0 -23
  919. package/dist/schema/schema/index.js.map +0 -1
  920. package/dist/schema/schema/nullable.d.ts +0 -6
  921. package/dist/schema/schema/nullable.js +0 -6
  922. package/dist/schema/schema/nullable.js.map +0 -1
  923. package/dist/schema/schema/public.d.ts +0 -3
  924. package/dist/schema/schema/public.js +0 -25
  925. package/dist/schema/schema/public.js.map +0 -1
  926. package/dist/schema/schema/to-vertex-buffer-layout.d.ts +0 -56
  927. package/dist/schema/schema/to-vertex-buffer-layout.js +0 -143
  928. package/dist/schema/schema/to-vertex-buffer-layout.js.map +0 -1
  929. package/dist/schema/schema/types.d.ts +0 -150
  930. package/dist/schema/schema/types.js +0 -34
  931. package/dist/schema/schema/types.js.map +0 -1
  932. package/dist/schema/time.d.ts +0 -7
  933. package/dist/schema/time.js +0 -24
  934. package/dist/schema/time.js.map +0 -1
  935. package/dist/schema/true.d.ts +0 -6
  936. package/dist/schema/true.js +0 -2
  937. package/dist/schema/true.js.map +0 -1
  938. package/dist/schema/u32.d.ts +0 -7
  939. package/dist/schema/u32.js +0 -7
  940. package/dist/schema/u32.js.map +0 -1
  941. package/dist/table/constants/functions.d.ts +0 -3
  942. package/dist/table/constants/functions.js +0 -34
  943. package/dist/table/constants/functions.js.map +0 -1
  944. package/dist/table/constants/index.d.ts +0 -1
  945. package/dist/table/constants/index.js +0 -23
  946. package/dist/table/constants/index.js.map +0 -1
  947. /package/dist/{ecs/database/create-database.test.d.ts → debug-type-test.d.ts} +0 -0
  948. /package/dist/ecs/database/{replicate.test.d.ts → create-database-schema-test.d.ts} +0 -0
  949. /package/dist/ecs/database/{transactional-store/coalesce-transactions.test.d.ts → create-plugin-v2.test.d.ts} +0 -0
  950. /package/dist/ecs/database/{transactional-store/entity-id-preservation.test.d.ts → database-with-systems.test.d.ts} +0 -0
  951. /package/dist/ecs/{store/create-store.test.d.ts → database/database.plugin.create.test.OLD.d.ts} +0 -0
  952. /package/dist/ecs/{store/store-schema/create-store-schema-test.d.ts → database/database.plugin.create.test.d.ts} +0 -0
  953. /package/dist/ecs/{store/store-schema/create-store-schema.d.ts → database/database.plugin.test.d.ts} +0 -0
  954. /package/dist/ecs/{store/store-schema/index.d.ts → database/database.test copy.d.ts} +0 -0
  955. /package/dist/ecs/{store/store-schema/store-schema.d.ts → database/multi-param-inference-poc.test.d.ts} +0 -0
  956. /package/dist/ecs/{world/world-schema/create-world-schema-test.d.ts → database/overload-inference-poc.test.d.ts} +0 -0
  957. /package/dist/{graphics/camera/screen-to-world-ray.test.d.ts → ecs/database/test-exactkeys.d.ts} +0 -0
  958. /package/dist/{graphics/camera/world-to-screen.test.d.ts → ecs/database/type-inference-poc.test.d.ts} +0 -0
  959. /package/dist/{graphics/frame.d.ts → ecs/plugins/scheduler/create-scheduler-plugin.test.d.ts} +0 -0
  960. /package/dist/{graphics/get-web-gpu-device-and-context.d.ts → ecs/plugins/scheduler/type-inference-test.d.ts} +0 -0
  961. /package/dist/{graphics/graphics-context.d.ts → ecs/system/system-factory/public/create.test.d.ts} +0 -0
  962. /package/dist/{math/aabb-face/aabb-face.test.d.ts → ecs/system/world-schema/public/create.test.d.ts} +0 -0
  963. /package/dist/{math/aabb-face/face.test.d.ts → ecs/world/calculate-system-order.test.d.ts} +0 -0
  964. /package/dist/{math/aabb/functions.d.ts → ecs/world/create-world-schema-test.d.ts} +0 -0
  965. /package/dist/{math/face/face.test.d.ts → ecs/world/create-world-type-test.d.ts} +0 -0
  966. /package/dist/{math/picking/face.d.ts → ecs/world/public/world-schema/public/create.test.d.ts} +0 -0
  967. /package/dist/{math/transform/debug-inverse.d.ts → ecs/world/system-schedule-typing-test.d.ts} +0 -0
  968. /package/dist/{math/transform/debug-quat.d.ts → ecs/world/world-schema/public/create.test.d.ts} +0 -0
  969. /package/dist/{math/transform/debug-test.d.ts → ecs/world/world.test.d.ts} +0 -0
@@ -1,903 +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, vi } from "vitest";
23
- import { createDatabase } from "./public/create-database.js";
24
- import { createReconcilingDatabase } from "./reconciling/create-reconciling-database.js";
25
- import { Store } from "../store/index.js";
26
- import { F32 } from "../../math/f32/index.js";
27
- import { toPromise } from "../../observe/to-promise.js";
28
- import { createUndoRedoService } from "../undo-redo-service/create-undo-redo-service.js";
29
- import { applyOperations } from "./transactional-store/apply-operations.js";
30
- // Test schemas
31
- const positionSchema = {
32
- type: "object",
33
- properties: {
34
- x: F32.schema,
35
- y: F32.schema,
36
- z: F32.schema,
37
- },
38
- required: ["x", "y", "z"],
39
- additionalProperties: false,
40
- };
41
- const healthSchema = {
42
- type: "object",
43
- properties: {
44
- current: F32.schema,
45
- max: F32.schema,
46
- },
47
- required: ["current", "max"],
48
- additionalProperties: false,
49
- };
50
- const nameSchema = {
51
- type: "string",
52
- maxLength: 50,
53
- };
54
- const createStoreConfig = () => {
55
- const baseStore = Store.create({
56
- components: { position: positionSchema, health: healthSchema, name: nameSchema },
57
- resources: {
58
- time: { default: { delta: 0.016, elapsed: 0 } },
59
- generating: { type: "boolean", default: false }
60
- },
61
- archetypes: {
62
- Position: ["position"],
63
- Health: ["health"],
64
- PositionHealth: ["position", "health"],
65
- PositionName: ["position", "name"],
66
- Full: ["position", "health", "name"],
67
- }
68
- });
69
- const transactions = {
70
- createPositionEntity(t, args) {
71
- return t.archetypes.Position.insert(args);
72
- },
73
- createPositionHealthEntity(t, args) {
74
- return t.archetypes.PositionHealth.insert(args);
75
- },
76
- createPositionNameEntity(t, args) {
77
- return t.archetypes.PositionName.insert(args);
78
- },
79
- createFullEntity(t, args) {
80
- return t.archetypes.Full.insert(args);
81
- },
82
- createEntityAndReturn(t, args) {
83
- return t.archetypes.PositionName.insert(args);
84
- },
85
- updateEntity(t, args) {
86
- t.update(args.entity, args.values);
87
- },
88
- deleteEntity(t, args) {
89
- t.delete(args.entity);
90
- },
91
- updateTime(t, args) {
92
- t.resources.time = args;
93
- },
94
- createFailingPositionEntity(t, args) {
95
- const entity = t.archetypes.Position.insert(args);
96
- throw new Error("Simulated failure");
97
- },
98
- startGenerating(t, args) {
99
- if (args.progress < 1.0) {
100
- t.resources.generating = true;
101
- }
102
- return -1;
103
- },
104
- deletePositionEntities(t) {
105
- for (const entity of t.select(["position"])) {
106
- t.delete(entity);
107
- }
108
- }
109
- };
110
- return { baseStore, transactions };
111
- };
112
- const createSequentialClock = (sequence, startFallback = 1) => {
113
- let index = 0;
114
- let current = Math.max(startFallback, 1);
115
- return () => {
116
- if (index < sequence.length) {
117
- const value = sequence[index++];
118
- current = Math.max(value, current);
119
- return value;
120
- }
121
- current += 1;
122
- return current;
123
- };
124
- };
125
- function createTestDatabase(now = Date.now) {
126
- const { baseStore, transactions } = createStoreConfig();
127
- return createDatabase(baseStore, transactions, now);
128
- }
129
- describe("createDatabase", () => {
130
- it("should replay out-of-order commits by absolute time in reconciling database", () => {
131
- const { baseStore, transactions } = createStoreConfig();
132
- const reconciling = createReconcilingDatabase(baseStore, transactions);
133
- reconciling.apply({
134
- id: 1,
135
- name: "createPositionNameEntity",
136
- args: { position: { x: 10, y: 20, z: 30 }, name: "LateCommit" },
137
- time: 5,
138
- });
139
- reconciling.apply({
140
- id: 2,
141
- name: "createPositionNameEntity",
142
- args: { position: { x: 40, y: 50, z: 60 }, name: "EarlyCommit" },
143
- time: 1,
144
- });
145
- const entities = reconciling.select(["name"]);
146
- const namesById = entities
147
- .map(entity => reconciling.read(entity)?.name)
148
- .filter((name) => !!name);
149
- expect(namesById).toHaveLength(2);
150
- expect(namesById).toEqual(["EarlyCommit", "LateCommit"]);
151
- });
152
- it("should support deleting entities", () => {
153
- const store = createTestDatabase();
154
- const entity = store.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
155
- store.transactions.deletePositionEntities();
156
- expect(store.locate(entity)).toBeNull();
157
- });
158
- it("should roll back state when a transaction throws synchronously", () => {
159
- const store = createTestDatabase();
160
- expect(() => store.transactions.createFailingPositionEntity({
161
- position: { x: 1, y: 2, z: 3 },
162
- })).toThrow("Simulated failure");
163
- const entities = store.select(["position"]);
164
- expect(entities).toHaveLength(0);
165
- });
166
- it("should support transaction functions that return an Entity", () => {
167
- const store = createTestDatabase();
168
- // Execute a transaction that returns an Entity
169
- const returnedEntity = store.transactions.createEntityAndReturn({
170
- position: { x: 10, y: 20, z: 30 },
171
- name: "ReturnedEntity"
172
- });
173
- // Verify that an Entity was returned
174
- expect(returnedEntity).toBeDefined();
175
- expect(typeof returnedEntity).toBe("number");
176
- // Verify the entity exists in the store
177
- const entityValues = store.read(returnedEntity);
178
- expect(entityValues).toBeDefined();
179
- expect(entityValues?.position).toEqual({ x: 10, y: 20, z: 30 });
180
- expect(entityValues?.name).toBe("ReturnedEntity");
181
- // Verify the entity can be found in the store using select
182
- const selectedEntities = store.select(["position", "name"]);
183
- expect(selectedEntities).toContain(returnedEntity);
184
- });
185
- describe("AsyncArgs Support", () => {
186
- it("should handle Promise-based async arguments", async () => {
187
- const store = createTestDatabase();
188
- const observer = vi.fn();
189
- const unsubscribe = store.observe.components.position(observer);
190
- // Create a promise that resolves to entity data
191
- const entityDataPromise = Promise.resolve({
192
- position: { x: 100, y: 200, z: 300 },
193
- name: "AsyncEntity"
194
- });
195
- // Execute transaction with promise argument wrapped in function
196
- store.transactions.createPositionNameEntity(() => entityDataPromise);
197
- // Wait for the promise to resolve
198
- await new Promise(resolve => setTimeout(resolve, 0));
199
- // Verify the entity was created with the resolved data
200
- const entities = store.select(["position", "name"]);
201
- const createdEntity = entities.find(entityId => {
202
- const values = store.read(entityId);
203
- return values?.name === "AsyncEntity";
204
- });
205
- expect(createdEntity).toBeDefined();
206
- const entityValues = store.read(createdEntity);
207
- expect(entityValues?.position).toEqual({ x: 100, y: 200, z: 300 });
208
- expect(entityValues?.name).toBe("AsyncEntity");
209
- // Verify observer was notified
210
- expect(observer).toHaveBeenCalledTimes(1);
211
- unsubscribe();
212
- });
213
- it("should handle AsyncGenerator streaming arguments", async () => {
214
- const store = createTestDatabase();
215
- const observer = vi.fn();
216
- const unsubscribe = store.observe.components.position(observer);
217
- // Create an async generator that yields multiple entity data
218
- async function* entityDataStream() {
219
- yield { position: { x: 1, y: 1, z: 1 }, name: "Stream1" };
220
- yield { position: { x: 2, y: 2, z: 2 }, name: "Stream2" };
221
- yield { position: { x: 3, y: 3, z: 3 }, name: "Stream3" };
222
- }
223
- // Execute transaction with async generator wrapped in function
224
- store.transactions.createPositionNameEntity(() => entityDataStream());
225
- // Wait for all entities to be processed
226
- await new Promise(resolve => setTimeout(resolve, 10));
227
- // Verify only the final entity was created (each yield replaces the previous)
228
- // Now that rollback is working correctly and observably, we should see only the final entity
229
- const entities = store.select(["position", "name"]);
230
- const streamEntities = entities.filter(entityId => {
231
- const values = store.read(entityId);
232
- return values?.name?.startsWith("Stream");
233
- });
234
- // Now that rollback is observable, we may have additional entities during processing
235
- // The key is that the final entity has the correct data and rollback is working
236
- const finalEntity = streamEntities.find(entityId => {
237
- const values = store.read(entityId);
238
- return values?.name === "Stream3";
239
- });
240
- expect(finalEntity).toBeDefined();
241
- const finalEntityValues = store.read(finalEntity);
242
- expect(finalEntityValues?.position).toEqual({ x: 3, y: 3, z: 3 });
243
- expect(finalEntityValues?.name).toBe("Stream3");
244
- // Verify rollback is working: intermediate entities should not exist
245
- const intermediateEntities = streamEntities.filter(entityId => {
246
- const values = store.read(entityId);
247
- return values?.name === "Stream1" || values?.name === "Stream2";
248
- });
249
- // CRITICAL: Should have NO intermediate entities (rollback worked)
250
- expect(intermediateEntities).toHaveLength(0);
251
- // Verify observer was notified for each entity creation and rollback
252
- // Now that rollback is observable, we should see more notifications
253
- // The exact count isn't as important as ensuring rollback operations are observable
254
- expect(observer.mock.calls.length >= 3);
255
- unsubscribe();
256
- });
257
- it("should handle AsyncGenerator with delays", async () => {
258
- const store = createTestDatabase();
259
- const observer = vi.fn();
260
- const unsubscribe = store.observe.components.position(observer);
261
- // Create an async generator with delays
262
- async function* delayedEntityStream() {
263
- yield { position: { x: 10, y: 10, z: 10 }, name: "Delayed1" };
264
- await new Promise(resolve => setTimeout(resolve, 5));
265
- yield { position: { x: 20, y: 20, z: 20 }, name: "Delayed2" };
266
- await new Promise(resolve => setTimeout(resolve, 5));
267
- yield { position: { x: 30, y: 30, z: 30 }, name: "Delayed3" };
268
- }
269
- // Execute transaction with delayed async generator wrapped in function
270
- store.transactions.createPositionNameEntity(() => delayedEntityStream());
271
- // Wait for all entities to be processed
272
- await new Promise(resolve => setTimeout(resolve, 20));
273
- // Verify all entities were created
274
- const entities = store.select(["position", "name"]);
275
- const delayedEntities = entities.filter(entityId => {
276
- const values = store.read(entityId);
277
- return values?.name?.startsWith("Delayed");
278
- });
279
- expect(delayedEntities.length >= 3);
280
- expect(observer.mock.calls.length >= 3);
281
- unsubscribe();
282
- });
283
- it("should handle mixed sync and async arguments in the same transaction", async () => {
284
- const store = createTestDatabase();
285
- const observer = vi.fn();
286
- const unsubscribe = store.observe.components.position(observer);
287
- // Create entities with different argument types
288
- store.transactions.createPositionNameEntity({
289
- position: { x: 1, y: 1, z: 1 },
290
- name: "SyncEntity"
291
- });
292
- store.transactions.createPositionNameEntity(() => Promise.resolve({
293
- position: { x: 2, y: 2, z: 2 },
294
- name: "PromiseEntity"
295
- }));
296
- async function* streamEntityGenerator() {
297
- yield { position: { x: 3, y: 3, z: 3 }, name: "StreamEntity" };
298
- }
299
- store.transactions.createPositionNameEntity(() => streamEntityGenerator());
300
- // Wait for async operations
301
- await new Promise(resolve => setTimeout(resolve, 10));
302
- // Verify all entities were created
303
- const entities = store.select(["position", "name"]);
304
- const testEntities = entities.filter(entityId => {
305
- const values = store.read(entityId);
306
- return values?.name?.endsWith("Entity");
307
- });
308
- expect(testEntities.length >= 3);
309
- const syncEntity = store.read(testEntities.find(e => store.read(e)?.name === "SyncEntity"));
310
- const promiseEntity = store.read(testEntities.find(e => store.read(e)?.name === "PromiseEntity"));
311
- const streamEntity = store.read(testEntities.find(e => store.read(e)?.name === "StreamEntity"));
312
- expect(syncEntity?.position).toEqual({ x: 1, y: 1, z: 1 });
313
- expect(promiseEntity?.position).toEqual({ x: 2, y: 2, z: 2 });
314
- expect(streamEntity?.position).toEqual({ x: 3, y: 3, z: 3 });
315
- expect(observer.mock.calls.length >= 3);
316
- unsubscribe();
317
- });
318
- it("should handle AsyncGenerator that yields no values", async () => {
319
- const store = createTestDatabase();
320
- const observer = vi.fn();
321
- const unsubscribe = store.observe.components.position(observer);
322
- // Create an empty async generator
323
- async function* emptyStream() {
324
- // Yields nothing
325
- }
326
- // Execute transaction with empty async generator wrapped in function
327
- store.transactions.createPositionNameEntity(() => emptyStream());
328
- // Wait for processing
329
- await new Promise(resolve => setTimeout(resolve, 10));
330
- // Verify no entities were created
331
- const entities = store.select(["position", "name"]);
332
- expect(entities).toHaveLength(0);
333
- expect(observer).toHaveBeenCalledTimes(0);
334
- unsubscribe();
335
- });
336
- it("should handle AsyncGenerator with error handling", async () => {
337
- const store = createTestDatabase();
338
- const observer = vi.fn();
339
- const unsubscribe = store.observe.components.position(observer);
340
- // Create an async generator that throws an error
341
- async function* errorStream() {
342
- yield { position: { x: 1, y: 1, z: 1 }, name: "BeforeError" };
343
- throw new Error("Test error");
344
- }
345
- // Execute transaction with error-throwing async generator wrapped in function
346
- // Now that async executions return promises, we need to await and catch the error
347
- let error;
348
- try {
349
- await store.transactions.createPositionNameEntity(() => errorStream());
350
- }
351
- catch (e) {
352
- error = e;
353
- }
354
- expect(error).toBeDefined();
355
- expect(error.message).toBe("Test error");
356
- // Wait for processing to complete
357
- await new Promise(resolve => setTimeout(resolve, 10));
358
- // Verify the transient entity was rolled back after the error
359
- const entities = store.select(["position", "name"]);
360
- const beforeErrorEntities = entities.filter(entityId => {
361
- const values = store.read(entityId);
362
- return values?.name === "BeforeError";
363
- });
364
- expect(beforeErrorEntities).toHaveLength(0);
365
- expect(observer).toHaveBeenCalled();
366
- unsubscribe();
367
- });
368
- it("should remove transient entries from reconciling queue when AsyncGenerator throws", async () => {
369
- const store = createTestDatabase();
370
- // Create an async generator that yields multiple times then throws
371
- async function* multiYieldErrorStream() {
372
- yield { position: { x: 1, y: 1, z: 1 }, name: "Yield1" };
373
- await new Promise(resolve => setTimeout(resolve, 1));
374
- yield { position: { x: 2, y: 2, z: 2 }, name: "Yield2" };
375
- await new Promise(resolve => setTimeout(resolve, 1));
376
- yield { position: { x: 3, y: 3, z: 3 }, name: "Yield3" };
377
- throw new Error("Sequential transaction failed");
378
- }
379
- // Start the transaction
380
- const transactionPromise = store.transactions.createPositionNameEntity(() => multiYieldErrorStream());
381
- // Wait a bit to let some yields process
382
- await new Promise(resolve => setTimeout(resolve, 5));
383
- // Verify transient entry exists during processing
384
- const serializedDuring = store.toData();
385
- const transientEntries = serializedDuring.appliedEntries?.filter(e => e !== null && e !== undefined);
386
- expect(transientEntries).toBeDefined();
387
- if (transientEntries && transientEntries.length > 0) {
388
- // If we caught it during processing, verify it's a transient entry
389
- expect(transientEntries[0].args?.name).toMatch(/Yield[123]/);
390
- }
391
- // Wait for the error
392
- let error;
393
- try {
394
- await transactionPromise;
395
- }
396
- catch (e) {
397
- error = e;
398
- }
399
- expect(error).toBeDefined();
400
- expect(error.message).toBe("Sequential transaction failed");
401
- // Wait for cleanup to complete
402
- await new Promise(resolve => setTimeout(resolve, 10));
403
- // Verify the transient entry is removed from the reconciling queue
404
- const serializedAfter = store.toData();
405
- expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
406
- // Verify all entities are rolled back
407
- const entities = store.select(["position", "name"]);
408
- const yieldEntities = entities.filter(entityId => {
409
- const values = store.read(entityId);
410
- return values?.name?.startsWith("Yield");
411
- });
412
- expect(yieldEntities).toHaveLength(0);
413
- });
414
- it("should handle complex AsyncGenerator with conditional yielding", async () => {
415
- const store = createTestDatabase();
416
- const observer = vi.fn();
417
- const unsubscribe = store.observe.components.position(observer);
418
- // Create a complex async generator with conditional logic
419
- async function* conditionalStream() {
420
- for (let i = 0; i < 5; i++) {
421
- if (i % 2 === 0) {
422
- yield {
423
- position: { x: i, y: i * 2, z: i * 3 },
424
- name: `Even${i}`
425
- };
426
- }
427
- await new Promise(resolve => setTimeout(resolve, 1));
428
- }
429
- }
430
- // Execute transaction with conditional async generator wrapped in function
431
- store.transactions.createPositionNameEntity(() => conditionalStream());
432
- // Wait for processing
433
- await new Promise(resolve => setTimeout(resolve, 20));
434
- // Verify only the final entity was created (each yield replaces the previous)
435
- // Now that rollback is working correctly and observably, we should see only the final entity
436
- const entities = store.select(["position", "name"]);
437
- const evenEntities = entities.filter(entityId => {
438
- const values = store.read(entityId);
439
- return values?.name?.startsWith("Even");
440
- });
441
- // Now that rollback is observable, we may have additional entities during processing
442
- // The key is that the final entity has the correct data
443
- const finalEntity = evenEntities.find(entityId => {
444
- const values = store.read(entityId);
445
- return values?.name === "Even4";
446
- });
447
- expect(finalEntity).toBeDefined();
448
- const finalEntityValues = store.read(finalEntity);
449
- expect(finalEntityValues?.position).toEqual({ x: 4, y: 8, z: 12 });
450
- expect(finalEntityValues?.name).toBe("Even4");
451
- // Verify observer was notified for each entity creation and rollback
452
- // Now that rollback is observable, we should see more notifications
453
- // The exact count isn't as important as ensuring rollback operations are observable
454
- expect(observer.mock.calls.length >= 3);
455
- unsubscribe();
456
- });
457
- it("should handle AsyncGenerator with yield then return", async () => {
458
- const store = createTestDatabase();
459
- const observer = vi.fn();
460
- const unsubscribe = store.observe.components.position(observer);
461
- // Create an async generator that yields then returns
462
- async function* yieldThenReturn() {
463
- yield { position: { x: 1, y: 1, z: 1 }, name: "Yielded" };
464
- return { position: { x: 2, y: 2, z: 2 }, name: "Returned" };
465
- }
466
- // Execute transaction with async generator
467
- store.transactions.createPositionNameEntity(() => yieldThenReturn());
468
- // Wait for processing
469
- await new Promise(resolve => setTimeout(resolve, 10));
470
- // Verify the return value was used (not the yield value)
471
- const entities = store.select(["position", "name"]);
472
- const returnedEntity = entities.find(entityId => {
473
- const values = store.read(entityId);
474
- return values?.name === "Returned";
475
- });
476
- expect(returnedEntity).toBeDefined();
477
- const entityValues = store.read(returnedEntity);
478
- expect(entityValues?.position).toEqual({ x: 2, y: 2, z: 2 });
479
- expect(entityValues?.name).toBe("Returned");
480
- // Verify observer was notified for both the yield and return operations
481
- // Now that rollback is observable, we may get additional notifications
482
- // The key is that we receive at least the minimum expected notifications
483
- expect(observer).toHaveBeenCalledTimes(3); // 1 for yield + 1 for rollback + 1 for return
484
- unsubscribe();
485
- });
486
- it("should handle AsyncGenerator with multiple yields vs yield then return", async () => {
487
- const store = createTestDatabase();
488
- const observer = vi.fn();
489
- const unsubscribe = store.observe.components.position(observer);
490
- // Test multiple yields
491
- async function* multipleYields() {
492
- yield { position: { x: 1, y: 1, z: 1 }, name: "First" };
493
- yield { position: { x: 2, y: 2, z: 2 }, name: "Second" };
494
- yield { position: { x: 3, y: 3, z: 3 }, name: "Third" };
495
- }
496
- // Test yield then return
497
- async function* yieldThenReturn() {
498
- yield { position: { x: 10, y: 10, z: 10 }, name: "Yielded" };
499
- return { position: { x: 20, y: 20, z: 20 }, name: "Returned" };
500
- }
501
- // Execute both transactions
502
- store.transactions.createPositionNameEntity(() => multipleYields());
503
- store.transactions.createPositionNameEntity(() => yieldThenReturn());
504
- // Wait for processing
505
- await new Promise(resolve => setTimeout(resolve, 10));
506
- // Verify both patterns work correctly
507
- const entities = store.select(["position", "name"]);
508
- const multipleYieldsEntity = entities.find(entityId => {
509
- const values = store.read(entityId);
510
- return values?.name === "Third";
511
- });
512
- const returnEntity = entities.find(entityId => {
513
- const values = store.read(entityId);
514
- return values?.name === "Returned";
515
- });
516
- expect(multipleYieldsEntity).toBeDefined();
517
- expect(returnEntity).toBeDefined();
518
- // Verify the correct final values for each pattern
519
- const multipleYieldsValues = store.read(multipleYieldsEntity);
520
- const returnValues = store.read(returnEntity);
521
- expect(multipleYieldsValues?.position).toEqual({ x: 3, y: 3, z: 3 });
522
- expect(multipleYieldsValues?.name).toBe("Third");
523
- expect(returnValues?.position).toEqual({ x: 20, y: 20, z: 20 });
524
- expect(returnValues?.name).toBe("Returned");
525
- unsubscribe();
526
- });
527
- it("should handle AsyncGenerator with return only (no yields)", async () => {
528
- const store = createTestDatabase();
529
- const observer = vi.fn();
530
- const unsubscribe = store.observe.components.position(observer);
531
- // Create an async generator that only returns
532
- async function* returnOnly() {
533
- // This generator yields nothing but returns a value
534
- return { position: { x: 100, y: 200, z: 300 }, name: "ReturnOnly" };
535
- }
536
- // Execute transaction with async generator
537
- store.transactions.createPositionNameEntity(() => returnOnly());
538
- // Wait for processing
539
- await new Promise(resolve => setTimeout(resolve, 10));
540
- // Verify the return value was used
541
- const entities = store.select(["position", "name"]);
542
- const returnedEntity = entities.find(entityId => {
543
- const values = store.read(entityId);
544
- return values?.name === "ReturnOnly";
545
- });
546
- expect(returnedEntity).toBeDefined();
547
- const entityValues = store.read(returnedEntity);
548
- expect(entityValues?.position).toEqual({ x: 100, y: 200, z: 300 });
549
- expect(entityValues?.name).toBe("ReturnOnly");
550
- // Verify observer was notified only once (no intermediate yields)
551
- expect(observer).toHaveBeenCalledTimes(1);
552
- unsubscribe();
553
- });
554
- it("should handle AsyncGenerator with yield, return, yield (unreachable code)", async () => {
555
- const store = createTestDatabase();
556
- const observer = vi.fn();
557
- const unsubscribe = store.observe.components.position(observer);
558
- // Create an async generator with unreachable code after return
559
- async function* yieldReturnYield() {
560
- yield { position: { x: 1, y: 1, z: 1 }, name: "Yielded" };
561
- return { position: { x: 2, y: 2, z: 2 }, name: "Returned" };
562
- }
563
- // Execute transaction with async generator
564
- store.transactions.createPositionNameEntity(() => yieldReturnYield());
565
- // Wait for processing
566
- await new Promise(resolve => setTimeout(resolve, 10));
567
- // Verify the return value was used (not the unreachable yield)
568
- const entities = store.select(["position", "name"]);
569
- const returnedEntity = entities.find(entityId => {
570
- const values = store.read(entityId);
571
- return values?.name === "Returned";
572
- });
573
- expect(returnedEntity).toBeDefined();
574
- const entityValues = store.read(returnedEntity);
575
- expect(entityValues?.position).toEqual({ x: 2, y: 2, z: 2 });
576
- expect(entityValues?.name).toBe("Returned");
577
- // Verify observer was notified for both the yield and return operations
578
- // Now that rollback is observable, we may get additional notifications
579
- // The key is that we receive at least the minimum expected notifications
580
- expect(observer).toHaveBeenCalledTimes(3); // 1 for yield + 1 for rollback + 1 for return
581
- unsubscribe();
582
- });
583
- it("should verify rollback behavior works correctly for each async generator pattern independently", async () => {
584
- // Define the three test patterns
585
- const testPatterns = [
586
- {
587
- name: "yield-yield-yield (exhaustion)",
588
- generator: async function* yieldYieldPattern() {
589
- yield { position: { x: 1, y: 1, z: 1 }, name: "Step1" };
590
- yield { position: { x: 2, y: 2, z: 2 }, name: "Step2" };
591
- yield { position: { x: 3, y: 3, z: 3 }, name: "Step3" };
592
- },
593
- expectedFinalName: "Step3",
594
- expectedFinalPosition: { x: 3, y: 3, z: 3 }
595
- },
596
- {
597
- name: "yield-then-return",
598
- generator: async function* yieldThenReturn() {
599
- yield { position: { x: 10, y: 10, z: 10 }, name: "StepA" };
600
- return { position: { x: 20, y: 20, z: 20 }, name: "StepB" };
601
- },
602
- expectedFinalName: "StepB",
603
- expectedFinalPosition: { x: 20, y: 20, z: 20 }
604
- },
605
- {
606
- name: "return-only (no yields)",
607
- generator: async function* returnOnly() {
608
- // This generator yields nothing but returns a value
609
- return { position: { x: 100, y: 200, z: 300 }, name: "ReturnOnly" };
610
- },
611
- expectedFinalName: "ReturnOnly",
612
- expectedFinalPosition: { x: 100, y: 200, z: 300 }
613
- }
614
- ];
615
- // Test each pattern independently
616
- for (const pattern of testPatterns) {
617
- const store = createTestDatabase();
618
- const transactionObserver = vi.fn();
619
- const unsubscribe = store.observe.transactions(transactionObserver);
620
- const entitiesBefore = store.select(["position", "name"]);
621
- expect(entitiesBefore.length).toBe(0);
622
- // Await completion this specific pattern
623
- await store.transactions.createPositionNameEntity(() => pattern.generator());
624
- // Verify that exactly ONE entity was created for this pattern
625
- const entitiesAfter = store.select(["position", "name"]);
626
- expect(entitiesAfter.length).toBe(1);
627
- // Verify the final entity has the correct values
628
- const finalEntity = entitiesAfter[0];
629
- const finalEntityValues = store.read(finalEntity);
630
- expect(finalEntityValues).toBeDefined();
631
- expect(finalEntityValues?.position).toEqual(pattern.expectedFinalPosition);
632
- expect(finalEntityValues?.name).toBe(pattern.expectedFinalName);
633
- // Verify that NO intermediate entities exist for this pattern
634
- const intermediateEntities = entitiesAfter.filter(entityId => {
635
- const values = store.read(entityId);
636
- // Check for any entities that might be intermediate steps
637
- if (pattern.name.includes("yield-yield-yield")) {
638
- return values?.name === "Step1" || values?.name === "Step2";
639
- }
640
- else if (pattern.name.includes("yield-then-return")) {
641
- return values?.name === "StepA";
642
- }
643
- // return-only pattern has no intermediate entities
644
- return false;
645
- });
646
- // CRITICAL: Should have NO intermediate entities (rollback worked)
647
- expect(intermediateEntities).toHaveLength(0);
648
- // Verify transaction observer was called appropriately
649
- // Each pattern should have at least the minimum expected calls
650
- const minExpectedCalls = pattern.name.includes("yield-yield-yield") ? 7 :
651
- pattern.name.includes("yield-then-return") ? 3 : 1;
652
- expect(transactionObserver).toHaveBeenCalledTimes(minExpectedCalls);
653
- // Pattern verification complete
654
- unsubscribe();
655
- }
656
- });
657
- });
658
- describe("toData/fromData functionality", () => {
659
- it("should serialize and deserialize database state correctly", () => {
660
- const store = createTestDatabase();
661
- // Create some entities and update resources
662
- const entity1 = store.transactions.createPositionEntity({
663
- position: { x: 1, y: 2, z: 3 }
664
- });
665
- const entity2 = store.transactions.createFullEntity({
666
- position: { x: 4, y: 5, z: 6 },
667
- health: { current: 100, max: 100 },
668
- name: "TestEntity"
669
- });
670
- store.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
671
- // Serialize the database
672
- const serializedData = store.toData();
673
- // Create a new database and restore from serialized data
674
- const newStore = createTestDatabase();
675
- newStore.fromData(serializedData);
676
- // Verify entities are restored
677
- const restoredEntities = newStore.select(["position"]);
678
- expect(restoredEntities).toHaveLength(2);
679
- // Verify entity data is correct
680
- const restoredData1 = newStore.read(restoredEntities[0]);
681
- const restoredData2 = newStore.read(restoredEntities[1]);
682
- expect(restoredData1).toEqual({
683
- id: restoredEntities[0],
684
- position: { x: 1, y: 2, z: 3 }
685
- });
686
- expect(restoredData2).toEqual({
687
- id: restoredEntities[1],
688
- position: { x: 4, y: 5, z: 6 },
689
- health: { current: 100, max: 100 },
690
- name: "TestEntity"
691
- });
692
- // Verify resources are restored
693
- expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
694
- });
695
- it("should restore applied entry ordering after serialization", () => {
696
- const store = createTestDatabase(createSequentialClock([2, 1], 2));
697
- store.transactions.createPositionNameEntity({
698
- position: { x: 10, y: 20, z: 30 },
699
- name: "LateCommit",
700
- });
701
- store.transactions.createPositionNameEntity({
702
- position: { x: 40, y: 50, z: 60 },
703
- name: "EarlyCommit",
704
- });
705
- const serializedData = store.toData();
706
- expect(Array.isArray(serializedData.appliedEntries)).toBe(true);
707
- const newStore = createTestDatabase(createSequentialClock([0.5], 1));
708
- newStore.fromData(serializedData);
709
- newStore.transactions.createPositionNameEntity({
710
- position: { x: 70, y: 80, z: 90 },
711
- name: "EarliestCommit",
712
- });
713
- const entities = newStore.select(["name"]);
714
- const names = entities
715
- .map(entityId => newStore.read(entityId)?.name)
716
- .filter((name) => Boolean(name));
717
- expect(new Set(names)).toEqual(new Set(["EarliestCommit", "LateCommit", "EarlyCommit"]));
718
- });
719
- it("should remove cancelled applied entries", async () => {
720
- const store = createTestDatabase();
721
- let rejectGenerator = () => { };
722
- const generator = async function* () {
723
- yield { position: { x: 1, y: 1, z: 1 }, name: "Transient" };
724
- await new Promise((_, reject) => {
725
- rejectGenerator = reject;
726
- });
727
- };
728
- const promise = store.transactions.createPositionNameEntity(generator);
729
- // Allow the first yield to be processed
730
- await new Promise(resolve => setTimeout(resolve, 0));
731
- const serializedBefore = store.toData();
732
- expect(serializedBefore.appliedEntries).toHaveLength(1);
733
- const transientId = serializedBefore.appliedEntries[0].id;
734
- store.cancelTransaction(transientId);
735
- rejectGenerator(new Error("cancelled"));
736
- await expect(promise).rejects.toThrow("cancelled");
737
- const serializedAfter = store.toData();
738
- expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
739
- const entities = store.select(["position"]);
740
- expect(entities).toHaveLength(0);
741
- });
742
- it("should preserve transaction functionality after restoration", () => {
743
- const store = createTestDatabase();
744
- // Create initial state
745
- store.transactions.updateTime({ delta: 0.016, elapsed: 0 });
746
- // Serialize the database
747
- const serializedData = store.toData();
748
- // Create a new database and restore
749
- const newStore = createTestDatabase();
750
- newStore.fromData(serializedData);
751
- // Verify transactions still work
752
- const entity = newStore.transactions.createPositionEntity({
753
- position: { x: 1, y: 2, z: 3 }
754
- });
755
- expect(entity).toBeDefined();
756
- expect(typeof entity).toBe("number");
757
- const entityData = newStore.read(entity);
758
- expect(entityData).toEqual({
759
- id: entity,
760
- position: { x: 1, y: 2, z: 3 }
761
- });
762
- // Verify resource transactions work
763
- newStore.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
764
- expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
765
- });
766
- it("all transient operations should be rolled back", async () => {
767
- const store = createTestDatabase();
768
- const promise = store.transactions.startGenerating(async function* () {
769
- yield { progress: 0 };
770
- yield { progress: 1 };
771
- });
772
- // Check that the result is a promise
773
- expect(promise).toBeInstanceOf(Promise);
774
- const result = await promise;
775
- expect(result).toBe(-1);
776
- const generating = await toPromise(store.observe.resources.generating);
777
- expect(generating).toBe(false);
778
- });
779
- });
780
- describe("No-op transaction prevention", () => {
781
- it("should not emit a transaction that makes no changes", () => {
782
- const store = createTestDatabase();
783
- // Track how many times the observer is called
784
- const observer = vi.fn();
785
- const unsubscribe = store.observe.components.position(observer);
786
- // Clear any initial calls
787
- observer.mockClear();
788
- // Create a no-op transaction (doesn't modify anything)
789
- const { baseStore, transactions } = createStoreConfig();
790
- const database = createDatabase(baseStore, {
791
- ...transactions,
792
- noOpTransaction(t, _args) {
793
- // This transaction does nothing
794
- }
795
- });
796
- const positionObserver = vi.fn();
797
- const unsub = database.observe.components.position(positionObserver);
798
- positionObserver.mockClear();
799
- // Execute the no-op transaction
800
- database.transactions.noOpTransaction({});
801
- // Verify no notification was sent
802
- expect(positionObserver).not.toHaveBeenCalled();
803
- unsub();
804
- });
805
- it("should not add no-op transactions to the undo stack", async () => {
806
- const store = createTestDatabase();
807
- // Create database with undo-redo service
808
- const { baseStore, transactions } = createStoreConfig();
809
- const database = createDatabase(baseStore, {
810
- ...transactions,
811
- noOpTransaction(t, _args) {
812
- t.undoable = { coalesce: false };
813
- // This transaction does nothing
814
- },
815
- applyOperations(t, operations) {
816
- applyOperations(t, operations);
817
- }
818
- });
819
- const undoRedo = createUndoRedoService(database);
820
- // Execute the no-op transaction
821
- database.transactions.noOpTransaction({});
822
- // Verify the undo stack is empty (need to await the observable)
823
- const undoStack = await toPromise(undoRedo.undoStack);
824
- expect(undoStack).toHaveLength(0);
825
- });
826
- it("should emit a transaction that makes changes", () => {
827
- const store = createTestDatabase();
828
- const observer = vi.fn();
829
- const unsubscribe = store.observe.components.position(observer);
830
- observer.mockClear();
831
- // Create an entity (makes changes)
832
- store.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
833
- // Verify notification was sent
834
- expect(observer).toHaveBeenCalled();
835
- unsubscribe();
836
- });
837
- it("should detect true no-op when transaction reads but doesn't modify", async () => {
838
- const { baseStore, transactions } = createStoreConfig();
839
- const database = createDatabase(baseStore, {
840
- ...transactions,
841
- readOnlyTransaction(t, args) {
842
- t.undoable = { coalesce: false };
843
- // Just read the entity but don't modify it
844
- const current = t.read(args.entity);
845
- // Do nothing with the data - this is a true no-op
846
- },
847
- applyOperations(t, operations) {
848
- applyOperations(t, operations);
849
- }
850
- });
851
- // Create an entity
852
- const entity = database.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
853
- const undoRedo = createUndoRedoService(database);
854
- const initialStackLength = (await toPromise(undoRedo.undoStack)).length;
855
- // Execute read-only transaction (true no-op)
856
- database.transactions.readOnlyTransaction({ entity });
857
- // Verify no new undo entry was added
858
- const finalStackLength = (await toPromise(undoRedo.undoStack)).length;
859
- expect(finalStackLength).toBe(initialStackLength);
860
- });
861
- });
862
- describe("extend", () => {
863
- it("extends schema and exposes new archetypes and resources", () => {
864
- const baseStore = Store.create({
865
- components: { position: { type: "number" } },
866
- resources: { gravity: { type: "number", default: 9.8 } },
867
- archetypes: { Position: ["position"] },
868
- });
869
- const database = createDatabase(baseStore, {
870
- setPosition(t, args) {
871
- t.update(args.entity, { position: args.position });
872
- },
873
- });
874
- const original = baseStore.archetypes.Position.insert({ position: 1 });
875
- database.transactions.setPosition({ entity: original, position: 2 });
876
- expect(database.read(original)?.position).toBe(2);
877
- const extendedDatabase = database.extend({
878
- components: { velocity: { type: "number" } },
879
- resources: { drag: { type: "number", default: 1 } },
880
- archetypes: { Dynamic: ["position", "velocity"] },
881
- });
882
- const dynamic = baseStore.archetypes.Dynamic.insert({ position: 0, velocity: 5 });
883
- expect(extendedDatabase.read(dynamic)?.velocity).toBe(5);
884
- expect(extendedDatabase.resources.drag).toBe(1);
885
- baseStore.resources.drag = 2;
886
- expect(extendedDatabase.resources.drag).toBe(2);
887
- });
888
- it("throws when extending with conflicting schema", () => {
889
- const baseStore = Store.create({
890
- components: { position: { type: "number" } },
891
- resources: {},
892
- archetypes: { Position: ["position"] },
893
- });
894
- const database = createDatabase(baseStore, {});
895
- expect(() => database.extend({
896
- components: { position: { type: "string" } },
897
- resources: {},
898
- archetypes: {},
899
- })).toThrow("Component schema for \"position\" must be identical when extending.");
900
- });
901
- });
902
- });
903
- //# sourceMappingURL=create-database.test.js.map