@adobe/data 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (846) hide show
  1. package/dist/blob/download-handle.d.ts +4 -0
  2. package/dist/blob/download-handle.js +2 -0
  3. package/dist/blob/download-handle.js.map +1 -0
  4. package/dist/blob/upload-handle.d.ts +4 -0
  5. package/dist/blob/upload-handle.js +2 -0
  6. package/dist/blob/upload-handle.js.map +1 -0
  7. package/dist/ecs/database/create-database.d.ts +6 -6
  8. package/dist/ecs/database/create-database.js +38 -10
  9. package/dist/ecs/database/create-database.js.map +1 -1
  10. package/dist/ecs/database/create-database.test.js +55 -11
  11. package/dist/ecs/database/create-database.test.js.map +1 -1
  12. package/dist/ecs/database/database-schema/create-database-schema.js +7 -3
  13. package/dist/ecs/database/database-schema/create-database-schema.js.map +1 -1
  14. package/dist/ecs/database/database.d.ts +5 -1
  15. package/dist/ecs/database/database.js +5 -1
  16. package/dist/ecs/database/database.js.map +1 -1
  17. package/dist/ecs/database/index.d.ts +1 -1
  18. package/dist/ecs/database/index.js +1 -1
  19. package/dist/ecs/database/index.js.map +1 -1
  20. package/dist/ecs/database/observe-dependent-value.test.js +8 -16
  21. package/dist/ecs/database/observe-dependent-value.test.js.map +1 -1
  22. package/dist/ecs/database/observe-select-entities.performance.test.js +21 -17
  23. package/dist/ecs/database/observe-select-entities.performance.test.js.map +1 -1
  24. package/dist/ecs/database/observe-select-entities.test.js +21 -17
  25. package/dist/ecs/database/observe-select-entities.test.js.map +1 -1
  26. package/dist/ecs/database/observed/create-observed-database.test.js +14 -10
  27. package/dist/ecs/database/observed/create-observed-database.test.js.map +1 -1
  28. package/dist/ecs/database/public/create-database.d.ts +7 -0
  29. package/dist/ecs/database/public/create-database.js +132 -0
  30. package/dist/ecs/database/public/create-database.js.map +1 -0
  31. package/dist/ecs/database/public/create-database.test.d.ts +1 -0
  32. package/dist/ecs/database/public/create-database.test.js +862 -0
  33. package/dist/ecs/database/public/create-database.test.js.map +1 -0
  34. package/dist/ecs/database/public/index.d.ts +1 -0
  35. package/dist/ecs/database/public/index.js +22 -0
  36. package/dist/ecs/database/public/index.js.map +1 -0
  37. package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +1 -8
  38. package/dist/ecs/database/reconciling/create-reconciling-database.js +82 -118
  39. package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
  40. package/dist/ecs/database/reconciling/create-reconciling-database.test.js +83 -165
  41. package/dist/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
  42. package/dist/ecs/database/reconciling/reconciling-database.d.ts +1 -0
  43. package/dist/ecs/database/reconciling/reconciling-entry.d.ts +0 -11
  44. package/dist/ecs/database/reconciling/reconciling-entry.js +0 -34
  45. package/dist/ecs/database/reconciling/reconciling-entry.js.map +1 -1
  46. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +85 -19
  47. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  48. package/dist/ecs/database/transactional-store/entity-id-preservation.test.d.ts +1 -0
  49. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +106 -0
  50. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +1 -0
  51. package/dist/ecs/entity/entity.d.ts +8 -0
  52. package/dist/ecs/entity/entity.js +3 -0
  53. package/dist/ecs/entity/entity.js.map +1 -0
  54. package/dist/ecs/entity/u32.d.ts +8 -0
  55. package/dist/ecs/entity/u32.js +24 -0
  56. package/dist/ecs/entity/u32.js.map +1 -0
  57. package/dist/ecs/store/constants/functions.d.ts +14 -0
  58. package/dist/ecs/store/constants/functions.js +31 -0
  59. package/dist/ecs/store/constants/functions.js.map +1 -0
  60. package/dist/ecs/store/constants/index.d.ts +2 -0
  61. package/dist/ecs/store/constants/index.js +24 -0
  62. package/dist/ecs/store/constants/index.js.map +1 -0
  63. package/dist/ecs/store/constants/types.d.ts +18 -0
  64. package/dist/ecs/store/constants/types.js +23 -0
  65. package/dist/ecs/store/constants/types.js.map +1 -0
  66. package/dist/ecs/store/create-store.d.ts +1 -1
  67. package/dist/ecs/store/create-store.js +74 -24
  68. package/dist/ecs/store/create-store.js.map +1 -1
  69. package/dist/ecs/store/create-store.test.js +171 -171
  70. package/dist/ecs/store/create-store.test.js.map +1 -1
  71. package/dist/ecs/store/index.d.ts +0 -1
  72. package/dist/ecs/store/index.js +0 -1
  73. package/dist/ecs/store/index.js.map +1 -1
  74. package/dist/ecs/store/public/create-from-schema.d.ts +6 -0
  75. package/dist/ecs/store/public/create-from-schema.js +26 -0
  76. package/dist/ecs/store/public/create-from-schema.js.map +1 -0
  77. package/dist/ecs/store/public/create-store.d.ts +8 -0
  78. package/dist/ecs/store/public/create-store.js +126 -0
  79. package/dist/ecs/store/public/create-store.js.map +1 -0
  80. package/dist/ecs/store/public/create-store.test.d.ts +1 -0
  81. package/dist/ecs/store/public/create-store.test.js +725 -0
  82. package/dist/ecs/store/public/create-store.test.js.map +1 -0
  83. package/dist/ecs/store/public/index.d.ts +3 -0
  84. package/dist/ecs/store/public/index.js +25 -0
  85. package/dist/ecs/store/public/index.js.map +1 -0
  86. package/dist/ecs/store/public/readonly.d.ts +19 -0
  87. package/dist/ecs/store/public/readonly.js +2 -0
  88. package/dist/ecs/store/public/readonly.js.map +1 -0
  89. package/dist/ecs/store/public/schema/create-from-schema.d.ts +6 -0
  90. package/dist/ecs/store/public/schema/create-from-schema.js +26 -0
  91. package/dist/ecs/store/public/schema/create-from-schema.js.map +1 -0
  92. package/dist/ecs/store/public/schema/create.d.ts +10 -0
  93. package/dist/ecs/store/public/schema/create.js +25 -0
  94. package/dist/ecs/store/public/schema/create.js.map +1 -0
  95. package/dist/ecs/store/public/schema/createFromSchema.d.ts +6 -0
  96. package/dist/ecs/store/public/schema/createFromSchema.js +5 -0
  97. package/dist/ecs/store/public/schema/createFromSchema.js.map +1 -0
  98. package/dist/ecs/store/public/schema/public.d.ts +1 -0
  99. package/dist/ecs/store/public/schema/public.js +23 -0
  100. package/dist/ecs/store/public/schema/public.js.map +1 -0
  101. package/dist/ecs/store/public/schema/schema.d.ts +11 -0
  102. package/dist/ecs/store/public/schema/schema.js +23 -0
  103. package/dist/ecs/store/public/schema/schema.js.map +1 -0
  104. package/dist/ecs/store/public/types.d.ts +11 -0
  105. package/dist/ecs/store/public/types.js +23 -0
  106. package/dist/ecs/store/public/types.js.map +1 -0
  107. package/dist/ecs/store/store-schema/create-store-schema-test.d.ts +1 -0
  108. package/dist/ecs/store/store-schema/create-store-schema-test.js +33 -0
  109. package/dist/ecs/store/store-schema/create-store-schema-test.js.map +1 -0
  110. package/dist/ecs/store/store-schema/create-store-schema.d.ts +1 -0
  111. package/dist/ecs/store/store-schema/create-store-schema.js +45 -0
  112. package/dist/ecs/store/store-schema/create-store-schema.js.map +1 -0
  113. package/dist/ecs/store/store-schema/index.d.ts +1 -0
  114. package/dist/ecs/store/store-schema/index.js +21 -0
  115. package/dist/ecs/store/store-schema/index.js.map +1 -0
  116. package/dist/ecs/store/store-schema/store-schema.d.ts +1 -0
  117. package/dist/ecs/store/store-schema/store-schema.js +57 -0
  118. package/dist/ecs/store/store-schema/store-schema.js.map +1 -0
  119. package/dist/ecs/store/store.d.ts +4 -2
  120. package/dist/ecs/store/store.js +2 -6
  121. package/dist/ecs/store/store.js.map +1 -1
  122. package/dist/ecs/undo-redo-service/create-undo-redo-service.test.js +10 -6
  123. package/dist/ecs/undo-redo-service/create-undo-redo-service.test.js.map +1 -1
  124. package/dist/ecs/world/create-world.d.ts +7 -0
  125. package/dist/ecs/world/create-world.js +113 -0
  126. package/dist/ecs/world/create-world.js.map +1 -0
  127. package/dist/ecs/world/create-world.test.d.ts +1 -0
  128. package/dist/ecs/world/create-world.test.js +499 -0
  129. package/dist/ecs/world/create-world.test.js.map +1 -0
  130. package/dist/ecs/world/index.d.ts +5 -0
  131. package/dist/ecs/world/index.js +27 -0
  132. package/dist/ecs/world/index.js.map +1 -0
  133. package/dist/ecs/world/system-phase.d.ts +5 -0
  134. package/dist/ecs/world/system-phase.js +14 -0
  135. package/dist/ecs/world/system-phase.js.map +1 -0
  136. package/dist/ecs/world/system.d.ts +25 -0
  137. package/dist/ecs/world/system.js +2 -0
  138. package/dist/ecs/world/system.js.map +1 -0
  139. package/dist/ecs/world/world-schema/create-world-schema-test.d.ts +1 -0
  140. package/dist/ecs/world/world-schema/create-world-schema-test.js +55 -0
  141. package/dist/ecs/world/world-schema/create-world-schema-test.js.map +1 -0
  142. package/dist/ecs/world/world-schema/create-world-schema.d.ts +19 -0
  143. package/dist/ecs/world/world-schema/create-world-schema.js +33 -0
  144. package/dist/ecs/world/world-schema/create-world-schema.js.map +1 -0
  145. package/dist/ecs/world/world-schema/index.d.ts +2 -0
  146. package/dist/ecs/world/world-schema/index.js +24 -0
  147. package/dist/ecs/world/world-schema/index.js.map +1 -0
  148. package/dist/ecs/world/world-schema/world-schema.d.ts +18 -0
  149. package/dist/ecs/world/world-schema/world-schema.js +23 -0
  150. package/dist/ecs/world/world-schema/world-schema.js.map +1 -0
  151. package/dist/ecs/world/world.d.ts +11 -0
  152. package/dist/ecs/world/world.js +2 -0
  153. package/dist/ecs/world/world.js.map +1 -0
  154. package/dist/graphics/camera/camera.d.ts +62 -0
  155. package/dist/graphics/camera/camera.js +17 -0
  156. package/dist/graphics/camera/camera.js.map +1 -0
  157. package/dist/graphics/camera/index.d.ts +4 -0
  158. package/dist/graphics/camera/index.js +5 -0
  159. package/dist/graphics/camera/index.js.map +1 -0
  160. package/dist/graphics/camera/screen-to-world-ray.d.ts +12 -0
  161. package/dist/graphics/camera/screen-to-world-ray.js +49 -0
  162. package/dist/graphics/camera/screen-to-world-ray.js.map +1 -0
  163. package/dist/graphics/camera/screen-to-world-ray.test.d.ts +1 -0
  164. package/dist/graphics/camera/screen-to-world-ray.test.js +171 -0
  165. package/dist/graphics/camera/screen-to-world-ray.test.js.map +1 -0
  166. package/dist/graphics/camera/to-view-projection.d.ts +3 -0
  167. package/dist/graphics/camera/to-view-projection.js +8 -0
  168. package/dist/graphics/camera/to-view-projection.js.map +1 -0
  169. package/dist/graphics/camera/world-to-screen.d.ts +12 -0
  170. package/dist/graphics/camera/world-to-screen.js +38 -0
  171. package/dist/graphics/camera/world-to-screen.js.map +1 -0
  172. package/dist/graphics/camera/world-to-screen.test.d.ts +1 -0
  173. package/dist/graphics/camera/world-to-screen.test.js +124 -0
  174. package/dist/graphics/camera/world-to-screen.test.js.map +1 -0
  175. package/dist/graphics/create-struct-gpu-buffer.d.ts +7 -0
  176. package/dist/graphics/create-struct-gpu-buffer.js +17 -0
  177. package/dist/graphics/create-struct-gpu-buffer.js.map +1 -0
  178. package/dist/graphics/extract-wgsl-bindings.d.ts +5 -0
  179. package/dist/graphics/extract-wgsl-bindings.js +10 -0
  180. package/dist/graphics/extract-wgsl-bindings.js.map +1 -0
  181. package/dist/graphics/frame.d.ts +1 -0
  182. package/dist/graphics/frame.js +15 -0
  183. package/dist/graphics/frame.js.map +1 -0
  184. package/dist/graphics/get-web-gpu-device-and-context.d.ts +1 -0
  185. package/dist/graphics/get-web-gpu-device-and-context.js +24 -0
  186. package/dist/graphics/get-web-gpu-device-and-context.js.map +1 -0
  187. package/dist/graphics/graphics-context.d.ts +1 -0
  188. package/dist/graphics/graphics-context.js +7 -0
  189. package/dist/graphics/graphics-context.js.map +1 -0
  190. package/dist/graphics/index.d.ts +5 -0
  191. package/dist/graphics/index.js +5 -0
  192. package/dist/graphics/index.js.map +1 -0
  193. package/dist/graphics/to-gpu-buffer.d.ts +2 -0
  194. package/dist/graphics/to-gpu-buffer.js +14 -0
  195. package/dist/graphics/to-gpu-buffer.js.map +1 -0
  196. package/dist/internal/array-buffer-like/grow.d.ts +1 -0
  197. package/dist/internal/array-buffer-like/grow.js +9 -0
  198. package/dist/internal/array-buffer-like/grow.js.map +1 -0
  199. package/dist/math/aabb/aabb.d.ts +3 -52
  200. package/dist/math/aabb/aabb.js +2 -97
  201. package/dist/math/aabb/aabb.js.map +1 -1
  202. package/dist/math/aabb/constants/functions.d.ts +15 -0
  203. package/dist/math/aabb/constants/functions.js +76 -0
  204. package/dist/math/aabb/constants/functions.js.map +1 -0
  205. package/dist/math/aabb/constants/index.d.ts +3 -0
  206. package/dist/math/aabb/constants/index.js +25 -0
  207. package/dist/math/aabb/constants/index.js.map +1 -0
  208. package/dist/math/aabb/constants/layout.d.ts +1 -0
  209. package/dist/math/aabb/constants/layout.js +25 -0
  210. package/dist/math/aabb/constants/layout.js.map +1 -0
  211. package/dist/math/aabb/constants/schema.d.ts +33 -0
  212. package/dist/math/aabb/constants/schema.js +37 -0
  213. package/dist/math/aabb/constants/schema.js.map +1 -0
  214. package/dist/math/aabb/functions.d.ts +1 -0
  215. package/dist/math/aabb/functions.js +23 -0
  216. package/dist/math/aabb/functions.js.map +1 -0
  217. package/dist/math/aabb/lineIntersection.d.ts +10 -0
  218. package/dist/math/aabb/lineIntersection.js +42 -0
  219. package/dist/math/aabb/lineIntersection.js.map +1 -0
  220. package/dist/math/aabb-face/aabb-face.d.ts +3 -53
  221. package/dist/math/aabb-face/aabb-face.js +1 -135
  222. package/dist/math/aabb-face/aabb-face.js.map +1 -1
  223. package/dist/math/aabb-face/aabb-face.test.js +1 -1
  224. package/dist/math/aabb-face/aabb-face.test.js.map +1 -1
  225. package/dist/math/aabb-face/constants/functions.d.ts +47 -0
  226. package/dist/math/aabb-face/constants/functions.js +148 -0
  227. package/dist/math/aabb-face/constants/functions.js.map +1 -0
  228. package/dist/math/aabb-face/constants/index.d.ts +2 -0
  229. package/dist/math/aabb-face/constants/index.js +24 -0
  230. package/dist/math/aabb-face/constants/index.js.map +1 -0
  231. package/dist/math/aabb-face/constants/schema.d.ts +5 -0
  232. package/dist/math/aabb-face/constants/schema.js +27 -0
  233. package/dist/math/aabb-face/constants/schema.js.map +1 -0
  234. package/dist/math/aabb-face/face.d.ts +51 -0
  235. package/dist/math/aabb-face/face.js +110 -0
  236. package/dist/math/aabb-face/face.js.map +1 -0
  237. package/dist/math/aabb-face/face.test.d.ts +1 -0
  238. package/dist/math/aabb-face/face.test.js +94 -0
  239. package/dist/math/aabb-face/face.test.js.map +1 -0
  240. package/dist/math/aabb-face/functions.d.ts +47 -0
  241. package/dist/math/aabb-face/functions.js +148 -0
  242. package/dist/math/aabb-face/functions.js.map +1 -0
  243. package/dist/math/aabb-face/index.d.ts +4 -0
  244. package/dist/math/aabb-face/index.js +23 -0
  245. package/dist/math/aabb-face/index.js.map +1 -0
  246. package/dist/math/aabb-face/public.d.ts +2 -0
  247. package/dist/math/aabb-face/public.js +24 -0
  248. package/dist/math/aabb-face/public.js.map +1 -0
  249. package/dist/math/aabb-face/schema.d.ts +5 -0
  250. package/dist/math/aabb-face/schema.js +27 -0
  251. package/dist/math/aabb-face/schema.js.map +1 -0
  252. package/dist/math/box/box.d.ts +50 -0
  253. package/dist/math/box/box.js +23 -0
  254. package/dist/math/box/box.js.map +1 -0
  255. package/dist/math/f32/constants/index.d.ts +1 -0
  256. package/dist/math/f32/constants/index.js +23 -0
  257. package/dist/math/f32/constants/index.js.map +1 -0
  258. package/dist/math/f32/constants/schema.d.ts +5 -0
  259. package/dist/math/f32/constants/schema.js +24 -0
  260. package/dist/math/f32/constants/schema.js.map +1 -0
  261. package/dist/math/f32/f32.d.ts +3 -8
  262. package/dist/math/f32/f32.js +1 -6
  263. package/dist/math/f32/f32.js.map +1 -1
  264. package/dist/math/face/face.d.ts +51 -0
  265. package/dist/math/face/face.js +110 -0
  266. package/dist/math/face/face.js.map +1 -0
  267. package/dist/math/face/face.test.d.ts +1 -0
  268. package/dist/math/face/face.test.js +94 -0
  269. package/dist/math/face/face.test.js.map +1 -0
  270. package/dist/math/i32/constants/index.d.ts +1 -0
  271. package/dist/math/i32/constants/index.js +23 -0
  272. package/dist/math/i32/constants/index.js.map +1 -0
  273. package/dist/math/i32/constants/schema.d.ts +6 -0
  274. package/dist/math/i32/constants/schema.js +24 -0
  275. package/dist/math/i32/constants/schema.js.map +1 -0
  276. package/dist/math/i32/i32.d.ts +3 -9
  277. package/dist/math/i32/i32.js +1 -6
  278. package/dist/math/i32/i32.js.map +1 -1
  279. package/dist/math/line2/constants/functions.d.ts +5 -0
  280. package/dist/math/line2/constants/functions.js +61 -0
  281. package/dist/math/line2/constants/functions.js.map +1 -0
  282. package/dist/math/line2/constants/index.d.ts +3 -0
  283. package/dist/math/line2/constants/index.js +25 -0
  284. package/dist/math/line2/constants/index.js.map +1 -0
  285. package/dist/math/line2/constants/layout.d.ts +1 -0
  286. package/dist/math/line2/constants/layout.js +25 -0
  287. package/dist/math/line2/constants/layout.js.map +1 -0
  288. package/dist/math/line2/constants/schema.d.ts +33 -0
  289. package/dist/math/line2/constants/schema.js +37 -0
  290. package/dist/math/line2/constants/schema.js.map +1 -0
  291. package/dist/math/line2/line2.d.ts +3 -41
  292. package/dist/math/line2/line2.js +1 -60
  293. package/dist/math/line2/line2.js.map +1 -1
  294. package/dist/math/line3/constants/functions.d.ts +17 -0
  295. package/dist/math/line3/constants/functions.js +70 -0
  296. package/dist/math/line3/constants/functions.js.map +1 -0
  297. package/dist/math/line3/constants/index.d.ts +3 -0
  298. package/dist/math/line3/constants/index.js +25 -0
  299. package/dist/math/line3/constants/index.js.map +1 -0
  300. package/dist/math/line3/constants/layout.d.ts +1 -0
  301. package/dist/math/line3/constants/layout.js +25 -0
  302. package/dist/math/line3/constants/layout.js.map +1 -0
  303. package/dist/math/line3/constants/schema.d.ts +33 -0
  304. package/dist/math/line3/constants/schema.js +37 -0
  305. package/dist/math/line3/constants/schema.js.map +1 -0
  306. package/dist/math/line3/line3.d.ts +3 -53
  307. package/dist/math/line3/line3.js +1 -68
  308. package/dist/math/line3/line3.js.map +1 -1
  309. package/dist/math/mat4x4/constants/functions.d.ts +23 -0
  310. package/dist/math/mat4x4/constants/functions.js +236 -0
  311. package/dist/math/mat4x4/constants/functions.js.map +1 -0
  312. package/dist/math/mat4x4/constants/index.d.ts +3 -0
  313. package/dist/math/mat4x4/constants/index.js +25 -0
  314. package/dist/math/mat4x4/constants/index.js.map +1 -0
  315. package/dist/math/mat4x4/constants/layout.d.ts +1 -0
  316. package/dist/math/mat4x4/constants/layout.js +25 -0
  317. package/dist/math/mat4x4/constants/layout.js.map +1 -0
  318. package/dist/math/mat4x4/constants/schema.d.ts +11 -0
  319. package/dist/math/mat4x4/constants/schema.js +30 -0
  320. package/dist/math/mat4x4/constants/schema.js.map +1 -0
  321. package/dist/math/mat4x4/mat4x4.d.ts +3 -36
  322. package/dist/math/mat4x4/mat4x4.js +1 -228
  323. package/dist/math/mat4x4/mat4x4.js.map +1 -1
  324. package/dist/math/picking/face.d.ts +1 -0
  325. package/dist/math/picking/face.js +2 -0
  326. package/dist/math/picking/face.js.map +1 -0
  327. package/dist/math/picking/get-closest-entity-to-line.d.ts +4 -0
  328. package/dist/math/picking/get-closest-entity-to-line.js +30 -0
  329. package/dist/math/picking/get-closest-entity-to-line.js.map +1 -0
  330. package/dist/math/picking/get-closest-entity-to-point.d.ts +4 -0
  331. package/dist/math/picking/get-closest-entity-to-point.js +27 -0
  332. package/dist/math/picking/get-closest-entity-to-point.js.map +1 -0
  333. package/dist/math/picking/get-intersecting-entities.d.ts +12 -0
  334. package/dist/math/picking/get-intersecting-entities.js +15 -0
  335. package/dist/math/picking/get-intersecting-entities.js.map +1 -0
  336. package/dist/math/picking/getClosestEntityToLine.d.ts +4 -0
  337. package/dist/math/picking/getClosestEntityToLine.js +29 -0
  338. package/dist/math/picking/getClosestEntityToLine.js.map +1 -0
  339. package/dist/math/picking/getClosestEntityToPoint.d.ts +4 -0
  340. package/dist/math/picking/getClosestEntityToPoint.js +27 -0
  341. package/dist/math/picking/getClosestEntityToPoint.js.map +1 -0
  342. package/dist/math/picking/getIntersectingEntities.d.ts +12 -0
  343. package/dist/math/picking/getIntersectingEntities.js +15 -0
  344. package/dist/math/picking/getIntersectingEntities.js.map +1 -0
  345. package/dist/math/picking/index.d.ts +5 -0
  346. package/dist/math/picking/index.js +27 -0
  347. package/dist/math/picking/index.js.map +1 -0
  348. package/dist/math/picking/pick-from-tables.d.ts +19 -0
  349. package/dist/math/picking/pick-from-tables.js +63 -0
  350. package/dist/math/picking/pick-from-tables.js.map +1 -0
  351. package/dist/math/picking/pick-result.d.ts +12 -0
  352. package/dist/math/picking/pick-result.js +23 -0
  353. package/dist/math/picking/pick-result.js.map +1 -0
  354. package/dist/math/plane/constants/functions.d.ts +16 -0
  355. package/dist/math/plane/constants/functions.js +54 -0
  356. package/dist/math/plane/constants/functions.js.map +1 -0
  357. package/dist/math/plane/constants/index.d.ts +3 -0
  358. package/dist/math/plane/constants/index.js +25 -0
  359. package/dist/math/plane/constants/index.js.map +1 -0
  360. package/dist/math/plane/constants/layout.d.ts +1 -0
  361. package/dist/math/plane/constants/layout.js +25 -0
  362. package/dist/math/plane/constants/layout.js.map +1 -0
  363. package/dist/math/plane/constants/schema.d.ts +24 -0
  364. package/dist/{schema/type.js → math/plane/constants/schema.js} +7 -7
  365. package/dist/math/plane/constants/schema.js.map +1 -0
  366. package/dist/math/plane/plane.d.ts +3 -42
  367. package/dist/math/plane/plane.js +1 -49
  368. package/dist/math/plane/plane.js.map +1 -1
  369. package/dist/math/quat/constants/index.d.ts +3 -0
  370. package/dist/math/quat/constants/index.js +25 -0
  371. package/dist/math/quat/constants/index.js.map +1 -0
  372. package/dist/math/quat/constants/layout.d.ts +1 -0
  373. package/dist/math/quat/constants/layout.js +25 -0
  374. package/dist/math/quat/constants/layout.js.map +1 -0
  375. package/dist/math/quat/constants/schema.d.ts +11 -0
  376. package/dist/math/quat/constants/schema.js +30 -0
  377. package/dist/math/quat/constants/schema.js.map +1 -0
  378. package/dist/math/quat/quat.d.ts +3 -56
  379. package/dist/math/quat/quat.js +1 -250
  380. package/dist/math/quat/quat.js.map +1 -1
  381. package/dist/math/transform/debug-inverse.d.ts +1 -0
  382. package/dist/math/transform/debug-inverse.js +28 -0
  383. package/dist/math/transform/debug-inverse.js.map +1 -0
  384. package/dist/math/transform/debug-quat.d.ts +1 -0
  385. package/dist/math/transform/debug-quat.js +23 -0
  386. package/dist/math/transform/debug-quat.js.map +1 -0
  387. package/dist/math/transform/debug-test.d.ts +1 -0
  388. package/dist/math/transform/debug-test.js +34 -0
  389. package/dist/math/transform/debug-test.js.map +1 -0
  390. package/dist/math/transform/transform.d.ts +58 -0
  391. package/dist/math/transform/transform.js +101 -0
  392. package/dist/math/transform/transform.js.map +1 -0
  393. package/dist/math/transform/transform.test.d.ts +1 -0
  394. package/dist/math/transform/transform.test.js +309 -0
  395. package/dist/math/transform/transform.test.js.map +1 -0
  396. package/dist/math/u32/constants/index.d.ts +1 -0
  397. package/dist/math/u32/constants/index.js +23 -0
  398. package/dist/math/u32/constants/index.js.map +1 -0
  399. package/dist/math/u32/constants/schema.d.ts +6 -0
  400. package/dist/math/u32/constants/schema.js +24 -0
  401. package/dist/math/u32/constants/schema.js.map +1 -0
  402. package/dist/math/u32/u32.d.ts +3 -9
  403. package/dist/math/u32/u32.js +1 -6
  404. package/dist/math/u32/u32.js.map +1 -1
  405. package/dist/math/vec2/constants/functions.d.ts +48 -0
  406. package/dist/math/vec2/constants/functions.js +104 -0
  407. package/dist/math/vec2/constants/functions.js.map +1 -0
  408. package/dist/math/vec2/constants/index.d.ts +3 -0
  409. package/dist/math/vec2/constants/index.js +25 -0
  410. package/dist/math/vec2/constants/index.js.map +1 -0
  411. package/dist/math/vec2/constants/layout.d.ts +1 -0
  412. package/dist/math/vec2/constants/layout.js +25 -0
  413. package/dist/math/vec2/constants/layout.js.map +1 -0
  414. package/dist/math/vec2/constants/schema.d.ts +11 -0
  415. package/dist/math/vec2/constants/schema.js +30 -0
  416. package/dist/math/vec2/constants/schema.js.map +1 -0
  417. package/dist/math/vec2/functions/abs.d.ts +2 -0
  418. package/dist/math/vec2/functions/abs.js +23 -0
  419. package/dist/math/vec2/functions/abs.js.map +1 -0
  420. package/dist/math/vec2/functions/acos.d.ts +2 -0
  421. package/dist/math/vec2/functions/acos.js +23 -0
  422. package/dist/math/vec2/functions/acos.js.map +1 -0
  423. package/dist/math/vec2/functions/acosh.d.ts +2 -0
  424. package/dist/math/vec2/functions/acosh.js +23 -0
  425. package/dist/math/vec2/functions/acosh.js.map +1 -0
  426. package/dist/math/vec2/functions/add.d.ts +2 -0
  427. package/dist/math/vec2/functions/add.js +23 -0
  428. package/dist/math/vec2/functions/add.js.map +1 -0
  429. package/dist/math/vec2/functions/asin.d.ts +2 -0
  430. package/dist/math/vec2/functions/asin.js +23 -0
  431. package/dist/math/vec2/functions/asin.js.map +1 -0
  432. package/dist/math/vec2/functions/asinh.d.ts +2 -0
  433. package/dist/math/vec2/functions/asinh.js +23 -0
  434. package/dist/math/vec2/functions/asinh.js.map +1 -0
  435. package/dist/math/vec2/functions/atan.d.ts +2 -0
  436. package/dist/math/vec2/functions/atan.js +23 -0
  437. package/dist/math/vec2/functions/atan.js.map +1 -0
  438. package/dist/math/vec2/functions/atanh.d.ts +2 -0
  439. package/dist/math/vec2/functions/atanh.js +23 -0
  440. package/dist/math/vec2/functions/atanh.js.map +1 -0
  441. package/dist/math/vec2/functions/ceil.d.ts +2 -0
  442. package/dist/math/vec2/functions/ceil.js +23 -0
  443. package/dist/math/vec2/functions/ceil.js.map +1 -0
  444. package/dist/math/vec2/functions/clamp.d.ts +2 -0
  445. package/dist/math/vec2/functions/clamp.js +25 -0
  446. package/dist/math/vec2/functions/clamp.js.map +1 -0
  447. package/dist/math/vec2/functions/cos.d.ts +2 -0
  448. package/dist/math/vec2/functions/cos.js +23 -0
  449. package/dist/math/vec2/functions/cos.js.map +1 -0
  450. package/dist/math/vec2/functions/cosh.d.ts +2 -0
  451. package/dist/math/vec2/functions/cosh.js +23 -0
  452. package/dist/math/vec2/functions/cosh.js.map +1 -0
  453. package/dist/math/vec2/functions/distance.d.ts +2 -0
  454. package/dist/math/vec2/functions/distance.js +25 -0
  455. package/dist/math/vec2/functions/distance.js.map +1 -0
  456. package/dist/math/vec2/functions/dot.d.ts +2 -0
  457. package/dist/math/vec2/functions/dot.js +23 -0
  458. package/dist/math/vec2/functions/dot.js.map +1 -0
  459. package/dist/math/vec2/functions/exp-2.d.ts +2 -0
  460. package/dist/math/vec2/functions/exp-2.js +23 -0
  461. package/dist/math/vec2/functions/exp-2.js.map +1 -0
  462. package/dist/math/vec2/functions/exp.d.ts +2 -0
  463. package/dist/math/vec2/functions/exp.js +23 -0
  464. package/dist/math/vec2/functions/exp.js.map +1 -0
  465. package/dist/math/vec2/functions/face-forward.d.ts +2 -0
  466. package/dist/math/vec2/functions/face-forward.js +25 -0
  467. package/dist/math/vec2/functions/face-forward.js.map +1 -0
  468. package/dist/math/vec2/functions/floor.d.ts +2 -0
  469. package/dist/math/vec2/functions/floor.js +23 -0
  470. package/dist/math/vec2/functions/floor.js.map +1 -0
  471. package/dist/math/vec2/functions/fract.d.ts +2 -0
  472. package/dist/math/vec2/functions/fract.js +23 -0
  473. package/dist/math/vec2/functions/fract.js.map +1 -0
  474. package/dist/math/vec2/functions/functions.d.ts +48 -0
  475. package/dist/math/vec2/functions/functions.js +104 -0
  476. package/dist/math/vec2/functions/functions.js.map +1 -0
  477. package/dist/math/vec2/functions/index.d.ts +3 -0
  478. package/dist/math/vec2/functions/index.js +25 -0
  479. package/dist/math/vec2/functions/index.js.map +1 -0
  480. package/dist/math/vec2/functions/layout.d.ts +1 -0
  481. package/dist/math/vec2/functions/layout.js +25 -0
  482. package/dist/math/vec2/functions/layout.js.map +1 -0
  483. package/dist/math/vec2/functions/length.d.ts +2 -0
  484. package/dist/math/vec2/functions/length.js +23 -0
  485. package/dist/math/vec2/functions/length.js.map +1 -0
  486. package/dist/math/vec2/functions/log-2.d.ts +2 -0
  487. package/dist/math/vec2/functions/log-2.js +23 -0
  488. package/dist/math/vec2/functions/log-2.js.map +1 -0
  489. package/dist/math/vec2/functions/log.d.ts +2 -0
  490. package/dist/math/vec2/functions/log.js +23 -0
  491. package/dist/math/vec2/functions/log.js.map +1 -0
  492. package/dist/math/vec2/functions/max.d.ts +2 -0
  493. package/dist/math/vec2/functions/max.js +23 -0
  494. package/dist/math/vec2/functions/max.js.map +1 -0
  495. package/dist/math/vec2/functions/min.d.ts +2 -0
  496. package/dist/math/vec2/functions/min.js +23 -0
  497. package/dist/math/vec2/functions/min.js.map +1 -0
  498. package/dist/math/vec2/functions/mix.d.ts +2 -0
  499. package/dist/math/vec2/functions/mix.js +26 -0
  500. package/dist/math/vec2/functions/mix.js.map +1 -0
  501. package/dist/math/vec2/functions/mod.d.ts +2 -0
  502. package/dist/math/vec2/functions/mod.js +26 -0
  503. package/dist/math/vec2/functions/mod.js.map +1 -0
  504. package/dist/math/vec2/functions/modf.d.ts +5 -0
  505. package/dist/math/vec2/functions/modf.js +26 -0
  506. package/dist/math/vec2/functions/modf.js.map +1 -0
  507. package/dist/math/vec2/functions/negate.d.ts +2 -0
  508. package/dist/math/vec2/functions/negate.js +23 -0
  509. package/dist/math/vec2/functions/negate.js.map +1 -0
  510. package/dist/math/vec2/functions/normalize.d.ts +2 -0
  511. package/dist/math/vec2/functions/normalize.js +28 -0
  512. package/dist/math/vec2/functions/normalize.js.map +1 -0
  513. package/dist/math/vec2/functions/pow.d.ts +2 -0
  514. package/dist/math/vec2/functions/pow.js +26 -0
  515. package/dist/math/vec2/functions/pow.js.map +1 -0
  516. package/dist/math/vec2/functions/reflect.d.ts +2 -0
  517. package/dist/math/vec2/functions/reflect.js +29 -0
  518. package/dist/math/vec2/functions/reflect.js.map +1 -0
  519. package/dist/math/vec2/functions/refract.d.ts +2 -0
  520. package/dist/math/vec2/functions/refract.js +34 -0
  521. package/dist/math/vec2/functions/refract.js.map +1 -0
  522. package/dist/math/vec2/functions/round.d.ts +2 -0
  523. package/dist/math/vec2/functions/round.js +23 -0
  524. package/dist/math/vec2/functions/round.js.map +1 -0
  525. package/dist/math/vec2/functions/scale.d.ts +2 -0
  526. package/dist/math/vec2/functions/scale.js +23 -0
  527. package/dist/math/vec2/functions/scale.js.map +1 -0
  528. package/dist/math/vec2/functions/schema.d.ts +11 -0
  529. package/dist/math/vec2/functions/schema.js +30 -0
  530. package/dist/math/vec2/functions/schema.js.map +1 -0
  531. package/dist/math/vec2/functions/sign.d.ts +2 -0
  532. package/dist/math/vec2/functions/sign.js +23 -0
  533. package/dist/math/vec2/functions/sign.js.map +1 -0
  534. package/dist/math/vec2/functions/sin.d.ts +2 -0
  535. package/dist/math/vec2/functions/sin.js +23 -0
  536. package/dist/math/vec2/functions/sin.js.map +1 -0
  537. package/dist/math/vec2/functions/sinh.d.ts +2 -0
  538. package/dist/math/vec2/functions/sinh.js +23 -0
  539. package/dist/math/vec2/functions/sinh.js.map +1 -0
  540. package/dist/math/vec2/functions/smooth-step.d.ts +2 -0
  541. package/dist/math/vec2/functions/smooth-step.js +27 -0
  542. package/dist/math/vec2/functions/smooth-step.js.map +1 -0
  543. package/dist/math/vec2/functions/sqrt.d.ts +2 -0
  544. package/dist/math/vec2/functions/sqrt.js +23 -0
  545. package/dist/math/vec2/functions/sqrt.js.map +1 -0
  546. package/dist/math/vec2/functions/step.d.ts +2 -0
  547. package/dist/math/vec2/functions/step.js +26 -0
  548. package/dist/math/vec2/functions/step.js.map +1 -0
  549. package/dist/math/vec2/functions/subtract.d.ts +2 -0
  550. package/dist/math/vec2/functions/subtract.js +23 -0
  551. package/dist/math/vec2/functions/subtract.js.map +1 -0
  552. package/dist/math/vec2/functions/tan.d.ts +2 -0
  553. package/dist/math/vec2/functions/tan.js +23 -0
  554. package/dist/math/vec2/functions/tan.js.map +1 -0
  555. package/dist/math/vec2/functions/tanh.d.ts +2 -0
  556. package/dist/math/vec2/functions/tanh.js +23 -0
  557. package/dist/math/vec2/functions/tanh.js.map +1 -0
  558. package/dist/math/vec2/functions/trunc.d.ts +2 -0
  559. package/dist/math/vec2/functions/trunc.js +23 -0
  560. package/dist/math/vec2/functions/trunc.js.map +1 -0
  561. package/dist/math/vec2/vec2.d.ts +3 -62
  562. package/dist/math/vec2/vec2.js +1 -96
  563. package/dist/math/vec2/vec2.js.map +1 -1
  564. package/dist/math/vec3/constants/functions.d.ts +59 -0
  565. package/dist/math/vec3/constants/functions.js +159 -0
  566. package/dist/math/vec3/constants/functions.js.map +1 -0
  567. package/dist/math/vec3/constants/index.d.ts +3 -0
  568. package/dist/math/vec3/constants/index.js +25 -0
  569. package/dist/math/vec3/constants/index.js.map +1 -0
  570. package/dist/math/vec3/constants/layout.d.ts +1 -0
  571. package/dist/math/vec3/constants/layout.js +25 -0
  572. package/dist/math/vec3/constants/layout.js.map +1 -0
  573. package/dist/math/vec3/constants/schema.d.ts +11 -0
  574. package/dist/math/vec3/constants/schema.js +30 -0
  575. package/dist/math/vec3/constants/schema.js.map +1 -0
  576. package/dist/math/vec3/functions/abs.d.ts +2 -0
  577. package/dist/math/vec3/functions/abs.js +23 -0
  578. package/dist/math/vec3/functions/abs.js.map +1 -0
  579. package/dist/math/vec3/functions/acos.d.ts +2 -0
  580. package/dist/math/vec3/functions/acos.js +23 -0
  581. package/dist/math/vec3/functions/acos.js.map +1 -0
  582. package/dist/math/vec3/functions/acosh.d.ts +2 -0
  583. package/dist/math/vec3/functions/acosh.js +23 -0
  584. package/dist/math/vec3/functions/acosh.js.map +1 -0
  585. package/dist/math/vec3/functions/add.d.ts +2 -0
  586. package/dist/math/vec3/functions/add.js +27 -0
  587. package/dist/math/vec3/functions/add.js.map +1 -0
  588. package/dist/math/vec3/functions/asin.d.ts +2 -0
  589. package/dist/math/vec3/functions/asin.js +23 -0
  590. package/dist/math/vec3/functions/asin.js.map +1 -0
  591. package/dist/math/vec3/functions/asinh.d.ts +2 -0
  592. package/dist/math/vec3/functions/asinh.js +23 -0
  593. package/dist/math/vec3/functions/asinh.js.map +1 -0
  594. package/dist/math/vec3/functions/atan.d.ts +2 -0
  595. package/dist/math/vec3/functions/atan.js +23 -0
  596. package/dist/math/vec3/functions/atan.js.map +1 -0
  597. package/dist/math/vec3/functions/atanh.d.ts +2 -0
  598. package/dist/math/vec3/functions/atanh.js +23 -0
  599. package/dist/math/vec3/functions/atanh.js.map +1 -0
  600. package/dist/math/vec3/functions/ceil.d.ts +2 -0
  601. package/dist/math/vec3/functions/ceil.js +23 -0
  602. package/dist/math/vec3/functions/ceil.js.map +1 -0
  603. package/dist/math/vec3/functions/clamp.d.ts +2 -0
  604. package/dist/math/vec3/functions/clamp.js +25 -0
  605. package/dist/math/vec3/functions/clamp.js.map +1 -0
  606. package/dist/math/vec3/functions/cos.d.ts +2 -0
  607. package/dist/math/vec3/functions/cos.js +23 -0
  608. package/dist/math/vec3/functions/cos.js.map +1 -0
  609. package/dist/math/vec3/functions/cosh.d.ts +2 -0
  610. package/dist/math/vec3/functions/cosh.js +23 -0
  611. package/dist/math/vec3/functions/cosh.js.map +1 -0
  612. package/dist/math/vec3/functions/cross.d.ts +2 -0
  613. package/dist/math/vec3/functions/cross.js +27 -0
  614. package/dist/math/vec3/functions/cross.js.map +1 -0
  615. package/dist/math/vec3/functions/distance-squared.d.ts +2 -0
  616. package/dist/math/vec3/functions/distance-squared.js +28 -0
  617. package/dist/math/vec3/functions/distance-squared.js.map +1 -0
  618. package/dist/math/vec3/functions/distance.d.ts +2 -0
  619. package/dist/math/vec3/functions/distance.js +25 -0
  620. package/dist/math/vec3/functions/distance.js.map +1 -0
  621. package/dist/math/vec3/functions/dot.d.ts +2 -0
  622. package/dist/math/vec3/functions/dot.js +23 -0
  623. package/dist/math/vec3/functions/dot.js.map +1 -0
  624. package/dist/math/vec3/functions/equals.d.ts +2 -0
  625. package/dist/math/vec3/functions/equals.js +23 -0
  626. package/dist/math/vec3/functions/equals.js.map +1 -0
  627. package/dist/math/vec3/functions/exp-2.d.ts +2 -0
  628. package/dist/math/vec3/functions/exp-2.js +23 -0
  629. package/dist/math/vec3/functions/exp-2.js.map +1 -0
  630. package/dist/math/vec3/functions/exp.d.ts +2 -0
  631. package/dist/math/vec3/functions/exp.js +23 -0
  632. package/dist/math/vec3/functions/exp.js.map +1 -0
  633. package/dist/math/vec3/functions/face-forward.d.ts +2 -0
  634. package/dist/math/vec3/functions/face-forward.js +25 -0
  635. package/dist/math/vec3/functions/face-forward.js.map +1 -0
  636. package/dist/math/vec3/functions/floor.d.ts +2 -0
  637. package/dist/math/vec3/functions/floor.js +23 -0
  638. package/dist/math/vec3/functions/floor.js.map +1 -0
  639. package/dist/math/vec3/functions/fract.d.ts +2 -0
  640. package/dist/math/vec3/functions/fract.js +27 -0
  641. package/dist/math/vec3/functions/fract.js.map +1 -0
  642. package/dist/math/vec3/functions/index.d.ts +54 -0
  643. package/dist/math/vec3/functions/index.js +76 -0
  644. package/dist/math/vec3/functions/index.js.map +1 -0
  645. package/dist/math/vec3/functions/layout.d.ts +1 -0
  646. package/dist/math/vec3/functions/layout.js +25 -0
  647. package/dist/math/vec3/functions/layout.js.map +1 -0
  648. package/dist/math/vec3/functions/length-squared.d.ts +2 -0
  649. package/dist/math/vec3/functions/length-squared.js +23 -0
  650. package/dist/math/vec3/functions/length-squared.js.map +1 -0
  651. package/dist/math/vec3/functions/length.d.ts +2 -0
  652. package/dist/math/vec3/functions/length.js +23 -0
  653. package/dist/math/vec3/functions/length.js.map +1 -0
  654. package/dist/math/vec3/functions/log-2.d.ts +2 -0
  655. package/dist/math/vec3/functions/log-2.js +23 -0
  656. package/dist/math/vec3/functions/log-2.js.map +1 -0
  657. package/dist/math/vec3/functions/log.d.ts +2 -0
  658. package/dist/math/vec3/functions/log.js +23 -0
  659. package/dist/math/vec3/functions/log.js.map +1 -0
  660. package/dist/math/vec3/functions/max.d.ts +2 -0
  661. package/dist/math/vec3/functions/max.js +27 -0
  662. package/dist/math/vec3/functions/max.js.map +1 -0
  663. package/dist/math/vec3/functions/min.d.ts +2 -0
  664. package/dist/math/vec3/functions/min.js +27 -0
  665. package/dist/math/vec3/functions/min.js.map +1 -0
  666. package/dist/math/vec3/functions/mix.d.ts +2 -0
  667. package/dist/math/vec3/functions/mix.js +27 -0
  668. package/dist/math/vec3/functions/mix.js.map +1 -0
  669. package/dist/math/vec3/functions/mod.d.ts +2 -0
  670. package/dist/math/vec3/functions/mod.js +27 -0
  671. package/dist/math/vec3/functions/mod.js.map +1 -0
  672. package/dist/math/vec3/functions/modf.d.ts +5 -0
  673. package/dist/math/vec3/functions/modf.js +26 -0
  674. package/dist/math/vec3/functions/modf.js.map +1 -0
  675. package/dist/math/vec3/functions/multiply.d.ts +5 -0
  676. package/dist/math/vec3/functions/multiply.js +30 -0
  677. package/dist/math/vec3/functions/multiply.js.map +1 -0
  678. package/dist/math/vec3/functions/negate.d.ts +2 -0
  679. package/dist/math/vec3/functions/negate.js +23 -0
  680. package/dist/math/vec3/functions/negate.js.map +1 -0
  681. package/dist/math/vec3/functions/normalize.d.ts +2 -0
  682. package/dist/math/vec3/functions/normalize.js +28 -0
  683. package/dist/math/vec3/functions/normalize.js.map +1 -0
  684. package/dist/math/vec3/functions/one.d.ts +2 -0
  685. package/dist/math/vec3/functions/one.js +23 -0
  686. package/dist/math/vec3/functions/one.js.map +1 -0
  687. package/dist/math/vec3/functions/pow.d.ts +2 -0
  688. package/dist/math/vec3/functions/pow.js +27 -0
  689. package/dist/math/vec3/functions/pow.js.map +1 -0
  690. package/dist/math/vec3/functions/random.d.ts +2 -0
  691. package/dist/math/vec3/functions/random.js +25 -0
  692. package/dist/math/vec3/functions/random.js.map +1 -0
  693. package/dist/math/vec3/functions/reflect.d.ts +2 -0
  694. package/dist/math/vec3/functions/reflect.js +29 -0
  695. package/dist/math/vec3/functions/reflect.js.map +1 -0
  696. package/dist/math/vec3/functions/refract.d.ts +2 -0
  697. package/dist/math/vec3/functions/refract.js +34 -0
  698. package/dist/math/vec3/functions/refract.js.map +1 -0
  699. package/dist/math/vec3/functions/round.d.ts +2 -0
  700. package/dist/math/vec3/functions/round.js +23 -0
  701. package/dist/math/vec3/functions/round.js.map +1 -0
  702. package/dist/math/vec3/functions/scale.d.ts +2 -0
  703. package/dist/math/vec3/functions/scale.js +23 -0
  704. package/dist/math/vec3/functions/scale.js.map +1 -0
  705. package/dist/math/vec3/functions/schema.d.ts +11 -0
  706. package/dist/math/vec3/functions/schema.js +30 -0
  707. package/dist/math/vec3/functions/schema.js.map +1 -0
  708. package/dist/math/vec3/functions/sign.d.ts +2 -0
  709. package/dist/math/vec3/functions/sign.js +23 -0
  710. package/dist/math/vec3/functions/sign.js.map +1 -0
  711. package/dist/math/vec3/functions/sin.d.ts +2 -0
  712. package/dist/math/vec3/functions/sin.js +23 -0
  713. package/dist/math/vec3/functions/sin.js.map +1 -0
  714. package/dist/math/vec3/functions/sinh.d.ts +2 -0
  715. package/dist/math/vec3/functions/sinh.js +23 -0
  716. package/dist/math/vec3/functions/sinh.js.map +1 -0
  717. package/dist/math/vec3/functions/smooth-step.d.ts +2 -0
  718. package/dist/math/vec3/functions/smooth-step.js +32 -0
  719. package/dist/math/vec3/functions/smooth-step.js.map +1 -0
  720. package/dist/math/vec3/functions/sqrt.d.ts +2 -0
  721. package/dist/math/vec3/functions/sqrt.js +23 -0
  722. package/dist/math/vec3/functions/sqrt.js.map +1 -0
  723. package/dist/math/vec3/functions/step.d.ts +2 -0
  724. package/dist/math/vec3/functions/step.js +27 -0
  725. package/dist/math/vec3/functions/step.js.map +1 -0
  726. package/dist/math/vec3/functions/subtract.d.ts +2 -0
  727. package/dist/math/vec3/functions/subtract.js +27 -0
  728. package/dist/math/vec3/functions/subtract.js.map +1 -0
  729. package/dist/math/vec3/functions/tan.d.ts +2 -0
  730. package/dist/math/vec3/functions/tan.js +23 -0
  731. package/dist/math/vec3/functions/tan.js.map +1 -0
  732. package/dist/math/vec3/functions/tanh.d.ts +2 -0
  733. package/dist/math/vec3/functions/tanh.js +23 -0
  734. package/dist/math/vec3/functions/tanh.js.map +1 -0
  735. package/dist/math/vec3/functions/trunc.d.ts +2 -0
  736. package/dist/math/vec3/functions/trunc.js +23 -0
  737. package/dist/math/vec3/functions/trunc.js.map +1 -0
  738. package/dist/math/vec3/functions/zero.d.ts +2 -0
  739. package/dist/math/vec3/functions/zero.js +23 -0
  740. package/dist/math/vec3/functions/zero.js.map +1 -0
  741. package/dist/math/vec3/vec3.d.ts +3 -73
  742. package/dist/math/vec3/vec3.js +1 -151
  743. package/dist/math/vec3/vec3.js.map +1 -1
  744. package/dist/math/vec4/constants/functions.d.ts +49 -0
  745. package/dist/math/vec4/constants/functions.js +150 -0
  746. package/dist/math/vec4/constants/functions.js.map +1 -0
  747. package/dist/math/vec4/constants/index.d.ts +3 -0
  748. package/dist/math/vec4/constants/index.js +25 -0
  749. package/dist/math/vec4/constants/index.js.map +1 -0
  750. package/dist/math/vec4/constants/layout.d.ts +1 -0
  751. package/dist/math/vec4/constants/layout.js +25 -0
  752. package/dist/math/vec4/constants/layout.js.map +1 -0
  753. package/dist/math/vec4/constants/schema.d.ts +11 -0
  754. package/dist/math/vec4/constants/schema.js +30 -0
  755. package/dist/math/vec4/constants/schema.js.map +1 -0
  756. package/dist/math/vec4/functions/abs.d.ts +2 -0
  757. package/dist/math/vec4/functions/abs.js +23 -0
  758. package/dist/math/vec4/functions/abs.js.map +1 -0
  759. package/dist/math/vec4/functions/ceil.d.ts +2 -0
  760. package/dist/math/vec4/functions/ceil.js +23 -0
  761. package/dist/math/vec4/functions/ceil.js.map +1 -0
  762. package/dist/math/vec4/functions/clamp.d.ts +2 -0
  763. package/dist/math/vec4/functions/clamp.js +25 -0
  764. package/dist/math/vec4/functions/clamp.js.map +1 -0
  765. package/dist/math/vec4/functions/floor.d.ts +2 -0
  766. package/dist/math/vec4/functions/floor.js +23 -0
  767. package/dist/math/vec4/functions/floor.js.map +1 -0
  768. package/dist/math/vec4/functions/layout.d.ts +1 -0
  769. package/dist/math/vec4/functions/layout.js +25 -0
  770. package/dist/math/vec4/functions/layout.js.map +1 -0
  771. package/dist/math/vec4/functions/max.d.ts +2 -0
  772. package/dist/math/vec4/functions/max.js +28 -0
  773. package/dist/math/vec4/functions/max.js.map +1 -0
  774. package/dist/math/vec4/functions/min.d.ts +2 -0
  775. package/dist/math/vec4/functions/min.js +28 -0
  776. package/dist/math/vec4/functions/min.js.map +1 -0
  777. package/dist/math/vec4/functions/round.d.ts +2 -0
  778. package/dist/math/vec4/functions/round.js +23 -0
  779. package/dist/math/vec4/functions/round.js.map +1 -0
  780. package/dist/math/vec4/functions/schema.d.ts +11 -0
  781. package/dist/math/vec4/functions/schema.js +30 -0
  782. package/dist/math/vec4/functions/schema.js.map +1 -0
  783. package/dist/math/vec4/functions/trunc.d.ts +2 -0
  784. package/dist/math/vec4/functions/trunc.js +23 -0
  785. package/dist/math/vec4/functions/trunc.js.map +1 -0
  786. package/dist/math/vec4/vec4.d.ts +3 -63
  787. package/dist/math/vec4/vec4.js +1 -142
  788. package/dist/math/vec4/vec4.js.map +1 -1
  789. package/dist/observe/create-observable-event.d.ts +1 -1
  790. package/dist/observe/create-observable-event.js +1 -1
  791. package/dist/observe/create-observable-event.js.map +1 -1
  792. package/dist/observe/create-observable-state.d.ts +1 -1
  793. package/dist/observe/create-observable-state.js +1 -1
  794. package/dist/observe/create-observable-state.js.map +1 -1
  795. package/dist/old-ecs/ecs/ecs.test.js +0 -1
  796. package/dist/old-ecs/ecs/ecs.test.js.map +1 -1
  797. package/dist/old-ecs/privacy/helper-functions.d.ts +43 -0
  798. package/dist/old-ecs/privacy/helper-functions.js +76 -0
  799. package/dist/old-ecs/privacy/helper-functions.js.map +1 -0
  800. package/dist/old-ecs/privacy/helper-functions.test.d.ts +1 -0
  801. package/dist/old-ecs/privacy/helper-functions.test.js +173 -0
  802. package/dist/old-ecs/privacy/helper-functions.test.js.map +1 -0
  803. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +2 -1
  804. package/dist/samples/todo/services/state-service/create-todo-database.js +2 -2
  805. package/dist/samples/todo/services/state-service/create-todo-database.js.map +1 -1
  806. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +2 -1
  807. package/dist/samples/todo/services/state-service/create-todo-store.js +15 -17
  808. package/dist/samples/todo/services/state-service/create-todo-store.js.map +1 -1
  809. package/dist/schema/f32.d.ts +1 -1
  810. package/dist/schema/f32.js +1 -1
  811. package/dist/schema/f32.js.map +1 -1
  812. package/dist/schema/i32.d.ts +1 -1
  813. package/dist/schema/i32.js +1 -1
  814. package/dist/schema/i32.js.map +1 -1
  815. package/dist/schema/schema/index.d.ts +2 -0
  816. package/dist/schema/schema/index.js +23 -0
  817. package/dist/schema/schema/index.js.map +1 -0
  818. package/dist/schema/schema/nullable.d.ts +6 -0
  819. package/dist/schema/schema/nullable.js +6 -0
  820. package/dist/schema/schema/nullable.js.map +1 -0
  821. package/dist/schema/schema/public.d.ts +3 -0
  822. package/dist/schema/schema/public.js +25 -0
  823. package/dist/schema/schema/public.js.map +1 -0
  824. package/dist/schema/schema/to-vertex-buffer-layout.d.ts +56 -0
  825. package/dist/schema/schema/to-vertex-buffer-layout.js +143 -0
  826. package/dist/schema/schema/to-vertex-buffer-layout.js.map +1 -0
  827. package/dist/schema/{schema copy.d.ts → schema/types.d.ts} +7 -4
  828. package/dist/schema/{schema copy.js → schema/types.js} +1 -1
  829. package/dist/schema/schema/types.js.map +1 -0
  830. package/dist/schema/u32.d.ts +1 -1
  831. package/dist/schema/u32.js +1 -1
  832. package/dist/schema/u32.js.map +1 -1
  833. package/dist/table/constants/functions.d.ts +3 -0
  834. package/dist/table/constants/functions.js +34 -0
  835. package/dist/table/constants/functions.js.map +1 -0
  836. package/dist/table/constants/index.d.ts +1 -0
  837. package/dist/table/constants/index.js +23 -0
  838. package/dist/table/constants/index.js.map +1 -0
  839. package/dist/tsconfig.tsbuildinfo +1 -1
  840. package/package.json +1 -1
  841. package/dist/schema/FromSchemas.d.ts +0 -4
  842. package/dist/schema/FromSchemas.js +0 -2
  843. package/dist/schema/FromSchemas.js.map +0 -1
  844. package/dist/schema/schema copy.js.map +0 -1
  845. package/dist/schema/type.d.ts +0 -76
  846. package/dist/schema/type.js.map +0 -1
