@adobe/data 0.9.82 → 0.9.84

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 (1313) hide show
  1. package/dist/cache/functions/cached.d.ts +8 -0
  2. package/dist/cache/functions/cached.js +13 -0
  3. package/dist/cache/functions/cached.js.map +1 -0
  4. package/dist/cache/functions/cached.test.d.ts +1 -0
  5. package/dist/cache/functions/cached.test.js +49 -0
  6. package/dist/cache/functions/cached.test.js.map +1 -0
  7. package/dist/cache/functions/index.d.ts +1 -0
  8. package/dist/cache/functions/index.js +1 -0
  9. package/dist/cache/functions/index.js.map +1 -1
  10. package/dist/ecs/archetype/archetype.d.ts +23 -0
  11. package/dist/ecs/archetype/archetype.js.map +1 -1
  12. package/dist/ecs/database/concurrency/concurrency-strategy.d.ts +4 -3
  13. package/dist/ecs/database/create-plugin.d.ts +2 -1
  14. package/dist/ecs/database/create-plugin.js.map +1 -1
  15. package/dist/ecs/database/database.d.ts +27 -14
  16. package/dist/ecs/database/database.index.performance.test.js +32 -25
  17. package/dist/ecs/database/database.index.performance.test.js.map +1 -1
  18. package/dist/ecs/database/database.index.type-test.js +25 -0
  19. package/dist/ecs/database/database.index.type-test.js.map +1 -1
  20. package/dist/ecs/database/database.js +14 -0
  21. package/dist/ecs/database/database.js.map +1 -1
  22. package/dist/ecs/database/database.partition.test.d.ts +1 -0
  23. package/dist/ecs/database/database.partition.test.js +45 -0
  24. package/dist/ecs/database/database.partition.test.js.map +1 -0
  25. package/dist/ecs/database/database.partition.type-test.d.ts +1 -0
  26. package/dist/ecs/database/database.partition.type-test.js +41 -0
  27. package/dist/ecs/database/database.partition.type-test.js.map +1 -0
  28. package/dist/ecs/database/database.reset.test.js +13 -6
  29. package/dist/ecs/database/database.reset.test.js.map +1 -1
  30. package/dist/ecs/database/deep-extends-chain.type-test.d.ts +463 -463
  31. package/dist/ecs/database/facets/archetypes.d.ts +17 -0
  32. package/dist/ecs/database/facets/archetypes.js +18 -0
  33. package/dist/ecs/database/facets/archetypes.js.map +1 -0
  34. package/dist/ecs/database/facets/components.d.ts +17 -0
  35. package/dist/ecs/database/facets/components.js +18 -0
  36. package/dist/ecs/database/facets/components.js.map +1 -0
  37. package/dist/ecs/database/facets/facets.test.d.ts +1 -0
  38. package/dist/ecs/database/facets/facets.test.js +54 -0
  39. package/dist/ecs/database/facets/facets.test.js.map +1 -0
  40. package/dist/ecs/database/facets/resources.d.ts +17 -0
  41. package/dist/ecs/database/facets/resources.js +18 -0
  42. package/dist/ecs/database/facets/resources.js.map +1 -0
  43. package/dist/ecs/database/facets/stamp-scopes.d.ts +46 -0
  44. package/dist/ecs/database/facets/stamp-scopes.js +26 -0
  45. package/dist/ecs/database/facets/stamp-scopes.js.map +1 -0
  46. package/dist/ecs/database/index.d.ts +0 -1
  47. package/dist/ecs/database/index.js +0 -1
  48. package/dist/ecs/database/index.js.map +1 -1
  49. package/dist/ecs/database/observe-select-entities.performance.test.js +12 -4
  50. package/dist/ecs/database/observe-select-entities.performance.test.js.map +1 -1
  51. package/dist/ecs/database/observed/observed-database.d.ts +3 -3
  52. package/dist/ecs/database/reconciling/create-rebase-replay-applier.js +1 -1
  53. package/dist/ecs/database/reconciling/create-rebase-replay-applier.js.map +1 -1
  54. package/dist/ecs/database/reconciling/reconciling-entry.d.ts +3 -2
  55. package/dist/ecs/database/reconciling/reconciling-entry.js.map +1 -1
  56. package/dist/ecs/database/to-system-database.d.ts +17 -0
  57. package/dist/ecs/database/to-system-database.js +5 -0
  58. package/dist/ecs/database/to-system-database.js.map +1 -0
  59. package/dist/ecs/database/to-system-database.test.d.ts +1 -0
  60. package/dist/ecs/database/to-system-database.test.js +22 -0
  61. package/dist/ecs/database/to-system-database.test.js.map +1 -0
  62. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +13 -4
  63. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
  64. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  65. package/dist/ecs/database/transactional-store/transactional-store.d.ts +5 -16
  66. package/dist/ecs/optional-components.d.ts +1 -0
  67. package/dist/ecs/store/core/core.d.ts +33 -8
  68. package/dist/ecs/store/core/create-core.d.ts +12 -2
  69. package/dist/ecs/store/core/create-core.js +144 -22
  70. package/dist/ecs/store/core/create-core.js.map +1 -1
  71. package/dist/ecs/store/core/create-core.partition.test.d.ts +1 -0
  72. package/dist/ecs/store/core/create-core.partition.test.js +229 -0
  73. package/dist/ecs/store/core/create-core.partition.test.js.map +1 -0
  74. package/dist/ecs/store/core/select-entities.js +87 -21
  75. package/dist/ecs/store/core/select-entities.js.map +1 -1
  76. package/dist/ecs/store/core/select-entities.partition.test.d.ts +1 -0
  77. package/dist/ecs/store/core/select-entities.partition.test.js +93 -0
  78. package/dist/ecs/store/core/select-entities.partition.test.js.map +1 -0
  79. package/dist/ecs/store/entity-select-options.d.ts +5 -1
  80. package/dist/ecs/store/partition.d.ts +63 -0
  81. package/dist/ecs/store/partition.js +3 -0
  82. package/dist/ecs/store/partition.js.map +1 -0
  83. package/dist/ecs/store/partition.type-test.d.ts +1 -0
  84. package/dist/ecs/store/partition.type-test.js +15 -0
  85. package/dist/ecs/store/partition.type-test.js.map +1 -0
  86. package/dist/ecs/store/public/create-store.d.ts +3 -1
  87. package/dist/ecs/store/public/create-store.js +19 -50
  88. package/dist/ecs/store/public/create-store.js.map +1 -1
  89. package/dist/ecs/store/public/create-store.partition.test.d.ts +1 -0
  90. package/dist/ecs/store/public/create-store.partition.test.js +111 -0
  91. package/dist/ecs/store/public/create-store.partition.test.js.map +1 -0
  92. package/dist/ecs/store/public/create-store.partition.type-test.d.ts +1 -0
  93. package/dist/ecs/store/public/create-store.partition.type-test.js +61 -0
  94. package/dist/ecs/store/public/create-store.partition.type-test.js.map +1 -0
  95. package/dist/ecs/store/store.d.ts +22 -10
  96. package/dist/ecs/store/store.js.map +1 -1
  97. package/dist/ecs/store/transaction-functions.d.ts +6 -5
  98. package/dist/equals-unordered.d.ts +13 -0
  99. package/dist/equals-unordered.js +64 -0
  100. package/dist/equals-unordered.js.map +1 -0
  101. package/dist/equals-unordered.test.d.ts +1 -0
  102. package/dist/equals-unordered.test.js +35 -0
  103. package/dist/equals-unordered.test.js.map +1 -0
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.js +1 -0
  106. package/dist/index.js.map +1 -1
  107. package/dist/math/line2/interpolate.d.ts +3 -0
  108. package/dist/math/line2/interpolate.js +7 -0
  109. package/dist/math/line2/interpolate.js.map +1 -0
  110. package/dist/math/line2/intersects.d.ts +2 -0
  111. package/dist/math/line2/intersects.js +29 -0
  112. package/dist/math/line2/intersects.js.map +1 -0
  113. package/dist/math/line2/public.d.ts +3 -1
  114. package/dist/math/line2/public.js +3 -1
  115. package/dist/math/line2/public.js.map +1 -1
  116. package/dist/math/line2/sub-line.d.ts +2 -0
  117. package/dist/math/line2/sub-line.js +9 -0
  118. package/dist/math/line2/sub-line.js.map +1 -0
  119. package/dist/math/line3/closest-point-on-line.d.ts +10 -0
  120. package/dist/math/line3/closest-point-on-line.js +29 -0
  121. package/dist/math/line3/closest-point-on-line.js.map +1 -0
  122. package/dist/math/line3/direction.d.ts +7 -0
  123. package/dist/math/line3/direction.js +12 -0
  124. package/dist/math/line3/direction.js.map +1 -0
  125. package/dist/math/line3/interpolate.d.ts +3 -0
  126. package/dist/math/line3/interpolate.js +7 -0
  127. package/dist/math/line3/interpolate.js.map +1 -0
  128. package/dist/math/line3/public.d.ts +4 -1
  129. package/dist/math/line3/public.js +4 -1
  130. package/dist/math/line3/public.js.map +1 -1
  131. package/dist/math/line3/sub-line.d.ts +2 -0
  132. package/dist/math/line3/sub-line.js +9 -0
  133. package/dist/math/line3/sub-line.js.map +1 -0
  134. package/dist/math/mat4x4/add.d.ts +2 -0
  135. package/dist/math/mat4x4/add.js +8 -0
  136. package/dist/math/mat4x4/add.js.map +1 -0
  137. package/dist/math/mat4x4/determinant.d.ts +2 -0
  138. package/dist/math/mat4x4/determinant.js +18 -0
  139. package/dist/math/mat4x4/determinant.js.map +1 -0
  140. package/dist/math/mat4x4/identity.d.ts +2 -0
  141. package/dist/math/mat4x4/identity.js +8 -0
  142. package/dist/math/mat4x4/identity.js.map +1 -0
  143. package/dist/math/mat4x4/inverse.d.ts +2 -0
  144. package/dist/math/mat4x4/inverse.js +41 -0
  145. package/dist/math/mat4x4/inverse.js.map +1 -0
  146. package/dist/math/mat4x4/look-at.d.ts +3 -0
  147. package/dist/math/mat4x4/look-at.js +23 -0
  148. package/dist/math/mat4x4/look-at.js.map +1 -0
  149. package/dist/math/mat4x4/multiply-vec3.d.ts +3 -0
  150. package/dist/math/mat4x4/multiply-vec3.js +7 -0
  151. package/dist/math/mat4x4/multiply-vec3.js.map +1 -0
  152. package/dist/math/mat4x4/multiply-vec4.d.ts +3 -0
  153. package/dist/math/mat4x4/multiply-vec4.js +8 -0
  154. package/dist/math/mat4x4/multiply-vec4.js.map +1 -0
  155. package/dist/math/mat4x4/multiply.d.ts +2 -0
  156. package/dist/math/mat4x4/multiply.js +15 -0
  157. package/dist/math/mat4x4/multiply.js.map +1 -0
  158. package/dist/math/mat4x4/orthographic.d.ts +2 -0
  159. package/dist/math/mat4x4/orthographic.js +13 -0
  160. package/dist/math/mat4x4/orthographic.js.map +1 -0
  161. package/dist/math/mat4x4/perspective.d.ts +2 -0
  162. package/dist/math/mat4x4/perspective.js +23 -0
  163. package/dist/math/mat4x4/perspective.js.map +1 -0
  164. package/dist/math/mat4x4/public.d.ts +19 -1
  165. package/dist/math/mat4x4/public.js +19 -1
  166. package/dist/math/mat4x4/public.js.map +1 -1
  167. package/dist/math/mat4x4/rotation-x.d.ts +2 -0
  168. package/dist/math/mat4x4/rotation-x.js +12 -0
  169. package/dist/math/mat4x4/rotation-x.js.map +1 -0
  170. package/dist/math/mat4x4/rotation-y.d.ts +2 -0
  171. package/dist/math/mat4x4/rotation-y.js +12 -0
  172. package/dist/math/mat4x4/rotation-y.js.map +1 -0
  173. package/dist/math/mat4x4/rotation-z.d.ts +2 -0
  174. package/dist/math/mat4x4/rotation-z.js +12 -0
  175. package/dist/math/mat4x4/rotation-z.js.map +1 -0
  176. package/dist/math/mat4x4/scale.d.ts +2 -0
  177. package/dist/math/mat4x4/scale.js +8 -0
  178. package/dist/math/mat4x4/scale.js.map +1 -0
  179. package/dist/math/mat4x4/scaling.d.ts +2 -0
  180. package/dist/math/mat4x4/scaling.js +8 -0
  181. package/dist/math/mat4x4/scaling.js.map +1 -0
  182. package/dist/math/mat4x4/subtract.d.ts +2 -0
  183. package/dist/math/mat4x4/subtract.js +8 -0
  184. package/dist/math/mat4x4/subtract.js.map +1 -0
  185. package/dist/math/mat4x4/translation.d.ts +2 -0
  186. package/dist/math/mat4x4/translation.js +8 -0
  187. package/dist/math/mat4x4/translation.js.map +1 -0
  188. package/dist/math/mat4x4/transpose.d.ts +2 -0
  189. package/dist/math/mat4x4/transpose.js +8 -0
  190. package/dist/math/mat4x4/transpose.js.map +1 -0
  191. package/dist/math/mat4x4/zero.d.ts +2 -0
  192. package/dist/math/mat4x4/zero.js +8 -0
  193. package/dist/math/mat4x4/zero.js.map +1 -0
  194. package/dist/math/plane/contains-point.d.ts +3 -0
  195. package/dist/math/plane/contains-point.js +5 -0
  196. package/dist/math/plane/contains-point.js.map +1 -0
  197. package/dist/math/plane/distance.d.ts +3 -0
  198. package/dist/math/plane/distance.js +4 -0
  199. package/dist/math/plane/distance.js.map +1 -0
  200. package/dist/math/plane/is-point-behind.d.ts +3 -0
  201. package/dist/math/plane/is-point-behind.js +4 -0
  202. package/dist/math/plane/is-point-behind.js.map +1 -0
  203. package/dist/math/plane/is-point-in-front.d.ts +3 -0
  204. package/dist/math/plane/is-point-in-front.js +4 -0
  205. package/dist/math/plane/is-point-in-front.js.map +1 -0
  206. package/dist/math/plane/is.d.ts +2 -0
  207. package/dist/math/plane/is.js +5 -0
  208. package/dist/math/plane/is.js.map +1 -0
  209. package/dist/math/plane/line-intersection.d.ts +9 -0
  210. package/dist/math/plane/line-intersection.js +26 -0
  211. package/dist/math/plane/line-intersection.js.map +1 -0
  212. package/dist/math/plane/public.d.ts +7 -1
  213. package/dist/math/plane/public.js +7 -1
  214. package/dist/math/plane/public.js.map +1 -1
  215. package/dist/math/plane/signed-distance.d.ts +3 -0
  216. package/dist/math/plane/signed-distance.js +4 -0
  217. package/dist/math/plane/signed-distance.js.map +1 -0
  218. package/dist/math/quat/add.d.ts +2 -0
  219. package/dist/math/quat/add.js +8 -0
  220. package/dist/math/quat/add.js.map +1 -0
  221. package/dist/math/quat/align-to.d.ts +12 -0
  222. package/dist/math/quat/align-to.js +43 -0
  223. package/dist/math/quat/align-to.js.map +1 -0
  224. package/dist/math/quat/conjugate.d.ts +2 -0
  225. package/dist/math/quat/conjugate.js +3 -0
  226. package/dist/math/quat/conjugate.js.map +1 -0
  227. package/dist/math/quat/distance.d.ts +2 -0
  228. package/dist/math/quat/distance.js +5 -0
  229. package/dist/math/quat/distance.js.map +1 -0
  230. package/dist/math/quat/dot.d.ts +2 -0
  231. package/dist/math/quat/dot.js +3 -0
  232. package/dist/math/quat/dot.js.map +1 -0
  233. package/dist/math/quat/from-axis-angle.d.ts +3 -0
  234. package/dist/math/quat/from-axis-angle.js +14 -0
  235. package/dist/math/quat/from-axis-angle.js.map +1 -0
  236. package/dist/math/quat/from-euler.d.ts +2 -0
  237. package/dist/math/quat/from-euler.js +16 -0
  238. package/dist/math/quat/from-euler.js.map +1 -0
  239. package/dist/math/quat/identity.d.ts +2 -0
  240. package/dist/math/quat/identity.js +3 -0
  241. package/dist/math/quat/identity.js.map +1 -0
  242. package/dist/math/quat/inverse.d.ts +2 -0
  243. package/dist/math/quat/inverse.js +11 -0
  244. package/dist/math/quat/inverse.js.map +1 -0
  245. package/dist/math/quat/length-squared.d.ts +2 -0
  246. package/dist/math/quat/length-squared.js +3 -0
  247. package/dist/math/quat/length-squared.js.map +1 -0
  248. package/dist/math/quat/length.d.ts +2 -0
  249. package/dist/math/quat/length.js +3 -0
  250. package/dist/math/quat/length.js.map +1 -0
  251. package/dist/math/quat/lerp.d.ts +2 -0
  252. package/dist/math/quat/lerp.js +8 -0
  253. package/dist/math/quat/lerp.js.map +1 -0
  254. package/dist/math/quat/look-at.d.ts +3 -0
  255. package/dist/math/quat/look-at.js +49 -0
  256. package/dist/math/quat/look-at.js.map +1 -0
  257. package/dist/math/quat/multiply.d.ts +2 -0
  258. package/dist/math/quat/multiply.js +8 -0
  259. package/dist/math/quat/multiply.js.map +1 -0
  260. package/dist/math/quat/negate.d.ts +2 -0
  261. package/dist/math/quat/negate.js +3 -0
  262. package/dist/math/quat/negate.js.map +1 -0
  263. package/dist/math/quat/normalize.d.ts +2 -0
  264. package/dist/math/quat/normalize.js +8 -0
  265. package/dist/math/quat/normalize.js.map +1 -0
  266. package/dist/math/quat/public.d.ts +23 -1
  267. package/dist/math/quat/public.js +23 -1
  268. package/dist/math/quat/public.js.map +1 -1
  269. package/dist/math/quat/rotate-vec3.d.ts +3 -0
  270. package/dist/math/quat/rotate-vec3.js +15 -0
  271. package/dist/math/quat/rotate-vec3.js.map +1 -0
  272. package/dist/math/quat/scale.d.ts +2 -0
  273. package/dist/math/quat/scale.js +3 -0
  274. package/dist/math/quat/scale.js.map +1 -0
  275. package/dist/math/quat/schema.js +1 -1
  276. package/dist/math/quat/schema.js.map +1 -1
  277. package/dist/math/quat/slerp.d.ts +2 -0
  278. package/dist/math/quat/slerp.js +22 -0
  279. package/dist/math/quat/slerp.js.map +1 -0
  280. package/dist/math/quat/subtract.d.ts +2 -0
  281. package/dist/math/quat/subtract.js +8 -0
  282. package/dist/math/quat/subtract.js.map +1 -0
  283. package/dist/math/quat/to-axis-angle.d.ts +6 -0
  284. package/dist/math/quat/to-axis-angle.js +13 -0
  285. package/dist/math/quat/to-axis-angle.js.map +1 -0
  286. package/dist/math/quat/to-euler.d.ts +3 -0
  287. package/dist/math/quat/to-euler.js +22 -0
  288. package/dist/math/quat/to-euler.js.map +1 -0
  289. package/dist/math/quat/to-mat4.d.ts +8 -0
  290. package/dist/math/quat/to-mat4.js +25 -0
  291. package/dist/math/quat/to-mat4.js.map +1 -0
  292. package/dist/math/vec2/f32/abs.d.ts +2 -0
  293. package/dist/math/vec2/f32/abs.js +3 -0
  294. package/dist/math/vec2/f32/abs.js.map +1 -0
  295. package/dist/math/vec2/f32/acos.d.ts +2 -0
  296. package/dist/math/vec2/f32/acos.js +3 -0
  297. package/dist/math/vec2/f32/acos.js.map +1 -0
  298. package/dist/math/vec2/f32/acosh.d.ts +2 -0
  299. package/dist/math/vec2/f32/acosh.js +3 -0
  300. package/dist/math/vec2/f32/acosh.js.map +1 -0
  301. package/dist/math/vec2/f32/add.d.ts +2 -0
  302. package/dist/math/vec2/f32/add.js +3 -0
  303. package/dist/math/vec2/f32/add.js.map +1 -0
  304. package/dist/math/vec2/f32/asin.d.ts +2 -0
  305. package/dist/math/vec2/f32/asin.js +3 -0
  306. package/dist/math/vec2/f32/asin.js.map +1 -0
  307. package/dist/math/vec2/f32/asinh.d.ts +2 -0
  308. package/dist/math/vec2/f32/asinh.js +3 -0
  309. package/dist/math/vec2/f32/asinh.js.map +1 -0
  310. package/dist/math/vec2/f32/atan.d.ts +2 -0
  311. package/dist/math/vec2/f32/atan.js +3 -0
  312. package/dist/math/vec2/f32/atan.js.map +1 -0
  313. package/dist/math/vec2/f32/atanh.d.ts +2 -0
  314. package/dist/math/vec2/f32/atanh.js +3 -0
  315. package/dist/math/vec2/f32/atanh.js.map +1 -0
  316. package/dist/math/vec2/f32/ceil.d.ts +2 -0
  317. package/dist/math/vec2/f32/ceil.js +3 -0
  318. package/dist/math/vec2/f32/ceil.js.map +1 -0
  319. package/dist/math/vec2/f32/clamp.d.ts +2 -0
  320. package/dist/math/vec2/f32/clamp.js +5 -0
  321. package/dist/math/vec2/f32/clamp.js.map +1 -0
  322. package/dist/math/vec2/f32/cos.d.ts +2 -0
  323. package/dist/math/vec2/f32/cos.js +3 -0
  324. package/dist/math/vec2/f32/cos.js.map +1 -0
  325. package/dist/math/vec2/f32/cosh.d.ts +2 -0
  326. package/dist/math/vec2/f32/cosh.js +3 -0
  327. package/dist/math/vec2/f32/cosh.js.map +1 -0
  328. package/dist/math/vec2/f32/distance.d.ts +2 -0
  329. package/dist/math/vec2/f32/distance.js +5 -0
  330. package/dist/math/vec2/f32/distance.js.map +1 -0
  331. package/dist/math/vec2/f32/dot.d.ts +2 -0
  332. package/dist/math/vec2/f32/dot.js +3 -0
  333. package/dist/math/vec2/f32/dot.js.map +1 -0
  334. package/dist/math/vec2/f32/equals.d.ts +2 -0
  335. package/dist/math/vec2/f32/equals.js +3 -0
  336. package/dist/math/vec2/f32/equals.js.map +1 -0
  337. package/dist/math/vec2/f32/exp.d.ts +2 -0
  338. package/dist/math/vec2/f32/exp.js +3 -0
  339. package/dist/math/vec2/f32/exp.js.map +1 -0
  340. package/dist/math/vec2/f32/exp2.d.ts +2 -0
  341. package/dist/math/vec2/f32/exp2.js +3 -0
  342. package/dist/math/vec2/f32/exp2.js.map +1 -0
  343. package/dist/math/vec2/f32/faceforward.d.ts +2 -0
  344. package/dist/math/vec2/f32/faceforward.js +5 -0
  345. package/dist/math/vec2/f32/faceforward.js.map +1 -0
  346. package/dist/math/vec2/f32/floor.d.ts +2 -0
  347. package/dist/math/vec2/f32/floor.js +3 -0
  348. package/dist/math/vec2/f32/floor.js.map +1 -0
  349. package/dist/math/vec2/f32/fract.d.ts +2 -0
  350. package/dist/math/vec2/f32/fract.js +3 -0
  351. package/dist/math/vec2/f32/fract.js.map +1 -0
  352. package/dist/math/vec2/f32/length.d.ts +2 -0
  353. package/dist/math/vec2/f32/length.js +3 -0
  354. package/dist/math/vec2/f32/length.js.map +1 -0
  355. package/dist/math/vec2/f32/log.d.ts +2 -0
  356. package/dist/math/vec2/f32/log.js +3 -0
  357. package/dist/math/vec2/f32/log.js.map +1 -0
  358. package/dist/math/vec2/f32/log2.d.ts +2 -0
  359. package/dist/math/vec2/f32/log2.js +3 -0
  360. package/dist/math/vec2/f32/log2.js.map +1 -0
  361. package/dist/math/vec2/f32/max.d.ts +2 -0
  362. package/dist/math/vec2/f32/max.js +3 -0
  363. package/dist/math/vec2/f32/max.js.map +1 -0
  364. package/dist/math/vec2/f32/min.d.ts +2 -0
  365. package/dist/math/vec2/f32/min.js +3 -0
  366. package/dist/math/vec2/f32/min.js.map +1 -0
  367. package/dist/math/vec2/f32/mix.d.ts +2 -0
  368. package/dist/math/vec2/f32/mix.js +6 -0
  369. package/dist/math/vec2/f32/mix.js.map +1 -0
  370. package/dist/math/vec2/f32/mod.d.ts +2 -0
  371. package/dist/math/vec2/f32/mod.js +6 -0
  372. package/dist/math/vec2/f32/mod.js.map +1 -0
  373. package/dist/math/vec2/f32/modf.d.ts +5 -0
  374. package/dist/math/vec2/f32/modf.js +6 -0
  375. package/dist/math/vec2/f32/modf.js.map +1 -0
  376. package/dist/math/vec2/f32/negate.d.ts +2 -0
  377. package/dist/math/vec2/f32/negate.js +3 -0
  378. package/dist/math/vec2/f32/negate.js.map +1 -0
  379. package/dist/math/vec2/f32/normalize.d.ts +2 -0
  380. package/dist/math/vec2/f32/normalize.js +8 -0
  381. package/dist/math/vec2/f32/normalize.js.map +1 -0
  382. package/dist/math/vec2/f32/pow.d.ts +2 -0
  383. package/dist/math/vec2/f32/pow.js +6 -0
  384. package/dist/math/vec2/f32/pow.js.map +1 -0
  385. package/dist/math/vec2/f32/public.d.ts +46 -1
  386. package/dist/math/vec2/f32/public.js +46 -1
  387. package/dist/math/vec2/f32/public.js.map +1 -1
  388. package/dist/math/vec2/f32/reflect.d.ts +2 -0
  389. package/dist/math/vec2/f32/reflect.js +9 -0
  390. package/dist/math/vec2/f32/reflect.js.map +1 -0
  391. package/dist/math/vec2/f32/refract.d.ts +2 -0
  392. package/dist/math/vec2/f32/refract.js +14 -0
  393. package/dist/math/vec2/f32/refract.js.map +1 -0
  394. package/dist/math/vec2/f32/round.d.ts +2 -0
  395. package/dist/math/vec2/f32/round.js +3 -0
  396. package/dist/math/vec2/f32/round.js.map +1 -0
  397. package/dist/math/vec2/f32/scale.d.ts +2 -0
  398. package/dist/math/vec2/f32/scale.js +3 -0
  399. package/dist/math/vec2/f32/scale.js.map +1 -0
  400. package/dist/math/vec2/f32/sign.d.ts +2 -0
  401. package/dist/math/vec2/f32/sign.js +3 -0
  402. package/dist/math/vec2/f32/sign.js.map +1 -0
  403. package/dist/math/vec2/f32/sin.d.ts +2 -0
  404. package/dist/math/vec2/f32/sin.js +3 -0
  405. package/dist/math/vec2/f32/sin.js.map +1 -0
  406. package/dist/math/vec2/f32/sinh.d.ts +2 -0
  407. package/dist/math/vec2/f32/sinh.js +3 -0
  408. package/dist/math/vec2/f32/sinh.js.map +1 -0
  409. package/dist/math/vec2/f32/smoothstep.d.ts +2 -0
  410. package/dist/math/vec2/f32/smoothstep.js +7 -0
  411. package/dist/math/vec2/f32/smoothstep.js.map +1 -0
  412. package/dist/math/vec2/f32/sqrt.d.ts +2 -0
  413. package/dist/math/vec2/f32/sqrt.js +3 -0
  414. package/dist/math/vec2/f32/sqrt.js.map +1 -0
  415. package/dist/math/vec2/f32/step.d.ts +2 -0
  416. package/dist/math/vec2/f32/step.js +6 -0
  417. package/dist/math/vec2/f32/step.js.map +1 -0
  418. package/dist/math/vec2/f32/subtract.d.ts +2 -0
  419. package/dist/math/vec2/f32/subtract.js +3 -0
  420. package/dist/math/vec2/f32/subtract.js.map +1 -0
  421. package/dist/math/vec2/f32/tan.d.ts +2 -0
  422. package/dist/math/vec2/f32/tan.js +3 -0
  423. package/dist/math/vec2/f32/tan.js.map +1 -0
  424. package/dist/math/vec2/f32/tanh.d.ts +2 -0
  425. package/dist/math/vec2/f32/tanh.js +3 -0
  426. package/dist/math/vec2/f32/tanh.js.map +1 -0
  427. package/dist/math/vec2/f32/trunc.d.ts +2 -0
  428. package/dist/math/vec2/f32/trunc.js +3 -0
  429. package/dist/math/vec2/f32/trunc.js.map +1 -0
  430. package/dist/math/vec2/f32/zero.d.ts +2 -0
  431. package/dist/math/vec2/f32/zero.js +3 -0
  432. package/dist/math/vec2/f32/zero.js.map +1 -0
  433. package/dist/math/vec2/i32/abs.d.ts +2 -0
  434. package/dist/math/vec2/i32/abs.js +3 -0
  435. package/dist/math/vec2/i32/abs.js.map +1 -0
  436. package/dist/math/vec2/i32/add.d.ts +2 -0
  437. package/dist/math/vec2/i32/add.js +3 -0
  438. package/dist/math/vec2/i32/add.js.map +1 -0
  439. package/dist/math/vec2/i32/bitwise-and.d.ts +2 -0
  440. package/dist/math/vec2/i32/bitwise-and.js +3 -0
  441. package/dist/math/vec2/i32/bitwise-and.js.map +1 -0
  442. package/dist/math/vec2/i32/bitwise-not.d.ts +2 -0
  443. package/dist/math/vec2/i32/bitwise-not.js +3 -0
  444. package/dist/math/vec2/i32/bitwise-not.js.map +1 -0
  445. package/dist/math/vec2/i32/bitwise-or.d.ts +2 -0
  446. package/dist/math/vec2/i32/bitwise-or.js +3 -0
  447. package/dist/math/vec2/i32/bitwise-or.js.map +1 -0
  448. package/dist/math/vec2/i32/bitwise-xor.d.ts +2 -0
  449. package/dist/math/vec2/i32/bitwise-xor.js +3 -0
  450. package/dist/math/vec2/i32/bitwise-xor.js.map +1 -0
  451. package/dist/math/vec2/i32/clamp.d.ts +2 -0
  452. package/dist/math/vec2/i32/clamp.js +5 -0
  453. package/dist/math/vec2/i32/clamp.js.map +1 -0
  454. package/dist/math/vec2/i32/count-leading-zeros.d.ts +2 -0
  455. package/dist/math/vec2/i32/count-leading-zeros.js +7 -0
  456. package/dist/math/vec2/i32/count-leading-zeros.js.map +1 -0
  457. package/dist/math/vec2/i32/count-one-bits.d.ts +2 -0
  458. package/dist/math/vec2/i32/count-one-bits.js +7 -0
  459. package/dist/math/vec2/i32/count-one-bits.js.map +1 -0
  460. package/dist/math/vec2/i32/count-trailing-zeros.d.ts +2 -0
  461. package/dist/math/vec2/i32/count-trailing-zeros.js +7 -0
  462. package/dist/math/vec2/i32/count-trailing-zeros.js.map +1 -0
  463. package/dist/math/vec2/i32/equals.d.ts +2 -0
  464. package/dist/math/vec2/i32/equals.js +3 -0
  465. package/dist/math/vec2/i32/equals.js.map +1 -0
  466. package/dist/math/vec2/i32/max.d.ts +2 -0
  467. package/dist/math/vec2/i32/max.js +3 -0
  468. package/dist/math/vec2/i32/max.js.map +1 -0
  469. package/dist/math/vec2/i32/min.d.ts +2 -0
  470. package/dist/math/vec2/i32/min.js +3 -0
  471. package/dist/math/vec2/i32/min.js.map +1 -0
  472. package/dist/math/vec2/i32/negate.d.ts +2 -0
  473. package/dist/math/vec2/i32/negate.js +3 -0
  474. package/dist/math/vec2/i32/negate.js.map +1 -0
  475. package/dist/math/vec2/i32/public.d.ts +20 -1
  476. package/dist/math/vec2/i32/public.js +20 -1
  477. package/dist/math/vec2/i32/public.js.map +1 -1
  478. package/dist/math/vec2/i32/reverse-bits.d.ts +2 -0
  479. package/dist/math/vec2/i32/reverse-bits.js +7 -0
  480. package/dist/math/vec2/i32/reverse-bits.js.map +1 -0
  481. package/dist/math/vec2/i32/scale.d.ts +2 -0
  482. package/dist/math/vec2/i32/scale.js +3 -0
  483. package/dist/math/vec2/i32/scale.js.map +1 -0
  484. package/dist/math/vec2/i32/shift-left.d.ts +2 -0
  485. package/dist/math/vec2/i32/shift-left.js +3 -0
  486. package/dist/math/vec2/i32/shift-left.js.map +1 -0
  487. package/dist/math/vec2/i32/shift-right.d.ts +2 -0
  488. package/dist/math/vec2/i32/shift-right.js +7 -0
  489. package/dist/math/vec2/i32/shift-right.js.map +1 -0
  490. package/dist/math/vec2/i32/subtract.d.ts +2 -0
  491. package/dist/math/vec2/i32/subtract.js +3 -0
  492. package/dist/math/vec2/i32/subtract.js.map +1 -0
  493. package/dist/math/vec2/i32/zero.d.ts +2 -0
  494. package/dist/math/vec2/i32/zero.js +3 -0
  495. package/dist/math/vec2/i32/zero.js.map +1 -0
  496. package/dist/math/vec2/public.d.ts +1 -1
  497. package/dist/math/vec2/public.js +1 -1
  498. package/dist/math/vec2/public.js.map +1 -1
  499. package/dist/math/vec2/u32/add.d.ts +2 -0
  500. package/dist/math/vec2/u32/add.js +6 -0
  501. package/dist/math/vec2/u32/add.js.map +1 -0
  502. package/dist/math/vec2/u32/bitwise-and.d.ts +2 -0
  503. package/dist/math/vec2/u32/bitwise-and.js +6 -0
  504. package/dist/math/vec2/u32/bitwise-and.js.map +1 -0
  505. package/dist/math/vec2/u32/bitwise-not.d.ts +2 -0
  506. package/dist/math/vec2/u32/bitwise-not.js +3 -0
  507. package/dist/math/vec2/u32/bitwise-not.js.map +1 -0
  508. package/dist/math/vec2/u32/bitwise-or.d.ts +2 -0
  509. package/dist/math/vec2/u32/bitwise-or.js +6 -0
  510. package/dist/math/vec2/u32/bitwise-or.js.map +1 -0
  511. package/dist/math/vec2/u32/bitwise-xor.d.ts +2 -0
  512. package/dist/math/vec2/u32/bitwise-xor.js +6 -0
  513. package/dist/math/vec2/u32/bitwise-xor.js.map +1 -0
  514. package/dist/math/vec2/u32/clamp.d.ts +2 -0
  515. package/dist/math/vec2/u32/clamp.js +5 -0
  516. package/dist/math/vec2/u32/clamp.js.map +1 -0
  517. package/dist/math/vec2/u32/count-leading-zeros.d.ts +2 -0
  518. package/dist/math/vec2/u32/count-leading-zeros.js +7 -0
  519. package/dist/math/vec2/u32/count-leading-zeros.js.map +1 -0
  520. package/dist/math/vec2/u32/count-one-bits.d.ts +2 -0
  521. package/dist/math/vec2/u32/count-one-bits.js +7 -0
  522. package/dist/math/vec2/u32/count-one-bits.js.map +1 -0
  523. package/dist/math/vec2/u32/count-trailing-zeros.d.ts +2 -0
  524. package/dist/math/vec2/u32/count-trailing-zeros.js +7 -0
  525. package/dist/math/vec2/u32/count-trailing-zeros.js.map +1 -0
  526. package/dist/math/vec2/u32/equals.d.ts +2 -0
  527. package/dist/math/vec2/u32/equals.js +3 -0
  528. package/dist/math/vec2/u32/equals.js.map +1 -0
  529. package/dist/math/vec2/u32/max.d.ts +2 -0
  530. package/dist/math/vec2/u32/max.js +6 -0
  531. package/dist/math/vec2/u32/max.js.map +1 -0
  532. package/dist/math/vec2/u32/min.d.ts +2 -0
  533. package/dist/math/vec2/u32/min.js +6 -0
  534. package/dist/math/vec2/u32/min.js.map +1 -0
  535. package/dist/math/vec2/u32/negate.d.ts +2 -0
  536. package/dist/math/vec2/u32/negate.js +3 -0
  537. package/dist/math/vec2/u32/negate.js.map +1 -0
  538. package/dist/math/vec2/u32/public.d.ts +19 -1
  539. package/dist/math/vec2/u32/public.js +19 -1
  540. package/dist/math/vec2/u32/public.js.map +1 -1
  541. package/dist/math/vec2/u32/reverse-bits.d.ts +2 -0
  542. package/dist/math/vec2/u32/reverse-bits.js +7 -0
  543. package/dist/math/vec2/u32/reverse-bits.js.map +1 -0
  544. package/dist/math/vec2/u32/scale.d.ts +2 -0
  545. package/dist/math/vec2/u32/scale.js +3 -0
  546. package/dist/math/vec2/u32/scale.js.map +1 -0
  547. package/dist/math/vec2/u32/shift-left.d.ts +2 -0
  548. package/dist/math/vec2/u32/shift-left.js +3 -0
  549. package/dist/math/vec2/u32/shift-left.js.map +1 -0
  550. package/dist/math/vec2/u32/shift-right.d.ts +2 -0
  551. package/dist/math/vec2/u32/shift-right.js +7 -0
  552. package/dist/math/vec2/u32/shift-right.js.map +1 -0
  553. package/dist/math/vec2/u32/subtract.d.ts +2 -0
  554. package/dist/math/vec2/u32/subtract.js +6 -0
  555. package/dist/math/vec2/u32/subtract.js.map +1 -0
  556. package/dist/math/vec2/u32/zero.d.ts +2 -0
  557. package/dist/math/vec2/u32/zero.js +3 -0
  558. package/dist/math/vec2/u32/zero.js.map +1 -0
  559. package/dist/math/vec3/f32/abs.d.ts +2 -0
  560. package/dist/math/vec3/f32/abs.js +3 -0
  561. package/dist/math/vec3/f32/abs.js.map +1 -0
  562. package/dist/math/vec3/f32/acos.d.ts +2 -0
  563. package/dist/math/vec3/f32/acos.js +3 -0
  564. package/dist/math/vec3/f32/acos.js.map +1 -0
  565. package/dist/math/vec3/f32/acosh.d.ts +2 -0
  566. package/dist/math/vec3/f32/acosh.js +3 -0
  567. package/dist/math/vec3/f32/acosh.js.map +1 -0
  568. package/dist/math/vec3/f32/add.d.ts +2 -0
  569. package/dist/math/vec3/f32/add.js +7 -0
  570. package/dist/math/vec3/f32/add.js.map +1 -0
  571. package/dist/math/vec3/f32/asin.d.ts +2 -0
  572. package/dist/math/vec3/f32/asin.js +3 -0
  573. package/dist/math/vec3/f32/asin.js.map +1 -0
  574. package/dist/math/vec3/f32/asinh.d.ts +2 -0
  575. package/dist/math/vec3/f32/asinh.js +3 -0
  576. package/dist/math/vec3/f32/asinh.js.map +1 -0
  577. package/dist/math/vec3/f32/atan.d.ts +2 -0
  578. package/dist/math/vec3/f32/atan.js +3 -0
  579. package/dist/math/vec3/f32/atan.js.map +1 -0
  580. package/dist/math/vec3/f32/atanh.d.ts +2 -0
  581. package/dist/math/vec3/f32/atanh.js +3 -0
  582. package/dist/math/vec3/f32/atanh.js.map +1 -0
  583. package/dist/math/vec3/f32/ceil.d.ts +2 -0
  584. package/dist/math/vec3/f32/ceil.js +3 -0
  585. package/dist/math/vec3/f32/ceil.js.map +1 -0
  586. package/dist/math/vec3/f32/clamp.d.ts +2 -0
  587. package/dist/math/vec3/f32/clamp.js +5 -0
  588. package/dist/math/vec3/f32/clamp.js.map +1 -0
  589. package/dist/math/vec3/f32/cos.d.ts +2 -0
  590. package/dist/math/vec3/f32/cos.js +3 -0
  591. package/dist/math/vec3/f32/cos.js.map +1 -0
  592. package/dist/math/vec3/f32/cosh.d.ts +2 -0
  593. package/dist/math/vec3/f32/cosh.js +3 -0
  594. package/dist/math/vec3/f32/cosh.js.map +1 -0
  595. package/dist/math/vec3/f32/cross.d.ts +2 -0
  596. package/dist/math/vec3/f32/cross.js +7 -0
  597. package/dist/math/vec3/f32/cross.js.map +1 -0
  598. package/dist/math/vec3/f32/distance-squared.d.ts +2 -0
  599. package/dist/math/vec3/f32/distance-squared.js +8 -0
  600. package/dist/math/vec3/f32/distance-squared.js.map +1 -0
  601. package/dist/math/vec3/f32/distance.d.ts +2 -0
  602. package/dist/math/vec3/f32/distance.js +5 -0
  603. package/dist/math/vec3/f32/distance.js.map +1 -0
  604. package/dist/math/vec3/f32/dot.d.ts +2 -0
  605. package/dist/math/vec3/f32/dot.js +3 -0
  606. package/dist/math/vec3/f32/dot.js.map +1 -0
  607. package/dist/math/vec3/f32/equals.d.ts +2 -0
  608. package/dist/math/vec3/f32/equals.js +3 -0
  609. package/dist/math/vec3/f32/equals.js.map +1 -0
  610. package/dist/math/vec3/f32/exp.d.ts +2 -0
  611. package/dist/math/vec3/f32/exp.js +3 -0
  612. package/dist/math/vec3/f32/exp.js.map +1 -0
  613. package/dist/math/vec3/f32/exp2.d.ts +2 -0
  614. package/dist/math/vec3/f32/exp2.js +3 -0
  615. package/dist/math/vec3/f32/exp2.js.map +1 -0
  616. package/dist/math/vec3/f32/faceforward.d.ts +2 -0
  617. package/dist/math/vec3/f32/faceforward.js +5 -0
  618. package/dist/math/vec3/f32/faceforward.js.map +1 -0
  619. package/dist/math/vec3/f32/floor.d.ts +2 -0
  620. package/dist/math/vec3/f32/floor.js +3 -0
  621. package/dist/math/vec3/f32/floor.js.map +1 -0
  622. package/dist/math/vec3/f32/fract.d.ts +2 -0
  623. package/dist/math/vec3/f32/fract.js +7 -0
  624. package/dist/math/vec3/f32/fract.js.map +1 -0
  625. package/dist/math/vec3/f32/length-squared.d.ts +2 -0
  626. package/dist/math/vec3/f32/length-squared.js +3 -0
  627. package/dist/math/vec3/f32/length-squared.js.map +1 -0
  628. package/dist/math/vec3/f32/length.d.ts +2 -0
  629. package/dist/math/vec3/f32/length.js +3 -0
  630. package/dist/math/vec3/f32/length.js.map +1 -0
  631. package/dist/math/vec3/f32/log.d.ts +2 -0
  632. package/dist/math/vec3/f32/log.js +3 -0
  633. package/dist/math/vec3/f32/log.js.map +1 -0
  634. package/dist/math/vec3/f32/log2.d.ts +2 -0
  635. package/dist/math/vec3/f32/log2.js +3 -0
  636. package/dist/math/vec3/f32/log2.js.map +1 -0
  637. package/dist/math/vec3/f32/max.d.ts +2 -0
  638. package/dist/math/vec3/f32/max.js +7 -0
  639. package/dist/math/vec3/f32/max.js.map +1 -0
  640. package/dist/math/vec3/f32/min.d.ts +2 -0
  641. package/dist/math/vec3/f32/min.js +7 -0
  642. package/dist/math/vec3/f32/min.js.map +1 -0
  643. package/dist/math/vec3/f32/mix.d.ts +2 -0
  644. package/dist/math/vec3/f32/mix.js +7 -0
  645. package/dist/math/vec3/f32/mix.js.map +1 -0
  646. package/dist/math/vec3/f32/mod.d.ts +2 -0
  647. package/dist/math/vec3/f32/mod.js +7 -0
  648. package/dist/math/vec3/f32/mod.js.map +1 -0
  649. package/dist/math/vec3/f32/modf.d.ts +5 -0
  650. package/dist/math/vec3/f32/modf.js +6 -0
  651. package/dist/math/vec3/f32/modf.js.map +1 -0
  652. package/dist/math/vec3/f32/multiply.d.ts +5 -0
  653. package/dist/math/vec3/f32/multiply.js +10 -0
  654. package/dist/math/vec3/f32/multiply.js.map +1 -0
  655. package/dist/math/vec3/f32/negate.d.ts +2 -0
  656. package/dist/math/vec3/f32/negate.js +3 -0
  657. package/dist/math/vec3/f32/negate.js.map +1 -0
  658. package/dist/math/vec3/f32/normalize.d.ts +2 -0
  659. package/dist/math/vec3/f32/normalize.js +8 -0
  660. package/dist/math/vec3/f32/normalize.js.map +1 -0
  661. package/dist/math/vec3/f32/one.d.ts +2 -0
  662. package/dist/math/vec3/f32/one.js +3 -0
  663. package/dist/math/vec3/f32/one.js.map +1 -0
  664. package/dist/math/vec3/f32/pow.d.ts +2 -0
  665. package/dist/math/vec3/f32/pow.js +7 -0
  666. package/dist/math/vec3/f32/pow.js.map +1 -0
  667. package/dist/math/vec3/f32/public.d.ts +52 -1
  668. package/dist/math/vec3/f32/public.js +52 -1
  669. package/dist/math/vec3/f32/public.js.map +1 -1
  670. package/dist/math/vec3/f32/random.d.ts +2 -0
  671. package/dist/math/vec3/f32/random.js +5 -0
  672. package/dist/math/vec3/f32/random.js.map +1 -0
  673. package/dist/math/vec3/f32/reflect.d.ts +2 -0
  674. package/dist/math/vec3/f32/reflect.js +9 -0
  675. package/dist/math/vec3/f32/reflect.js.map +1 -0
  676. package/dist/math/vec3/f32/refract.d.ts +2 -0
  677. package/dist/math/vec3/f32/refract.js +14 -0
  678. package/dist/math/vec3/f32/refract.js.map +1 -0
  679. package/dist/math/vec3/f32/round.d.ts +2 -0
  680. package/dist/math/vec3/f32/round.js +3 -0
  681. package/dist/math/vec3/f32/round.js.map +1 -0
  682. package/dist/math/vec3/f32/scale.d.ts +2 -0
  683. package/dist/math/vec3/f32/scale.js +3 -0
  684. package/dist/math/vec3/f32/scale.js.map +1 -0
  685. package/dist/math/vec3/f32/sign.d.ts +2 -0
  686. package/dist/math/vec3/f32/sign.js +3 -0
  687. package/dist/math/vec3/f32/sign.js.map +1 -0
  688. package/dist/math/vec3/f32/sin.d.ts +2 -0
  689. package/dist/math/vec3/f32/sin.js +3 -0
  690. package/dist/math/vec3/f32/sin.js.map +1 -0
  691. package/dist/math/vec3/f32/sinh.d.ts +2 -0
  692. package/dist/math/vec3/f32/sinh.js +3 -0
  693. package/dist/math/vec3/f32/sinh.js.map +1 -0
  694. package/dist/math/vec3/f32/smoothstep.d.ts +2 -0
  695. package/dist/math/vec3/f32/smoothstep.js +12 -0
  696. package/dist/math/vec3/f32/smoothstep.js.map +1 -0
  697. package/dist/math/vec3/f32/sqrt.d.ts +2 -0
  698. package/dist/math/vec3/f32/sqrt.js +3 -0
  699. package/dist/math/vec3/f32/sqrt.js.map +1 -0
  700. package/dist/math/vec3/f32/step.d.ts +2 -0
  701. package/dist/math/vec3/f32/step.js +7 -0
  702. package/dist/math/vec3/f32/step.js.map +1 -0
  703. package/dist/math/vec3/f32/subtract.d.ts +2 -0
  704. package/dist/math/vec3/f32/subtract.js +7 -0
  705. package/dist/math/vec3/f32/subtract.js.map +1 -0
  706. package/dist/math/vec3/f32/tan.d.ts +2 -0
  707. package/dist/math/vec3/f32/tan.js +3 -0
  708. package/dist/math/vec3/f32/tan.js.map +1 -0
  709. package/dist/math/vec3/f32/tanh.d.ts +2 -0
  710. package/dist/math/vec3/f32/tanh.js +3 -0
  711. package/dist/math/vec3/f32/tanh.js.map +1 -0
  712. package/dist/math/vec3/f32/trunc.d.ts +2 -0
  713. package/dist/math/vec3/f32/trunc.js +3 -0
  714. package/dist/math/vec3/f32/trunc.js.map +1 -0
  715. package/dist/math/vec3/f32/zero.d.ts +2 -0
  716. package/dist/math/vec3/f32/zero.js +3 -0
  717. package/dist/math/vec3/f32/zero.js.map +1 -0
  718. package/dist/math/vec3/i32/abs.d.ts +2 -0
  719. package/dist/math/vec3/i32/abs.js +3 -0
  720. package/dist/math/vec3/i32/abs.js.map +1 -0
  721. package/dist/math/vec3/i32/add.d.ts +2 -0
  722. package/dist/math/vec3/i32/add.js +7 -0
  723. package/dist/math/vec3/i32/add.js.map +1 -0
  724. package/dist/math/vec3/i32/bitwise-and.d.ts +2 -0
  725. package/dist/math/vec3/i32/bitwise-and.js +7 -0
  726. package/dist/math/vec3/i32/bitwise-and.js.map +1 -0
  727. package/dist/math/vec3/i32/bitwise-not.d.ts +2 -0
  728. package/dist/math/vec3/i32/bitwise-not.js +3 -0
  729. package/dist/math/vec3/i32/bitwise-not.js.map +1 -0
  730. package/dist/math/vec3/i32/bitwise-or.d.ts +2 -0
  731. package/dist/math/vec3/i32/bitwise-or.js +7 -0
  732. package/dist/math/vec3/i32/bitwise-or.js.map +1 -0
  733. package/dist/math/vec3/i32/bitwise-xor.d.ts +2 -0
  734. package/dist/math/vec3/i32/bitwise-xor.js +7 -0
  735. package/dist/math/vec3/i32/bitwise-xor.js.map +1 -0
  736. package/dist/math/vec3/i32/clamp.d.ts +2 -0
  737. package/dist/math/vec3/i32/clamp.js +5 -0
  738. package/dist/math/vec3/i32/clamp.js.map +1 -0
  739. package/dist/math/vec3/i32/count-leading-zeros.d.ts +2 -0
  740. package/dist/math/vec3/i32/count-leading-zeros.js +8 -0
  741. package/dist/math/vec3/i32/count-leading-zeros.js.map +1 -0
  742. package/dist/math/vec3/i32/count-one-bits.d.ts +2 -0
  743. package/dist/math/vec3/i32/count-one-bits.js +8 -0
  744. package/dist/math/vec3/i32/count-one-bits.js.map +1 -0
  745. package/dist/math/vec3/i32/count-trailing-zeros.d.ts +2 -0
  746. package/dist/math/vec3/i32/count-trailing-zeros.js +8 -0
  747. package/dist/math/vec3/i32/count-trailing-zeros.js.map +1 -0
  748. package/dist/math/vec3/i32/equals.d.ts +2 -0
  749. package/dist/math/vec3/i32/equals.js +3 -0
  750. package/dist/math/vec3/i32/equals.js.map +1 -0
  751. package/dist/math/vec3/i32/max.d.ts +2 -0
  752. package/dist/math/vec3/i32/max.js +7 -0
  753. package/dist/math/vec3/i32/max.js.map +1 -0
  754. package/dist/math/vec3/i32/min.d.ts +2 -0
  755. package/dist/math/vec3/i32/min.js +7 -0
  756. package/dist/math/vec3/i32/min.js.map +1 -0
  757. package/dist/math/vec3/i32/multiply.d.ts +2 -0
  758. package/dist/math/vec3/i32/multiply.js +7 -0
  759. package/dist/math/vec3/i32/multiply.js.map +1 -0
  760. package/dist/math/vec3/i32/negate.d.ts +2 -0
  761. package/dist/math/vec3/i32/negate.js +3 -0
  762. package/dist/math/vec3/i32/negate.js.map +1 -0
  763. package/dist/math/vec3/i32/one.d.ts +2 -0
  764. package/dist/math/vec3/i32/one.js +3 -0
  765. package/dist/math/vec3/i32/one.js.map +1 -0
  766. package/dist/math/vec3/i32/public.d.ts +22 -1
  767. package/dist/math/vec3/i32/public.js +22 -1
  768. package/dist/math/vec3/i32/public.js.map +1 -1
  769. package/dist/math/vec3/i32/reverse-bits.d.ts +2 -0
  770. package/dist/math/vec3/i32/reverse-bits.js +8 -0
  771. package/dist/math/vec3/i32/reverse-bits.js.map +1 -0
  772. package/dist/math/vec3/i32/scale.d.ts +2 -0
  773. package/dist/math/vec3/i32/scale.js +3 -0
  774. package/dist/math/vec3/i32/scale.js.map +1 -0
  775. package/dist/math/vec3/i32/shift-left.d.ts +2 -0
  776. package/dist/math/vec3/i32/shift-left.js +3 -0
  777. package/dist/math/vec3/i32/shift-left.js.map +1 -0
  778. package/dist/math/vec3/i32/shift-right.d.ts +2 -0
  779. package/dist/math/vec3/i32/shift-right.js +8 -0
  780. package/dist/math/vec3/i32/shift-right.js.map +1 -0
  781. package/dist/math/vec3/i32/subtract.d.ts +2 -0
  782. package/dist/math/vec3/i32/subtract.js +7 -0
  783. package/dist/math/vec3/i32/subtract.js.map +1 -0
  784. package/dist/math/vec3/i32/zero.d.ts +2 -0
  785. package/dist/math/vec3/i32/zero.js +3 -0
  786. package/dist/math/vec3/i32/zero.js.map +1 -0
  787. package/dist/math/vec3/public.d.ts +1 -1
  788. package/dist/math/vec3/public.js +1 -1
  789. package/dist/math/vec3/public.js.map +1 -1
  790. package/dist/math/vec3/u32/add.d.ts +2 -0
  791. package/dist/math/vec3/u32/add.js +7 -0
  792. package/dist/math/vec3/u32/add.js.map +1 -0
  793. package/dist/math/vec3/u32/bitwise-and.d.ts +2 -0
  794. package/dist/math/vec3/u32/bitwise-and.js +7 -0
  795. package/dist/math/vec3/u32/bitwise-and.js.map +1 -0
  796. package/dist/math/vec3/u32/bitwise-not.d.ts +2 -0
  797. package/dist/math/vec3/u32/bitwise-not.js +3 -0
  798. package/dist/math/vec3/u32/bitwise-not.js.map +1 -0
  799. package/dist/math/vec3/u32/bitwise-or.d.ts +2 -0
  800. package/dist/math/vec3/u32/bitwise-or.js +7 -0
  801. package/dist/math/vec3/u32/bitwise-or.js.map +1 -0
  802. package/dist/math/vec3/u32/bitwise-xor.d.ts +2 -0
  803. package/dist/math/vec3/u32/bitwise-xor.js +7 -0
  804. package/dist/math/vec3/u32/bitwise-xor.js.map +1 -0
  805. package/dist/math/vec3/u32/clamp.d.ts +2 -0
  806. package/dist/math/vec3/u32/clamp.js +5 -0
  807. package/dist/math/vec3/u32/clamp.js.map +1 -0
  808. package/dist/math/vec3/u32/count-leading-zeros.d.ts +2 -0
  809. package/dist/math/vec3/u32/count-leading-zeros.js +8 -0
  810. package/dist/math/vec3/u32/count-leading-zeros.js.map +1 -0
  811. package/dist/math/vec3/u32/count-one-bits.d.ts +2 -0
  812. package/dist/math/vec3/u32/count-one-bits.js +8 -0
  813. package/dist/math/vec3/u32/count-one-bits.js.map +1 -0
  814. package/dist/math/vec3/u32/count-trailing-zeros.d.ts +2 -0
  815. package/dist/math/vec3/u32/count-trailing-zeros.js +8 -0
  816. package/dist/math/vec3/u32/count-trailing-zeros.js.map +1 -0
  817. package/dist/math/vec3/u32/equals.d.ts +2 -0
  818. package/dist/math/vec3/u32/equals.js +3 -0
  819. package/dist/math/vec3/u32/equals.js.map +1 -0
  820. package/dist/math/vec3/u32/max.d.ts +2 -0
  821. package/dist/math/vec3/u32/max.js +7 -0
  822. package/dist/math/vec3/u32/max.js.map +1 -0
  823. package/dist/math/vec3/u32/min.d.ts +2 -0
  824. package/dist/math/vec3/u32/min.js +7 -0
  825. package/dist/math/vec3/u32/min.js.map +1 -0
  826. package/dist/math/vec3/u32/multiply.d.ts +2 -0
  827. package/dist/math/vec3/u32/multiply.js +7 -0
  828. package/dist/math/vec3/u32/multiply.js.map +1 -0
  829. package/dist/math/vec3/u32/negate.d.ts +2 -0
  830. package/dist/math/vec3/u32/negate.js +3 -0
  831. package/dist/math/vec3/u32/negate.js.map +1 -0
  832. package/dist/math/vec3/u32/one.d.ts +2 -0
  833. package/dist/math/vec3/u32/one.js +3 -0
  834. package/dist/math/vec3/u32/one.js.map +1 -0
  835. package/dist/math/vec3/u32/public.d.ts +22 -1
  836. package/dist/math/vec3/u32/public.js +22 -1
  837. package/dist/math/vec3/u32/public.js.map +1 -1
  838. package/dist/math/vec3/u32/reverse-bits.d.ts +2 -0
  839. package/dist/math/vec3/u32/reverse-bits.js +8 -0
  840. package/dist/math/vec3/u32/reverse-bits.js.map +1 -0
  841. package/dist/math/vec3/u32/scale.d.ts +2 -0
  842. package/dist/math/vec3/u32/scale.js +7 -0
  843. package/dist/math/vec3/u32/scale.js.map +1 -0
  844. package/dist/math/vec3/u32/shift-left.d.ts +2 -0
  845. package/dist/math/vec3/u32/shift-left.js +7 -0
  846. package/dist/math/vec3/u32/shift-left.js.map +1 -0
  847. package/dist/math/vec3/u32/shift-right.d.ts +2 -0
  848. package/dist/math/vec3/u32/shift-right.js +8 -0
  849. package/dist/math/vec3/u32/shift-right.js.map +1 -0
  850. package/dist/math/vec3/u32/subtract.d.ts +2 -0
  851. package/dist/math/vec3/u32/subtract.js +7 -0
  852. package/dist/math/vec3/u32/subtract.js.map +1 -0
  853. package/dist/math/vec3/u32/volume.d.ts +2 -0
  854. package/dist/math/vec3/u32/volume.js +3 -0
  855. package/dist/math/vec3/u32/volume.js.map +1 -0
  856. package/dist/math/vec3/u32/zero.d.ts +2 -0
  857. package/dist/math/vec3/u32/zero.js +3 -0
  858. package/dist/math/vec3/u32/zero.js.map +1 -0
  859. package/dist/math/vec4/f32/abs.d.ts +2 -0
  860. package/dist/math/vec4/f32/abs.js +3 -0
  861. package/dist/math/vec4/f32/abs.js.map +1 -0
  862. package/dist/math/vec4/f32/acos.d.ts +2 -0
  863. package/dist/math/vec4/f32/acos.js +3 -0
  864. package/dist/math/vec4/f32/acos.js.map +1 -0
  865. package/dist/math/vec4/f32/acosh.d.ts +2 -0
  866. package/dist/math/vec4/f32/acosh.js +3 -0
  867. package/dist/math/vec4/f32/acosh.js.map +1 -0
  868. package/dist/math/vec4/f32/add.d.ts +2 -0
  869. package/dist/math/vec4/f32/add.js +8 -0
  870. package/dist/math/vec4/f32/add.js.map +1 -0
  871. package/dist/math/vec4/f32/asin.d.ts +2 -0
  872. package/dist/math/vec4/f32/asin.js +3 -0
  873. package/dist/math/vec4/f32/asin.js.map +1 -0
  874. package/dist/math/vec4/f32/asinh.d.ts +2 -0
  875. package/dist/math/vec4/f32/asinh.js +3 -0
  876. package/dist/math/vec4/f32/asinh.js.map +1 -0
  877. package/dist/math/vec4/f32/atan.d.ts +2 -0
  878. package/dist/math/vec4/f32/atan.js +3 -0
  879. package/dist/math/vec4/f32/atan.js.map +1 -0
  880. package/dist/math/vec4/f32/atanh.d.ts +2 -0
  881. package/dist/math/vec4/f32/atanh.js +3 -0
  882. package/dist/math/vec4/f32/atanh.js.map +1 -0
  883. package/dist/math/vec4/f32/ceil.d.ts +2 -0
  884. package/dist/math/vec4/f32/ceil.js +3 -0
  885. package/dist/math/vec4/f32/ceil.js.map +1 -0
  886. package/dist/math/vec4/f32/clamp.d.ts +2 -0
  887. package/dist/math/vec4/f32/clamp.js +5 -0
  888. package/dist/math/vec4/f32/clamp.js.map +1 -0
  889. package/dist/math/vec4/f32/cos.d.ts +2 -0
  890. package/dist/math/vec4/f32/cos.js +3 -0
  891. package/dist/math/vec4/f32/cos.js.map +1 -0
  892. package/dist/math/vec4/f32/cosh.d.ts +2 -0
  893. package/dist/math/vec4/f32/cosh.js +3 -0
  894. package/dist/math/vec4/f32/cosh.js.map +1 -0
  895. package/dist/math/vec4/f32/distance.d.ts +2 -0
  896. package/dist/math/vec4/f32/distance.js +5 -0
  897. package/dist/math/vec4/f32/distance.js.map +1 -0
  898. package/dist/math/vec4/f32/dot.d.ts +2 -0
  899. package/dist/math/vec4/f32/dot.js +3 -0
  900. package/dist/math/vec4/f32/dot.js.map +1 -0
  901. package/dist/math/vec4/f32/exp.d.ts +2 -0
  902. package/dist/math/vec4/f32/exp.js +3 -0
  903. package/dist/math/vec4/f32/exp.js.map +1 -0
  904. package/dist/math/vec4/f32/exp2.d.ts +2 -0
  905. package/dist/math/vec4/f32/exp2.js +3 -0
  906. package/dist/math/vec4/f32/exp2.js.map +1 -0
  907. package/dist/math/vec4/f32/faceforward.d.ts +2 -0
  908. package/dist/math/vec4/f32/faceforward.js +5 -0
  909. package/dist/math/vec4/f32/faceforward.js.map +1 -0
  910. package/dist/math/vec4/f32/floor.d.ts +2 -0
  911. package/dist/math/vec4/f32/floor.js +3 -0
  912. package/dist/math/vec4/f32/floor.js.map +1 -0
  913. package/dist/math/vec4/f32/fract.d.ts +2 -0
  914. package/dist/math/vec4/f32/fract.js +8 -0
  915. package/dist/math/vec4/f32/fract.js.map +1 -0
  916. package/dist/math/vec4/f32/length.d.ts +2 -0
  917. package/dist/math/vec4/f32/length.js +3 -0
  918. package/dist/math/vec4/f32/length.js.map +1 -0
  919. package/dist/math/vec4/f32/log.d.ts +2 -0
  920. package/dist/math/vec4/f32/log.js +3 -0
  921. package/dist/math/vec4/f32/log.js.map +1 -0
  922. package/dist/math/vec4/f32/log2.d.ts +2 -0
  923. package/dist/math/vec4/f32/log2.js +3 -0
  924. package/dist/math/vec4/f32/log2.js.map +1 -0
  925. package/dist/math/vec4/f32/max.d.ts +2 -0
  926. package/dist/math/vec4/f32/max.js +8 -0
  927. package/dist/math/vec4/f32/max.js.map +1 -0
  928. package/dist/math/vec4/f32/min.d.ts +2 -0
  929. package/dist/math/vec4/f32/min.js +8 -0
  930. package/dist/math/vec4/f32/min.js.map +1 -0
  931. package/dist/math/vec4/f32/mix.d.ts +2 -0
  932. package/dist/math/vec4/f32/mix.js +8 -0
  933. package/dist/math/vec4/f32/mix.js.map +1 -0
  934. package/dist/math/vec4/f32/mod.d.ts +2 -0
  935. package/dist/math/vec4/f32/mod.js +8 -0
  936. package/dist/math/vec4/f32/mod.js.map +1 -0
  937. package/dist/math/vec4/f32/modf.d.ts +5 -0
  938. package/dist/math/vec4/f32/modf.js +6 -0
  939. package/dist/math/vec4/f32/modf.js.map +1 -0
  940. package/dist/math/vec4/f32/multiply.d.ts +2 -0
  941. package/dist/math/vec4/f32/multiply.js +8 -0
  942. package/dist/math/vec4/f32/multiply.js.map +1 -0
  943. package/dist/math/vec4/f32/negate.d.ts +2 -0
  944. package/dist/math/vec4/f32/negate.js +3 -0
  945. package/dist/math/vec4/f32/negate.js.map +1 -0
  946. package/dist/math/vec4/f32/normalize.d.ts +2 -0
  947. package/dist/math/vec4/f32/normalize.js +8 -0
  948. package/dist/math/vec4/f32/normalize.js.map +1 -0
  949. package/dist/math/vec4/f32/pow.d.ts +2 -0
  950. package/dist/math/vec4/f32/pow.js +8 -0
  951. package/dist/math/vec4/f32/pow.js.map +1 -0
  952. package/dist/math/vec4/f32/public.d.ts +45 -1
  953. package/dist/math/vec4/f32/public.js +45 -1
  954. package/dist/math/vec4/f32/public.js.map +1 -1
  955. package/dist/math/vec4/f32/reflect.d.ts +2 -0
  956. package/dist/math/vec4/f32/reflect.js +9 -0
  957. package/dist/math/vec4/f32/reflect.js.map +1 -0
  958. package/dist/math/vec4/f32/refract.d.ts +2 -0
  959. package/dist/math/vec4/f32/refract.js +14 -0
  960. package/dist/math/vec4/f32/refract.js.map +1 -0
  961. package/dist/math/vec4/f32/round.d.ts +2 -0
  962. package/dist/math/vec4/f32/round.js +3 -0
  963. package/dist/math/vec4/f32/round.js.map +1 -0
  964. package/dist/math/vec4/f32/scale.d.ts +2 -0
  965. package/dist/math/vec4/f32/scale.js +3 -0
  966. package/dist/math/vec4/f32/scale.js.map +1 -0
  967. package/dist/math/vec4/f32/sign.d.ts +2 -0
  968. package/dist/math/vec4/f32/sign.js +3 -0
  969. package/dist/math/vec4/f32/sign.js.map +1 -0
  970. package/dist/math/vec4/f32/sin.d.ts +2 -0
  971. package/dist/math/vec4/f32/sin.js +3 -0
  972. package/dist/math/vec4/f32/sin.js.map +1 -0
  973. package/dist/math/vec4/f32/sinh.d.ts +2 -0
  974. package/dist/math/vec4/f32/sinh.js +3 -0
  975. package/dist/math/vec4/f32/sinh.js.map +1 -0
  976. package/dist/math/vec4/f32/smoothstep.d.ts +2 -0
  977. package/dist/math/vec4/f32/smoothstep.js +14 -0
  978. package/dist/math/vec4/f32/smoothstep.js.map +1 -0
  979. package/dist/math/vec4/f32/sqrt.d.ts +2 -0
  980. package/dist/math/vec4/f32/sqrt.js +3 -0
  981. package/dist/math/vec4/f32/sqrt.js.map +1 -0
  982. package/dist/math/vec4/f32/step.d.ts +2 -0
  983. package/dist/math/vec4/f32/step.js +8 -0
  984. package/dist/math/vec4/f32/step.js.map +1 -0
  985. package/dist/math/vec4/f32/subtract.d.ts +2 -0
  986. package/dist/math/vec4/f32/subtract.js +8 -0
  987. package/dist/math/vec4/f32/subtract.js.map +1 -0
  988. package/dist/math/vec4/f32/tan.d.ts +2 -0
  989. package/dist/math/vec4/f32/tan.js +3 -0
  990. package/dist/math/vec4/f32/tan.js.map +1 -0
  991. package/dist/math/vec4/f32/tanh.d.ts +2 -0
  992. package/dist/math/vec4/f32/tanh.js +3 -0
  993. package/dist/math/vec4/f32/tanh.js.map +1 -0
  994. package/dist/math/vec4/f32/trunc.d.ts +2 -0
  995. package/dist/math/vec4/f32/trunc.js +3 -0
  996. package/dist/math/vec4/f32/trunc.js.map +1 -0
  997. package/dist/math/vec4/i32/abs.d.ts +2 -0
  998. package/dist/math/vec4/i32/abs.js +3 -0
  999. package/dist/math/vec4/i32/abs.js.map +1 -0
  1000. package/dist/math/vec4/i32/add.d.ts +2 -0
  1001. package/dist/math/vec4/i32/add.js +8 -0
  1002. package/dist/math/vec4/i32/add.js.map +1 -0
  1003. package/dist/math/vec4/i32/bitwise-and.d.ts +2 -0
  1004. package/dist/math/vec4/i32/bitwise-and.js +8 -0
  1005. package/dist/math/vec4/i32/bitwise-and.js.map +1 -0
  1006. package/dist/math/vec4/i32/bitwise-not.d.ts +2 -0
  1007. package/dist/math/vec4/i32/bitwise-not.js +3 -0
  1008. package/dist/math/vec4/i32/bitwise-not.js.map +1 -0
  1009. package/dist/math/vec4/i32/bitwise-or.d.ts +2 -0
  1010. package/dist/math/vec4/i32/bitwise-or.js +8 -0
  1011. package/dist/math/vec4/i32/bitwise-or.js.map +1 -0
  1012. package/dist/math/vec4/i32/bitwise-xor.d.ts +2 -0
  1013. package/dist/math/vec4/i32/bitwise-xor.js +8 -0
  1014. package/dist/math/vec4/i32/bitwise-xor.js.map +1 -0
  1015. package/dist/math/vec4/i32/clamp.d.ts +2 -0
  1016. package/dist/math/vec4/i32/clamp.js +5 -0
  1017. package/dist/math/vec4/i32/clamp.js.map +1 -0
  1018. package/dist/math/vec4/i32/count-leading-zeros.d.ts +2 -0
  1019. package/dist/math/vec4/i32/count-leading-zeros.js +9 -0
  1020. package/dist/math/vec4/i32/count-leading-zeros.js.map +1 -0
  1021. package/dist/math/vec4/i32/count-one-bits.d.ts +2 -0
  1022. package/dist/math/vec4/i32/count-one-bits.js +9 -0
  1023. package/dist/math/vec4/i32/count-one-bits.js.map +1 -0
  1024. package/dist/math/vec4/i32/count-trailing-zeros.d.ts +2 -0
  1025. package/dist/math/vec4/i32/count-trailing-zeros.js +9 -0
  1026. package/dist/math/vec4/i32/count-trailing-zeros.js.map +1 -0
  1027. package/dist/math/vec4/i32/equals.d.ts +2 -0
  1028. package/dist/math/vec4/i32/equals.js +3 -0
  1029. package/dist/math/vec4/i32/equals.js.map +1 -0
  1030. package/dist/math/vec4/i32/max.d.ts +2 -0
  1031. package/dist/math/vec4/i32/max.js +8 -0
  1032. package/dist/math/vec4/i32/max.js.map +1 -0
  1033. package/dist/math/vec4/i32/min.d.ts +2 -0
  1034. package/dist/math/vec4/i32/min.js +8 -0
  1035. package/dist/math/vec4/i32/min.js.map +1 -0
  1036. package/dist/math/vec4/i32/multiply.d.ts +2 -0
  1037. package/dist/math/vec4/i32/multiply.js +8 -0
  1038. package/dist/math/vec4/i32/multiply.js.map +1 -0
  1039. package/dist/math/vec4/i32/negate.d.ts +2 -0
  1040. package/dist/math/vec4/i32/negate.js +3 -0
  1041. package/dist/math/vec4/i32/negate.js.map +1 -0
  1042. package/dist/math/vec4/i32/one.d.ts +2 -0
  1043. package/dist/math/vec4/i32/one.js +3 -0
  1044. package/dist/math/vec4/i32/one.js.map +1 -0
  1045. package/dist/math/vec4/i32/public.d.ts +22 -1
  1046. package/dist/math/vec4/i32/public.js +22 -1
  1047. package/dist/math/vec4/i32/public.js.map +1 -1
  1048. package/dist/math/vec4/i32/reverse-bits.d.ts +2 -0
  1049. package/dist/math/vec4/i32/reverse-bits.js +9 -0
  1050. package/dist/math/vec4/i32/reverse-bits.js.map +1 -0
  1051. package/dist/math/vec4/i32/scale.d.ts +2 -0
  1052. package/dist/math/vec4/i32/scale.js +3 -0
  1053. package/dist/math/vec4/i32/scale.js.map +1 -0
  1054. package/dist/math/vec4/i32/shift-left.d.ts +2 -0
  1055. package/dist/math/vec4/i32/shift-left.js +3 -0
  1056. package/dist/math/vec4/i32/shift-left.js.map +1 -0
  1057. package/dist/math/vec4/i32/shift-right.d.ts +2 -0
  1058. package/dist/math/vec4/i32/shift-right.js +9 -0
  1059. package/dist/math/vec4/i32/shift-right.js.map +1 -0
  1060. package/dist/math/vec4/i32/subtract.d.ts +2 -0
  1061. package/dist/math/vec4/i32/subtract.js +8 -0
  1062. package/dist/math/vec4/i32/subtract.js.map +1 -0
  1063. package/dist/math/vec4/i32/zero.d.ts +2 -0
  1064. package/dist/math/vec4/i32/zero.js +3 -0
  1065. package/dist/math/vec4/i32/zero.js.map +1 -0
  1066. package/dist/math/vec4/public.d.ts +1 -1
  1067. package/dist/math/vec4/public.js +1 -1
  1068. package/dist/math/vec4/public.js.map +1 -1
  1069. package/dist/math/vec4/u32/add.d.ts +2 -0
  1070. package/dist/math/vec4/u32/add.js +8 -0
  1071. package/dist/math/vec4/u32/add.js.map +1 -0
  1072. package/dist/math/vec4/u32/bitwise-and.d.ts +2 -0
  1073. package/dist/math/vec4/u32/bitwise-and.js +8 -0
  1074. package/dist/math/vec4/u32/bitwise-and.js.map +1 -0
  1075. package/dist/math/vec4/u32/bitwise-not.d.ts +2 -0
  1076. package/dist/math/vec4/u32/bitwise-not.js +3 -0
  1077. package/dist/math/vec4/u32/bitwise-not.js.map +1 -0
  1078. package/dist/math/vec4/u32/bitwise-or.d.ts +2 -0
  1079. package/dist/math/vec4/u32/bitwise-or.js +8 -0
  1080. package/dist/math/vec4/u32/bitwise-or.js.map +1 -0
  1081. package/dist/math/vec4/u32/bitwise-xor.d.ts +2 -0
  1082. package/dist/math/vec4/u32/bitwise-xor.js +8 -0
  1083. package/dist/math/vec4/u32/bitwise-xor.js.map +1 -0
  1084. package/dist/math/vec4/u32/clamp.d.ts +2 -0
  1085. package/dist/math/vec4/u32/clamp.js +5 -0
  1086. package/dist/math/vec4/u32/clamp.js.map +1 -0
  1087. package/dist/math/vec4/u32/count-leading-zeros.d.ts +2 -0
  1088. package/dist/math/vec4/u32/count-leading-zeros.js +9 -0
  1089. package/dist/math/vec4/u32/count-leading-zeros.js.map +1 -0
  1090. package/dist/math/vec4/u32/count-one-bits.d.ts +2 -0
  1091. package/dist/math/vec4/u32/count-one-bits.js +9 -0
  1092. package/dist/math/vec4/u32/count-one-bits.js.map +1 -0
  1093. package/dist/math/vec4/u32/count-trailing-zeros.d.ts +2 -0
  1094. package/dist/math/vec4/u32/count-trailing-zeros.js +9 -0
  1095. package/dist/math/vec4/u32/count-trailing-zeros.js.map +1 -0
  1096. package/dist/math/vec4/u32/equals.d.ts +2 -0
  1097. package/dist/math/vec4/u32/equals.js +3 -0
  1098. package/dist/math/vec4/u32/equals.js.map +1 -0
  1099. package/dist/math/vec4/u32/max.d.ts +2 -0
  1100. package/dist/math/vec4/u32/max.js +8 -0
  1101. package/dist/math/vec4/u32/max.js.map +1 -0
  1102. package/dist/math/vec4/u32/min.d.ts +2 -0
  1103. package/dist/math/vec4/u32/min.js +8 -0
  1104. package/dist/math/vec4/u32/min.js.map +1 -0
  1105. package/dist/math/vec4/u32/multiply.d.ts +2 -0
  1106. package/dist/math/vec4/u32/multiply.js +8 -0
  1107. package/dist/math/vec4/u32/multiply.js.map +1 -0
  1108. package/dist/math/vec4/u32/negate.d.ts +2 -0
  1109. package/dist/math/vec4/u32/negate.js +3 -0
  1110. package/dist/math/vec4/u32/negate.js.map +1 -0
  1111. package/dist/math/vec4/u32/one.d.ts +2 -0
  1112. package/dist/math/vec4/u32/one.js +3 -0
  1113. package/dist/math/vec4/u32/one.js.map +1 -0
  1114. package/dist/math/vec4/u32/public.d.ts +21 -1
  1115. package/dist/math/vec4/u32/public.js +21 -1
  1116. package/dist/math/vec4/u32/public.js.map +1 -1
  1117. package/dist/math/vec4/u32/reverse-bits.d.ts +2 -0
  1118. package/dist/math/vec4/u32/reverse-bits.js +9 -0
  1119. package/dist/math/vec4/u32/reverse-bits.js.map +1 -0
  1120. package/dist/math/vec4/u32/scale.d.ts +2 -0
  1121. package/dist/math/vec4/u32/scale.js +8 -0
  1122. package/dist/math/vec4/u32/scale.js.map +1 -0
  1123. package/dist/math/vec4/u32/shift-left.d.ts +2 -0
  1124. package/dist/math/vec4/u32/shift-left.js +8 -0
  1125. package/dist/math/vec4/u32/shift-left.js.map +1 -0
  1126. package/dist/math/vec4/u32/shift-right.d.ts +2 -0
  1127. package/dist/math/vec4/u32/shift-right.js +9 -0
  1128. package/dist/math/vec4/u32/shift-right.js.map +1 -0
  1129. package/dist/math/vec4/u32/subtract.d.ts +2 -0
  1130. package/dist/math/vec4/u32/subtract.js +8 -0
  1131. package/dist/math/vec4/u32/subtract.js.map +1 -0
  1132. package/dist/math/vec4/u32/zero.d.ts +2 -0
  1133. package/dist/math/vec4/u32/zero.js +3 -0
  1134. package/dist/math/vec4/u32/zero.js.map +1 -0
  1135. package/dist/schema/from-archetype.d.ts +7 -4
  1136. package/dist/schema/from-archetype.js +3 -3
  1137. package/dist/schema/from-archetype.js.map +1 -1
  1138. package/dist/schema/from-object-properties.d.ts +15 -0
  1139. package/dist/schema/from-object-properties.js +9 -0
  1140. package/dist/schema/from-object-properties.js.map +1 -0
  1141. package/dist/schema/from-object-properties.test.d.ts +1 -0
  1142. package/dist/schema/from-object-properties.test.js +49 -0
  1143. package/dist/schema/from-object-properties.test.js.map +1 -0
  1144. package/dist/schema/from-object-properties.type-test.d.ts +1 -0
  1145. package/dist/schema/from-object-properties.type-test.js +37 -0
  1146. package/dist/schema/from-object-properties.type-test.js.map +1 -0
  1147. package/dist/schema/from-struct-properties.d.ts +8 -0
  1148. package/dist/schema/from-struct-properties.js +7 -0
  1149. package/dist/schema/from-struct-properties.js.map +1 -0
  1150. package/dist/schema/from-struct-properties.test.d.ts +1 -0
  1151. package/dist/schema/from-struct-properties.test.js +28 -0
  1152. package/dist/schema/from-struct-properties.test.js.map +1 -0
  1153. package/dist/schema/from-struct-properties.type-test.d.ts +1 -0
  1154. package/dist/schema/from-struct-properties.type-test.js +11 -0
  1155. package/dist/schema/from-struct-properties.type-test.js.map +1 -0
  1156. package/dist/schema/guid/guid.performance.test.js +0 -3
  1157. package/dist/schema/guid/guid.performance.test.js.map +1 -1
  1158. package/dist/schema/public.d.ts +2 -1
  1159. package/dist/schema/public.js +2 -1
  1160. package/dist/schema/public.js.map +1 -1
  1161. package/dist/schema/schema.d.ts +2 -0
  1162. package/dist/service/service.d.ts +1 -1
  1163. package/dist/service/ui-service/from-service.d.ts +19 -3
  1164. package/dist/service/ui-service/from-service.transaction.type-test.d.ts +1 -0
  1165. package/dist/service/ui-service/from-service.transaction.type-test.js +14 -0
  1166. package/dist/service/ui-service/from-service.transaction.type-test.js.map +1 -0
  1167. package/dist/service/ui-service/is-valid.d.ts +5 -1
  1168. package/dist/tsconfig.tsbuildinfo +1 -1
  1169. package/dist/types/async-args-provider.d.ts +17 -0
  1170. package/dist/types/async-args-provider.js +3 -0
  1171. package/dist/types/async-args-provider.js.map +1 -0
  1172. package/dist/types/index.d.ts +1 -0
  1173. package/dist/types/index.js +1 -0
  1174. package/dist/types/index.js.map +1 -1
  1175. package/package.json +1 -1
  1176. package/references/data-lit/package.json +6 -2
  1177. package/references/data-lit/src/elements/database-element.ts +36 -1
  1178. package/references/data-lit/src/elements/database-element.type-test.ts +20 -0
  1179. package/references/data-lit/src/index.ts +1 -0
  1180. package/references/data-lit/src/testing/template/from.test.ts +47 -0
  1181. package/references/data-lit/src/testing/template/from.ts +86 -0
  1182. package/references/data-lit/src/testing/template/public.ts +3 -0
  1183. package/references/data-lit/src/testing/template/query.ts +27 -0
  1184. package/references/data-lit/src/testing/template/template.ts +4 -0
  1185. package/references/data-lit-tictactoe/package.json +6 -2
  1186. package/references/data-lit-tictactoe/src/features/main/data/board-cell/blank.ts +5 -0
  1187. package/references/data-lit-tictactoe/src/features/main/data/board-cell/board-cell.ts +5 -0
  1188. package/references/data-lit-tictactoe/src/{types/play-move-args → features/main/data/board-cell}/public.ts +1 -2
  1189. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/board-state.ts +2 -2
  1190. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/create-initial-board.ts +2 -2
  1191. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/current-player.ts +2 -2
  1192. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/derive-status.ts +4 -4
  1193. package/references/data-lit-tictactoe/src/features/main/data/board-state/from-marks.ts +11 -0
  1194. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/get-move-count.ts +1 -1
  1195. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/get-winner.ts +4 -4
  1196. package/references/data-lit-tictactoe/src/features/main/data/board-state/get-winning-line.ts +15 -0
  1197. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/is-board-full.ts +1 -1
  1198. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/is-game-over.ts +3 -3
  1199. package/references/data-lit-tictactoe/src/features/main/data/board-state/public.ts +13 -0
  1200. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/schema.ts +3 -1
  1201. package/references/data-lit-tictactoe/src/{types → features/main/data}/board-state/set-board-cell.ts +3 -3
  1202. package/references/data-lit-tictactoe/src/features/main/data/cell-index/cell-index.ts +6 -0
  1203. package/references/data-lit-tictactoe/src/features/main/data/cell-index/public.ts +2 -0
  1204. package/references/data-lit-tictactoe/src/features/main/data/cell-index/schema.ts +9 -0
  1205. package/references/data-lit-tictactoe/src/features/main/data/game-status/game-status.ts +6 -0
  1206. package/references/data-lit-tictactoe/src/features/main/data/game-status/is-active.ts +6 -0
  1207. package/references/data-lit-tictactoe/src/features/main/data/game-status/public.ts +3 -0
  1208. package/references/data-lit-tictactoe/src/features/main/data/game-status/schema.ts +7 -0
  1209. package/references/data-lit-tictactoe/src/features/main/data/move-reject-reason/move-reject-reason.ts +6 -0
  1210. package/references/data-lit-tictactoe/src/features/main/data/move-reject-reason/public.ts +2 -0
  1211. package/references/data-lit-tictactoe/src/features/main/data/move-reject-reason/schema.ts +7 -0
  1212. package/references/data-lit-tictactoe/src/features/main/data/placed-mark/placed-mark.ts +6 -0
  1213. package/references/data-lit-tictactoe/src/features/main/data/placed-mark/public.ts +2 -0
  1214. package/references/data-lit-tictactoe/src/features/main/data/placed-mark/schema.ts +12 -0
  1215. package/references/data-lit-tictactoe/src/{types → features/main/data}/play-move-args/can-play-move.ts +9 -5
  1216. package/references/data-lit-tictactoe/src/{types → features/main/data}/play-move-args/play-move-args.ts +1 -1
  1217. package/references/data-lit-tictactoe/src/features/main/data/play-move-args/public.ts +3 -0
  1218. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/is.ts +2 -2
  1219. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/mark-color.ts +1 -1
  1220. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/opponent.ts +1 -1
  1221. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/player-mark.ts +2 -2
  1222. package/references/data-lit-tictactoe/src/features/main/data/player-mark/public.ts +7 -0
  1223. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/schema.ts +1 -1
  1224. package/references/data-lit-tictactoe/src/{types → features/main/data}/player-mark/values.ts +2 -2
  1225. package/references/data-lit-tictactoe/src/features/main/data/score/public.ts +2 -0
  1226. package/references/data-lit-tictactoe/src/features/main/data/score/schema.ts +9 -0
  1227. package/references/data-lit-tictactoe/src/features/main/data/score/score.ts +6 -0
  1228. package/references/data-lit-tictactoe/src/features/main/data/state/conformance-case.ts +13 -0
  1229. package/references/data-lit-tictactoe/src/features/main/data/state/expect-state-matches.ts +36 -0
  1230. package/references/data-lit-tictactoe/src/features/main/data/state/play-move.cases.ts +47 -0
  1231. package/references/data-lit-tictactoe/src/features/main/data/state/play-move.test.ts +13 -0
  1232. package/references/data-lit-tictactoe/src/features/main/data/state/play-move.ts +20 -0
  1233. package/references/data-lit-tictactoe/src/features/main/data/state/public.ts +3 -0
  1234. package/references/data-lit-tictactoe/src/features/main/data/state/restart-game.cases.ts +34 -0
  1235. package/references/data-lit-tictactoe/src/features/main/data/state/restart-game.test.ts +13 -0
  1236. package/references/data-lit-tictactoe/src/features/main/data/state/restart-game.ts +18 -0
  1237. package/references/data-lit-tictactoe/src/features/main/data/state/state.ts +15 -0
  1238. package/references/data-lit-tictactoe/src/features/main/data/winning-line/lines.ts +14 -0
  1239. package/references/data-lit-tictactoe/src/features/main/data/winning-line/public.ts +2 -0
  1240. package/references/data-lit-tictactoe/src/{types → features/main/data/winning-line}/winning-line.ts +1 -0
  1241. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/board.ts +22 -0
  1242. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/current-player.ts +12 -0
  1243. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/index.ts +9 -0
  1244. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/is-game-over.ts +10 -0
  1245. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/move-count.ts +10 -0
  1246. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/state.ts +29 -0
  1247. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/status.ts +10 -0
  1248. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/winner.ts +10 -0
  1249. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed/winning-line.ts +10 -0
  1250. package/references/data-lit-tictactoe/src/features/main/ecs/computed-database/computed-database.ts +18 -0
  1251. package/references/data-lit-tictactoe/src/features/main/ecs/conformance/create-store.ts +12 -0
  1252. package/references/data-lit-tictactoe/src/features/main/ecs/conformance/expect-conforms.ts +42 -0
  1253. package/references/data-lit-tictactoe/src/features/main/ecs/conformance/from-state.ts +31 -0
  1254. package/references/data-lit-tictactoe/src/features/main/ecs/conformance/projection.test.ts +38 -0
  1255. package/references/data-lit-tictactoe/src/features/main/ecs/conformance/to-state.ts +30 -0
  1256. package/references/data-lit-tictactoe/src/features/main/ecs/core-database/archetypes.ts +17 -0
  1257. package/references/data-lit-tictactoe/src/features/main/ecs/core-database/components.ts +11 -0
  1258. package/references/data-lit-tictactoe/src/features/main/ecs/core-database/core-database.ts +35 -0
  1259. package/references/data-lit-tictactoe/src/features/main/ecs/core-database/resources.ts +13 -0
  1260. package/references/data-lit-tictactoe/src/features/main/ecs/feature-database.ts +7 -0
  1261. package/references/data-lit-tictactoe/src/features/main/ecs/index-database/index-database.ts +16 -0
  1262. package/references/data-lit-tictactoe/src/features/main/ecs/index-database/indexes/by-cell.ts +9 -0
  1263. package/references/data-lit-tictactoe/src/features/main/ecs/index-database/indexes/index.ts +2 -0
  1264. package/references/data-lit-tictactoe/src/features/main/ecs/service-database/service-database.ts +26 -0
  1265. package/references/data-lit-tictactoe/src/{state/agent-plugin.ts → features/main/ecs/service-database/services/create-agent-service.ts} +14 -40
  1266. package/references/data-lit-tictactoe/src/features/main/ecs/service-database/services/create-root-agent-service.ts +26 -0
  1267. package/references/data-lit-tictactoe/src/features/main/ecs/service-database/services/index.ts +3 -0
  1268. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transaction-database.ts +18 -0
  1269. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/index.ts +3 -0
  1270. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/play-move.test.ts +20 -0
  1271. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/play-move.ts +19 -0
  1272. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/read-board.ts +20 -0
  1273. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/restart-game.test.ts +19 -0
  1274. package/references/data-lit-tictactoe/src/features/main/ecs/transaction-database/transactions/restart-game.ts +25 -0
  1275. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-app/tictactoe-app-element.ts +1 -1
  1276. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-app/tictactoe-app-presentation.test.ts +15 -0
  1277. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-app/tictactoe-app.ts +17 -0
  1278. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-board/tictactoe-board-element.ts +1 -1
  1279. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-board/tictactoe-board-presentation.test.ts +16 -0
  1280. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-cell/observe-cell.ts +32 -0
  1281. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-cell/tictactoe-cell-element.ts +8 -12
  1282. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-cell/tictactoe-cell-presentation.test.ts +41 -0
  1283. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-cell/tictactoe-cell-presentation.ts +1 -1
  1284. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-element.ts +20 -0
  1285. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-hud/tictactoe-hud-element.ts +8 -20
  1286. package/references/data-lit-tictactoe/src/features/main/ui/tictactoe-hud/tictactoe-hud-presentation.test.ts +45 -0
  1287. package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-hud/tictactoe-hud-presentation.ts +12 -2
  1288. package/references/data-lit-tictactoe/src/index.ts +14 -8
  1289. package/references/data-lit-tictactoe/src/main.ts +6 -6
  1290. package/references/data-react/package.json +3 -2
  1291. package/references/data-react-hello/package.json +2 -1
  1292. package/references/data-react-pixie/package.json +2 -1
  1293. package/references/data-lit-tictactoe/src/elements/tictactoe-app/tictactoe-app.ts +0 -18
  1294. package/references/data-lit-tictactoe/src/state/tictactoe-plugin.ts +0 -64
  1295. package/references/data-lit-tictactoe/src/tictactoe-element.ts +0 -15
  1296. package/references/data-lit-tictactoe/src/types/board-cell.ts +0 -5
  1297. package/references/data-lit-tictactoe/src/types/board-state/get-cell.ts +0 -7
  1298. package/references/data-lit-tictactoe/src/types/board-state/get-winning-line.ts +0 -25
  1299. package/references/data-lit-tictactoe/src/types/board-state/is-cell-playable.ts +0 -13
  1300. package/references/data-lit-tictactoe/src/types/board-state/is-cell-winning.ts +0 -9
  1301. package/references/data-lit-tictactoe/src/types/board-state/public.ts +0 -15
  1302. package/references/data-lit-tictactoe/src/types/game-status.ts +0 -3
  1303. package/references/data-lit-tictactoe/src/types/move-reject-reason.ts +0 -7
  1304. package/references/data-lit-tictactoe/src/types/player-mark/public.ts +0 -7
  1305. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-app/tictactoe-app-presentation.ts +0 -0
  1306. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-app/tictactoe-app.css.ts +0 -0
  1307. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-board/tictactoe-board-presentation.ts +0 -0
  1308. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-board/tictactoe-board.css.ts +0 -0
  1309. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-board/tictactoe-board.ts +0 -0
  1310. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-cell/tictactoe-cell.css.ts +0 -0
  1311. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-cell/tictactoe-cell.ts +0 -0
  1312. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-hud/tictactoe-hud.css.ts +0 -0
  1313. /package/references/data-lit-tictactoe/src/{elements → features/main/ui}/tictactoe-hud/tictactoe-hud.ts +0 -0