@@ -0,0 +1,725 @@
1
+ /*MIT License
2
+
3
+ © Copyright 2025 Adobe. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.*/
22
+ import { describe, it, expect } from "vitest";
23
+ import { createStore } from "./create-store.js";
24
+ import { createCoreTestSuite, positionSchema, healthSchema, nameSchema } from "../core/create-core.test.js";
25
+ import { F32 } from "../../../math/f32/index.js";
26
+ import { Time } from "../../../schema/index.js";
27
+ describe("createStore", () => {
28
+ // Test that store passes all core functionality tests
29
+ createCoreTestSuite("Store core functionality", (componentSchemas) => createStore({ components: componentSchemas, resources: {}, archetypes: {} }));
30
+ // Select function tests
31
+ describe("Select functionality", () => {
32
+ const velocitySchema = {
33
+ type: "object",
34
+ properties: {
35
+ x: F32.schema,
36
+ y: F32.schema,
37
+ z: F32.schema,
38
+ }
39
+ };
40
+ it("should select entities from single archetype", () => {
41
+ const store = createStore({ components: {
42
+ position: positionSchema,
43
+ health: healthSchema,
44
+ name: nameSchema,
45
+ }, resources: {}, archetypes: {} });
46
+ // Create entities in a single archetype
47
+ const archetype = store.ensureArchetype(["id", "position", "health"]);
48
+ const entity1 = archetype.insert({
49
+ position: { x: 1, y: 2, z: 3 },
50
+ health: { current: 100, max: 100 }
51
+ });
52
+ const entity2 = archetype.insert({
53
+ position: { x: 4, y: 5, z: 6 },
54
+ health: { current: 50, max: 100 }
55
+ });
56
+ // Select entities with position and health
57
+ const entities = store.select(["position", "health"]);
58
+ expect(entities).toHaveLength(2);
59
+ expect(entities).toContain(entity1);
60
+ expect(entities).toContain(entity2);
61
+ });
62
+ it("should select entities spanning multiple archetypes", () => {
63
+ const store = createStore({ components: {
64
+ position: positionSchema,
65
+ health: healthSchema,
66
+ name: nameSchema,
67
+ velocity: velocitySchema,
68
+ }, resources: {}, archetypes: {} });
69
+ // Create entities in different archetypes
70
+ const positionOnlyArchetype = store.ensureArchetype(["id", "position"]);
71
+ const entity1 = positionOnlyArchetype.insert({
72
+ position: { x: 1, y: 2, z: 3 }
73
+ });
74
+ const entity2 = positionOnlyArchetype.insert({
75
+ position: { x: 4, y: 5, z: 6 }
76
+ });
77
+ const healthOnlyArchetype = store.ensureArchetype(["id", "health"]);
78
+ const entity3 = healthOnlyArchetype.insert({
79
+ health: { current: 100, max: 100 }
80
+ });
81
+ const positionHealthArchetype = store.ensureArchetype(["id", "position", "health"]);
82
+ const entity4 = positionHealthArchetype.insert({
83
+ position: { x: 0, y: 0, z: 0 },
84
+ health: { current: 50, max: 100 }
85
+ });
86
+ const velocityArchetype = store.ensureArchetype(["id", "velocity"]);
87
+ const entity5 = velocityArchetype.insert({
88
+ velocity: { x: 1, y: 0, z: 0 }
89
+ });
90
+ // Select all entities with position component (should span 2 archetypes)
91
+ const positionEntities = store.select(["position"]);
92
+ expect(positionEntities).toHaveLength(3);
93
+ expect(positionEntities).toContain(entity1);
94
+ expect(positionEntities).toContain(entity2);
95
+ expect(positionEntities).toContain(entity4);
96
+ expect(positionEntities).not.toContain(entity3);
97
+ expect(positionEntities).not.toContain(entity5);
98
+ // Select all entities with health component (should span 2 archetypes)
99
+ const healthEntities = store.select(["health"]);
100
+ expect(healthEntities).toHaveLength(2);
101
+ expect(healthEntities).toContain(entity3);
102
+ expect(healthEntities).toContain(entity4);
103
+ expect(healthEntities).not.toContain(entity1);
104
+ expect(healthEntities).not.toContain(entity2);
105
+ expect(healthEntities).not.toContain(entity5);
106
+ // Select entities with both position and health (should be only 1 archetype)
107
+ const bothEntities = store.select(["position", "health"]);
108
+ expect(bothEntities).toHaveLength(1);
109
+ expect(bothEntities).toContain(entity4);
110
+ expect(bothEntities).not.toContain(entity1);
111
+ expect(bothEntities).not.toContain(entity2);
112
+ expect(bothEntities).not.toContain(entity3);
113
+ expect(bothEntities).not.toContain(entity5);
114
+ });
115
+ it("should select entities with exclude option", () => {
116
+ const store = createStore({ components: {
117
+ position: positionSchema,
118
+ health: healthSchema,
119
+ name: nameSchema,
120
+ }, resources: {}, archetypes: {} });
121
+ // Create entities in different archetypes
122
+ const positionOnlyArchetype = store.ensureArchetype(["id", "position"]);
123
+ const entity1 = positionOnlyArchetype.insert({
124
+ position: { x: 1, y: 2, z: 3 }
125
+ });
126
+ const positionHealthArchetype = store.ensureArchetype(["id", "position", "health"]);
127
+ const entity2 = positionHealthArchetype.insert({
128
+ position: { x: 0, y: 0, z: 0 },
129
+ health: { current: 50, max: 100 }
130
+ });
131
+ // Select entities with position but exclude health
132
+ const positionOnlyEntities = store.select(["position"], { exclude: ["health"] });
133
+ expect(positionOnlyEntities).toHaveLength(1);
134
+ expect(positionOnlyEntities).toContain(entity1);
135
+ expect(positionOnlyEntities).not.toContain(entity2);
136
+ });
137
+ it("should return empty array when no entities match", () => {
138
+ const store = createStore({ components: {
139
+ position: positionSchema,
140
+ health: healthSchema,
141
+ }, resources: {}, archetypes: {} });
142
+ // Create entity with only position
143
+ const archetype = store.ensureArchetype(["id", "position"]);
144
+ archetype.insert({ position: { x: 1, y: 2, z: 3 } });
145
+ // Select entities with health (should be empty)
146
+ const entities = store.select(["health"]);
147
+ expect(entities).toHaveLength(0);
148
+ });
149
+ it("should handle complex multi-archetype scenarios", () => {
150
+ const store = createStore({ components: {
151
+ position: positionSchema,
152
+ health: healthSchema,
153
+ name: nameSchema,
154
+ velocity: velocitySchema,
155
+ }, resources: {}, archetypes: {} });
156
+ // Create entities across many different archetypes
157
+ const archetype1 = store.ensureArchetype(["id", "position"]);
158
+ const entity1 = archetype1.insert({ position: { x: 1, y: 2, z: 3 } });
159
+ const entity2 = archetype1.insert({ position: { x: 4, y: 5, z: 6 } });
160
+ const archetype2 = store.ensureArchetype(["id", "health"]);
161
+ const entity3 = archetype2.insert({ health: { current: 100, max: 100 } });
162
+ const archetype3 = store.ensureArchetype(["id", "position", "health"]);
163
+ const entity4 = archetype3.insert({
164
+ position: { x: 0, y: 0, z: 0 },
165
+ health: { current: 50, max: 100 }
166
+ });
167
+ const entity5 = archetype3.insert({
168
+ position: { x: 10, y: 20, z: 30 },
169
+ health: { current: 75, max: 100 }
170
+ });
171
+ const archetype4 = store.ensureArchetype(["id", "name"]);
172
+ const entity6 = archetype4.insert({ name: "Player1" });
173
+ const archetype5 = store.ensureArchetype(["id", "position", "name"]);
174
+ const entity7 = archetype5.insert({
175
+ position: { x: 100, y: 200, z: 300 },
176
+ name: "Player2"
177
+ });
178
+ const archetype6 = store.ensureArchetype(["id", "position", "health", "name"]);
179
+ const entity8 = archetype6.insert({
180
+ position: { x: 500, y: 600, z: 700 },
181
+ health: { current: 25, max: 100 },
182
+ name: "Player3"
183
+ });
184
+ // Test various selection scenarios
185
+ const positionEntities = store.select(["position"]);
186
+ expect(positionEntities).toHaveLength(6);
187
+ expect(positionEntities).toContain(entity1);
188
+ expect(positionEntities).toContain(entity2);
189
+ expect(positionEntities).toContain(entity4);
190
+ expect(positionEntities).toContain(entity5);
191
+ expect(positionEntities).toContain(entity7);
192
+ expect(positionEntities).toContain(entity8);
193
+ const nameEntities = store.select(["name"]);
194
+ expect(nameEntities).toHaveLength(3);
195
+ expect(nameEntities).toContain(entity6);
196
+ expect(nameEntities).toContain(entity7);
197
+ expect(nameEntities).toContain(entity8);
198
+ const positionNameEntities = store.select(["position", "name"]);
199
+ expect(positionNameEntities).toHaveLength(2);
200
+ expect(positionNameEntities).toContain(entity7);
201
+ expect(positionNameEntities).toContain(entity8);
202
+ const allThreeEntities = store.select(["position", "health", "name"]);
203
+ expect(allThreeEntities).toHaveLength(1);
204
+ expect(allThreeEntities).toContain(entity8);
205
+ // Test exclusion
206
+ const positionWithoutHealth = store.select(["position"], { exclude: ["health"] });
207
+ expect(positionWithoutHealth).toHaveLength(3);
208
+ expect(positionWithoutHealth).toContain(entity1);
209
+ expect(positionWithoutHealth).toContain(entity2);
210
+ expect(positionWithoutHealth).toContain(entity7);
211
+ expect(positionWithoutHealth).not.toContain(entity4);
212
+ expect(positionWithoutHealth).not.toContain(entity5);
213
+ expect(positionWithoutHealth).not.toContain(entity8);
214
+ });
215
+ it("should maintain entity order across archetypes", () => {
216
+ const store = createStore({ components: {
217
+ position: positionSchema,
218
+ health: healthSchema,
219
+ }, resources: {}, archetypes: {} });
220
+ // Create entities in different archetypes
221
+ const archetype1 = store.ensureArchetype(["id", "position"]);
222
+ const entity1 = archetype1.insert({ position: { x: 1, y: 2, z: 3 } });
223
+ const entity2 = archetype1.insert({ position: { x: 4, y: 5, z: 6 } });
224
+ const archetype2 = store.ensureArchetype(["id", "health"]);
225
+ const entity3 = archetype2.insert({ health: { current: 100, max: 100 } });
226
+ const archetype3 = store.ensureArchetype(["id", "position", "health"]);
227
+ const entity4 = archetype3.insert({
228
+ position: { x: 0, y: 0, z: 0 },
229
+ health: { current: 50, max: 100 }
230
+ });
231
+ // Select all entities with position
232
+ const entities = store.select(["position"]);
233
+ expect(entities).toHaveLength(3);
234
+ // Verify all expected entities are present (order may vary)
235
+ expect(entities).toContain(entity1);
236
+ expect(entities).toContain(entity2);
237
+ expect(entities).toContain(entity4);
238
+ expect(entities).not.toContain(entity3);
239
+ });
240
+ it("should handle empty store", () => {
241
+ const store = createStore({ components: {
242
+ position: positionSchema,
243
+ health: healthSchema,
244
+ }, resources: {}, archetypes: {} });
245
+ const entities = store.select(["position"]);
246
+ expect(entities).toHaveLength(0);
247
+ });
248
+ it("should work with resources as components", () => {
249
+ const store = createStore({ components: {
250
+ position: positionSchema,
251
+ health: healthSchema,
252
+ }, resources: {
253
+ time: { default: { delta: 0.016, elapsed: 0 } }
254
+ }, archetypes: {} });
255
+ // Create some entities
256
+ const archetype = store.ensureArchetype(["id", "position"]);
257
+ const entity = archetype.insert({ position: { x: 1, y: 2, z: 3 } });
258
+ // Select entities with time component (should include the resource entity)
259
+ const timeEntities = store.select(["time"]);
260
+ expect(timeEntities).toHaveLength(1);
261
+ // The resource entity should be included in time queries
262
+ const timeArchetypes = store.queryArchetypes(["time"]);
263
+ expect(timeArchetypes).toHaveLength(1);
264
+ });
265
+ });
266
+ // Store-specific resource tests
267
+ describe("Resource functionality", () => {
268
+ const timeSchema = {
269
+ type: "object",
270
+ properties: {
271
+ delta: F32.schema,
272
+ elapsed: F32.schema,
273
+ }
274
+ };
275
+ it("should create store with resources", () => {
276
+ const store = createStore({ components: { position: positionSchema }, resources: {
277
+ time: { default: { delta: 0.016, elapsed: 0 } },
278
+ config: { default: { debug: false, volume: 1.0 } }
279
+ }, archetypes: {} });
280
+ expect(store).toBeDefined();
281
+ expect(store.resources).toBeDefined();
282
+ expect(store.resources.time).toBeDefined();
283
+ expect(store.resources.config).toBeDefined();
284
+ });
285
+ it("should initialize resources with default values", () => {
286
+ const defaultTime = { delta: 0.016, elapsed: 0 };
287
+ const defaultConfig = { debug: false, volume: 1.0 };
288
+ const store = createStore({ components: { position: positionSchema }, resources: {
289
+ time: { default: defaultTime },
290
+ config: { default: defaultConfig }
291
+ }, archetypes: {} });
292
+ expect(store.resources.time).toEqual(defaultTime);
293
+ expect(store.resources.config).toEqual(defaultConfig);
294
+ });
295
+ it("should allow reading resource values", () => {
296
+ const store = createStore({ components: { position: positionSchema }, resources: {
297
+ time: { default: { delta: 0.016, elapsed: 0 } },
298
+ config: { default: { debug: false, volume: 1.0 } }
299
+ }, archetypes: {} });
300
+ expect(store.resources.time.delta).toBe(0.016);
301
+ expect(store.resources.time.elapsed).toBe(0);
302
+ expect(store.resources.config.debug).toBe(false);
303
+ expect(store.resources.config.volume).toBe(1.0);
304
+ });
305
+ it("should allow updating resource values", () => {
306
+ const store = createStore({ components: { position: positionSchema }, resources: {
307
+ time: { default: { delta: 0.016, elapsed: 0 } },
308
+ config: { default: { debug: false, volume: 1.0 } }
309
+ }, archetypes: {} });
310
+ // Update time
311
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
312
+ expect(store.resources.time.delta).toBe(0.033);
313
+ expect(store.resources.time.elapsed).toBe(1.5);
314
+ // Update config
315
+ store.resources.config = { debug: true, volume: 0.5 };
316
+ expect(store.resources.config.debug).toBe(true);
317
+ expect(store.resources.config.volume).toBe(0.5);
318
+ });
319
+ it("should maintain resource values across updates", () => {
320
+ const store = createStore({ components: { position: positionSchema }, resources: {
321
+ time: { default: { delta: 0.016, elapsed: 0 } },
322
+ config: { default: { debug: false, volume: 1.0 } }
323
+ }, archetypes: {} });
324
+ // Update multiple times
325
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
326
+ store.resources.time = { delta: 0.025, elapsed: 2.0 };
327
+ store.resources.config = { debug: true, volume: 0.5 };
328
+ // Verify final values
329
+ expect(store.resources.time).toEqual({ delta: 0.025, elapsed: 2.0 });
330
+ expect(store.resources.config).toEqual({ debug: true, volume: 0.5 });
331
+ });
332
+ it("should handle nested resource updates", () => {
333
+ const store = createStore({ components: { position: positionSchema }, resources: {
334
+ time: { default: { delta: 0.016, elapsed: 0 } }
335
+ }, archetypes: {} });
336
+ // Update individual properties
337
+ const newTime = { delta: 0.033, elapsed: 1.5 };
338
+ store.resources.time = newTime;
339
+ expect(store.resources.time.delta).toBe(newTime.delta);
340
+ expect(store.resources.time.elapsed).toBe(newTime.elapsed);
341
+ });
342
+ it("should work with empty resource object", () => {
343
+ const store = createStore({ components: { position: positionSchema }, resources: {}, archetypes: {} });
344
+ expect(store.resources).toBeDefined();
345
+ expect(Object.keys(store.resources)).toHaveLength(0);
346
+ });
347
+ it("should handle multiple resources independently", () => {
348
+ const store = createStore({ components: { position: positionSchema }, resources: {
349
+ time: { default: { delta: 0.016, elapsed: 0 } },
350
+ config: { default: { debug: false, volume: 1.0 } },
351
+ score: { default: 0 }
352
+ }, archetypes: {} });
353
+ // Update each resource independently
354
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
355
+ store.resources.config = { debug: true, volume: 0.5 };
356
+ store.resources.score = 100;
357
+ // Verify all resources maintain their values
358
+ expect(store.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
359
+ expect(store.resources.config).toEqual({ debug: true, volume: 0.5 });
360
+ expect(store.resources.score).toBe(100);
361
+ });
362
+ it("should allow querying resources as components", () => {
363
+ const store = createStore({ components: {
364
+ position: positionSchema,
365
+ time: timeSchema
366
+ }, resources: {
367
+ time: { default: { delta: 0.016, elapsed: 0 } }
368
+ }, archetypes: {} });
369
+ // Resources should be queryable as components
370
+ const timeArchetypes = store.queryArchetypes(["time"]);
371
+ expect(timeArchetypes).toHaveLength(1);
372
+ expect(timeArchetypes[0].components.has("time")).toBe(true);
373
+ });
374
+ it("should maintain resource singleton behavior", () => {
375
+ const store = createStore({ components: {
376
+ position: positionSchema,
377
+ time: timeSchema
378
+ }, resources: {
379
+ time: { default: { delta: 0.016, elapsed: 0 } }
380
+ }, archetypes: {} });
381
+ // Resources should be queryable as components
382
+ const timeArchetypes = store.queryArchetypes(["time"]);
383
+ expect(timeArchetypes).toHaveLength(1);
384
+ // Resources should maintain their values
385
+ expect(store.resources.time).toEqual({ delta: 0.016, elapsed: 0 });
386
+ // Update and verify
387
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
388
+ expect(store.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
389
+ });
390
+ it("should handle primitive resource values", () => {
391
+ const store = createStore({ components: { position: positionSchema }, resources: {
392
+ score: { default: 0 },
393
+ name: { default: "Player1" },
394
+ active: { default: true }
395
+ }, archetypes: {} });
396
+ expect(store.resources.score).toBe(0);
397
+ expect(store.resources.name).toBe("Player1");
398
+ expect(store.resources.active).toBe(true);
399
+ // Update primitive values
400
+ store.resources.score = 100;
401
+ store.resources.name = "Player2";
402
+ store.resources.active = false;
403
+ expect(store.resources.score).toBe(100);
404
+ expect(store.resources.name).toBe("Player2");
405
+ expect(store.resources.active).toBe(false);
406
+ });
407
+ it("should handle complex resource objects", () => {
408
+ const complexResource = {
409
+ nested: {
410
+ deep: {
411
+ value: 42,
412
+ array: [1, 2, 3],
413
+ flag: true
414
+ }
415
+ },
416
+ count: 0
417
+ };
418
+ const store = createStore({ components: { position: positionSchema }, resources: { complex: { default: complexResource } }, archetypes: {} });
419
+ expect(store.resources.complex).toEqual(complexResource);
420
+ // Update complex resource
421
+ const updatedComplex = {
422
+ nested: {
423
+ deep: {
424
+ value: 100,
425
+ array: [4, 5, 6],
426
+ flag: false
427
+ }
428
+ },
429
+ count: 10
430
+ };
431
+ store.resources.complex = updatedComplex;
432
+ expect(store.resources.complex).toEqual(updatedComplex);
433
+ });
434
+ it("should handle array resource schemas", () => {
435
+ const store = createStore({ components: { position: positionSchema }, resources: {
436
+ tags: {
437
+ type: "array",
438
+ items: { type: "string" },
439
+ default: ["player", "active"]
440
+ }
441
+ }, archetypes: {} });
442
+ expect(store.resources.tags).toEqual(["player", "active"]);
443
+ // Update array resource
444
+ store.resources.tags = ["enemy", "boss", "elite"];
445
+ expect(store.resources.tags).toEqual(["enemy", "boss", "elite"]);
446
+ });
447
+ });
448
+ describe("Archetype functionality", () => {
449
+ it("should create store with archetypes", () => {
450
+ const store = createStore({ components: {
451
+ name: { type: "string" },
452
+ health: { type: "number" },
453
+ enabled: { type: "boolean" },
454
+ }, resources: {}, archetypes: {
455
+ Player: ["name", "health"],
456
+ } });
457
+ const entity = store.archetypes.Player.insert({
458
+ name: "test",
459
+ health: 100,
460
+ });
461
+ expect(store.archetypes.Player.columns.name.get(entity)).toEqual("test");
462
+ expect(store.archetypes.Player.columns.health.get(entity)).toEqual(100);
463
+ });
464
+ });
465
+ // TimeSchema round-trip test
466
+ describe("TimeSchema functionality", () => {
467
+ it("should store and retrieve Date.now() value correctly", () => {
468
+ const store = createStore({ components: {
469
+ timestamp: Time.schema,
470
+ }, resources: {}, archetypes: {} });
471
+ // Create entity with current timestamp
472
+ const now = Date.now();
473
+ const archetype = store.ensureArchetype(["id", "timestamp"]);
474
+ const entity = archetype.insert({ timestamp: now });
475
+ // Query for the entity
476
+ const entities = store.select(["timestamp"]);
477
+ expect(entities).toHaveLength(1);
478
+ expect(entities[0]).toBe(entity);
479
+ // Read the stored value and verify it matches original
480
+ const storedData = store.read(entity);
481
+ expect(storedData).not.toBeNull();
482
+ expect(storedData.timestamp).toBe(now);
483
+ });
484
+ });
485
+ // Serialization/Deserialization tests
486
+ describe("toData/fromData functionality", () => {
487
+ it("should serialize and deserialize store with resources correctly", () => {
488
+ const store = createStore({ components: {
489
+ position: positionSchema,
490
+ health: healthSchema,
491
+ }, resources: {
492
+ time: { default: { delta: 0.016, elapsed: 0 } },
493
+ config: { default: { debug: false, volume: 1.0 } }
494
+ }, archetypes: {} });
495
+ // Add some entities
496
+ const archetype = store.ensureArchetype(["id", "position", "health"]);
497
+ const entity1 = archetype.insert({
498
+ position: { x: 1, y: 2, z: 3 },
499
+ health: { current: 100, max: 100 }
500
+ });
501
+ const entity2 = archetype.insert({
502
+ position: { x: 4, y: 5, z: 6 },
503
+ health: { current: 50, max: 100 }
504
+ });
505
+ // Update resources
506
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
507
+ store.resources.config = { debug: true, volume: 0.5 };
508
+ // Serialize the store
509
+ const serializedData = store.toData();
510
+ // Create a new store with the same schemas and restore
511
+ const newStore = createStore({ components: {
512
+ position: positionSchema,
513
+ health: healthSchema,
514
+ }, resources: {
515
+ time: { default: { delta: 0.016, elapsed: 0 } },
516
+ config: { default: { debug: false, volume: 1.0 } }
517
+ }, archetypes: {} });
518
+ newStore.fromData(serializedData);
519
+ // Verify entities are restored
520
+ const restoredEntities = newStore.select(["position", "health"]);
521
+ expect(restoredEntities).toHaveLength(2);
522
+ // Verify entity data is correct
523
+ const restoredData1 = newStore.read(restoredEntities[0]);
524
+ const restoredData2 = newStore.read(restoredEntities[1]);
525
+ expect(restoredData1).toEqual({
526
+ id: restoredEntities[0],
527
+ position: { x: 1, y: 2, z: 3 },
528
+ health: { current: 100, max: 100 }
529
+ });
530
+ expect(restoredData2).toEqual({
531
+ id: restoredEntities[1],
532
+ position: { x: 4, y: 5, z: 6 },
533
+ health: { current: 50, max: 100 }
534
+ });
535
+ // Verify resources are restored
536
+ expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
537
+ expect(newStore.resources.config).toEqual({ debug: true, volume: 0.5 });
538
+ });
539
+ it("should create new resources when restoring to store with additional resources", () => {
540
+ // Create original store with only one resource
541
+ const originalStore = createStore({ components: {
542
+ position: positionSchema,
543
+ }, resources: {
544
+ time: { default: { delta: 0.016, elapsed: 0 } }
545
+ }, archetypes: {} });
546
+ // Add some entities and update resource
547
+ const archetype = originalStore.ensureArchetype(["id", "position"]);
548
+ archetype.insert({ position: { x: 1, y: 2, z: 3 } });
549
+ originalStore.resources.time = { delta: 0.033, elapsed: 1.5 };
550
+ // Serialize the store
551
+ const serializedData = originalStore.toData();
552
+ // Create new store with additional resources
553
+ // Note: This is a limitation - when restoring to a store with different archetype structure,
554
+ // entity locations may not be preserved correctly due to archetype ID shifts.
555
+ // In practice, stores should be restored to compatible configurations.
556
+ const newStore = createStore({ components: {
557
+ position: positionSchema,
558
+ }, resources: {
559
+ time: { default: { delta: 0.016, elapsed: 0 } },
560
+ config: { default: { debug: false, volume: 1.0 } },
561
+ score: { default: 0 }
562
+ }, archetypes: {} });
563
+ // Restore from serialized data
564
+ newStore.fromData(serializedData);
565
+ // Verify original resource is restored
566
+ expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
567
+ // Verify new resources are created with default values
568
+ expect(newStore.resources.config).toEqual({ debug: false, volume: 1.0 });
569
+ expect(newStore.resources.score).toBe(0);
570
+ // Verify new resources are writable
571
+ newStore.resources.config = { debug: true, volume: 0.5 };
572
+ newStore.resources.score = 100;
573
+ expect(newStore.resources.config).toEqual({ debug: true, volume: 0.5 });
574
+ expect(newStore.resources.score).toBe(100);
575
+ // Note: Due to archetype ID shifts when adding new resources,
576
+ // the original entity may not be preserved correctly.
577
+ // This is a limitation of the current serialization approach.
578
+ // In practice, stores should be restored to compatible configurations.
579
+ });
580
+ it("should handle restoring to store with fewer resources", () => {
581
+ // Create original store with multiple resources
582
+ const originalStore = createStore({ components: {
583
+ position: positionSchema,
584
+ }, resources: {
585
+ time: { default: { delta: 0.016, elapsed: 0 } },
586
+ config: { default: { debug: false, volume: 1.0 } },
587
+ score: { default: 0 }
588
+ }, archetypes: {} });
589
+ // Add entities and update resources
590
+ const archetype = originalStore.ensureArchetype(["id", "position"]);
591
+ const entity = archetype.insert({ position: { x: 1, y: 2, z: 3 } });
592
+ originalStore.resources.time = { delta: 0.033, elapsed: 1.5 };
593
+ originalStore.resources.config = { debug: true, volume: 0.5 };
594
+ originalStore.resources.score = 100;
595
+ // Serialize the store
596
+ const serializedData = originalStore.toData();
597
+ // Create new store with only one resource
598
+ const newStore = createStore({ components: {
599
+ position: positionSchema,
600
+ }, resources: {
601
+ time: { default: { delta: 0.016, elapsed: 0 } }
602
+ }, archetypes: {} });
603
+ // Restore from serialized data
604
+ newStore.fromData(serializedData);
605
+ // Verify the remaining resource is restored
606
+ expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
607
+ // Verify only the time resource exists
608
+ expect(newStore.resources).toHaveProperty('time');
609
+ expect(newStore.resources).not.toHaveProperty('config');
610
+ expect(newStore.resources).not.toHaveProperty('score');
611
+ // Verify entity is still there
612
+ const restoredEntities = newStore.select(["position"]);
613
+ expect(restoredEntities).toHaveLength(1);
614
+ const restoredData = newStore.read(restoredEntities[0]);
615
+ expect(restoredData).toEqual({
616
+ id: restoredEntities[0],
617
+ position: { x: 1, y: 2, z: 3 }
618
+ });
619
+ });
620
+ it("should preserve resource getter/setter functionality after restoration", () => {
621
+ const store = createStore({ components: {
622
+ position: positionSchema,
623
+ }, resources: {
624
+ time: { default: { delta: 0.016, elapsed: 0 } }
625
+ }, archetypes: {} });
626
+ // Update resource
627
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
628
+ // Serialize and deserialize
629
+ const serializedData = store.toData();
630
+ const newStore = createStore({ components: {
631
+ position: positionSchema,
632
+ }, resources: {
633
+ time: { default: { delta: 0.016, elapsed: 0 } }
634
+ }, archetypes: {} });
635
+ newStore.fromData(serializedData);
636
+ // Verify resource is restored
637
+ expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
638
+ // Verify getter/setter still works
639
+ newStore.resources.time = { delta: 0.025, elapsed: 2.0 };
640
+ expect(newStore.resources.time).toEqual({ delta: 0.025, elapsed: 2.0 });
641
+ // Verify the underlying archetype is updated
642
+ const timeArchetypes = newStore.queryArchetypes(["time"]);
643
+ expect(timeArchetypes).toHaveLength(1);
644
+ expect(timeArchetypes[0].rowCount).toBe(1);
645
+ expect(timeArchetypes[0].columns.time.get(0)).toEqual({ delta: 0.025, elapsed: 2.0 });
646
+ });
647
+ it("should handle complex resource objects during serialization", () => {
648
+ const complexResource = {
649
+ nested: {
650
+ deep: {
651
+ value: 42,
652
+ array: [1, 2, 3],
653
+ flag: true
654
+ }
655
+ },
656
+ count: 0
657
+ };
658
+ const store = createStore({ components: {
659
+ position: positionSchema,
660
+ }, resources: {
661
+ complex: { default: complexResource }
662
+ }, archetypes: {} });
663
+ // Update complex resource
664
+ const updatedComplex = {
665
+ nested: {
666
+ deep: {
667
+ value: 100,
668
+ array: [4, 5, 6],
669
+ flag: false
670
+ }
671
+ },
672
+ count: 10
673
+ };
674
+ store.resources.complex = updatedComplex;
675
+ // Add some entities
676
+ const archetype = store.ensureArchetype(["id", "position"]);
677
+ archetype.insert({ position: { x: 1, y: 2, z: 3 } });
678
+ // Serialize and deserialize
679
+ const serializedData = store.toData();
680
+ const newStore = createStore({ components: {
681
+ position: positionSchema,
682
+ }, resources: {
683
+ complex: { default: complexResource }
684
+ }, archetypes: {} });
685
+ newStore.fromData(serializedData);
686
+ // Verify complex resource is restored correctly
687
+ expect(newStore.resources.complex).toEqual(updatedComplex);
688
+ // Verify it's still writable
689
+ const newComplex = { ...updatedComplex, count: 20 };
690
+ newStore.resources.complex = newComplex;
691
+ expect(newStore.resources.complex).toEqual(newComplex);
692
+ });
693
+ it("should handle empty resource schemas during restoration", () => {
694
+ // Create store with resources
695
+ const store = createStore({ components: {
696
+ position: positionSchema,
697
+ }, resources: {
698
+ time: { default: { delta: 0.016, elapsed: 0 } }
699
+ }, archetypes: {} });
700
+ // Add entities and update resource
701
+ const archetype = store.ensureArchetype(["id", "position"]);
702
+ archetype.insert({ position: { x: 1, y: 2, z: 3 } });
703
+ store.resources.time = { delta: 0.033, elapsed: 1.5 };
704
+ // Serialize
705
+ const serializedData = store.toData();
706
+ // Create new store with no resources
707
+ const newStore = createStore({ components: {
708
+ position: positionSchema,
709
+ }, resources: {}, archetypes: {} });
710
+ // Restore - should not crash and should preserve entities
711
+ newStore.fromData(serializedData);
712
+ // Verify entities are preserved
713
+ const restoredEntities = newStore.select(["position"]);
714
+ expect(restoredEntities).toHaveLength(1);
715
+ const restoredData = newStore.read(restoredEntities[0]);
716
+ expect(restoredData).toEqual({
717
+ id: restoredEntities[0],
718
+ position: { x: 1, y: 2, z: 3 }
719
+ });
720
+ // Verify no resources exist
721
+ expect(Object.keys(newStore.resources)).toHaveLength(0);
722
+ });
723
+ });
724
+ });
725
+ //# sourceMappingURL=create-store.test.js.map