@@ -0,0 +1,229 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { createCore } from "./create-core.js";
4
+ import { constBufferType } from "../../../typed-buffer/create-const-buffer.js";
5
+ const positionSchema = {
6
+ type: "object",
7
+ properties: { x: { type: "number" }, y: { type: "number" } },
8
+ };
9
+ // A partition component: every distinct `cell` value gets its own archetype.
10
+ const cellSchema = { type: "integer", partition: true };
11
+ const makeCore = () => createCore({ cell: cellSchema, position: positionSchema });
12
+ describe("partition components", () => {
13
+ describe("ensureArchetype return discrimination", () => {
14
+ it("returns a Router (no dense view) when a partition key is present without a value", () => {
15
+ const core = makeCore();
16
+ const router = core.ensureArchetype(["id", "cell", "position"]);
17
+ expect(typeof router.insert).toBe("function");
18
+ // A family has no single dense column view. `in` (not a cast) — the
19
+ // Router type has no such members, so probe presence structurally.
20
+ expect("columns" in router).toBe(false);
21
+ expect("rowCount" in router).toBe(false);
22
+ });
23
+ it("returns a concrete Archetype when the partition value is supplied", () => {
24
+ const core = makeCore();
25
+ const arch = core.ensureArchetype(["id", "cell", "position"], { cell: 7 });
26
+ expect(arch.columns).toBeDefined();
27
+ expect(arch.rowCount).toBe(0);
28
+ });
29
+ it("returns a concrete Archetype (not a Router) when no partition component is in the set", () => {
30
+ const core = makeCore();
31
+ const arch = core.ensureArchetype(["id", "position"]);
32
+ expect(arch.columns).toBeDefined();
33
+ expect(typeof arch.insert).toBe("function");
34
+ });
35
+ });
36
+ describe("routing insert", () => {
37
+ it("routes rows with distinct partition values into distinct archetypes", () => {
38
+ const core = makeCore();
39
+ const router = core.ensureArchetype(["id", "cell", "position"]);
40
+ const a = router.insert({ cell: 1, position: { x: 1, y: 1 } });
41
+ const b = router.insert({ cell: 2, position: { x: 2, y: 2 } });
42
+ const c = router.insert({ cell: 1, position: { x: 3, y: 3 } });
43
+ const cell1 = core.ensureArchetype(["id", "cell", "position"], { cell: 1 });
44
+ const cell2 = core.ensureArchetype(["id", "cell", "position"], { cell: 2 });
45
+ // Same value → same archetype; different value → different archetype.
46
+ expect(cell1).not.toBe(cell2);
47
+ expect(cell1.rowCount).toBe(2); // a and c
48
+ expect(cell2.rowCount).toBe(1); // b
49
+ expect(core.locate(a).archetype).toBe(cell1);
50
+ expect(core.locate(c).archetype).toBe(cell1);
51
+ expect(core.locate(b).archetype).toBe(cell2);
52
+ });
53
+ it("stores the partition value as a const column (zero per-row bytes)", () => {
54
+ const core = makeCore();
55
+ core.ensureArchetype(["id", "cell", "position"]).insert({ cell: 42, position: { x: 0, y: 0 } });
56
+ const arch = core.ensureArchetype(["id", "cell", "position"], { cell: 42 });
57
+ expect(arch.columns.cell.type).toBe(constBufferType);
58
+ expect(arch.columns.cell.typedArrayElementSizeInBytes).toBe(0);
59
+ expect(arch.columns.cell.get(0)).toBe(42);
60
+ });
61
+ it("reads the routed partition value back through the entity", () => {
62
+ const core = makeCore();
63
+ const router = core.ensureArchetype(["id", "cell", "position"]);
64
+ const e = router.insert({ cell: 9, position: { x: 5, y: 6 } });
65
+ expect(core.get(e, "cell")).toBe(9);
66
+ expect(core.read(e)).toMatchObject({ cell: 9, position: { x: 5, y: 6 } });
67
+ });
68
+ });
69
+ describe("queryArchetypes", () => {
70
+ it("returns every value-child of a partitioned component set", () => {
71
+ const core = makeCore();
72
+ const router = core.ensureArchetype(["id", "cell", "position"]);
73
+ router.insert({ cell: 1, position: { x: 0, y: 0 } });
74
+ router.insert({ cell: 2, position: { x: 0, y: 0 } });
75
+ router.insert({ cell: 3, position: { x: 0, y: 0 } });
76
+ const all = core.queryArchetypes(["cell", "position"]);
77
+ expect(all.length).toBe(3);
78
+ });
79
+ it("filters to a single value-child with a partition `where` (broad phase)", () => {
80
+ const core = makeCore();
81
+ const router = core.ensureArchetype(["id", "cell", "position"]);
82
+ router.insert({ cell: 1, position: { x: 0, y: 0 } });
83
+ router.insert({ cell: 2, position: { x: 0, y: 0 } });
84
+ router.insert({ cell: 2, position: { x: 0, y: 0 } });
85
+ const cell2 = core.queryArchetypes(["cell", "position"], { where: { cell: 2 } });
86
+ expect(cell2.length).toBe(1);
87
+ expect(cell2[0].columns.cell.get(0)).toBe(2);
88
+ expect(cell2[0].rowCount).toBe(2);
89
+ const none = core.queryArchetypes(["cell", "position"], { where: { cell: 99 } });
90
+ expect(none.length).toBe(0);
91
+ });
92
+ });
93
+ describe("update migration", () => {
94
+ it("migrates an entity to a new value-child when its partition value changes", () => {
95
+ const core = makeCore();
96
+ const router = core.ensureArchetype(["id", "cell", "position"]);
97
+ const e = router.insert({ cell: 1, position: { x: 7, y: 8 } });
98
+ const cell1 = core.ensureArchetype(["id", "cell", "position"], { cell: 1 });
99
+ const cell2 = core.ensureArchetype(["id", "cell", "position"], { cell: 2 });
100
+ expect(cell1.rowCount).toBe(1);
101
+ expect(cell2.rowCount).toBe(0);
102
+ core.update(e, { cell: 2 });
103
+ // Same entity id, moved archetype, position preserved.
104
+ expect(core.locate(e).archetype).toBe(cell2);
105
+ expect(cell1.rowCount).toBe(0);
106
+ expect(cell2.rowCount).toBe(1);
107
+ expect(core.get(e, "cell")).toBe(2);
108
+ expect(core.read(e)).toMatchObject({ cell: 2, position: { x: 7, y: 8 } });
109
+ });
110
+ it("does not migrate when a non-partition field changes", () => {
111
+ const core = makeCore();
112
+ const router = core.ensureArchetype(["id", "cell", "position"]);
113
+ const e = router.insert({ cell: 5, position: { x: 1, y: 1 } });
114
+ const cell5 = core.locate(e).archetype;
115
+ core.update(e, { position: { x: 9, y: 9 } });
116
+ expect(core.locate(e).archetype).toBe(cell5);
117
+ expect(core.read(e)).toMatchObject({ cell: 5, position: { x: 9, y: 9 } });
118
+ });
119
+ it("does not migrate when a partition value is set to its current value", () => {
120
+ const core = makeCore();
121
+ const router = core.ensureArchetype(["id", "cell", "position"]);
122
+ const e = router.insert({ cell: 3, position: { x: 0, y: 0 } });
123
+ const before = core.locate(e).archetype;
124
+ core.update(e, { cell: 3 });
125
+ expect(core.locate(e).archetype).toBe(before);
126
+ });
127
+ });
128
+ describe("serialization", () => {
129
+ it("round-trips partition children (values + rows) through toData/fromData", () => {
130
+ const core = makeCore();
131
+ const router = core.ensureArchetype(["id", "cell", "position"]);
132
+ const a = router.insert({ cell: 1, position: { x: 1, y: 1 } });
133
+ const b = router.insert({ cell: 2, position: { x: 2, y: 2 } });
134
+ const snapshot = core.toData(true);
135
+ const restored = makeCore();
136
+ restored.fromData(snapshot);
137
+ expect(restored.get(a, "cell")).toBe(1);
138
+ expect(restored.get(b, "cell")).toBe(2);
139
+ expect(restored.read(a)).toMatchObject({ cell: 1, position: { x: 1, y: 1 } });
140
+ expect(restored.read(b)).toMatchObject({ cell: 2, position: { x: 2, y: 2 } });
141
+ const cell1 = restored.ensureArchetype(["id", "cell", "position"], { cell: 1 });
142
+ expect(cell1.columns.cell.type).toBe(constBufferType);
143
+ expect(cell1.rowCount).toBe(1);
144
+ });
145
+ });
146
+ describe("multiple partition components together", () => {
147
+ // Two partition components → archetypes are the *cross product* of the
148
+ // distinct (cell, layer) value pairs actually used.
149
+ const makeGridCore = () => createCore({
150
+ cell: { type: "integer", partition: true },
151
+ layer: { type: "integer", partition: true },
152
+ value: { type: "number" },
153
+ });
154
+ const keys = ["id", "cell", "layer", "value"];
155
+ it("creates one archetype per distinct (cell, layer) pair, each with both const columns", () => {
156
+ const core = makeGridCore();
157
+ const router = core.ensureArchetype(keys);
158
+ const cells = [0, 1];
159
+ const layers = [0, 1, 2];
160
+ for (const cell of cells)
161
+ for (const layer of layers) {
162
+ router.insert({ cell, layer, value: cell * 10 + layer });
163
+ }
164
+ const archetypes = core.queryArchetypes(["cell", "layer", "value"]);
165
+ expect(archetypes.length).toBe(cells.length * layers.length); // 2 × 3 = 6
166
+ const combos = new Set();
167
+ for (const arch of archetypes) {
168
+ expect(arch.rowCount).toBe(1);
169
+ // BOTH partition columns are zero-per-row const buffers.
170
+ expect(arch.columns.cell.type).toBe(constBufferType);
171
+ expect(arch.columns.layer.type).toBe(constBufferType);
172
+ combos.add(`${arch.columns.cell.get(0)},${arch.columns.layer.get(0)}`);
173
+ }
174
+ expect(combos.size).toBe(6);
175
+ });
176
+ it("routes on the full (cell, layer) tuple — same pair shares an archetype, either differing splits", () => {
177
+ const core = makeGridCore();
178
+ const router = core.ensureArchetype(keys);
179
+ const a = router.insert({ cell: 1, layer: 2, value: 0 });
180
+ const b = router.insert({ cell: 1, layer: 2, value: 1 }); // same pair
181
+ const c = router.insert({ cell: 1, layer: 3, value: 2 }); // layer differs
182
+ const d = router.insert({ cell: 9, layer: 2, value: 3 }); // cell differs
183
+ expect(core.locate(a).archetype).toBe(core.locate(b).archetype);
184
+ expect(core.locate(a).archetype).not.toBe(core.locate(c).archetype);
185
+ expect(core.locate(a).archetype).not.toBe(core.locate(d).archetype);
186
+ const arch12 = core.ensureArchetype(keys, { cell: 1, layer: 2 });
187
+ expect(core.locate(a).archetype).toBe(arch12);
188
+ expect(arch12.rowCount).toBe(2);
189
+ expect(core.read(a)).toMatchObject({ cell: 1, layer: 2, value: 0 });
190
+ });
191
+ it("queryArchetypes `where` filters on one or both partition components", () => {
192
+ const core = makeGridCore();
193
+ const router = core.ensureArchetype(keys);
194
+ for (const cell of [0, 1])
195
+ for (const layer of [0, 1, 2]) {
196
+ router.insert({ cell, layer, value: 0 });
197
+ }
198
+ // One component → all pairs sharing it (cell=1 across 3 layers).
199
+ expect(core.queryArchetypes(["cell", "layer", "value"], { where: { cell: 1 } }).length).toBe(3);
200
+ // Both components → exactly the one pair.
201
+ const one = core.queryArchetypes(["cell", "layer", "value"], { where: { cell: 1, layer: 2 } });
202
+ expect(one.length).toBe(1);
203
+ expect(one[0].columns.cell.get(0)).toBe(1);
204
+ expect(one[0].columns.layer.get(0)).toBe(2);
205
+ });
206
+ it("migrating one partition value keeps the other and lands in the correct combined archetype", () => {
207
+ const core = makeGridCore();
208
+ const router = core.ensureArchetype(keys);
209
+ const e = router.insert({ cell: 1, layer: 2, value: 5 });
210
+ core.update(e, { cell: 3 }); // change cell only
211
+ expect(core.get(e, "cell")).toBe(3);
212
+ expect(core.get(e, "layer")).toBe(2); // preserved
213
+ expect(core.locate(e).archetype).toBe(core.ensureArchetype(keys, { cell: 3, layer: 2 }));
214
+ // The old (1, 2) archetype is now empty.
215
+ expect(core.ensureArchetype(keys, { cell: 1, layer: 2 }).rowCount).toBe(0);
216
+ });
217
+ });
218
+ describe("feature is inert without partition components", () => {
219
+ it("a store with no partition component behaves exactly as before", () => {
220
+ const core = createCore({ position: positionSchema });
221
+ const arch = core.ensureArchetype(["id", "position"]);
222
+ // Concrete archetype, direct insert, dense columns — no Router anywhere.
223
+ expect(arch.columns).toBeDefined();
224
+ const e = arch.insert({ position: { x: 1, y: 2 } });
225
+ expect(core.read(e)).toMatchObject({ position: { x: 1, y: 2 } });
226
+ });
227
+ });
228
+ });
229
+ //# sourceMappingURL=create-core.partition.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-core.partition.test.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.partition.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAE/E,MAAM,cAAc,GAAG;IACnB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;CACrC,CAAC;AAE5B,6EAA6E;AAC7E,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAA4B,CAAC;AAElF,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;AAElF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;YACxF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9C,oEAAoE;YACpE,mEAAmE;YACnE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YACzE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;YAC7F,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC3E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,sEAAsE;YACtE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAC1C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAEpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YACzE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChG,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAErD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAC9E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAErD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAElC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;YAChF,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5B,uDAAuD;YACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC3D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC3E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAC9E,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;YAC5B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE9E,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACpD,uEAAuE;QACvE,oDAAoD;QACpD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;YAClC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;YAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;QAEvD,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;YAC3F,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACnD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC7D,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;YAE1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,yDAAyD;gBACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iGAAiG,EAAE,GAAG,EAAE;YACvG,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;YACtE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;YAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;YAEzE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;YAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC3E,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACvD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACD,iEAAiE;YACjE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChG,0CAA0C;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2FAA2F,EAAE,GAAG,EAAE;YACjG,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB;YAEhD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;YAClD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1F,yCAAyC;YACzC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC3D,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YACtD,yEAAyE;YACzE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -2,7 +2,10 @@
2
2
  import { selectRows } from "../../../table/select-rows.js";
3
3
  import { compare } from "../../../functions/compare.js";
4
4
  export const selectEntities = (core, include, options) => {
5
- const archetypes = core.queryArchetypes(include, options);
5
+ // Pass only archetype-level options (exclude) to queryArchetypes. `options.where`
6
+ // here is a row-level Filter and is applied per-row below via selectRows — it
7
+ // must NOT be forwarded as queryArchetypes' partition-equality `where`.
8
+ const archetypes = core.queryArchetypes(include, options?.exclude ? { exclude: options.exclude } : undefined);
6
9
  let length = 0;
7
10
  for (const archetype of archetypes) {
8
11
  length += archetype.rowCount;
@@ -30,32 +33,95 @@ export const selectEntities = (core, include, options) => {
30
33
  }
31
34
  return entities;
32
35
  }
33
- // now we know there is an order, there might be a where
34
- // ordering means we are going to want to extract the order values into an array that also contains id
35
- const entityValues = new Array();
36
- for (const archetype of archetypes) {
37
- const idTypedArray = archetype.columns.id.getTypedArray();
38
- for (const row of selectRows(archetype, options.where)) {
39
- const entityValue = { id: idTypedArray[row] };
40
- for (const order in options.order) {
41
- entityValue[order] = archetype.columns[order].get(row);
42
- }
43
- entityValues.push(entityValue);
44
- }
36
+ // ── Ordered results ─────────────────────────────────────────────────────
37
+ // When the *leading run* of order keys are partition components, each
38
+ // archetype holds a constant value for them, so the archetypes already
39
+ // bucket the rows on that leading key. We can then sort the buckets by
40
+ // value, sort only the *remaining* keys within each bucket, and concatenate
41
+ // in bucket order — turning an O(N log N) sort into O(N log(N/K)), and O(N)
42
+ // when a partition key is the sole order key. When no leading order key is a
43
+ // partition component (leadCount === 0) this falls back to one full sort,
44
+ // matching the previous behaviour exactly.
45
+ const order = options.order;
46
+ const schemas = core.componentSchemas;
47
+ // Keys of `order` are, by OrderClause<Pick<…, Include>>, exactly the picked
48
+ // component keys — safe to view as Include[].
49
+ const orderKeys = Object.keys(order);
50
+ let leadCount = 0;
51
+ while (leadCount < orderKeys.length && schemas[orderKeys[leadCount]]?.partition === true) {
52
+ leadCount++;
45
53
  }
46
- // now that we have the entity values with the order values, we can sort the entity values
47
- entityValues.sort((a, b) => {
48
- for (const order in options.order) {
54
+ const compareByKeys = (keys, a, b) => {
55
+ for (const key of keys) {
49
56
  // `compare` (code-point for strings, numeric for numbers) — not
50
57
  // `a - b`, which is NaN for string order keys, and never locale.
51
- const cmp = compare(a[order], b[order]);
52
- if (cmp !== 0) {
53
- const ascending = options.order[order];
54
- return ascending ? cmp : -cmp;
58
+ const cmp = compare(a[key], b[key]);
59
+ if (cmp !== 0)
60
+ return order[key] ? cmp : -cmp;
61
+ }
62
+ return 0;
63
+ };
64
+ // Gather ids for `archs`, sorted by `sortKeys` (empty → left in archetype +
65
+ // row order). `where` is applied per row. A stable sort over the same gather
66
+ // order keeps tie-ordering identical to the single full sort.
67
+ const collect = (archs, sortKeys) => {
68
+ if (sortKeys.length === 0) {
69
+ const ids = [];
70
+ for (const archetype of archs) {
71
+ const idTypedArray = archetype.columns.id.getTypedArray();
72
+ for (const row of selectRows(archetype, options.where)) {
73
+ ids.push(idTypedArray[row]);
74
+ }
55
75
  }
76
+ return ids;
77
+ }
78
+ const rows = [];
79
+ for (const archetype of archs) {
80
+ const idTypedArray = archetype.columns.id.getTypedArray();
81
+ for (const row of selectRows(archetype, options.where)) {
82
+ const value = { id: idTypedArray[row] };
83
+ for (const key of sortKeys)
84
+ value[key] = archetype.columns[key].get(row);
85
+ rows.push(value);
86
+ }
87
+ }
88
+ rows.sort((a, b) => compareByKeys(sortKeys, a, b));
89
+ return rows.map((r) => r.id);
90
+ };
91
+ if (leadCount === 0) {
92
+ return collect(archetypes, orderKeys);
93
+ }
94
+ // Bucket archetypes by their leading partition-value tuple, preserving
95
+ // archetype iteration order within a bucket (so tie-ordering matches the
96
+ // full sort). A bucket can span multiple archetypes (shape fan-out).
97
+ const leadKeys = orderKeys.slice(0, leadCount);
98
+ const restKeys = orderKeys.slice(leadCount);
99
+ const buckets = new Map();
100
+ for (const archetype of archetypes) {
101
+ const values = leadKeys.map((key) => archetype.columns[key].get(0));
102
+ // JSON is an unambiguous key for a primitive tuple: it distinguishes
103
+ // 1 from "1" and never collides across tuple boundaries.
104
+ const bucketKey = JSON.stringify(values);
105
+ let bucket = buckets.get(bucketKey);
106
+ if (!bucket) {
107
+ bucket = { values, archs: [] };
108
+ buckets.set(bucketKey, bucket);
109
+ }
110
+ bucket.archs.push(archetype);
111
+ }
112
+ const orderedBuckets = [...buckets.values()].sort((a, b) => {
113
+ for (let i = 0; i < leadKeys.length; i++) {
114
+ const cmp = compare(a.values[i], b.values[i]);
115
+ if (cmp !== 0)
116
+ return order[leadKeys[i]] ? cmp : -cmp;
56
117
  }
57
118
  return 0;
58
119
  });
59
- return entityValues.map(entityValue => entityValue.id);
120
+ const result = [];
121
+ for (const bucket of orderedBuckets) {
122
+ for (const id of collect(bucket.archs, restKeys))
123
+ result.push(id);
124
+ }
125
+ return result;
60
126
  };
61
127
  //# sourceMappingURL=select-entities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-entities.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/select-entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-entities.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/select-entities.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAQxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAI1B,IAAa,EACb,OAAiD,EACjD,OAAiH,EAChG,EAAE;IACnB,kFAAkF;IAClF,8EAA8E;IAC9E,wEAAwE;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9G,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACrC,6DAA6D;QAC7D,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAU,CAAC;QACrC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,UAAU,CAA6D,SAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxH,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAM,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACtC,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAc,CAAC;IAMlD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;QACvF,SAAS,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,aAAa,GAAG,CAClB,IAAwB,EACxB,CAAuC,EACvC,CAAuC,EACjC,EAAE;QACR,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,gEAAgE;YAChE,iEAAiE;YACjE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;IAEF,4EAA4E;IAC5E,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAE,QAA4B,EAAY,EAAE;QAC/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC1D,KAAK,MAAM,GAAG,IAAI,UAAU,CAA6D,SAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxH,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAA8C,EAAE,CAAC;QAC3D,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC1D,KAAK,MAAM,GAAG,IAAI,UAAU,CAA6D,SAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxH,MAAM,KAAK,GAA4C,EAAE,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjF,KAAK,MAAM,GAAG,IAAI,QAAQ;oBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,GAAG,CAAe,CAAC;gBACxF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmD,CAAC;IAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC,CAAe,CAAC,CAAC;QACnF,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAChF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA"}
@@ -0,0 +1,93 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { createStore } from "../public/create-store.js";
4
+ import { compare } from "../../../functions/compare.js";
5
+ // `cell` and `region` partition; `rank` does not. The partition-aware sort in
6
+ // selectEntities must produce output identical to a naive full sort.
7
+ const schema = {
8
+ components: {
9
+ cell: { type: "integer", partition: true },
10
+ region: { type: "integer", partition: true },
11
+ rank: { type: "integer" },
12
+ },
13
+ resources: {},
14
+ archetypes: { E: ["cell", "region", "rank"] },
15
+ };
16
+ const makeStore = (rows) => {
17
+ const store = createStore(schema);
18
+ const ids = rows.map((r) => store.archetypes.E.insert(r));
19
+ return { store, ids };
20
+ };
21
+ // Independent reference: read every row and sort by the order keys with the
22
+ // same `compare` semantics selectEntities uses.
23
+ const referenceSort = (store, ids, order, where) => {
24
+ const keys = Object.keys(order);
25
+ const withVals = ids
26
+ .map((id) => ({ id, r: store.read(id) }))
27
+ .filter((x) => (where ? where(x.r) : true));
28
+ withVals.sort((a, b) => {
29
+ for (const k of keys) {
30
+ const c = compare(a.r[k], b.r[k]);
31
+ if (c !== 0)
32
+ return order[k] ? c : -c;
33
+ }
34
+ return 0;
35
+ });
36
+ return withVals.map((x) => x.id);
37
+ };
38
+ // Rows with a globally-unique `rank` so every order that ends in `rank` is a
39
+ // total order (no ties → the reference comparison is unambiguous).
40
+ const uniqueRows = (n) => Array.from({ length: n }, (_, i) => ({
41
+ cell: i % 5,
42
+ region: i % 3,
43
+ rank: (i * 7) % n, // a permutation of 0..n-1 (7 and n=100 are coprime)
44
+ }));
45
+ describe("selectEntities partition-aware ordering", () => {
46
+ const orders = [
47
+ ["sole partition key (cell asc) + rank tiebreak", { cell: true, rank: true }],
48
+ ["partition key descending (cell desc) + rank", { cell: false, rank: true }],
49
+ ["compound partition keys (cell, region) + rank", { cell: true, region: true, rank: true }],
50
+ ["partition then descending secondary (cell asc, rank desc)", { cell: true, rank: false }],
51
+ ["non-partition leading key (rank asc) — fallback path", { rank: true }],
52
+ ["non-partition leading then partition (rank asc, cell asc) — fallback", { rank: true, cell: true }],
53
+ ];
54
+ for (const [name, order] of orders) {
55
+ it(`matches a naive full sort: ${name}`, () => {
56
+ const rows = uniqueRows(100);
57
+ const { store, ids } = makeStore(rows);
58
+ const got = store.select(["cell", "region", "rank"], { order });
59
+ const expected = referenceSort(store, ids, order);
60
+ expect(got).toEqual(expected);
61
+ });
62
+ }
63
+ it("matches a naive full sort with a where filter (cell asc, rank asc)", () => {
64
+ const rows = uniqueRows(100);
65
+ const { store, ids } = makeStore(rows);
66
+ const order = { cell: true, rank: true };
67
+ const got = store.select(["cell", "region", "rank"], { where: { rank: { ">=": 50 } }, order });
68
+ const expected = referenceSort(store, ids, order, (r) => r.rank >= 50);
69
+ expect(got).toEqual(expected);
70
+ });
71
+ it("large K (many distinct partition values) still matches — exercises bucketing at scale", () => {
72
+ // Distinct cell per entity → one bucket each; sole partition order key is
73
+ // the O(N) path (no within-bucket sort).
74
+ const rows = Array.from({ length: 200 }, (_, i) => ({ cell: i, region: 0, rank: i }));
75
+ const { store, ids } = makeStore(rows);
76
+ const order = { cell: true };
77
+ expect(store.select(["cell", "region", "rank"], { order })).toEqual(referenceSort(store, ids, order));
78
+ });
79
+ it("with ties on the sole partition key, output is correctly ordered and a permutation of the input", () => {
80
+ // Many entities share each cell value → ties the reference can't
81
+ // disambiguate; assert the weaker invariants instead.
82
+ const rows = Array.from({ length: 60 }, (_, i) => ({ cell: i % 4, region: 0, rank: i }));
83
+ const { store, ids } = makeStore(rows);
84
+ const got = store.select(["cell", "region", "rank"], { order: { cell: true } });
85
+ // Non-decreasing by cell.
86
+ for (let i = 1; i < got.length; i++) {
87
+ expect(store.get(got[i - 1], "cell") <= store.get(got[i], "cell")).toBe(true);
88
+ }
89
+ // Same set of entities, none lost or duplicated.
90
+ expect([...got].sort((a, b) => a - b)).toEqual([...ids].sort((a, b) => a - b));
91
+ });
92
+ });
93
+ //# sourceMappingURL=select-entities.partition.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-entities.partition.test.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/select-entities.partition.test.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,13 @@ import { ArchetypeQueryOptions } from "./core/core.js";
3
3
  export type OrderClause<T extends object> = {
4
4
  [K in keyof T]?: boolean;
5
5
  };
6
- export type EntitySelectOptions<C extends object, T extends object> = ArchetypeQueryOptions<C> & {
6
+ export type EntitySelectOptions<C extends object, T extends object> = Omit<ArchetypeQueryOptions<C>, "where"> & {
7
7
  /**
8
8
  * Filter the results by the given condition using a declarative where clause.
9
+ * This is a *row-level* {@link Filter} (supports comparison operators),
10
+ * distinct from `ArchetypeQueryOptions.where`, which is archetype-level
11
+ * partition-value equality. Select owns row filtering, so it replaces the
12
+ * inherited partition `where` rather than intersecting with it.
9
13
  */
10
14
  where?: Filter<T>;
11
15
  /**
@@ -0,0 +1,63 @@
1
+ import { StringKeyof } from "../../types/types.js";
2
+ import { ComponentSchemas } from "../component-schemas.js";
3
+ import { RequiredComponents } from "../required-components.js";
4
+ import { Archetype } from "../archetype/archetype.js";
5
+ /**
6
+ * The component keys of a schema map that are declared `partition: true`.
7
+ *
8
+ * Detection is at the *schema* level, where the marker survives — the resolved
9
+ * component value map (`FromSchemas<CS>`) has already dropped it. Requires the
10
+ * schema literal to be `as const` so `partition` is the literal `true`, not
11
+ * `boolean` (the project's `... as const satisfies Schema` idiom guarantees it).
12
+ */
13
+ export type PartitionKeysOf<CS extends ComponentSchemas> = {
14
+ [K in StringKeyof<CS>]: CS[K] extends {
15
+ partition: true;
16
+ } ? K : never;
17
+ }[StringKeyof<CS>];
18
+ /**
19
+ * Whether a component-key set intersects the store's partition keys.
20
+ *
21
+ * The `[PK] extends [never]` guard is load-bearing: when a store declares no
22
+ * partition components (`PK = never` — the default everywhere), this collapses
23
+ * to `false` *without* inspecting `Keys`. That matters because `Keys` is often a
24
+ * generic indexed access (`A[K][number]` inside a `Store<C,R,A>`);
25
+ * `Extract<GenericKeys, never>` would otherwise stay a *deferred* conditional,
26
+ * leaving `store.archetypes.<K>` as the unresolved union `Archetype.Router | Archetype`
27
+ * and breaking assignability in every generic store context. Short-circuiting
28
+ * on `PK` keeps non-partition stores paying nothing and resolving eagerly.
29
+ */
30
+ type IsAny<T> = boolean extends (T extends never ? true : false) ? true : false;
31
+ export type HasPartitionKey<Keys extends string, PK extends string> = [
32
+ PK
33
+ ] extends [never] ? false : IsAny<PK> extends true ? boolean : [Extract<Keys, PK>] extends [never] ? false : true;
34
+ /**
35
+ * The `store.archetypes.<Name>` handle for one declared archetype: a
36
+ * {@link Archetype.Router} when it includes a partition component, else the
37
+ * `Concrete` archetype type (`Archetype` or `ReadonlyArchetype`, supplied by the
38
+ * caller). `Has` is a *naked* type parameter so a `boolean` (from `PK = any`)
39
+ * distributes to `Archetype.Router<C> | Concrete`.
40
+ */
41
+ export type ArchetypeOrRouter<Has extends boolean, C extends RequiredComponents, Concrete> = Has extends true ? Archetype.Router<C> : Concrete;
42
+ /**
43
+ * Return type of `ensureArchetype(keys, values?)`:
44
+ * - a value is supplied → a concrete {@link Archetype} (the resolved member),
45
+ * regardless of partitioning — this is the same-value fast path;
46
+ * - else the key set includes a partition component → a {@link Archetype.Router} that
47
+ * routes each `insert` by the row's partition value;
48
+ * - else → a concrete {@link Archetype} (today's behavior, unchanged).
49
+ *
50
+ * When `Keys` is not statically known to include or exclude a partition
51
+ * component, `HasPartitionKey` stays a union and the result widens to
52
+ * `Archetype<C> | Archetype.Router<C>` — which still exposes `.insert` (both branches
53
+ * share it); only dense column access requires narrowing to `Archetype`.
54
+ */
55
+ export type EnsureArchetypeResult<C extends RequiredComponents, Keys extends string, PK extends string, ValueProvided extends boolean> = ValueProvided extends true ? Archetype<C> : HasPartitionKey<Keys, PK> extends true ? Archetype.Router<C> : Archetype<C>;
56
+ /**
57
+ * Type of `store.archetypes.<Name>`: a {@link Archetype.Router} when the declared archetype
58
+ * includes a partition component, else a concrete {@link Archetype}. The keys are
59
+ * statically known here (from the schema's `archetypes` map), so this never
60
+ * widens to a union — the discrimination is exact per declared name.
61
+ */
62
+ export type StoreArchetypeHandle<C extends RequiredComponents, Keys extends string, PK extends string> = HasPartitionKey<Keys, PK> extends true ? Archetype.Router<C> : Archetype<C>;
63
+ export {};
@@ -0,0 +1,3 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export {};
3
+ //# sourceMappingURL=partition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partition.js","sourceRoot":"","sources":["../../../src/ecs/store/partition.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ // A Router can insert (routing write) ...
3
+ router.insert({ cell: 1, position: 2 });
4
+ // ... but exposes no dense view:
5
+ // @ts-expect-error - a family has no single dense column view
6
+ router.columns;
7
+ // @ts-expect-error - a family has no row count
8
+ router.rowCount;
9
+ handle.insert({ cell: 1, position: 2 });
10
+ // ... while dense access is correctly gated behind resolving to a concrete
11
+ // archetype (supply a value, or narrow):
12
+ // @ts-expect-error - .columns requires a concrete Archetype, not a possible family
13
+ handle.columns;
14
+ export {};
15
+ //# sourceMappingURL=partition.type-test.js.map