@adobe/ecs 0.1.0 → 0.2.0

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 (2153) hide show
  1. package/README.md +58 -0
  2. package/dist/implementation/compiler/access.js +9 -5
  3. package/dist/implementation/compiler/access.js.map +1 -1
  4. package/dist/implementation/compiler/archetypes.d.ts +17 -0
  5. package/dist/implementation/compiler/archetypes.js +141 -0
  6. package/dist/implementation/compiler/archetypes.js.map +1 -0
  7. package/dist/implementation/compiler/assign.js.map +1 -1
  8. package/dist/implementation/compiler/augmentations.d.ts +25 -0
  9. package/dist/implementation/compiler/augmentations.js +943 -0
  10. package/dist/implementation/compiler/augmentations.js.map +1 -0
  11. package/dist/implementation/compiler/bind.js +5 -4
  12. package/dist/implementation/compiler/bind.js.map +1 -1
  13. package/dist/implementation/compiler/body-access.d.ts +20 -3
  14. package/dist/implementation/compiler/body-access.js +138 -36
  15. package/dist/implementation/compiler/body-access.js.map +1 -1
  16. package/dist/implementation/compiler/booleans.js.map +1 -1
  17. package/dist/implementation/compiler/branches.js.map +1 -1
  18. package/dist/implementation/compiler/calls.js +14 -3
  19. package/dist/implementation/compiler/calls.js.map +1 -1
  20. package/dist/implementation/compiler/columns.d.ts +8 -2
  21. package/dist/implementation/compiler/columns.js +19 -3
  22. package/dist/implementation/compiler/columns.js.map +1 -1
  23. package/dist/implementation/compiler/compile-kernel.d.ts +24 -1
  24. package/dist/implementation/compiler/compile-kernel.js +66 -22
  25. package/dist/implementation/compiler/compile-kernel.js.map +1 -1
  26. package/dist/implementation/compiler/compiler.d.ts +6 -0
  27. package/dist/implementation/compiler/compiler.js +7 -0
  28. package/dist/implementation/compiler/compiler.js.map +1 -0
  29. package/dist/implementation/compiler/data.js.map +1 -1
  30. package/dist/implementation/compiler/describe.d.ts +41 -0
  31. package/dist/implementation/compiler/describe.js +510 -0
  32. package/dist/implementation/compiler/describe.js.map +1 -0
  33. package/dist/implementation/compiler/estree.js.map +1 -1
  34. package/dist/implementation/compiler/expression.js +26 -2
  35. package/dist/implementation/compiler/expression.js.map +1 -1
  36. package/dist/implementation/compiler/failure.js.map +1 -1
  37. package/dist/implementation/compiler/identify.d.ts +18 -8
  38. package/dist/implementation/compiler/identify.js +90 -32
  39. package/dist/implementation/compiler/identify.js.map +1 -1
  40. package/dist/implementation/compiler/index.d.ts +5 -1
  41. package/dist/implementation/compiler/index.js +6 -1
  42. package/dist/implementation/compiler/index.js.map +1 -1
  43. package/dist/implementation/compiler/inferred.d.ts +32 -0
  44. package/dist/implementation/compiler/inferred.js +185 -0
  45. package/dist/implementation/compiler/inferred.js.map +1 -0
  46. package/dist/implementation/compiler/inline-kernels.d.ts +7 -0
  47. package/dist/implementation/compiler/inline-kernels.js +16 -0
  48. package/dist/implementation/compiler/inline-kernels.js.map +1 -0
  49. package/dist/implementation/compiler/input-schemas.d.ts +23 -0
  50. package/dist/implementation/compiler/input-schemas.js +102 -0
  51. package/dist/implementation/compiler/input-schemas.js.map +1 -0
  52. package/dist/implementation/compiler/ir.d.ts +13 -1
  53. package/dist/implementation/compiler/ir.js.map +1 -1
  54. package/dist/implementation/compiler/kernel-id.js +1 -0
  55. package/dist/implementation/compiler/kernel-id.js.map +1 -1
  56. package/dist/implementation/compiler/key.js.map +1 -1
  57. package/dist/implementation/compiler/link.d.ts +13 -0
  58. package/dist/implementation/compiler/link.js +17 -0
  59. package/dist/implementation/compiler/link.js.map +1 -1
  60. package/dist/implementation/compiler/lists.d.ts +12 -1
  61. package/dist/implementation/compiler/lists.js +35 -14
  62. package/dist/implementation/compiler/lists.js.map +1 -1
  63. package/dist/implementation/compiler/lookups.js.map +1 -1
  64. package/dist/implementation/compiler/math.js +1 -0
  65. package/dist/implementation/compiler/math.js.map +1 -1
  66. package/dist/implementation/compiler/memory-compiler.d.ts +61 -0
  67. package/dist/implementation/compiler/memory-compiler.js +271 -0
  68. package/dist/implementation/compiler/memory-compiler.js.map +1 -0
  69. package/dist/implementation/compiler/module-scope.js.map +1 -1
  70. package/dist/implementation/compiler/module-value.js +18 -3
  71. package/dist/implementation/compiler/module-value.js.map +1 -1
  72. package/dist/implementation/compiler/out.js.map +1 -1
  73. package/dist/implementation/compiler/oxc.d.ts +41 -0
  74. package/dist/implementation/compiler/oxc.js +80 -0
  75. package/dist/implementation/compiler/oxc.js.map +1 -0
  76. package/dist/implementation/compiler/package-copies.d.ts +60 -0
  77. package/dist/implementation/compiler/package-copies.js +140 -0
  78. package/dist/implementation/compiler/package-copies.js.map +1 -0
  79. package/dist/implementation/compiler/passes.d.ts +25 -0
  80. package/dist/implementation/compiler/passes.js +24 -0
  81. package/dist/implementation/compiler/passes.js.map +1 -0
  82. package/dist/implementation/compiler/paths.d.ts +5 -14
  83. package/dist/implementation/compiler/paths.js +16 -25
  84. package/dist/implementation/compiler/paths.js.map +1 -1
  85. package/dist/implementation/compiler/plugin.d.ts +17 -1
  86. package/dist/implementation/compiler/plugin.js +207 -35
  87. package/dist/implementation/compiler/plugin.js.map +1 -1
  88. package/dist/implementation/compiler/posix.d.ts +8 -0
  89. package/dist/implementation/compiler/posix.js +205 -0
  90. package/dist/implementation/compiler/posix.js.map +1 -0
  91. package/dist/implementation/compiler/predicates.d.ts +11 -0
  92. package/dist/implementation/compiler/predicates.js +281 -0
  93. package/dist/implementation/compiler/predicates.js.map +1 -0
  94. package/dist/implementation/compiler/print.js +27 -7
  95. package/dist/implementation/compiler/print.js.map +1 -1
  96. package/dist/implementation/compiler/program.js +3 -0
  97. package/dist/implementation/compiler/program.js.map +1 -1
  98. package/dist/implementation/compiler/public.d.ts +1 -0
  99. package/dist/implementation/compiler/public.js +3 -0
  100. package/dist/implementation/compiler/public.js.map +1 -0
  101. package/dist/implementation/compiler/scalar.js.map +1 -1
  102. package/dist/implementation/compiler/scope.js.map +1 -1
  103. package/dist/implementation/compiler/serialize.js +1 -0
  104. package/dist/implementation/compiler/serialize.js.map +1 -1
  105. package/dist/implementation/compiler/signature.d.ts +18 -3
  106. package/dist/implementation/compiler/signature.js +68 -30
  107. package/dist/implementation/compiler/signature.js.map +1 -1
  108. package/dist/implementation/compiler/snapshot.d.ts +3 -1
  109. package/dist/implementation/compiler/snapshot.js +1 -1
  110. package/dist/implementation/compiler/snapshot.js.map +1 -1
  111. package/dist/implementation/compiler/source-map.js +1 -0
  112. package/dist/implementation/compiler/source-map.js.map +1 -1
  113. package/dist/implementation/compiler/spawns.d.ts +13 -1
  114. package/dist/implementation/compiler/spawns.js +67 -5
  115. package/dist/implementation/compiler/spawns.js.map +1 -1
  116. package/dist/implementation/compiler/stamps.d.ts +10 -3
  117. package/dist/implementation/compiler/stamps.js +28 -9
  118. package/dist/implementation/compiler/stamps.js.map +1 -1
  119. package/dist/implementation/compiler/statement.js.map +1 -1
  120. package/dist/implementation/compiler/terminal.js.map +1 -1
  121. package/dist/implementation/compiler/transform.d.ts +55 -5
  122. package/dist/implementation/compiler/transform.js +311 -55
  123. package/dist/implementation/compiler/transform.js.map +1 -1
  124. package/dist/implementation/compiler/type-schemas.d.ts +130 -0
  125. package/dist/implementation/compiler/type-schemas.js +701 -0
  126. package/dist/implementation/compiler/type-schemas.js.map +1 -0
  127. package/dist/implementation/compiler/unit.d.ts +20 -3
  128. package/dist/implementation/compiler/unit.js +2 -2
  129. package/dist/implementation/compiler/unit.js.map +1 -1
  130. package/dist/implementation/compiler/value.js.map +1 -1
  131. package/dist/implementation/compiler/wat.d.ts +12 -0
  132. package/dist/implementation/compiler/wat.js +379 -0
  133. package/dist/implementation/compiler/wat.js.map +1 -0
  134. package/dist/implementation/index.js +1 -0
  135. package/dist/implementation/index.js.map +1 -1
  136. package/dist/implementation/world/activate.js +8 -3
  137. package/dist/implementation/world/activate.js.map +1 -1
  138. package/dist/implementation/world/archetype.d.ts +64 -9
  139. package/dist/implementation/world/archetype.js +103 -14
  140. package/dist/implementation/world/archetype.js.map +1 -1
  141. package/dist/implementation/world/arrays.d.ts +6 -1
  142. package/dist/implementation/world/arrays.js +3 -0
  143. package/dist/implementation/world/arrays.js.map +1 -1
  144. package/dist/implementation/world/arrivals.d.ts +52 -0
  145. package/dist/implementation/world/arrivals.js +146 -0
  146. package/dist/implementation/world/arrivals.js.map +1 -0
  147. package/dist/implementation/world/attach-kernel.d.ts +3 -2
  148. package/dist/implementation/world/attach-kernel.js +16 -8
  149. package/dist/implementation/world/attach-kernel.js.map +1 -1
  150. package/dist/implementation/world/batches.d.ts +5 -2
  151. package/dist/implementation/world/batches.js +72 -8
  152. package/dist/implementation/world/batches.js.map +1 -1
  153. package/dist/implementation/world/buffer.js +37 -4
  154. package/dist/implementation/world/buffer.js.map +1 -1
  155. package/dist/implementation/world/cascade.js +1 -1
  156. package/dist/implementation/world/cascade.js.map +1 -1
  157. package/dist/implementation/world/cells.js.map +1 -1
  158. package/dist/implementation/world/check-kernel.d.ts +7 -5
  159. package/dist/implementation/world/check-kernel.js +51 -34
  160. package/dist/implementation/world/check-kernel.js.map +1 -1
  161. package/dist/implementation/world/claims.js +1 -0
  162. package/dist/implementation/world/claims.js.map +1 -1
  163. package/dist/implementation/world/closure.js +1 -0
  164. package/dist/implementation/world/closure.js.map +1 -1
  165. package/dist/implementation/world/command-ring.js +2 -1
  166. package/dist/implementation/world/command-ring.js.map +1 -1
  167. package/dist/implementation/world/commands.js +26 -4
  168. package/dist/implementation/world/commands.js.map +1 -1
  169. package/dist/implementation/world/create.d.ts +40 -0
  170. package/dist/implementation/world/create.js +479 -257
  171. package/dist/implementation/world/create.js.map +1 -1
  172. package/dist/implementation/world/directories.js +2 -1
  173. package/dist/implementation/world/directories.js.map +1 -1
  174. package/dist/implementation/world/entities.js.map +1 -1
  175. package/dist/implementation/world/execute.d.ts +1 -7
  176. package/dist/implementation/world/execute.js +248 -107
  177. package/dist/implementation/world/execute.js.map +1 -1
  178. package/dist/implementation/world/failures.d.ts +48 -5
  179. package/dist/implementation/world/failures.js +36 -4
  180. package/dist/implementation/world/failures.js.map +1 -1
  181. package/dist/implementation/world/finalizers.d.ts +2 -0
  182. package/dist/implementation/world/finalizers.js +42 -14
  183. package/dist/implementation/world/finalizers.js.map +1 -1
  184. package/dist/implementation/world/gpu.d.ts +8 -8
  185. package/dist/implementation/world/gpu.js +21 -12
  186. package/dist/implementation/world/gpu.js.map +1 -1
  187. package/dist/implementation/world/holders.js +1 -0
  188. package/dist/implementation/world/holders.js.map +1 -1
  189. package/dist/implementation/world/index-build.js +1 -0
  190. package/dist/implementation/world/index-build.js.map +1 -1
  191. package/dist/implementation/world/index-hash.d.ts +52 -13
  192. package/dist/implementation/world/index-hash.js +440 -71
  193. package/dist/implementation/world/index-hash.js.map +1 -1
  194. package/dist/implementation/world/index-keys.js +1 -0
  195. package/dist/implementation/world/index-keys.js.map +1 -1
  196. package/dist/implementation/world/index-lookups.d.ts +3 -3
  197. package/dist/implementation/world/index-lookups.js +22 -17
  198. package/dist/implementation/world/index-lookups.js.map +1 -1
  199. package/dist/implementation/world/index-order.js.map +1 -1
  200. package/dist/implementation/world/index-readers.js.map +1 -1
  201. package/dist/implementation/world/index-sorted.d.ts +2 -2
  202. package/dist/implementation/world/index-sorted.js +10 -4
  203. package/dist/implementation/world/index-sorted.js.map +1 -1
  204. package/dist/implementation/world/indexes.d.ts +9 -14
  205. package/dist/implementation/world/indexes.js +57 -115
  206. package/dist/implementation/world/indexes.js.map +1 -1
  207. package/dist/implementation/world/input.js +1 -1
  208. package/dist/implementation/world/input.js.map +1 -1
  209. package/dist/implementation/world/intrinsics.js.map +1 -1
  210. package/dist/implementation/world/join.d.ts +10 -7
  211. package/dist/implementation/world/join.js +116 -59
  212. package/dist/implementation/world/join.js.map +1 -1
  213. package/dist/implementation/world/joined-observer.d.ts +31 -2
  214. package/dist/implementation/world/joined-observer.js +69 -17
  215. package/dist/implementation/world/joined-observer.js.map +1 -1
  216. package/dist/implementation/world/joining.d.ts +60 -6
  217. package/dist/implementation/world/joining.js +47 -3
  218. package/dist/implementation/world/joining.js.map +1 -1
  219. package/dist/implementation/world/journal.d.ts +3 -2
  220. package/dist/implementation/world/journal.js +7 -4
  221. package/dist/implementation/world/journal.js.map +1 -1
  222. package/dist/implementation/world/kernel-indexes.d.ts +9 -2
  223. package/dist/implementation/world/kernel-indexes.js +13 -3
  224. package/dist/implementation/world/kernel-indexes.js.map +1 -1
  225. package/dist/implementation/world/kernel.d.ts +39 -5
  226. package/dist/implementation/world/kernel.js +2 -0
  227. package/dist/implementation/world/kernel.js.map +1 -1
  228. package/dist/implementation/world/kernels.d.ts +10 -2
  229. package/dist/implementation/world/kernels.js +85 -13
  230. package/dist/implementation/world/kernels.js.map +1 -1
  231. package/dist/implementation/world/layout-directory.d.ts +28 -12
  232. package/dist/implementation/world/layout-directory.js +72 -17
  233. package/dist/implementation/world/layout-directory.js.map +1 -1
  234. package/dist/implementation/world/lists.d.ts +37 -7
  235. package/dist/implementation/world/lists.js +169 -29
  236. package/dist/implementation/world/lists.js.map +1 -1
  237. package/dist/implementation/world/lookup-keys.d.ts +9 -8
  238. package/dist/implementation/world/lookup-keys.js.map +1 -1
  239. package/dist/implementation/world/loop.js +4 -5
  240. package/dist/implementation/world/loop.js.map +1 -1
  241. package/dist/implementation/world/memory.js +1 -0
  242. package/dist/implementation/world/memory.js.map +1 -1
  243. package/dist/implementation/world/mirror.d.ts +16 -3
  244. package/dist/implementation/world/mirror.js +37 -9
  245. package/dist/implementation/world/mirror.js.map +1 -1
  246. package/dist/implementation/world/move-log.js.map +1 -1
  247. package/dist/implementation/world/observer.d.ts +1 -1
  248. package/dist/implementation/world/observer.js +1 -2
  249. package/dist/implementation/world/observer.js.map +1 -1
  250. package/dist/implementation/world/order.js +1 -0
  251. package/dist/implementation/world/order.js.map +1 -1
  252. package/dist/implementation/world/out-of-band.d.ts +28 -0
  253. package/dist/implementation/world/out-of-band.js +66 -0
  254. package/dist/implementation/world/out-of-band.js.map +1 -0
  255. package/dist/implementation/world/plan.js.map +1 -1
  256. package/dist/implementation/world/pool.js +1 -0
  257. package/dist/implementation/world/pool.js.map +1 -1
  258. package/dist/implementation/world/port.d.ts +4 -3
  259. package/dist/implementation/world/port.js +14 -9
  260. package/dist/implementation/world/port.js.map +1 -1
  261. package/dist/implementation/world/prepared-lookup.js +1 -0
  262. package/dist/implementation/world/prepared-lookup.js.map +1 -1
  263. package/dist/implementation/world/prepared-spawn.js +13 -9
  264. package/dist/implementation/world/prepared-spawn.js.map +1 -1
  265. package/dist/implementation/world/program.js.map +1 -1
  266. package/dist/implementation/world/protocol.d.ts +8 -1
  267. package/dist/implementation/world/protocol.js.map +1 -1
  268. package/dist/implementation/world/publish.js.map +1 -1
  269. package/dist/implementation/world/ranges.d.ts +13 -3
  270. package/dist/implementation/world/ranges.js +118 -35
  271. package/dist/implementation/world/ranges.js.map +1 -1
  272. package/dist/implementation/world/reclaim.d.ts +27 -0
  273. package/dist/implementation/world/reclaim.js +176 -0
  274. package/dist/implementation/world/reclaim.js.map +1 -0
  275. package/dist/implementation/world/reductions.d.ts +7 -6
  276. package/dist/implementation/world/reductions.js +11 -11
  277. package/dist/implementation/world/reductions.js.map +1 -1
  278. package/dist/implementation/world/register.js +2 -2
  279. package/dist/implementation/world/register.js.map +1 -1
  280. package/dist/implementation/world/remote-systems.d.ts +9 -4
  281. package/dist/implementation/world/remote-systems.js +33 -28
  282. package/dist/implementation/world/remote-systems.js.map +1 -1
  283. package/dist/implementation/world/remote.js +1 -0
  284. package/dist/implementation/world/remote.js.map +1 -1
  285. package/dist/implementation/world/render-order.d.ts +19 -0
  286. package/dist/implementation/world/render-order.js +126 -0
  287. package/dist/implementation/world/render-order.js.map +1 -0
  288. package/dist/implementation/world/required.d.ts +3 -0
  289. package/dist/implementation/world/required.js +9 -0
  290. package/dist/implementation/world/required.js.map +1 -0
  291. package/dist/implementation/world/resources.d.ts +4 -1
  292. package/dist/implementation/world/resources.js +6 -3
  293. package/dist/implementation/world/resources.js.map +1 -1
  294. package/dist/implementation/world/rows.d.ts +15 -12
  295. package/dist/implementation/world/rows.js +90 -20
  296. package/dist/implementation/world/rows.js.map +1 -1
  297. package/dist/implementation/world/runner.d.ts +10 -0
  298. package/dist/implementation/world/runner.js +398 -78
  299. package/dist/implementation/world/runner.js.map +1 -1
  300. package/dist/implementation/world/shared.d.ts +55 -0
  301. package/dist/implementation/world/shared.js +301 -0
  302. package/dist/implementation/world/shared.js.map +1 -0
  303. package/dist/implementation/world/sharing.d.ts +7 -6
  304. package/dist/implementation/world/sharing.js +86 -23
  305. package/dist/implementation/world/sharing.js.map +1 -1
  306. package/dist/implementation/world/staging.d.ts +28 -5
  307. package/dist/implementation/world/staging.js +35 -9
  308. package/dist/implementation/world/staging.js.map +1 -1
  309. package/dist/implementation/world/state.d.ts +72 -13
  310. package/dist/implementation/world/state.js +138 -14
  311. package/dist/implementation/world/state.js.map +1 -1
  312. package/dist/implementation/world/stop-lists.d.ts +25 -2
  313. package/dist/implementation/world/stop-lists.js +63 -8
  314. package/dist/implementation/world/stop-lists.js.map +1 -1
  315. package/dist/implementation/world/strings.js +1 -0
  316. package/dist/implementation/world/strings.js.map +1 -1
  317. package/dist/implementation/world/structure.d.ts +1 -1
  318. package/dist/implementation/world/structure.js +4 -1
  319. package/dist/implementation/world/structure.js.map +1 -1
  320. package/dist/implementation/world/synchronize.d.ts +1 -1
  321. package/dist/implementation/world/synchronize.js +59 -17
  322. package/dist/implementation/world/synchronize.js.map +1 -1
  323. package/dist/implementation/world/tail-blocks.d.ts +5 -2
  324. package/dist/implementation/world/tail-blocks.js +9 -4
  325. package/dist/implementation/world/tail-blocks.js.map +1 -1
  326. package/dist/implementation/world/tails.d.ts +10 -5
  327. package/dist/implementation/world/tails.js +25 -18
  328. package/dist/implementation/world/tails.js.map +1 -1
  329. package/dist/implementation/world/terminal.js +1 -0
  330. package/dist/implementation/world/terminal.js.map +1 -1
  331. package/dist/implementation/world/thread-directory.d.ts +8 -2
  332. package/dist/implementation/world/thread-directory.js +82 -12
  333. package/dist/implementation/world/thread-directory.js.map +1 -1
  334. package/dist/implementation/world/thread-finalizers.d.ts +1 -2
  335. package/dist/implementation/world/thread-finalizers.js +129 -19
  336. package/dist/implementation/world/thread-finalizers.js.map +1 -1
  337. package/dist/implementation/world/thread-indexes.d.ts +3 -1
  338. package/dist/implementation/world/thread-indexes.js +4 -3
  339. package/dist/implementation/world/thread-indexes.js.map +1 -1
  340. package/dist/implementation/world/thread-observer.d.ts +4 -2
  341. package/dist/implementation/world/thread-observer.js +53 -11
  342. package/dist/implementation/world/thread-observer.js.map +1 -1
  343. package/dist/implementation/world/thread-systems.d.ts +10 -2
  344. package/dist/implementation/world/thread-systems.js +396 -78
  345. package/dist/implementation/world/thread-systems.js.map +1 -1
  346. package/dist/implementation/world/thread-tasks.d.ts +8 -4
  347. package/dist/implementation/world/thread-tasks.js +9 -4
  348. package/dist/implementation/world/thread-tasks.js.map +1 -1
  349. package/dist/implementation/world/transfers.js.map +1 -1
  350. package/dist/implementation/world/up.d.ts +9 -6
  351. package/dist/implementation/world/up.js +291 -75
  352. package/dist/implementation/world/up.js.map +1 -1
  353. package/dist/implementation/world/wasm.d.ts +39 -8
  354. package/dist/implementation/world/wasm.js +428 -127
  355. package/dist/implementation/world/wasm.js.map +1 -1
  356. package/dist/implementation/world/wgsl.d.ts +4 -2
  357. package/dist/implementation/world/wgsl.js +20 -8
  358. package/dist/implementation/world/wgsl.js.map +1 -1
  359. package/dist/implementation/world/where.d.ts +74 -0
  360. package/dist/implementation/world/where.js +202 -0
  361. package/dist/implementation/world/where.js.map +1 -0
  362. package/dist/implementation/world/worker-platform.js.map +1 -1
  363. package/dist/implementation/world/worker-window.d.ts +7 -0
  364. package/dist/implementation/world/worker-window.js +47 -0
  365. package/dist/implementation/world/worker-window.js.map +1 -0
  366. package/dist/implementation/world/worker.js +47 -61
  367. package/dist/implementation/world/worker.js.map +1 -1
  368. package/dist/index.js +5 -0
  369. package/dist/index.js.map +1 -1
  370. package/dist/interface/component/component.js +1 -0
  371. package/dist/interface/component/component.js.map +1 -1
  372. package/dist/interface/component/index.d.ts +0 -1
  373. package/dist/interface/component/index.js +1 -1
  374. package/dist/interface/component/index.js.map +1 -1
  375. package/dist/interface/component/types.d.ts +2 -2
  376. package/dist/interface/component/value.d.ts +7 -2
  377. package/dist/interface/entity/entity.js.map +1 -1
  378. package/dist/interface/entity/index.d.ts +2 -0
  379. package/dist/interface/entity/index.js +2 -0
  380. package/dist/interface/entity/index.js.map +1 -1
  381. package/dist/interface/finalizer/body.d.ts +14 -11
  382. package/dist/interface/finalizer/create.d.ts +14 -14
  383. package/dist/interface/finalizer/create.js +43 -10
  384. package/dist/interface/finalizer/create.js.map +1 -1
  385. package/dist/interface/finalizer/created.d.ts +5 -5
  386. package/dist/interface/finalizer/declaration.d.ts +33 -13
  387. package/dist/interface/finalizer/finalizer.d.ts +2 -2
  388. package/dist/interface/finalizer/finalizer.js.map +1 -1
  389. package/dist/interface/finalizer/index.js +1 -0
  390. package/dist/interface/finalizer/index.js.map +1 -1
  391. package/dist/interface/gpu/accessors.d.ts +4 -3
  392. package/dist/interface/gpu/accessors.js +25 -8
  393. package/dist/interface/gpu/accessors.js.map +1 -1
  394. package/dist/interface/gpu/gpu.js.map +1 -1
  395. package/dist/interface/gpu/index.js +1 -0
  396. package/dist/interface/gpu/index.js.map +1 -1
  397. package/dist/interface/gpu/layout.js +1 -0
  398. package/dist/interface/gpu/layout.js.map +1 -1
  399. package/dist/interface/gpu/record.js +1 -0
  400. package/dist/interface/gpu/record.js.map +1 -1
  401. package/dist/interface/gpu/wgsl.d.ts +2 -1
  402. package/dist/interface/gpu/wgsl.js +9 -5
  403. package/dist/interface/gpu/wgsl.js.map +1 -1
  404. package/dist/interface/index.d.ts +0 -3
  405. package/dist/interface/index.js +1 -3
  406. package/dist/interface/index.js.map +1 -1
  407. package/dist/interface/indexes/create.d.ts +18 -9
  408. package/dist/interface/indexes/create.js +16 -13
  409. package/dist/interface/indexes/create.js.map +1 -1
  410. package/dist/interface/indexes/created.d.ts +2 -2
  411. package/dist/interface/indexes/declaration.d.ts +8 -3
  412. package/dist/interface/indexes/index-type.d.ts +3 -3
  413. package/dist/interface/indexes/index-type.js.map +1 -1
  414. package/dist/interface/indexes/index.js +1 -0
  415. package/dist/interface/indexes/index.js.map +1 -1
  416. package/dist/interface/math/f32/default.d.ts +4 -0
  417. package/dist/interface/math/f32/default.js +4 -0
  418. package/dist/interface/math/f32/default.js.map +1 -0
  419. package/dist/interface/math/f32/index.d.ts +3 -1
  420. package/dist/interface/math/f32/index.js.map +1 -1
  421. package/dist/interface/math/f32/public.d.ts +1 -0
  422. package/dist/interface/math/f32/public.js +2 -0
  423. package/dist/interface/math/f32/public.js.map +1 -1
  424. package/dist/interface/math/f32/round-half-even.js +1 -0
  425. package/dist/interface/math/f32/round-half-even.js.map +1 -1
  426. package/dist/interface/math/f32/schema.js.map +1 -1
  427. package/dist/interface/math/i32/default.d.ts +4 -0
  428. package/dist/interface/math/i32/default.js +4 -0
  429. package/dist/interface/math/i32/default.js.map +1 -0
  430. package/dist/interface/math/i32/index.d.ts +3 -1
  431. package/dist/interface/math/i32/index.js.map +1 -1
  432. package/dist/interface/math/i32/public.d.ts +1 -0
  433. package/dist/interface/math/i32/public.js +2 -0
  434. package/dist/interface/math/i32/public.js.map +1 -1
  435. package/dist/interface/math/i32/schema.js.map +1 -1
  436. package/dist/interface/math/i32/shift-right.js.map +1 -1
  437. package/dist/interface/math/index.js +1 -0
  438. package/dist/interface/math/index.js.map +1 -1
  439. package/dist/interface/math/intrinsic.js.map +1 -1
  440. package/dist/interface/math/mat4x4/add.js.map +1 -1
  441. package/dist/interface/math/mat4x4/determinant.js.map +1 -1
  442. package/dist/interface/math/mat4x4/identity.js.map +1 -1
  443. package/dist/interface/math/mat4x4/index.d.ts +3 -1
  444. package/dist/interface/math/mat4x4/index.js.map +1 -1
  445. package/dist/interface/math/mat4x4/inverse.js.map +1 -1
  446. package/dist/interface/math/mat4x4/look-at.js.map +1 -1
  447. package/dist/interface/math/mat4x4/multiply-vec3.js.map +1 -1
  448. package/dist/interface/math/mat4x4/multiply-vec4.js.map +1 -1
  449. package/dist/interface/math/mat4x4/multiply.js.map +1 -1
  450. package/dist/interface/math/mat4x4/orthographic.js.map +1 -1
  451. package/dist/interface/math/mat4x4/perspective.js.map +1 -1
  452. package/dist/interface/math/mat4x4/public.d.ts +1 -0
  453. package/dist/interface/math/mat4x4/public.js +2 -0
  454. package/dist/interface/math/mat4x4/public.js.map +1 -1
  455. package/dist/interface/math/mat4x4/rotation-x.js.map +1 -1
  456. package/dist/interface/math/mat4x4/rotation-y.js.map +1 -1
  457. package/dist/interface/math/mat4x4/rotation-z.js.map +1 -1
  458. package/dist/interface/math/mat4x4/scale.js.map +1 -1
  459. package/dist/interface/math/mat4x4/scaling.js.map +1 -1
  460. package/dist/interface/math/mat4x4/schema.js.map +1 -1
  461. package/dist/interface/math/mat4x4/subtract.js.map +1 -1
  462. package/dist/interface/math/mat4x4/translation.js.map +1 -1
  463. package/dist/interface/math/mat4x4/transpose.js.map +1 -1
  464. package/dist/interface/math/mat4x4/zero.js.map +1 -1
  465. package/dist/interface/math/quat/add.js.map +1 -1
  466. package/dist/interface/math/quat/align-to.js.map +1 -1
  467. package/dist/interface/math/quat/conjugate.js.map +1 -1
  468. package/dist/interface/math/quat/distance.js.map +1 -1
  469. package/dist/interface/math/quat/dot.js.map +1 -1
  470. package/dist/interface/math/quat/from-axis-angle.js.map +1 -1
  471. package/dist/interface/math/quat/from-euler.js.map +1 -1
  472. package/dist/interface/math/quat/identity.js.map +1 -1
  473. package/dist/interface/math/quat/index.d.ts +3 -1
  474. package/dist/interface/math/quat/index.js.map +1 -1
  475. package/dist/interface/math/quat/inverse.js.map +1 -1
  476. package/dist/interface/math/quat/length-squared.js.map +1 -1
  477. package/dist/interface/math/quat/length.js.map +1 -1
  478. package/dist/interface/math/quat/lerp.js.map +1 -1
  479. package/dist/interface/math/quat/look-at.js.map +1 -1
  480. package/dist/interface/math/quat/multiply.js.map +1 -1
  481. package/dist/interface/math/quat/negate.js.map +1 -1
  482. package/dist/interface/math/quat/normalize.js.map +1 -1
  483. package/dist/interface/math/quat/public.d.ts +1 -0
  484. package/dist/interface/math/quat/public.js +2 -0
  485. package/dist/interface/math/quat/public.js.map +1 -1
  486. package/dist/interface/math/quat/rotate-vec3.js.map +1 -1
  487. package/dist/interface/math/quat/scale.js.map +1 -1
  488. package/dist/interface/math/quat/schema.js.map +1 -1
  489. package/dist/interface/math/quat/slerp.js.map +1 -1
  490. package/dist/interface/math/quat/subtract.js.map +1 -1
  491. package/dist/interface/math/quat/to-axis-angle.js.map +1 -1
  492. package/dist/interface/math/quat/to-euler.js.map +1 -1
  493. package/dist/interface/math/quat/to-mat4.js.map +1 -1
  494. package/dist/interface/math/u32/count-leading-zeros.js.map +1 -1
  495. package/dist/interface/math/u32/count-one-bits.js.map +1 -1
  496. package/dist/interface/math/u32/count-trailing-zeros.js.map +1 -1
  497. package/dist/interface/math/u32/default.d.ts +4 -0
  498. package/dist/interface/math/u32/default.js +4 -0
  499. package/dist/interface/math/u32/default.js.map +1 -0
  500. package/dist/interface/math/u32/index.d.ts +3 -1
  501. package/dist/interface/math/u32/index.js.map +1 -1
  502. package/dist/interface/math/u32/public.d.ts +1 -0
  503. package/dist/interface/math/u32/public.js +2 -0
  504. package/dist/interface/math/u32/public.js.map +1 -1
  505. package/dist/interface/math/u32/reverse-bits.js.map +1 -1
  506. package/dist/interface/math/u32/schema.js.map +1 -1
  507. package/dist/interface/math/u32/shift-right.js.map +1 -1
  508. package/dist/interface/math/vec2/f32/abs.js.map +1 -1
  509. package/dist/interface/math/vec2/f32/acos.js.map +1 -1
  510. package/dist/interface/math/vec2/f32/acosh.js.map +1 -1
  511. package/dist/interface/math/vec2/f32/add.js.map +1 -1
  512. package/dist/interface/math/vec2/f32/asin.js.map +1 -1
  513. package/dist/interface/math/vec2/f32/asinh.js.map +1 -1
  514. package/dist/interface/math/vec2/f32/atan.js.map +1 -1
  515. package/dist/interface/math/vec2/f32/atanh.js.map +1 -1
  516. package/dist/interface/math/vec2/f32/ceil.js.map +1 -1
  517. package/dist/interface/math/vec2/f32/clamp.js.map +1 -1
  518. package/dist/interface/math/vec2/f32/cos.js.map +1 -1
  519. package/dist/interface/math/vec2/f32/cosh.js.map +1 -1
  520. package/dist/interface/math/vec2/f32/distance.js.map +1 -1
  521. package/dist/interface/math/vec2/f32/dot.js.map +1 -1
  522. package/dist/interface/math/vec2/f32/equals.js.map +1 -1
  523. package/dist/interface/math/vec2/f32/exp.js.map +1 -1
  524. package/dist/interface/math/vec2/f32/exp2.js.map +1 -1
  525. package/dist/interface/math/vec2/f32/f32.d.ts +3 -1
  526. package/dist/interface/math/vec2/f32/f32.js.map +1 -1
  527. package/dist/interface/math/vec2/f32/faceforward.js.map +1 -1
  528. package/dist/interface/math/vec2/f32/floor.js.map +1 -1
  529. package/dist/interface/math/vec2/f32/fract.js.map +1 -1
  530. package/dist/interface/math/vec2/f32/length.js.map +1 -1
  531. package/dist/interface/math/vec2/f32/log.js.map +1 -1
  532. package/dist/interface/math/vec2/f32/log2.js.map +1 -1
  533. package/dist/interface/math/vec2/f32/max.js.map +1 -1
  534. package/dist/interface/math/vec2/f32/min.js.map +1 -1
  535. package/dist/interface/math/vec2/f32/mix.js.map +1 -1
  536. package/dist/interface/math/vec2/f32/mod.js.map +1 -1
  537. package/dist/interface/math/vec2/f32/modf.js.map +1 -1
  538. package/dist/interface/math/vec2/f32/negate.js.map +1 -1
  539. package/dist/interface/math/vec2/f32/normalize.js.map +1 -1
  540. package/dist/interface/math/vec2/f32/pow.js.map +1 -1
  541. package/dist/interface/math/vec2/f32/public.d.ts +1 -0
  542. package/dist/interface/math/vec2/f32/public.js +2 -0
  543. package/dist/interface/math/vec2/f32/public.js.map +1 -1
  544. package/dist/interface/math/vec2/f32/reflect.js.map +1 -1
  545. package/dist/interface/math/vec2/f32/refract.js.map +1 -1
  546. package/dist/interface/math/vec2/f32/round.js.map +1 -1
  547. package/dist/interface/math/vec2/f32/scale.js.map +1 -1
  548. package/dist/interface/math/vec2/f32/schema.js.map +1 -1
  549. package/dist/interface/math/vec2/f32/sign.js.map +1 -1
  550. package/dist/interface/math/vec2/f32/sin.js.map +1 -1
  551. package/dist/interface/math/vec2/f32/sinh.js.map +1 -1
  552. package/dist/interface/math/vec2/f32/smoothstep.js.map +1 -1
  553. package/dist/interface/math/vec2/f32/sqrt.js.map +1 -1
  554. package/dist/interface/math/vec2/f32/step.js.map +1 -1
  555. package/dist/interface/math/vec2/f32/subtract.js.map +1 -1
  556. package/dist/interface/math/vec2/f32/tan.js.map +1 -1
  557. package/dist/interface/math/vec2/f32/tanh.js.map +1 -1
  558. package/dist/interface/math/vec2/f32/trunc.js.map +1 -1
  559. package/dist/interface/math/vec2/f32/zero.js.map +1 -1
  560. package/dist/interface/math/vec2/i32/abs.js.map +1 -1
  561. package/dist/interface/math/vec2/i32/add.js.map +1 -1
  562. package/dist/interface/math/vec2/i32/bitwise-and.js.map +1 -1
  563. package/dist/interface/math/vec2/i32/bitwise-not.js.map +1 -1
  564. package/dist/interface/math/vec2/i32/bitwise-or.js.map +1 -1
  565. package/dist/interface/math/vec2/i32/bitwise-xor.js.map +1 -1
  566. package/dist/interface/math/vec2/i32/clamp.js.map +1 -1
  567. package/dist/interface/math/vec2/i32/count-leading-zeros.js.map +1 -1
  568. package/dist/interface/math/vec2/i32/count-one-bits.js.map +1 -1
  569. package/dist/interface/math/vec2/i32/count-trailing-zeros.js.map +1 -1
  570. package/dist/interface/math/vec2/i32/equals.js.map +1 -1
  571. package/dist/interface/math/vec2/i32/i32.d.ts +3 -1
  572. package/dist/interface/math/vec2/i32/i32.js.map +1 -1
  573. package/dist/interface/math/vec2/i32/max.js.map +1 -1
  574. package/dist/interface/math/vec2/i32/min.js.map +1 -1
  575. package/dist/interface/math/vec2/i32/negate.js.map +1 -1
  576. package/dist/interface/math/vec2/i32/public.d.ts +1 -0
  577. package/dist/interface/math/vec2/i32/public.js +2 -0
  578. package/dist/interface/math/vec2/i32/public.js.map +1 -1
  579. package/dist/interface/math/vec2/i32/reverse-bits.js.map +1 -1
  580. package/dist/interface/math/vec2/i32/scale.js.map +1 -1
  581. package/dist/interface/math/vec2/i32/schema.js.map +1 -1
  582. package/dist/interface/math/vec2/i32/shift-left.js.map +1 -1
  583. package/dist/interface/math/vec2/i32/shift-right.js.map +1 -1
  584. package/dist/interface/math/vec2/i32/subtract.js.map +1 -1
  585. package/dist/interface/math/vec2/i32/zero.js.map +1 -1
  586. package/dist/interface/math/vec2/index.js.map +1 -1
  587. package/dist/interface/math/vec2/public.d.ts +1 -0
  588. package/dist/interface/math/vec2/public.js +2 -0
  589. package/dist/interface/math/vec2/public.js.map +1 -1
  590. package/dist/interface/math/vec2/u32/add.js.map +1 -1
  591. package/dist/interface/math/vec2/u32/bitwise-and.js.map +1 -1
  592. package/dist/interface/math/vec2/u32/bitwise-not.js.map +1 -1
  593. package/dist/interface/math/vec2/u32/bitwise-or.js.map +1 -1
  594. package/dist/interface/math/vec2/u32/bitwise-xor.js.map +1 -1
  595. package/dist/interface/math/vec2/u32/clamp.js.map +1 -1
  596. package/dist/interface/math/vec2/u32/count-leading-zeros.js.map +1 -1
  597. package/dist/interface/math/vec2/u32/count-one-bits.js.map +1 -1
  598. package/dist/interface/math/vec2/u32/count-trailing-zeros.js.map +1 -1
  599. package/dist/interface/math/vec2/u32/equals.js.map +1 -1
  600. package/dist/interface/math/vec2/u32/max.js.map +1 -1
  601. package/dist/interface/math/vec2/u32/min.js.map +1 -1
  602. package/dist/interface/math/vec2/u32/negate.js.map +1 -1
  603. package/dist/interface/math/vec2/u32/public.d.ts +1 -0
  604. package/dist/interface/math/vec2/u32/public.js +2 -0
  605. package/dist/interface/math/vec2/u32/public.js.map +1 -1
  606. package/dist/interface/math/vec2/u32/reverse-bits.js.map +1 -1
  607. package/dist/interface/math/vec2/u32/scale.js.map +1 -1
  608. package/dist/interface/math/vec2/u32/schema.js.map +1 -1
  609. package/dist/interface/math/vec2/u32/shift-left.js.map +1 -1
  610. package/dist/interface/math/vec2/u32/shift-right.js.map +1 -1
  611. package/dist/interface/math/vec2/u32/subtract.js.map +1 -1
  612. package/dist/interface/math/vec2/u32/u32.d.ts +3 -1
  613. package/dist/interface/math/vec2/u32/u32.js.map +1 -1
  614. package/dist/interface/math/vec2/u32/zero.js.map +1 -1
  615. package/dist/interface/math/vec3/f32/abs.js.map +1 -1
  616. package/dist/interface/math/vec3/f32/acos.js.map +1 -1
  617. package/dist/interface/math/vec3/f32/acosh.js.map +1 -1
  618. package/dist/interface/math/vec3/f32/add.js.map +1 -1
  619. package/dist/interface/math/vec3/f32/asin.js.map +1 -1
  620. package/dist/interface/math/vec3/f32/asinh.js.map +1 -1
  621. package/dist/interface/math/vec3/f32/atan.js.map +1 -1
  622. package/dist/interface/math/vec3/f32/atanh.js.map +1 -1
  623. package/dist/interface/math/vec3/f32/ceil.js.map +1 -1
  624. package/dist/interface/math/vec3/f32/clamp.js.map +1 -1
  625. package/dist/interface/math/vec3/f32/cos.js.map +1 -1
  626. package/dist/interface/math/vec3/f32/cosh.js.map +1 -1
  627. package/dist/interface/math/vec3/f32/cross.js.map +1 -1
  628. package/dist/interface/math/vec3/f32/distance-squared.js.map +1 -1
  629. package/dist/interface/math/vec3/f32/distance.js.map +1 -1
  630. package/dist/interface/math/vec3/f32/dot.js.map +1 -1
  631. package/dist/interface/math/vec3/f32/equals.js.map +1 -1
  632. package/dist/interface/math/vec3/f32/exp.js.map +1 -1
  633. package/dist/interface/math/vec3/f32/exp2.js.map +1 -1
  634. package/dist/interface/math/vec3/f32/f32.d.ts +3 -1
  635. package/dist/interface/math/vec3/f32/f32.js.map +1 -1
  636. package/dist/interface/math/vec3/f32/faceforward.js.map +1 -1
  637. package/dist/interface/math/vec3/f32/floor.js.map +1 -1
  638. package/dist/interface/math/vec3/f32/fract.js.map +1 -1
  639. package/dist/interface/math/vec3/f32/length-squared.js.map +1 -1
  640. package/dist/interface/math/vec3/f32/length.js.map +1 -1
  641. package/dist/interface/math/vec3/f32/log.js.map +1 -1
  642. package/dist/interface/math/vec3/f32/log2.js.map +1 -1
  643. package/dist/interface/math/vec3/f32/max.js.map +1 -1
  644. package/dist/interface/math/vec3/f32/min.js.map +1 -1
  645. package/dist/interface/math/vec3/f32/mix.js.map +1 -1
  646. package/dist/interface/math/vec3/f32/mod.js.map +1 -1
  647. package/dist/interface/math/vec3/f32/modf.js.map +1 -1
  648. package/dist/interface/math/vec3/f32/multiply.js.map +1 -1
  649. package/dist/interface/math/vec3/f32/negate.js.map +1 -1
  650. package/dist/interface/math/vec3/f32/normalize.js.map +1 -1
  651. package/dist/interface/math/vec3/f32/one.js.map +1 -1
  652. package/dist/interface/math/vec3/f32/pow.js.map +1 -1
  653. package/dist/interface/math/vec3/f32/public.d.ts +1 -0
  654. package/dist/interface/math/vec3/f32/public.js +2 -0
  655. package/dist/interface/math/vec3/f32/public.js.map +1 -1
  656. package/dist/interface/math/vec3/f32/random.js.map +1 -1
  657. package/dist/interface/math/vec3/f32/reflect.js.map +1 -1
  658. package/dist/interface/math/vec3/f32/refract.js.map +1 -1
  659. package/dist/interface/math/vec3/f32/round.js.map +1 -1
  660. package/dist/interface/math/vec3/f32/scale.js.map +1 -1
  661. package/dist/interface/math/vec3/f32/schema.js.map +1 -1
  662. package/dist/interface/math/vec3/f32/sign.js.map +1 -1
  663. package/dist/interface/math/vec3/f32/sin.js.map +1 -1
  664. package/dist/interface/math/vec3/f32/sinh.js.map +1 -1
  665. package/dist/interface/math/vec3/f32/smoothstep.js.map +1 -1
  666. package/dist/interface/math/vec3/f32/sqrt.js.map +1 -1
  667. package/dist/interface/math/vec3/f32/step.js.map +1 -1
  668. package/dist/interface/math/vec3/f32/subtract.js.map +1 -1
  669. package/dist/interface/math/vec3/f32/tan.js.map +1 -1
  670. package/dist/interface/math/vec3/f32/tanh.js.map +1 -1
  671. package/dist/interface/math/vec3/f32/trunc.js.map +1 -1
  672. package/dist/interface/math/vec3/f32/zero.js.map +1 -1
  673. package/dist/interface/math/vec3/i32/abs.js.map +1 -1
  674. package/dist/interface/math/vec3/i32/add.js.map +1 -1
  675. package/dist/interface/math/vec3/i32/bitwise-and.js.map +1 -1
  676. package/dist/interface/math/vec3/i32/bitwise-not.js.map +1 -1
  677. package/dist/interface/math/vec3/i32/bitwise-or.js.map +1 -1
  678. package/dist/interface/math/vec3/i32/bitwise-xor.js.map +1 -1
  679. package/dist/interface/math/vec3/i32/clamp.js.map +1 -1
  680. package/dist/interface/math/vec3/i32/count-leading-zeros.js.map +1 -1
  681. package/dist/interface/math/vec3/i32/count-one-bits.js.map +1 -1
  682. package/dist/interface/math/vec3/i32/count-trailing-zeros.js.map +1 -1
  683. package/dist/interface/math/vec3/i32/equals.js.map +1 -1
  684. package/dist/interface/math/vec3/i32/i32.d.ts +3 -1
  685. package/dist/interface/math/vec3/i32/i32.js.map +1 -1
  686. package/dist/interface/math/vec3/i32/max.js.map +1 -1
  687. package/dist/interface/math/vec3/i32/min.js.map +1 -1
  688. package/dist/interface/math/vec3/i32/multiply.js.map +1 -1
  689. package/dist/interface/math/vec3/i32/negate.js.map +1 -1
  690. package/dist/interface/math/vec3/i32/one.js.map +1 -1
  691. package/dist/interface/math/vec3/i32/public.d.ts +1 -0
  692. package/dist/interface/math/vec3/i32/public.js +2 -0
  693. package/dist/interface/math/vec3/i32/public.js.map +1 -1
  694. package/dist/interface/math/vec3/i32/reverse-bits.js.map +1 -1
  695. package/dist/interface/math/vec3/i32/scale.js.map +1 -1
  696. package/dist/interface/math/vec3/i32/schema.js.map +1 -1
  697. package/dist/interface/math/vec3/i32/shift-left.js.map +1 -1
  698. package/dist/interface/math/vec3/i32/shift-right.js.map +1 -1
  699. package/dist/interface/math/vec3/i32/subtract.js.map +1 -1
  700. package/dist/interface/math/vec3/i32/zero.js.map +1 -1
  701. package/dist/interface/math/vec3/index.js.map +1 -1
  702. package/dist/interface/math/vec3/public.d.ts +1 -0
  703. package/dist/interface/math/vec3/public.js +2 -0
  704. package/dist/interface/math/vec3/public.js.map +1 -1
  705. package/dist/interface/math/vec3/u32/add.js.map +1 -1
  706. package/dist/interface/math/vec3/u32/bitwise-and.js.map +1 -1
  707. package/dist/interface/math/vec3/u32/bitwise-not.js.map +1 -1
  708. package/dist/interface/math/vec3/u32/bitwise-or.js.map +1 -1
  709. package/dist/interface/math/vec3/u32/bitwise-xor.js.map +1 -1
  710. package/dist/interface/math/vec3/u32/clamp.js.map +1 -1
  711. package/dist/interface/math/vec3/u32/count-leading-zeros.js.map +1 -1
  712. package/dist/interface/math/vec3/u32/count-one-bits.js.map +1 -1
  713. package/dist/interface/math/vec3/u32/count-trailing-zeros.js.map +1 -1
  714. package/dist/interface/math/vec3/u32/equals.js.map +1 -1
  715. package/dist/interface/math/vec3/u32/max.js.map +1 -1
  716. package/dist/interface/math/vec3/u32/min.js.map +1 -1
  717. package/dist/interface/math/vec3/u32/multiply.js.map +1 -1
  718. package/dist/interface/math/vec3/u32/negate.js.map +1 -1
  719. package/dist/interface/math/vec3/u32/one.js.map +1 -1
  720. package/dist/interface/math/vec3/u32/public.d.ts +1 -0
  721. package/dist/interface/math/vec3/u32/public.js +2 -0
  722. package/dist/interface/math/vec3/u32/public.js.map +1 -1
  723. package/dist/interface/math/vec3/u32/reverse-bits.js.map +1 -1
  724. package/dist/interface/math/vec3/u32/scale.js.map +1 -1
  725. package/dist/interface/math/vec3/u32/schema.js.map +1 -1
  726. package/dist/interface/math/vec3/u32/shift-left.js.map +1 -1
  727. package/dist/interface/math/vec3/u32/shift-right.js.map +1 -1
  728. package/dist/interface/math/vec3/u32/subtract.js.map +1 -1
  729. package/dist/interface/math/vec3/u32/u32.d.ts +3 -1
  730. package/dist/interface/math/vec3/u32/u32.js.map +1 -1
  731. package/dist/interface/math/vec3/u32/volume.js.map +1 -1
  732. package/dist/interface/math/vec3/u32/zero.js.map +1 -1
  733. package/dist/interface/math/vec4/f32/abs.js.map +1 -1
  734. package/dist/interface/math/vec4/f32/acos.js.map +1 -1
  735. package/dist/interface/math/vec4/f32/acosh.js.map +1 -1
  736. package/dist/interface/math/vec4/f32/add.js.map +1 -1
  737. package/dist/interface/math/vec4/f32/asin.js.map +1 -1
  738. package/dist/interface/math/vec4/f32/asinh.js.map +1 -1
  739. package/dist/interface/math/vec4/f32/atan.js.map +1 -1
  740. package/dist/interface/math/vec4/f32/atanh.js.map +1 -1
  741. package/dist/interface/math/vec4/f32/ceil.js.map +1 -1
  742. package/dist/interface/math/vec4/f32/clamp.js.map +1 -1
  743. package/dist/interface/math/vec4/f32/cos.js.map +1 -1
  744. package/dist/interface/math/vec4/f32/cosh.js.map +1 -1
  745. package/dist/interface/math/vec4/f32/default.d.ts +4 -0
  746. package/dist/interface/math/vec4/f32/default.js +4 -0
  747. package/dist/interface/math/vec4/f32/default.js.map +1 -0
  748. package/dist/interface/math/vec4/f32/distance.js.map +1 -1
  749. package/dist/interface/math/vec4/f32/dot.js.map +1 -1
  750. package/dist/interface/math/vec4/f32/exp.js.map +1 -1
  751. package/dist/interface/math/vec4/f32/exp2.js.map +1 -1
  752. package/dist/interface/math/vec4/f32/f32.d.ts +3 -1
  753. package/dist/interface/math/vec4/f32/f32.js.map +1 -1
  754. package/dist/interface/math/vec4/f32/faceforward.js.map +1 -1
  755. package/dist/interface/math/vec4/f32/floor.js.map +1 -1
  756. package/dist/interface/math/vec4/f32/fract.js.map +1 -1
  757. package/dist/interface/math/vec4/f32/length.js.map +1 -1
  758. package/dist/interface/math/vec4/f32/log.js.map +1 -1
  759. package/dist/interface/math/vec4/f32/log2.js.map +1 -1
  760. package/dist/interface/math/vec4/f32/max.js.map +1 -1
  761. package/dist/interface/math/vec4/f32/min.js.map +1 -1
  762. package/dist/interface/math/vec4/f32/mix.js.map +1 -1
  763. package/dist/interface/math/vec4/f32/mod.js.map +1 -1
  764. package/dist/interface/math/vec4/f32/modf.js.map +1 -1
  765. package/dist/interface/math/vec4/f32/multiply.js.map +1 -1
  766. package/dist/interface/math/vec4/f32/negate.js.map +1 -1
  767. package/dist/interface/math/vec4/f32/normalize.js.map +1 -1
  768. package/dist/interface/math/vec4/f32/pow.js.map +1 -1
  769. package/dist/interface/math/vec4/f32/public.d.ts +1 -0
  770. package/dist/interface/math/vec4/f32/public.js +2 -0
  771. package/dist/interface/math/vec4/f32/public.js.map +1 -1
  772. package/dist/interface/math/vec4/f32/reflect.js.map +1 -1
  773. package/dist/interface/math/vec4/f32/refract.js.map +1 -1
  774. package/dist/interface/math/vec4/f32/round.js.map +1 -1
  775. package/dist/interface/math/vec4/f32/scale.js.map +1 -1
  776. package/dist/interface/math/vec4/f32/schema.js.map +1 -1
  777. package/dist/interface/math/vec4/f32/sign.js.map +1 -1
  778. package/dist/interface/math/vec4/f32/sin.js.map +1 -1
  779. package/dist/interface/math/vec4/f32/sinh.js.map +1 -1
  780. package/dist/interface/math/vec4/f32/smoothstep.js.map +1 -1
  781. package/dist/interface/math/vec4/f32/sqrt.js.map +1 -1
  782. package/dist/interface/math/vec4/f32/step.js.map +1 -1
  783. package/dist/interface/math/vec4/f32/subtract.js.map +1 -1
  784. package/dist/interface/math/vec4/f32/tan.js.map +1 -1
  785. package/dist/interface/math/vec4/f32/tanh.js.map +1 -1
  786. package/dist/interface/math/vec4/f32/trunc.js.map +1 -1
  787. package/dist/interface/math/vec4/i32/abs.js.map +1 -1
  788. package/dist/interface/math/vec4/i32/add.js.map +1 -1
  789. package/dist/interface/math/vec4/i32/bitwise-and.js.map +1 -1
  790. package/dist/interface/math/vec4/i32/bitwise-not.js.map +1 -1
  791. package/dist/interface/math/vec4/i32/bitwise-or.js.map +1 -1
  792. package/dist/interface/math/vec4/i32/bitwise-xor.js.map +1 -1
  793. package/dist/interface/math/vec4/i32/clamp.js.map +1 -1
  794. package/dist/interface/math/vec4/i32/count-leading-zeros.js.map +1 -1
  795. package/dist/interface/math/vec4/i32/count-one-bits.js.map +1 -1
  796. package/dist/interface/math/vec4/i32/count-trailing-zeros.js.map +1 -1
  797. package/dist/interface/math/vec4/i32/equals.js.map +1 -1
  798. package/dist/interface/math/vec4/i32/i32.d.ts +3 -1
  799. package/dist/interface/math/vec4/i32/i32.js.map +1 -1
  800. package/dist/interface/math/vec4/i32/max.js.map +1 -1
  801. package/dist/interface/math/vec4/i32/min.js.map +1 -1
  802. package/dist/interface/math/vec4/i32/multiply.js.map +1 -1
  803. package/dist/interface/math/vec4/i32/negate.js.map +1 -1
  804. package/dist/interface/math/vec4/i32/one.js.map +1 -1
  805. package/dist/interface/math/vec4/i32/public.d.ts +1 -0
  806. package/dist/interface/math/vec4/i32/public.js +2 -0
  807. package/dist/interface/math/vec4/i32/public.js.map +1 -1
  808. package/dist/interface/math/vec4/i32/reverse-bits.js.map +1 -1
  809. package/dist/interface/math/vec4/i32/scale.js.map +1 -1
  810. package/dist/interface/math/vec4/i32/schema.js.map +1 -1
  811. package/dist/interface/math/vec4/i32/shift-left.js.map +1 -1
  812. package/dist/interface/math/vec4/i32/shift-right.js.map +1 -1
  813. package/dist/interface/math/vec4/i32/subtract.js.map +1 -1
  814. package/dist/interface/math/vec4/i32/zero.js.map +1 -1
  815. package/dist/interface/math/vec4/index.js.map +1 -1
  816. package/dist/interface/math/vec4/public.d.ts +1 -0
  817. package/dist/interface/math/vec4/public.js +2 -0
  818. package/dist/interface/math/vec4/public.js.map +1 -1
  819. package/dist/interface/math/vec4/u32/add.js.map +1 -1
  820. package/dist/interface/math/vec4/u32/bitwise-and.js.map +1 -1
  821. package/dist/interface/math/vec4/u32/bitwise-not.js.map +1 -1
  822. package/dist/interface/math/vec4/u32/bitwise-or.js.map +1 -1
  823. package/dist/interface/math/vec4/u32/bitwise-xor.js.map +1 -1
  824. package/dist/interface/math/vec4/u32/clamp.js.map +1 -1
  825. package/dist/interface/math/vec4/u32/count-leading-zeros.js.map +1 -1
  826. package/dist/interface/math/vec4/u32/count-one-bits.js.map +1 -1
  827. package/dist/interface/math/vec4/u32/count-trailing-zeros.js.map +1 -1
  828. package/dist/interface/math/vec4/u32/equals.js.map +1 -1
  829. package/dist/interface/math/vec4/u32/max.js.map +1 -1
  830. package/dist/interface/math/vec4/u32/min.js.map +1 -1
  831. package/dist/interface/math/vec4/u32/multiply.js.map +1 -1
  832. package/dist/interface/math/vec4/u32/negate.js.map +1 -1
  833. package/dist/interface/math/vec4/u32/one.js.map +1 -1
  834. package/dist/interface/math/vec4/u32/public.d.ts +1 -0
  835. package/dist/interface/math/vec4/u32/public.js +2 -0
  836. package/dist/interface/math/vec4/u32/public.js.map +1 -1
  837. package/dist/interface/math/vec4/u32/reverse-bits.js.map +1 -1
  838. package/dist/interface/math/vec4/u32/scale.js.map +1 -1
  839. package/dist/interface/math/vec4/u32/schema.js.map +1 -1
  840. package/dist/interface/math/vec4/u32/shift-left.js.map +1 -1
  841. package/dist/interface/math/vec4/u32/shift-right.js.map +1 -1
  842. package/dist/interface/math/vec4/u32/subtract.js.map +1 -1
  843. package/dist/interface/math/vec4/u32/u32.d.ts +3 -1
  844. package/dist/interface/math/vec4/u32/u32.js.map +1 -1
  845. package/dist/interface/math/vec4/u32/zero.js.map +1 -1
  846. package/dist/interface/registry/archetypes.d.ts +25 -3
  847. package/dist/interface/registry/archetypes.js +40 -10
  848. package/dist/interface/registry/archetypes.js.map +1 -1
  849. package/dist/interface/registry/declarations.d.ts +7 -7
  850. package/dist/interface/registry/declarations.js +120 -10
  851. package/dist/interface/registry/declarations.js.map +1 -1
  852. package/dist/interface/registry/finalizer-order.js +3 -3
  853. package/dist/interface/registry/finalizer-order.js.map +1 -1
  854. package/dist/interface/registry/ids.d.ts +23 -0
  855. package/dist/interface/registry/ids.js +42 -0
  856. package/dist/interface/registry/ids.js.map +1 -1
  857. package/dist/interface/registry/index.d.ts +3 -3
  858. package/dist/interface/registry/index.js +3 -3
  859. package/dist/interface/registry/index.js.map +1 -1
  860. package/dist/interface/registry/indexes.js +2 -2
  861. package/dist/interface/registry/indexes.js.map +1 -1
  862. package/dist/interface/registry/items.d.ts +6 -11
  863. package/dist/interface/registry/items.js +14 -43
  864. package/dist/interface/registry/items.js.map +1 -1
  865. package/dist/interface/registry/layout.d.ts +3 -1
  866. package/dist/interface/registry/layout.js +7 -1
  867. package/dist/interface/registry/layout.js.map +1 -1
  868. package/dist/interface/registry/names.d.ts +13 -5
  869. package/dist/interface/registry/names.js +55 -38
  870. package/dist/interface/registry/names.js.map +1 -1
  871. package/dist/interface/registry/program.js.map +1 -1
  872. package/dist/interface/registry/reduction.js.map +1 -1
  873. package/dist/interface/registry/schedule.d.ts +5 -1
  874. package/dist/interface/registry/schedule.js +8 -13
  875. package/dist/interface/registry/schedule.js.map +1 -1
  876. package/dist/interface/registry/schemas.d.ts +9 -0
  877. package/dist/interface/registry/schemas.js +65 -0
  878. package/dist/interface/registry/schemas.js.map +1 -1
  879. package/dist/interface/registry/strata.js +1 -0
  880. package/dist/interface/registry/strata.js.map +1 -1
  881. package/dist/interface/registry/threads.js +3 -2
  882. package/dist/interface/registry/threads.js.map +1 -1
  883. package/dist/interface/registry/traits.js +2 -1
  884. package/dist/interface/registry/traits.js.map +1 -1
  885. package/dist/interface/registry/written.js +1 -0
  886. package/dist/interface/registry/written.js.map +1 -1
  887. package/dist/interface/resource/index.d.ts +0 -1
  888. package/dist/interface/resource/index.js +1 -1
  889. package/dist/interface/resource/index.js.map +1 -1
  890. package/dist/interface/resource/resource.js +1 -0
  891. package/dist/interface/resource/resource.js.map +1 -1
  892. package/dist/interface/resource/types.d.ts +4 -1
  893. package/dist/interface/resources/always.js +3 -2
  894. package/dist/interface/resources/always.js.map +1 -1
  895. package/dist/interface/resources/cadence.js +4 -3
  896. package/dist/interface/resources/cadence.js.map +1 -1
  897. package/dist/interface/resources/clock.js +5 -3
  898. package/dist/interface/resources/clock.js.map +1 -1
  899. package/dist/interface/resources/gpu-device.js +3 -2
  900. package/dist/interface/resources/gpu-device.js.map +1 -1
  901. package/dist/interface/resources/index.js +1 -0
  902. package/dist/interface/resources/index.js.map +1 -1
  903. package/dist/interface/resources/wake.js +3 -2
  904. package/dist/interface/resources/wake.js.map +1 -1
  905. package/dist/interface/resources/workers.js +3 -2
  906. package/dist/interface/resources/workers.js.map +1 -1
  907. package/dist/interface/rule/create.d.ts +6 -2
  908. package/dist/interface/rule/create.js +8 -6
  909. package/dist/interface/rule/create.js.map +1 -1
  910. package/dist/interface/rule/created.d.ts +3 -3
  911. package/dist/interface/rule/declaration.d.ts +8 -3
  912. package/dist/interface/rule/index.js +1 -0
  913. package/dist/interface/rule/index.js.map +1 -1
  914. package/dist/interface/rule/rule.js.map +1 -1
  915. package/dist/interface/schema/is-struct.d.ts +15 -0
  916. package/dist/interface/schema/schema.d.ts +21 -1
  917. package/dist/interface/system/access.d.ts +87 -26
  918. package/dist/interface/system/body.d.ts +53 -26
  919. package/dist/interface/system/check.d.ts +13 -3
  920. package/dist/interface/system/check.js +87 -47
  921. package/dist/interface/system/check.js.map +1 -1
  922. package/dist/interface/system/commands.d.ts +54 -5
  923. package/dist/interface/system/composite-declaration.d.ts +0 -2
  924. package/dist/interface/system/create-resolved.d.ts +9 -0
  925. package/dist/interface/system/create-resolved.js +18 -0
  926. package/dist/interface/system/create-resolved.js.map +1 -0
  927. package/dist/interface/system/create.d.ts +116 -110
  928. package/dist/interface/system/create.js +34 -8
  929. package/dist/interface/system/create.js.map +1 -1
  930. package/dist/interface/system/declaration.d.ts +33 -29
  931. package/dist/interface/system/index.js.map +1 -1
  932. package/dist/interface/system/input.d.ts +37 -6
  933. package/dist/interface/system/leaf.d.ts +10 -3
  934. package/dist/interface/system/name.d.ts +3 -3
  935. package/dist/interface/system/property.js +1 -0
  936. package/dist/interface/system/property.js.map +1 -1
  937. package/dist/interface/system/render.d.ts +35 -16
  938. package/dist/interface/system/render.js +19 -5
  939. package/dist/interface/system/render.js.map +1 -1
  940. package/dist/interface/system/resolve.d.ts +68 -0
  941. package/dist/interface/system/resolve.js +138 -0
  942. package/dist/interface/system/resolve.js.map +1 -0
  943. package/dist/interface/system/system.d.ts +5 -3
  944. package/dist/interface/system/system.js.map +1 -1
  945. package/dist/interface/system/threads.d.ts +8 -7
  946. package/dist/interface/system/values-of.d.ts +17 -0
  947. package/dist/interface/system/values-of.js.map +1 -0
  948. package/dist/interface/system/values.d.ts +12 -12
  949. package/dist/interface/thread/of.d.ts +4 -2
  950. package/dist/interface/trait/key.d.ts +1 -1
  951. package/dist/interface/trait/types.d.ts +23 -5
  952. package/dist/interface/world/create.d.ts +8 -2
  953. package/dist/interface/world/declarations.d.ts +37 -0
  954. package/dist/interface/world/declarations.js +2 -0
  955. package/dist/interface/world/declarations.js.map +1 -0
  956. package/dist/interface/world/filter.js +1 -0
  957. package/dist/interface/world/filter.js.map +1 -1
  958. package/dist/interface/world/join.d.ts +10 -4
  959. package/dist/interface/world/world.d.ts +31 -17
  960. package/package.json +18 -5
  961. package/src/exports.test.ts +149 -44
  962. package/src/guide/00-keys.md +34 -0
  963. package/src/guide/00-keys.out +1 -0
  964. package/src/guide/00-keys.ts +35 -0
  965. package/src/guide/00-setup.md +24 -0
  966. package/src/guide/01-resources.md +22 -0
  967. package/src/guide/01-resources.out +2 -0
  968. package/src/guide/01-resources.ts +33 -0
  969. package/src/guide/02-entities.md +19 -0
  970. package/src/guide/02-entities.out +2 -0
  971. package/src/guide/02-entities.ts +43 -0
  972. package/src/guide/03-systems.md +22 -0
  973. package/src/guide/03-systems.out +5 -0
  974. package/src/guide/03-systems.ts +68 -0
  975. package/src/guide/04-ticks.md +18 -0
  976. package/src/guide/04-ticks.out +3 -0
  977. package/src/guide/04-ticks.ts +53 -0
  978. package/src/guide/05-scheduling.md +14 -0
  979. package/src/guide/05-scheduling.out +2 -0
  980. package/src/guide/05-scheduling.ts +46 -0
  981. package/src/guide/06-sync-points.md +14 -0
  982. package/src/guide/06-sync-points.out +3 -0
  983. package/src/guide/06-sync-points.ts +42 -0
  984. package/src/guide/07-change-filters.md +14 -0
  985. package/src/guide/07-change-filters.out +6 -0
  986. package/src/guide/07-change-filters.ts +70 -0
  987. package/src/guide/08-input.md +12 -0
  988. package/src/guide/08-input.out +1 -0
  989. package/src/guide/08-input.ts +45 -0
  990. package/src/guide/09-rules.md +12 -0
  991. package/src/guide/09-rules.out +2 -0
  992. package/src/guide/09-rules.ts +50 -0
  993. package/src/guide/10-finalizers.md +13 -0
  994. package/src/guide/10-finalizers.out +4 -0
  995. package/src/guide/10-finalizers.ts +48 -0
  996. package/src/guide/11-traits.md +16 -0
  997. package/src/guide/11-traits.out +2 -0
  998. package/src/guide/11-traits.ts +51 -0
  999. package/src/guide/11-traits.type-test.ts +11 -13
  1000. package/src/guide/12-lookups.md +14 -0
  1001. package/src/guide/12-lookups.out +3 -0
  1002. package/src/guide/12-lookups.ts +59 -0
  1003. package/src/guide/13-indexes.md +21 -0
  1004. package/src/guide/13-indexes.out +8 -0
  1005. package/src/guide/13-indexes.ts +73 -0
  1006. package/src/guide/14-kernels.md +15 -0
  1007. package/src/guide/14-kernels.out +1 -0
  1008. package/src/guide/14-kernels.ts +48 -0
  1009. package/src/guide/15-reductions.md +12 -0
  1010. package/src/guide/15-reductions.out +1 -0
  1011. package/src/guide/15-reductions.ts +38 -0
  1012. package/src/guide/16-gpu.md +18 -0
  1013. package/src/guide/16-gpu.out +3 -0
  1014. package/src/guide/16-gpu.ts +51 -0
  1015. package/src/guide/17-hierarchies.md +11 -0
  1016. package/src/guide/17-hierarchies.out +1 -0
  1017. package/src/guide/17-hierarchies.ts +40 -0
  1018. package/src/guide/18-identity.md +10 -0
  1019. package/src/guide/18-identity.out +1 -0
  1020. package/src/guide/18-identity.ts +11 -0
  1021. package/src/guide/19-threads.md +16 -0
  1022. package/src/guide/19-threads.out +2 -0
  1023. package/src/guide/19-threads.ts +65 -0
  1024. package/src/guide/20-shared.md +29 -0
  1025. package/src/guide/20-shared.out +4 -0
  1026. package/src/guide/20-shared.ts +118 -0
  1027. package/src/guide/21-dom.md +22 -0
  1028. package/src/guide/21-dom.out +5 -0
  1029. package/src/guide/21-dom.ts +117 -0
  1030. package/src/guide/22-canvas.md +15 -0
  1031. package/src/guide/22-canvas.out +3 -0
  1032. package/src/guide/22-canvas.ts +119 -0
  1033. package/src/guide/CLAUDE.md +40 -25
  1034. package/src/guide/README.md +42 -0
  1035. package/src/guide/guide.test.ts +215 -0
  1036. package/src/implementation/compiler/access.ts +10 -4
  1037. package/src/implementation/compiler/archetypes.test.ts +64 -0
  1038. package/src/implementation/compiler/archetypes.ts +134 -0
  1039. package/src/implementation/compiler/assign.ts +1 -0
  1040. package/src/implementation/compiler/augmentations.test.ts +418 -0
  1041. package/src/implementation/compiler/augmentations.ts +871 -0
  1042. package/src/implementation/compiler/bind.ts +6 -4
  1043. package/src/implementation/compiler/body-access.ts +135 -33
  1044. package/src/implementation/compiler/booleans.ts +1 -0
  1045. package/src/implementation/compiler/branches.ts +1 -0
  1046. package/src/implementation/compiler/calls.ts +14 -3
  1047. package/src/implementation/compiler/columns.ts +21 -5
  1048. package/src/implementation/compiler/compile-kernel.ts +88 -23
  1049. package/src/implementation/compiler/compiler.ts +9 -0
  1050. package/src/implementation/compiler/data.ts +1 -0
  1051. package/src/implementation/compiler/describe.test-helper.ts +97 -0
  1052. package/src/implementation/compiler/describe.test.ts +168 -0
  1053. package/src/implementation/compiler/describe.ts +489 -0
  1054. package/src/implementation/compiler/estree.ts +1 -0
  1055. package/src/implementation/compiler/expression.ts +24 -2
  1056. package/src/implementation/compiler/failure.ts +1 -0
  1057. package/src/implementation/compiler/hygiene.test.ts +4 -11
  1058. package/src/implementation/compiler/identify.test.ts +100 -46
  1059. package/src/implementation/compiler/identify.ts +89 -32
  1060. package/src/implementation/compiler/index.ts +6 -1
  1061. package/src/implementation/compiler/inferred.test.ts +32 -0
  1062. package/src/implementation/compiler/inferred.ts +197 -0
  1063. package/src/implementation/compiler/inline-kernels.test.ts +10 -0
  1064. package/src/implementation/compiler/inline-kernels.ts +21 -0
  1065. package/src/implementation/compiler/input-schemas.test.ts +182 -0
  1066. package/src/implementation/compiler/input-schemas.ts +107 -0
  1067. package/src/implementation/compiler/ir.ts +7 -2
  1068. package/src/implementation/compiler/kernel-id.ts +1 -0
  1069. package/src/implementation/compiler/key.ts +1 -0
  1070. package/src/implementation/compiler/link.test.ts +3 -0
  1071. package/src/implementation/compiler/link.ts +29 -0
  1072. package/src/implementation/compiler/lists.ts +41 -13
  1073. package/src/implementation/compiler/lookups.ts +1 -0
  1074. package/src/implementation/compiler/math.ts +1 -0
  1075. package/src/implementation/compiler/memory-compiler.browser.test.ts +85 -0
  1076. package/src/implementation/compiler/memory-compiler.test.ts +147 -0
  1077. package/src/implementation/compiler/memory-compiler.ts +307 -0
  1078. package/src/implementation/compiler/module-scope.ts +1 -0
  1079. package/src/implementation/compiler/module-value.ts +18 -3
  1080. package/src/implementation/compiler/out.ts +1 -0
  1081. package/src/implementation/compiler/oxc.test-helper.ts +20 -0
  1082. package/src/implementation/compiler/oxc.test.ts +69 -0
  1083. package/src/implementation/compiler/oxc.ts +90 -0
  1084. package/src/implementation/compiler/package-copies.ts +208 -0
  1085. package/src/implementation/compiler/passes.ts +34 -0
  1086. package/src/implementation/compiler/paths.ts +19 -38
  1087. package/src/implementation/compiler/plugin.test.ts +373 -62
  1088. package/src/implementation/compiler/plugin.ts +199 -38
  1089. package/src/implementation/compiler/posix.test.ts +34 -0
  1090. package/src/implementation/compiler/posix.ts +183 -0
  1091. package/src/implementation/compiler/predicates.test.ts +90 -0
  1092. package/src/implementation/compiler/predicates.ts +250 -0
  1093. package/src/implementation/compiler/print.ts +26 -6
  1094. package/src/implementation/compiler/program.ts +4 -1
  1095. package/src/implementation/compiler/public.ts +2 -0
  1096. package/src/implementation/compiler/scalar.ts +1 -0
  1097. package/src/implementation/compiler/scope.ts +1 -0
  1098. package/src/implementation/compiler/serialize.ts +1 -0
  1099. package/src/implementation/compiler/shared-kernels.test.ts +57 -0
  1100. package/src/implementation/compiler/signature.ts +70 -30
  1101. package/src/implementation/compiler/snapshot.ts +5 -2
  1102. package/src/implementation/compiler/source-map.test.ts +1 -0
  1103. package/src/implementation/compiler/source-map.ts +1 -0
  1104. package/src/implementation/compiler/spawns.ts +62 -5
  1105. package/src/implementation/compiler/stamps.ts +30 -8
  1106. package/src/implementation/compiler/statement.ts +1 -0
  1107. package/src/implementation/compiler/subset.md +4 -3
  1108. package/src/implementation/compiler/terminal.ts +1 -0
  1109. package/src/implementation/compiler/transform.test.ts +371 -258
  1110. package/src/implementation/compiler/transform.ts +321 -62
  1111. package/src/implementation/compiler/type-host.test-helper.ts +27 -0
  1112. package/src/implementation/compiler/type-schemas.ts +714 -0
  1113. package/src/implementation/compiler/unit.ts +22 -4
  1114. package/src/implementation/compiler/value.ts +1 -0
  1115. package/src/implementation/compiler/wat.test.ts +135 -0
  1116. package/src/implementation/compiler/wat.ts +365 -0
  1117. package/src/implementation/index.ts +1 -0
  1118. package/src/implementation/world/activate.ts +10 -3
  1119. package/src/implementation/world/archetype.ts +133 -19
  1120. package/src/implementation/world/arrays.test.ts +1 -0
  1121. package/src/implementation/world/arrays.ts +6 -1
  1122. package/src/implementation/world/arrivals.test.ts +89 -0
  1123. package/src/implementation/world/arrivals.ts +165 -0
  1124. package/src/implementation/world/async-loading.test.ts +13 -28
  1125. package/src/implementation/world/attach-kernel.test.ts +10 -2
  1126. package/src/implementation/world/attach-kernel.ts +14 -7
  1127. package/src/implementation/world/batches.test.ts +14 -17
  1128. package/src/implementation/world/batches.ts +67 -8
  1129. package/src/implementation/world/buffer.ts +35 -4
  1130. package/src/implementation/world/builtins.test.ts +5 -10
  1131. package/src/implementation/world/cascade.ts +2 -1
  1132. package/src/implementation/world/cells.ts +1 -0
  1133. package/src/implementation/world/change-blocks.browser.test.ts +76 -0
  1134. package/src/implementation/world/change-blocks.cases.ts +14 -0
  1135. package/src/implementation/world/change-blocks.fixture.ts +70 -0
  1136. package/src/implementation/world/change-blocks.test.ts +264 -0
  1137. package/src/implementation/world/changes-finalizers.test.ts +6 -8
  1138. package/src/implementation/world/check-kernel.ts +46 -32
  1139. package/src/implementation/world/claims.test.ts +1 -0
  1140. package/src/implementation/world/claims.ts +1 -0
  1141. package/src/implementation/world/closure.test.ts +1 -0
  1142. package/src/implementation/world/closure.ts +1 -0
  1143. package/src/implementation/world/command-ring.ts +2 -1
  1144. package/src/implementation/world/command-rings.cases.ts +5 -2
  1145. package/src/implementation/world/command-rings.fixture.ts +27 -36
  1146. package/src/implementation/world/commands.test.ts +84 -43
  1147. package/src/implementation/world/commands.ts +26 -4
  1148. package/src/implementation/world/composite-input.test.ts +17 -15
  1149. package/src/implementation/world/conditions.test.ts +17 -28
  1150. package/src/implementation/world/constant-unions.test.ts +43 -0
  1151. package/src/implementation/world/create.test.ts +50 -71
  1152. package/src/implementation/world/create.ts +486 -250
  1153. package/src/implementation/world/defaults.test.ts +86 -0
  1154. package/src/implementation/world/directories.ts +2 -1
  1155. package/src/implementation/world/directory.test.ts +2 -3
  1156. package/src/implementation/world/dispatch.cases.ts +1 -0
  1157. package/src/implementation/world/dispatch.fixture.ts +16 -25
  1158. package/src/implementation/world/entities.ts +1 -0
  1159. package/src/implementation/world/entity-lookup-workers.cases.ts +1 -0
  1160. package/src/implementation/world/entity-lookup-workers.fixture.ts +9 -16
  1161. package/src/implementation/world/entity-lookups.browser.test.ts +8 -14
  1162. package/src/implementation/world/entity-lookups.test-helper.ts +28 -34
  1163. package/src/implementation/world/entity-lookups.test.ts +9 -16
  1164. package/src/implementation/world/execute.ts +232 -96
  1165. package/src/implementation/world/failing-worker.fixture.ts +3 -0
  1166. package/src/implementation/world/failures.ts +64 -7
  1167. package/src/implementation/world/finalizers.test.ts +33 -49
  1168. package/src/implementation/world/finalizers.ts +46 -14
  1169. package/src/implementation/world/fixtures.test-helper.ts +1 -0
  1170. package/src/implementation/world/generated-code.md +10 -6
  1171. package/src/implementation/world/gpu.browser.test.ts +100 -92
  1172. package/src/implementation/world/gpu.test-helper.ts +12 -0
  1173. package/src/implementation/world/gpu.ts +26 -14
  1174. package/src/implementation/world/holders.ts +1 -0
  1175. package/src/implementation/world/ids-changes.test-helper.ts +4 -0
  1176. package/src/implementation/world/ids-keys.test-helper.ts +21 -0
  1177. package/src/implementation/world/ids.test.ts +12 -49
  1178. package/src/implementation/world/imported-lists.test-helper.ts +2 -6
  1179. package/src/implementation/world/imported-lists.test.ts +4 -5
  1180. package/src/implementation/world/index-buckets.test.ts +276 -0
  1181. package/src/implementation/world/index-build-csp.test.ts +8 -9
  1182. package/src/implementation/world/index-build.cases.ts +1 -0
  1183. package/src/implementation/world/index-build.fixture.ts +12 -15
  1184. package/src/implementation/world/index-build.ts +1 -0
  1185. package/src/implementation/world/index-changed.test.ts +27 -34
  1186. package/src/implementation/world/index-hash.test.ts +34 -0
  1187. package/src/implementation/world/index-hash.ts +454 -74
  1188. package/src/implementation/world/index-joined.test.ts +232 -74
  1189. package/src/implementation/world/index-kernels.test.ts +26 -35
  1190. package/src/implementation/world/index-keyless.test.ts +21 -28
  1191. package/src/implementation/world/index-keys.ts +1 -0
  1192. package/src/implementation/world/index-lookups-csp.test.ts +5 -6
  1193. package/src/implementation/world/index-lookups.ts +28 -22
  1194. package/src/implementation/world/index-order.test.ts +13 -17
  1195. package/src/implementation/world/index-order.ts +1 -0
  1196. package/src/implementation/world/index-readers.ts +1 -0
  1197. package/src/implementation/world/index-sorted.test.ts +1 -0
  1198. package/src/implementation/world/index-sorted.ts +10 -5
  1199. package/src/implementation/world/index-workers.cases.ts +10 -0
  1200. package/src/implementation/world/index-workers.fixture.ts +98 -39
  1201. package/src/implementation/world/indexes.test.ts +62 -74
  1202. package/src/implementation/world/indexes.ts +62 -108
  1203. package/src/implementation/world/input.ts +2 -1
  1204. package/src/implementation/world/intrinsics-coverage.test.ts +1 -0
  1205. package/src/implementation/world/intrinsics.browser.test.ts +22 -62
  1206. package/src/implementation/world/intrinsics.ts +1 -0
  1207. package/src/implementation/world/join.test.ts +182 -43
  1208. package/src/implementation/world/join.ts +112 -59
  1209. package/src/implementation/world/join.type-test.ts +7 -5
  1210. package/src/implementation/world/joined-observer.test.ts +58 -0
  1211. package/src/implementation/world/joined-observer.ts +85 -19
  1212. package/src/implementation/world/joining-worker.fixture.ts +51 -11
  1213. package/src/implementation/world/joining.cases.ts +43 -7
  1214. package/src/implementation/world/joining.fixture.ts +114 -14
  1215. package/src/implementation/world/joining.test-helper.ts +25 -27
  1216. package/src/implementation/world/joining.ts +85 -7
  1217. package/src/implementation/world/journal.ts +8 -4
  1218. package/src/implementation/world/kernel-imports-sparks.test-helper.ts +3 -4
  1219. package/src/implementation/world/kernel-imports-steer.test-helper.ts +1 -0
  1220. package/src/implementation/world/kernel-imports.test.ts +10 -12
  1221. package/src/implementation/world/kernel-indexes.ts +12 -3
  1222. package/src/implementation/world/kernel-lookup.test-helper.ts +6 -10
  1223. package/src/implementation/world/kernel-path.test-helper.ts +2 -4
  1224. package/src/implementation/world/kernel-spawns.test.ts +17 -28
  1225. package/src/implementation/world/kernel-tried.test-helper.ts +31 -0
  1226. package/src/implementation/world/kernel.ts +30 -6
  1227. package/src/implementation/world/kernels-csp.test.ts +5 -5
  1228. package/src/implementation/world/kernels.test.ts +18 -14
  1229. package/src/implementation/world/kernels.ts +82 -13
  1230. package/src/implementation/world/layout-directory.browser.test.ts +18 -28
  1231. package/src/implementation/world/layout-directory.cases.ts +1 -0
  1232. package/src/implementation/world/layout-directory.fixture.ts +18 -28
  1233. package/src/implementation/world/layout-directory.ts +69 -17
  1234. package/src/implementation/world/lifetime.cases.ts +2 -1
  1235. package/src/implementation/world/lifetime.fixture.ts +12 -21
  1236. package/src/implementation/world/lifetime.test-helper.ts +2 -1
  1237. package/src/implementation/world/lifetime.test.ts +7 -14
  1238. package/src/implementation/world/lists.ts +179 -28
  1239. package/src/implementation/world/lookup-keys.ts +10 -9
  1240. package/src/implementation/world/loop.test.ts +19 -8
  1241. package/src/implementation/world/loop.ts +4 -4
  1242. package/src/implementation/world/memory.test.ts +1 -0
  1243. package/src/implementation/world/memory.ts +1 -0
  1244. package/src/implementation/world/mirror.ts +45 -10
  1245. package/src/implementation/world/move-log.test.ts +114 -11
  1246. package/src/implementation/world/move-log.ts +1 -0
  1247. package/src/implementation/world/names.test.ts +31 -31
  1248. package/src/implementation/world/observe-cases.browser.test.ts +11 -11
  1249. package/src/implementation/world/observe-cases.test.ts +49 -95
  1250. package/src/implementation/world/observe-factories.test.ts +17 -19
  1251. package/src/implementation/world/observe-joined-cases.test.ts +34 -45
  1252. package/src/implementation/world/observe-ticks-cases.test.ts +33 -35
  1253. package/src/implementation/world/observe.test-helper.ts +2 -1
  1254. package/src/implementation/world/observed-workers.cases.ts +1 -0
  1255. package/src/implementation/world/observed-workers.fixture.ts +7 -8
  1256. package/src/implementation/world/observer-contained-worker.fixture.ts +4 -3
  1257. package/src/implementation/world/observer-contained.browser.test.ts +1 -0
  1258. package/src/implementation/world/observer-contained.cases.ts +1 -0
  1259. package/src/implementation/world/observer-contained.fixture.ts +3 -7
  1260. package/src/implementation/world/observer-contained.test-helper.ts +7 -8
  1261. package/src/implementation/world/observer-contained.test.ts +11 -19
  1262. package/src/implementation/world/observer-joined-worker.fixture.ts +2 -1
  1263. package/src/implementation/world/observer-joined.cases.ts +1 -0
  1264. package/src/implementation/world/observer-joined.fixture.ts +8 -6
  1265. package/src/implementation/world/observer-joined.test-helper.ts +25 -34
  1266. package/src/implementation/world/observer-joined.test.ts +78 -62
  1267. package/src/implementation/world/observer.browser.test.ts +13 -13
  1268. package/src/implementation/world/observer.test.ts +34 -44
  1269. package/src/implementation/world/observer.ts +3 -3
  1270. package/src/implementation/world/optional-workers.cases.ts +19 -0
  1271. package/src/implementation/world/optional-workers.fixture.ts +55 -0
  1272. package/src/implementation/world/optional.test.ts +351 -0
  1273. package/src/implementation/world/order.ts +1 -0
  1274. package/src/implementation/world/out-of-band.ts +61 -0
  1275. package/src/implementation/world/outcomes.test-helper.ts +138 -0
  1276. package/src/implementation/world/package-id.test-helper.ts +9 -0
  1277. package/src/implementation/world/perf.md +124 -4
  1278. package/src/implementation/world/plan.ts +1 -0
  1279. package/src/implementation/world/platforms.test-helper.ts +1 -0
  1280. package/src/implementation/world/pool-size.cases.ts +18 -0
  1281. package/src/implementation/world/pool-size.fixture.ts +98 -6
  1282. package/src/implementation/world/pool.cases.ts +1 -0
  1283. package/src/implementation/world/pool.fixture.ts +1 -0
  1284. package/src/implementation/world/pool.ts +1 -0
  1285. package/src/implementation/world/port.test.ts +45 -0
  1286. package/src/implementation/world/port.ts +18 -11
  1287. package/src/implementation/world/ports.cases.ts +2 -2
  1288. package/src/implementation/world/ports.fixture.ts +4 -5
  1289. package/src/implementation/world/ports.type-test.ts +1 -0
  1290. package/src/implementation/world/precision.test.ts +174 -0
  1291. package/src/implementation/world/prepared-lookup.ts +1 -0
  1292. package/src/implementation/world/prepared-spawn.ts +14 -10
  1293. package/src/implementation/world/program.ts +1 -0
  1294. package/src/implementation/world/protocol.ts +9 -2
  1295. package/src/implementation/world/publish.ts +1 -0
  1296. package/src/implementation/world/ranges.test.ts +66 -0
  1297. package/src/implementation/world/ranges.ts +98 -32
  1298. package/src/implementation/world/reads.test-helper.ts +1 -0
  1299. package/src/implementation/world/reclaim.test.ts +214 -0
  1300. package/src/implementation/world/reclaim.ts +170 -0
  1301. package/src/implementation/world/reductions.cases.ts +1 -0
  1302. package/src/implementation/world/reductions.fixture.ts +5 -10
  1303. package/src/implementation/world/reductions.test.ts +36 -49
  1304. package/src/implementation/world/reductions.ts +14 -12
  1305. package/src/implementation/world/reevaluation.test-helper.ts +3 -3
  1306. package/src/implementation/world/reevaluation.test.ts +9 -8
  1307. package/src/implementation/world/register.ts +3 -2
  1308. package/src/implementation/world/remote-finalizers-worker.fixture.ts +25 -10
  1309. package/src/implementation/world/remote-finalizers.cases.ts +19 -1
  1310. package/src/implementation/world/remote-finalizers.fixture.ts +86 -11
  1311. package/src/implementation/world/remote-finalizers.test-helper.ts +119 -27
  1312. package/src/implementation/world/remote-finalizers.test.ts +86 -20
  1313. package/src/implementation/world/remote-objects-worker.fixture.ts +2 -1
  1314. package/src/implementation/world/remote-objects.cases.ts +1 -0
  1315. package/src/implementation/world/remote-objects.fixture.ts +3 -1
  1316. package/src/implementation/world/remote-objects.test-helper.ts +9 -10
  1317. package/src/implementation/world/remote-systems.ts +42 -28
  1318. package/src/implementation/world/remote.test.ts +46 -48
  1319. package/src/implementation/world/remote.ts +1 -0
  1320. package/src/implementation/world/removal-worker.fixture.ts +3 -2
  1321. package/src/implementation/world/removal.cases.ts +1 -0
  1322. package/src/implementation/world/removal.fixture.ts +3 -2
  1323. package/src/implementation/world/remove-joined.test.ts +4 -3
  1324. package/src/implementation/world/remove.test-helper.ts +11 -13
  1325. package/src/implementation/world/remove.test.ts +14 -17
  1326. package/src/implementation/world/render-order.browser.test.ts +209 -0
  1327. package/src/implementation/world/render-order.ts +150 -0
  1328. package/src/implementation/world/required.ts +10 -0
  1329. package/src/implementation/world/resources.ts +7 -3
  1330. package/src/implementation/world/rows.test.ts +8 -11
  1331. package/src/implementation/world/rows.ts +99 -30
  1332. package/src/implementation/world/rules.test.ts +38 -39
  1333. package/src/implementation/world/run-results.test.ts +374 -0
  1334. package/src/implementation/world/runner.ts +379 -73
  1335. package/src/implementation/world/schedule.test.ts +65 -67
  1336. package/src/implementation/world/semantics.test.ts +11 -16
  1337. package/src/implementation/world/share.test.ts +4 -3
  1338. package/src/implementation/world/shared-gpu.browser.test.ts +109 -0
  1339. package/src/implementation/world/shared-kernels.test.ts +117 -0
  1340. package/src/implementation/world/shared-workers.cases.ts +20 -0
  1341. package/src/implementation/world/shared-workers.fixture.ts +74 -0
  1342. package/src/implementation/world/shared.test.ts +348 -0
  1343. package/src/implementation/world/shared.ts +316 -0
  1344. package/src/implementation/world/sharing.ts +96 -32
  1345. package/src/implementation/world/staging.ts +53 -10
  1346. package/src/implementation/world/state.ts +180 -23
  1347. package/src/implementation/world/stop-lists.ts +78 -9
  1348. package/src/implementation/world/strings.test.ts +23 -34
  1349. package/src/implementation/world/strings.ts +1 -0
  1350. package/src/implementation/world/structure.ts +6 -2
  1351. package/src/implementation/world/synchronize.test.ts +1 -0
  1352. package/src/implementation/world/synchronize.ts +60 -17
  1353. package/src/implementation/world/tail-blocks.ts +9 -4
  1354. package/src/implementation/world/tails-worker.fixture.ts +9 -13
  1355. package/src/implementation/world/tails.cases.ts +3 -2
  1356. package/src/implementation/world/tails.fixture.ts +5 -2
  1357. package/src/implementation/world/tails.test-helper.ts +48 -41
  1358. package/src/implementation/world/tails.test.ts +24 -29
  1359. package/src/implementation/world/tails.ts +35 -22
  1360. package/src/implementation/world/target.test.ts +10 -13
  1361. package/src/implementation/world/terminal.ts +1 -0
  1362. package/src/implementation/world/thread-directory.ts +85 -16
  1363. package/src/implementation/world/thread-finalizers.ts +128 -22
  1364. package/src/implementation/world/thread-indexes.ts +5 -3
  1365. package/src/implementation/world/thread-observer.ts +60 -13
  1366. package/src/implementation/world/thread-systems-worker.fixture.ts +5 -6
  1367. package/src/implementation/world/thread-systems.cases.ts +15 -2
  1368. package/src/implementation/world/thread-systems.fixture.ts +41 -12
  1369. package/src/implementation/world/thread-systems.test-helper.ts +57 -52
  1370. package/src/implementation/world/thread-systems.test.ts +51 -26
  1371. package/src/implementation/world/thread-systems.ts +398 -84
  1372. package/src/implementation/world/thread-tasks.ts +9 -4
  1373. package/src/implementation/world/threads.browser.test.ts +5 -0
  1374. package/src/implementation/world/threads.test.ts +10 -0
  1375. package/src/implementation/world/ticks.browser.test.ts +3 -4
  1376. package/src/implementation/world/ticks.test.ts +5 -5
  1377. package/src/implementation/world/traits.test.ts +4 -8
  1378. package/src/implementation/world/transfers-worker.fixture.ts +17 -12
  1379. package/src/implementation/world/transfers.cases.ts +1 -0
  1380. package/src/implementation/world/transfers.fixture.ts +18 -25
  1381. package/src/implementation/world/transfers.test-helper.ts +18 -28
  1382. package/src/implementation/world/transfers.test.ts +19 -23
  1383. package/src/implementation/world/transfers.ts +1 -0
  1384. package/src/implementation/world/unidentified-finalizers.test.ts +58 -0
  1385. package/src/implementation/world/up-tree.test.ts +181 -21
  1386. package/src/implementation/world/up-workers.cases.ts +1 -0
  1387. package/src/implementation/world/up-workers.fixture.ts +6 -10
  1388. package/src/implementation/world/up.browser.test.ts +9 -12
  1389. package/src/implementation/world/up.test.ts +56 -42
  1390. package/src/implementation/world/up.ts +299 -71
  1391. package/src/implementation/world/wasm-kernels.test.ts +55 -49
  1392. package/src/implementation/world/wasm.test.ts +200 -22
  1393. package/src/implementation/world/wasm.ts +399 -127
  1394. package/src/implementation/world/wgsl.test.ts +1 -0
  1395. package/src/implementation/world/wgsl.ts +22 -5
  1396. package/src/implementation/world/where.test.ts +342 -0
  1397. package/src/implementation/world/where.ts +236 -0
  1398. package/src/implementation/world/worker-platform.ts +1 -0
  1399. package/src/implementation/world/worker-window.test.ts +43 -0
  1400. package/src/implementation/world/worker-window.ts +43 -0
  1401. package/src/implementation/world/worker.ts +47 -59
  1402. package/src/implementation/world/workers-follow.test.ts +51 -0
  1403. package/src/implementation/world/workers.cases.ts +1 -0
  1404. package/src/implementation/world/workers.fixture.ts +31 -54
  1405. package/src/implementation/world/world-host.fixture.ts +1 -0
  1406. package/src/index.ts +5 -0
  1407. package/src/interface/CLAUDE.md +1 -1
  1408. package/src/interface/component/component.ts +1 -0
  1409. package/src/interface/component/index.ts +1 -1
  1410. package/src/interface/component/key.ts +1 -0
  1411. package/src/interface/component/key.type-test.ts +1 -2
  1412. package/src/interface/component/register.test.ts +27 -34
  1413. package/src/interface/component/types.ts +3 -2
  1414. package/src/interface/component/value.ts +9 -2
  1415. package/src/interface/component/values.ts +1 -0
  1416. package/src/interface/entity/entity.ts +1 -0
  1417. package/src/interface/entity/index.ts +4 -0
  1418. package/src/interface/finalizer/body.ts +12 -11
  1419. package/src/interface/finalizer/create.test.ts +67 -72
  1420. package/src/interface/finalizer/create.ts +52 -22
  1421. package/src/interface/finalizer/created.ts +6 -5
  1422. package/src/interface/finalizer/declaration.ts +28 -9
  1423. package/src/interface/finalizer/finalizer.ts +3 -2
  1424. package/src/interface/finalizer/index.ts +1 -0
  1425. package/src/interface/gpu/accessors.ts +26 -8
  1426. package/src/interface/gpu/gpu.ts +1 -0
  1427. package/src/interface/gpu/gpu.type-test.ts +2 -2
  1428. package/src/interface/gpu/index.ts +1 -0
  1429. package/src/interface/gpu/layout.ts +1 -0
  1430. package/src/interface/gpu/record.ts +1 -0
  1431. package/src/interface/gpu/wgsl.ts +9 -6
  1432. package/src/interface/index.ts +1 -3
  1433. package/src/interface/index.type-test.ts +11 -14
  1434. package/src/interface/indexes/create.test.ts +44 -43
  1435. package/src/interface/indexes/create.ts +24 -16
  1436. package/src/interface/indexes/created.ts +3 -2
  1437. package/src/interface/indexes/declaration.ts +7 -3
  1438. package/src/interface/indexes/index-type.ts +4 -3
  1439. package/src/interface/indexes/index.ts +1 -0
  1440. package/src/interface/indexes/index.type-test.ts +45 -94
  1441. package/src/interface/math/f32/default.ts +6 -0
  1442. package/src/interface/math/f32/index.ts +5 -1
  1443. package/src/interface/math/f32/public.ts +2 -0
  1444. package/src/interface/math/f32/round-half-even.ts +1 -0
  1445. package/src/interface/math/f32/schema.ts +1 -0
  1446. package/src/interface/math/i32/default.ts +6 -0
  1447. package/src/interface/math/i32/index.ts +5 -1
  1448. package/src/interface/math/i32/public.ts +2 -0
  1449. package/src/interface/math/i32/schema.ts +1 -0
  1450. package/src/interface/math/i32/shift-right.ts +1 -0
  1451. package/src/interface/math/index.ts +1 -0
  1452. package/src/interface/math/intrinsic.ts +1 -0
  1453. package/src/interface/math/mat4x4/add.ts +1 -0
  1454. package/src/interface/math/mat4x4/determinant.ts +1 -0
  1455. package/src/interface/math/mat4x4/identity.ts +1 -0
  1456. package/src/interface/math/mat4x4/index.ts +4 -1
  1457. package/src/interface/math/mat4x4/inverse.ts +1 -0
  1458. package/src/interface/math/mat4x4/look-at.test.ts +1 -0
  1459. package/src/interface/math/mat4x4/look-at.ts +1 -0
  1460. package/src/interface/math/mat4x4/multiply-vec3.ts +1 -0
  1461. package/src/interface/math/mat4x4/multiply-vec4.ts +1 -0
  1462. package/src/interface/math/mat4x4/multiply.ts +1 -0
  1463. package/src/interface/math/mat4x4/orthographic.ts +1 -0
  1464. package/src/interface/math/mat4x4/perspective.ts +1 -0
  1465. package/src/interface/math/mat4x4/public.ts +2 -0
  1466. package/src/interface/math/mat4x4/rotation-x.ts +1 -0
  1467. package/src/interface/math/mat4x4/rotation-y.ts +1 -0
  1468. package/src/interface/math/mat4x4/rotation-z.ts +1 -0
  1469. package/src/interface/math/mat4x4/rotation.test.ts +1 -0
  1470. package/src/interface/math/mat4x4/scale.ts +1 -0
  1471. package/src/interface/math/mat4x4/scaling.ts +1 -0
  1472. package/src/interface/math/mat4x4/schema.ts +1 -0
  1473. package/src/interface/math/mat4x4/subtract.ts +1 -0
  1474. package/src/interface/math/mat4x4/translation.ts +1 -0
  1475. package/src/interface/math/mat4x4/transpose.ts +1 -0
  1476. package/src/interface/math/mat4x4/zero.ts +1 -0
  1477. package/src/interface/math/math.type-test.ts +24 -1
  1478. package/src/interface/math/quat/add.ts +1 -0
  1479. package/src/interface/math/quat/align-to.ts +1 -0
  1480. package/src/interface/math/quat/conjugate.ts +1 -0
  1481. package/src/interface/math/quat/distance.ts +1 -0
  1482. package/src/interface/math/quat/dot.ts +1 -0
  1483. package/src/interface/math/quat/from-axis-angle.ts +1 -0
  1484. package/src/interface/math/quat/from-euler.ts +1 -0
  1485. package/src/interface/math/quat/identity.ts +1 -0
  1486. package/src/interface/math/quat/index.ts +5 -1
  1487. package/src/interface/math/quat/inverse.ts +1 -0
  1488. package/src/interface/math/quat/length-squared.ts +1 -0
  1489. package/src/interface/math/quat/length.ts +1 -0
  1490. package/src/interface/math/quat/lerp.ts +1 -0
  1491. package/src/interface/math/quat/look-at.ts +1 -0
  1492. package/src/interface/math/quat/multiply.ts +1 -0
  1493. package/src/interface/math/quat/negate.ts +1 -0
  1494. package/src/interface/math/quat/normalize.ts +1 -0
  1495. package/src/interface/math/quat/public.ts +2 -0
  1496. package/src/interface/math/quat/rotate-vec3.ts +1 -0
  1497. package/src/interface/math/quat/scale.ts +1 -0
  1498. package/src/interface/math/quat/schema.ts +1 -0
  1499. package/src/interface/math/quat/slerp.ts +1 -0
  1500. package/src/interface/math/quat/subtract.ts +1 -0
  1501. package/src/interface/math/quat/to-axis-angle.ts +1 -0
  1502. package/src/interface/math/quat/to-euler.ts +1 -0
  1503. package/src/interface/math/quat/to-mat4.ts +1 -0
  1504. package/src/interface/math/semantics.test.ts +1 -0
  1505. package/src/interface/math/u32/count-leading-zeros.ts +1 -0
  1506. package/src/interface/math/u32/count-one-bits.ts +1 -0
  1507. package/src/interface/math/u32/count-trailing-zeros.ts +1 -0
  1508. package/src/interface/math/u32/default.ts +6 -0
  1509. package/src/interface/math/u32/index.ts +5 -1
  1510. package/src/interface/math/u32/public.ts +2 -0
  1511. package/src/interface/math/u32/reverse-bits.ts +1 -0
  1512. package/src/interface/math/u32/schema.ts +1 -0
  1513. package/src/interface/math/u32/shift-right.ts +1 -0
  1514. package/src/interface/math/vec2/f32/abs.ts +1 -0
  1515. package/src/interface/math/vec2/f32/acos.ts +1 -0
  1516. package/src/interface/math/vec2/f32/acosh.ts +1 -0
  1517. package/src/interface/math/vec2/f32/add.ts +1 -0
  1518. package/src/interface/math/vec2/f32/asin.ts +1 -0
  1519. package/src/interface/math/vec2/f32/asinh.ts +1 -0
  1520. package/src/interface/math/vec2/f32/atan.ts +1 -0
  1521. package/src/interface/math/vec2/f32/atanh.ts +1 -0
  1522. package/src/interface/math/vec2/f32/ceil.ts +1 -0
  1523. package/src/interface/math/vec2/f32/clamp.ts +1 -0
  1524. package/src/interface/math/vec2/f32/cos.ts +1 -0
  1525. package/src/interface/math/vec2/f32/cosh.ts +1 -0
  1526. package/src/interface/math/vec2/f32/distance.ts +1 -0
  1527. package/src/interface/math/vec2/f32/dot.ts +1 -0
  1528. package/src/interface/math/vec2/f32/equals.ts +1 -0
  1529. package/src/interface/math/vec2/f32/exp.ts +1 -0
  1530. package/src/interface/math/vec2/f32/exp2.ts +1 -0
  1531. package/src/interface/math/vec2/f32/f32.ts +5 -1
  1532. package/src/interface/math/vec2/f32/faceforward.ts +1 -0
  1533. package/src/interface/math/vec2/f32/floor.ts +1 -0
  1534. package/src/interface/math/vec2/f32/fract.ts +1 -0
  1535. package/src/interface/math/vec2/f32/length.ts +1 -0
  1536. package/src/interface/math/vec2/f32/log.ts +1 -0
  1537. package/src/interface/math/vec2/f32/log2.ts +1 -0
  1538. package/src/interface/math/vec2/f32/max.ts +1 -0
  1539. package/src/interface/math/vec2/f32/min.ts +1 -0
  1540. package/src/interface/math/vec2/f32/mix.ts +1 -0
  1541. package/src/interface/math/vec2/f32/mod.ts +1 -0
  1542. package/src/interface/math/vec2/f32/modf.ts +1 -0
  1543. package/src/interface/math/vec2/f32/negate.ts +1 -0
  1544. package/src/interface/math/vec2/f32/normalize.ts +1 -0
  1545. package/src/interface/math/vec2/f32/pow.ts +1 -0
  1546. package/src/interface/math/vec2/f32/public.ts +2 -0
  1547. package/src/interface/math/vec2/f32/reflect.ts +1 -0
  1548. package/src/interface/math/vec2/f32/refract.ts +1 -0
  1549. package/src/interface/math/vec2/f32/round.ts +1 -0
  1550. package/src/interface/math/vec2/f32/scale.ts +1 -0
  1551. package/src/interface/math/vec2/f32/schema.ts +1 -0
  1552. package/src/interface/math/vec2/f32/sign.ts +1 -0
  1553. package/src/interface/math/vec2/f32/sin.ts +1 -0
  1554. package/src/interface/math/vec2/f32/sinh.ts +1 -0
  1555. package/src/interface/math/vec2/f32/smoothstep.ts +1 -0
  1556. package/src/interface/math/vec2/f32/sqrt.ts +1 -0
  1557. package/src/interface/math/vec2/f32/step.ts +1 -0
  1558. package/src/interface/math/vec2/f32/subtract.ts +1 -0
  1559. package/src/interface/math/vec2/f32/tan.ts +1 -0
  1560. package/src/interface/math/vec2/f32/tanh.ts +1 -0
  1561. package/src/interface/math/vec2/f32/trunc.ts +1 -0
  1562. package/src/interface/math/vec2/f32/zero.ts +1 -0
  1563. package/src/interface/math/vec2/i32/abs.ts +1 -0
  1564. package/src/interface/math/vec2/i32/add.ts +1 -0
  1565. package/src/interface/math/vec2/i32/bitwise-and.ts +1 -0
  1566. package/src/interface/math/vec2/i32/bitwise-not.ts +1 -0
  1567. package/src/interface/math/vec2/i32/bitwise-or.ts +1 -0
  1568. package/src/interface/math/vec2/i32/bitwise-xor.ts +1 -0
  1569. package/src/interface/math/vec2/i32/clamp.ts +1 -0
  1570. package/src/interface/math/vec2/i32/count-leading-zeros.ts +1 -0
  1571. package/src/interface/math/vec2/i32/count-one-bits.ts +1 -0
  1572. package/src/interface/math/vec2/i32/count-trailing-zeros.ts +1 -0
  1573. package/src/interface/math/vec2/i32/equals.ts +1 -0
  1574. package/src/interface/math/vec2/i32/i32.ts +5 -1
  1575. package/src/interface/math/vec2/i32/max.ts +1 -0
  1576. package/src/interface/math/vec2/i32/min.ts +1 -0
  1577. package/src/interface/math/vec2/i32/negate.ts +1 -0
  1578. package/src/interface/math/vec2/i32/public.ts +2 -0
  1579. package/src/interface/math/vec2/i32/reverse-bits.ts +1 -0
  1580. package/src/interface/math/vec2/i32/scale.ts +1 -0
  1581. package/src/interface/math/vec2/i32/schema.ts +1 -0
  1582. package/src/interface/math/vec2/i32/shift-left.ts +1 -0
  1583. package/src/interface/math/vec2/i32/shift-right.ts +1 -0
  1584. package/src/interface/math/vec2/i32/subtract.ts +1 -0
  1585. package/src/interface/math/vec2/i32/zero.ts +1 -0
  1586. package/src/interface/math/vec2/index.ts +1 -0
  1587. package/src/interface/math/vec2/public.ts +2 -0
  1588. package/src/interface/math/vec2/u32/add.ts +1 -0
  1589. package/src/interface/math/vec2/u32/bitwise-and.ts +1 -0
  1590. package/src/interface/math/vec2/u32/bitwise-not.ts +1 -0
  1591. package/src/interface/math/vec2/u32/bitwise-or.ts +1 -0
  1592. package/src/interface/math/vec2/u32/bitwise-xor.ts +1 -0
  1593. package/src/interface/math/vec2/u32/clamp.ts +1 -0
  1594. package/src/interface/math/vec2/u32/count-leading-zeros.ts +1 -0
  1595. package/src/interface/math/vec2/u32/count-one-bits.ts +1 -0
  1596. package/src/interface/math/vec2/u32/count-trailing-zeros.ts +1 -0
  1597. package/src/interface/math/vec2/u32/equals.ts +1 -0
  1598. package/src/interface/math/vec2/u32/max.ts +1 -0
  1599. package/src/interface/math/vec2/u32/min.ts +1 -0
  1600. package/src/interface/math/vec2/u32/negate.ts +1 -0
  1601. package/src/interface/math/vec2/u32/public.ts +2 -0
  1602. package/src/interface/math/vec2/u32/reverse-bits.ts +1 -0
  1603. package/src/interface/math/vec2/u32/scale.ts +1 -0
  1604. package/src/interface/math/vec2/u32/schema.ts +1 -0
  1605. package/src/interface/math/vec2/u32/shift-left.ts +1 -0
  1606. package/src/interface/math/vec2/u32/shift-right.ts +1 -0
  1607. package/src/interface/math/vec2/u32/subtract.ts +1 -0
  1608. package/src/interface/math/vec2/u32/u32.ts +5 -1
  1609. package/src/interface/math/vec2/u32/zero.ts +1 -0
  1610. package/src/interface/math/vec3/f32/abs.ts +1 -0
  1611. package/src/interface/math/vec3/f32/acos.ts +1 -0
  1612. package/src/interface/math/vec3/f32/acosh.ts +1 -0
  1613. package/src/interface/math/vec3/f32/add.ts +1 -0
  1614. package/src/interface/math/vec3/f32/asin.ts +1 -0
  1615. package/src/interface/math/vec3/f32/asinh.ts +1 -0
  1616. package/src/interface/math/vec3/f32/atan.ts +1 -0
  1617. package/src/interface/math/vec3/f32/atanh.ts +1 -0
  1618. package/src/interface/math/vec3/f32/ceil.ts +1 -0
  1619. package/src/interface/math/vec3/f32/clamp.ts +1 -0
  1620. package/src/interface/math/vec3/f32/cos.ts +1 -0
  1621. package/src/interface/math/vec3/f32/cosh.ts +1 -0
  1622. package/src/interface/math/vec3/f32/cross.ts +1 -0
  1623. package/src/interface/math/vec3/f32/distance-squared.ts +1 -0
  1624. package/src/interface/math/vec3/f32/distance.ts +1 -0
  1625. package/src/interface/math/vec3/f32/dot.ts +1 -0
  1626. package/src/interface/math/vec3/f32/equals.ts +1 -0
  1627. package/src/interface/math/vec3/f32/exp.ts +1 -0
  1628. package/src/interface/math/vec3/f32/exp2.ts +1 -0
  1629. package/src/interface/math/vec3/f32/f32.ts +5 -1
  1630. package/src/interface/math/vec3/f32/faceforward.ts +1 -0
  1631. package/src/interface/math/vec3/f32/floor.ts +1 -0
  1632. package/src/interface/math/vec3/f32/fract.ts +1 -0
  1633. package/src/interface/math/vec3/f32/length-squared.ts +1 -0
  1634. package/src/interface/math/vec3/f32/length.ts +1 -0
  1635. package/src/interface/math/vec3/f32/log.ts +1 -0
  1636. package/src/interface/math/vec3/f32/log2.ts +1 -0
  1637. package/src/interface/math/vec3/f32/max.ts +1 -0
  1638. package/src/interface/math/vec3/f32/min.ts +1 -0
  1639. package/src/interface/math/vec3/f32/mix.ts +1 -0
  1640. package/src/interface/math/vec3/f32/mod.ts +1 -0
  1641. package/src/interface/math/vec3/f32/modf.ts +1 -0
  1642. package/src/interface/math/vec3/f32/multiply.ts +1 -0
  1643. package/src/interface/math/vec3/f32/negate.ts +1 -0
  1644. package/src/interface/math/vec3/f32/normalize.ts +1 -0
  1645. package/src/interface/math/vec3/f32/one.ts +1 -0
  1646. package/src/interface/math/vec3/f32/pow.ts +1 -0
  1647. package/src/interface/math/vec3/f32/public.ts +2 -0
  1648. package/src/interface/math/vec3/f32/random.ts +1 -0
  1649. package/src/interface/math/vec3/f32/reflect.ts +1 -0
  1650. package/src/interface/math/vec3/f32/refract.ts +1 -0
  1651. package/src/interface/math/vec3/f32/round.ts +1 -0
  1652. package/src/interface/math/vec3/f32/scale.ts +1 -0
  1653. package/src/interface/math/vec3/f32/schema.ts +1 -0
  1654. package/src/interface/math/vec3/f32/sign.ts +1 -0
  1655. package/src/interface/math/vec3/f32/sin.ts +1 -0
  1656. package/src/interface/math/vec3/f32/sinh.ts +1 -0
  1657. package/src/interface/math/vec3/f32/smoothstep.ts +1 -0
  1658. package/src/interface/math/vec3/f32/sqrt.ts +1 -0
  1659. package/src/interface/math/vec3/f32/step.ts +1 -0
  1660. package/src/interface/math/vec3/f32/subtract.ts +1 -0
  1661. package/src/interface/math/vec3/f32/tan.ts +1 -0
  1662. package/src/interface/math/vec3/f32/tanh.ts +1 -0
  1663. package/src/interface/math/vec3/f32/trunc.ts +1 -0
  1664. package/src/interface/math/vec3/f32/zero.ts +1 -0
  1665. package/src/interface/math/vec3/i32/abs.ts +1 -0
  1666. package/src/interface/math/vec3/i32/add.ts +1 -0
  1667. package/src/interface/math/vec3/i32/bitwise-and.ts +1 -0
  1668. package/src/interface/math/vec3/i32/bitwise-not.ts +1 -0
  1669. package/src/interface/math/vec3/i32/bitwise-or.ts +1 -0
  1670. package/src/interface/math/vec3/i32/bitwise-xor.ts +1 -0
  1671. package/src/interface/math/vec3/i32/clamp.ts +1 -0
  1672. package/src/interface/math/vec3/i32/count-leading-zeros.ts +1 -0
  1673. package/src/interface/math/vec3/i32/count-one-bits.ts +1 -0
  1674. package/src/interface/math/vec3/i32/count-trailing-zeros.ts +1 -0
  1675. package/src/interface/math/vec3/i32/equals.ts +1 -0
  1676. package/src/interface/math/vec3/i32/i32.ts +5 -1
  1677. package/src/interface/math/vec3/i32/max.ts +1 -0
  1678. package/src/interface/math/vec3/i32/min.ts +1 -0
  1679. package/src/interface/math/vec3/i32/multiply.ts +1 -0
  1680. package/src/interface/math/vec3/i32/negate.ts +1 -0
  1681. package/src/interface/math/vec3/i32/one.ts +1 -0
  1682. package/src/interface/math/vec3/i32/public.ts +2 -0
  1683. package/src/interface/math/vec3/i32/reverse-bits.ts +1 -0
  1684. package/src/interface/math/vec3/i32/scale.ts +1 -0
  1685. package/src/interface/math/vec3/i32/schema.ts +1 -0
  1686. package/src/interface/math/vec3/i32/shift-left.ts +1 -0
  1687. package/src/interface/math/vec3/i32/shift-right.ts +1 -0
  1688. package/src/interface/math/vec3/i32/subtract.ts +1 -0
  1689. package/src/interface/math/vec3/i32/zero.ts +1 -0
  1690. package/src/interface/math/vec3/index.ts +1 -0
  1691. package/src/interface/math/vec3/public.ts +2 -0
  1692. package/src/interface/math/vec3/u32/add.ts +1 -0
  1693. package/src/interface/math/vec3/u32/bitwise-and.ts +1 -0
  1694. package/src/interface/math/vec3/u32/bitwise-not.ts +1 -0
  1695. package/src/interface/math/vec3/u32/bitwise-or.ts +1 -0
  1696. package/src/interface/math/vec3/u32/bitwise-xor.ts +1 -0
  1697. package/src/interface/math/vec3/u32/clamp.ts +1 -0
  1698. package/src/interface/math/vec3/u32/count-leading-zeros.ts +1 -0
  1699. package/src/interface/math/vec3/u32/count-one-bits.ts +1 -0
  1700. package/src/interface/math/vec3/u32/count-trailing-zeros.ts +1 -0
  1701. package/src/interface/math/vec3/u32/equals.ts +1 -0
  1702. package/src/interface/math/vec3/u32/max.ts +1 -0
  1703. package/src/interface/math/vec3/u32/min.ts +1 -0
  1704. package/src/interface/math/vec3/u32/multiply.ts +1 -0
  1705. package/src/interface/math/vec3/u32/negate.ts +1 -0
  1706. package/src/interface/math/vec3/u32/one.ts +1 -0
  1707. package/src/interface/math/vec3/u32/public.ts +2 -0
  1708. package/src/interface/math/vec3/u32/reverse-bits.ts +1 -0
  1709. package/src/interface/math/vec3/u32/scale.ts +1 -0
  1710. package/src/interface/math/vec3/u32/schema.ts +1 -0
  1711. package/src/interface/math/vec3/u32/shift-left.ts +1 -0
  1712. package/src/interface/math/vec3/u32/shift-right.ts +1 -0
  1713. package/src/interface/math/vec3/u32/subtract.ts +1 -0
  1714. package/src/interface/math/vec3/u32/u32.ts +5 -1
  1715. package/src/interface/math/vec3/u32/volume.ts +1 -0
  1716. package/src/interface/math/vec3/u32/zero.ts +1 -0
  1717. package/src/interface/math/vec4/f32/abs.ts +1 -0
  1718. package/src/interface/math/vec4/f32/acos.ts +1 -0
  1719. package/src/interface/math/vec4/f32/acosh.ts +1 -0
  1720. package/src/interface/math/vec4/f32/add.ts +1 -0
  1721. package/src/interface/math/vec4/f32/asin.ts +1 -0
  1722. package/src/interface/math/vec4/f32/asinh.ts +1 -0
  1723. package/src/interface/math/vec4/f32/atan.ts +1 -0
  1724. package/src/interface/math/vec4/f32/atanh.ts +1 -0
  1725. package/src/interface/math/vec4/f32/ceil.ts +1 -0
  1726. package/src/interface/math/vec4/f32/clamp.ts +1 -0
  1727. package/src/interface/math/vec4/f32/cos.ts +1 -0
  1728. package/src/interface/math/vec4/f32/cosh.ts +1 -0
  1729. package/src/interface/math/vec4/f32/default.ts +6 -0
  1730. package/src/interface/math/vec4/f32/distance.ts +1 -0
  1731. package/src/interface/math/vec4/f32/dot.ts +1 -0
  1732. package/src/interface/math/vec4/f32/exp.ts +1 -0
  1733. package/src/interface/math/vec4/f32/exp2.ts +1 -0
  1734. package/src/interface/math/vec4/f32/f32.ts +5 -1
  1735. package/src/interface/math/vec4/f32/faceforward.ts +1 -0
  1736. package/src/interface/math/vec4/f32/floor.ts +1 -0
  1737. package/src/interface/math/vec4/f32/fract.ts +1 -0
  1738. package/src/interface/math/vec4/f32/length.ts +1 -0
  1739. package/src/interface/math/vec4/f32/log.ts +1 -0
  1740. package/src/interface/math/vec4/f32/log2.ts +1 -0
  1741. package/src/interface/math/vec4/f32/max.ts +1 -0
  1742. package/src/interface/math/vec4/f32/min.ts +1 -0
  1743. package/src/interface/math/vec4/f32/mix.ts +1 -0
  1744. package/src/interface/math/vec4/f32/mod.ts +1 -0
  1745. package/src/interface/math/vec4/f32/modf.ts +1 -0
  1746. package/src/interface/math/vec4/f32/multiply.ts +1 -0
  1747. package/src/interface/math/vec4/f32/negate.ts +1 -0
  1748. package/src/interface/math/vec4/f32/normalize.ts +1 -0
  1749. package/src/interface/math/vec4/f32/pow.ts +1 -0
  1750. package/src/interface/math/vec4/f32/public.ts +2 -0
  1751. package/src/interface/math/vec4/f32/reflect.ts +1 -0
  1752. package/src/interface/math/vec4/f32/refract.ts +1 -0
  1753. package/src/interface/math/vec4/f32/round.ts +1 -0
  1754. package/src/interface/math/vec4/f32/scale.ts +1 -0
  1755. package/src/interface/math/vec4/f32/schema.ts +1 -0
  1756. package/src/interface/math/vec4/f32/sign.ts +1 -0
  1757. package/src/interface/math/vec4/f32/sin.ts +1 -0
  1758. package/src/interface/math/vec4/f32/sinh.ts +1 -0
  1759. package/src/interface/math/vec4/f32/smoothstep.ts +1 -0
  1760. package/src/interface/math/vec4/f32/sqrt.ts +1 -0
  1761. package/src/interface/math/vec4/f32/step.ts +1 -0
  1762. package/src/interface/math/vec4/f32/subtract.ts +1 -0
  1763. package/src/interface/math/vec4/f32/tan.ts +1 -0
  1764. package/src/interface/math/vec4/f32/tanh.ts +1 -0
  1765. package/src/interface/math/vec4/f32/trunc.ts +1 -0
  1766. package/src/interface/math/vec4/i32/abs.ts +1 -0
  1767. package/src/interface/math/vec4/i32/add.ts +1 -0
  1768. package/src/interface/math/vec4/i32/bitwise-and.ts +1 -0
  1769. package/src/interface/math/vec4/i32/bitwise-not.ts +1 -0
  1770. package/src/interface/math/vec4/i32/bitwise-or.ts +1 -0
  1771. package/src/interface/math/vec4/i32/bitwise-xor.ts +1 -0
  1772. package/src/interface/math/vec4/i32/clamp.ts +1 -0
  1773. package/src/interface/math/vec4/i32/count-leading-zeros.ts +1 -0
  1774. package/src/interface/math/vec4/i32/count-one-bits.ts +1 -0
  1775. package/src/interface/math/vec4/i32/count-trailing-zeros.ts +1 -0
  1776. package/src/interface/math/vec4/i32/equals.ts +1 -0
  1777. package/src/interface/math/vec4/i32/i32.ts +5 -1
  1778. package/src/interface/math/vec4/i32/max.ts +1 -0
  1779. package/src/interface/math/vec4/i32/min.ts +1 -0
  1780. package/src/interface/math/vec4/i32/multiply.ts +1 -0
  1781. package/src/interface/math/vec4/i32/negate.ts +1 -0
  1782. package/src/interface/math/vec4/i32/one.ts +1 -0
  1783. package/src/interface/math/vec4/i32/public.ts +2 -0
  1784. package/src/interface/math/vec4/i32/reverse-bits.ts +1 -0
  1785. package/src/interface/math/vec4/i32/scale.ts +1 -0
  1786. package/src/interface/math/vec4/i32/schema.ts +1 -0
  1787. package/src/interface/math/vec4/i32/shift-left.ts +1 -0
  1788. package/src/interface/math/vec4/i32/shift-right.ts +1 -0
  1789. package/src/interface/math/vec4/i32/subtract.ts +1 -0
  1790. package/src/interface/math/vec4/i32/zero.ts +1 -0
  1791. package/src/interface/math/vec4/index.ts +1 -0
  1792. package/src/interface/math/vec4/public.ts +2 -0
  1793. package/src/interface/math/vec4/u32/add.ts +1 -0
  1794. package/src/interface/math/vec4/u32/bitwise-and.ts +1 -0
  1795. package/src/interface/math/vec4/u32/bitwise-not.ts +1 -0
  1796. package/src/interface/math/vec4/u32/bitwise-or.ts +1 -0
  1797. package/src/interface/math/vec4/u32/bitwise-xor.ts +1 -0
  1798. package/src/interface/math/vec4/u32/clamp.ts +1 -0
  1799. package/src/interface/math/vec4/u32/count-leading-zeros.ts +1 -0
  1800. package/src/interface/math/vec4/u32/count-one-bits.ts +1 -0
  1801. package/src/interface/math/vec4/u32/count-trailing-zeros.ts +1 -0
  1802. package/src/interface/math/vec4/u32/equals.ts +1 -0
  1803. package/src/interface/math/vec4/u32/max.ts +1 -0
  1804. package/src/interface/math/vec4/u32/min.ts +1 -0
  1805. package/src/interface/math/vec4/u32/multiply.ts +1 -0
  1806. package/src/interface/math/vec4/u32/negate.ts +1 -0
  1807. package/src/interface/math/vec4/u32/one.ts +1 -0
  1808. package/src/interface/math/vec4/u32/public.ts +2 -0
  1809. package/src/interface/math/vec4/u32/reverse-bits.ts +1 -0
  1810. package/src/interface/math/vec4/u32/scale.ts +1 -0
  1811. package/src/interface/math/vec4/u32/schema.ts +1 -0
  1812. package/src/interface/math/vec4/u32/shift-left.ts +1 -0
  1813. package/src/interface/math/vec4/u32/shift-right.ts +1 -0
  1814. package/src/interface/math/vec4/u32/subtract.ts +1 -0
  1815. package/src/interface/math/vec4/u32/u32.ts +5 -1
  1816. package/src/interface/math/vec4/u32/zero.ts +1 -0
  1817. package/src/interface/platform/platform.ts +1 -0
  1818. package/src/interface/registry/archetypes.test.ts +50 -0
  1819. package/src/interface/registry/archetypes.ts +45 -9
  1820. package/src/interface/registry/declarations.ts +107 -13
  1821. package/src/interface/registry/declared.test.ts +40 -0
  1822. package/src/interface/registry/finalizer-order.ts +4 -3
  1823. package/src/interface/registry/ids.test-helper.ts +35 -1
  1824. package/src/interface/registry/ids.test.ts +43 -56
  1825. package/src/interface/registry/ids.ts +46 -0
  1826. package/src/interface/registry/index.ts +4 -3
  1827. package/src/interface/registry/indexes.ts +3 -2
  1828. package/src/interface/registry/items.ts +17 -47
  1829. package/src/interface/registry/layout.test.ts +20 -0
  1830. package/src/interface/registry/layout.ts +11 -3
  1831. package/src/interface/registry/names.test.ts +16 -18
  1832. package/src/interface/registry/names.ts +62 -42
  1833. package/src/interface/registry/program.ts +1 -0
  1834. package/src/interface/registry/reduction.ts +1 -0
  1835. package/src/interface/registry/schedule.ts +10 -14
  1836. package/src/interface/registry/schemas.ts +58 -0
  1837. package/src/interface/registry/strata.ts +1 -0
  1838. package/src/interface/registry/threads.ts +3 -2
  1839. package/src/interface/registry/traits.ts +2 -1
  1840. package/src/interface/registry/written.ts +1 -0
  1841. package/src/interface/resource/condition.ts +1 -0
  1842. package/src/interface/resource/index.ts +1 -1
  1843. package/src/interface/resource/key.ts +1 -0
  1844. package/src/interface/resource/reduction.ts +1 -0
  1845. package/src/interface/resource/register.test.ts +42 -56
  1846. package/src/interface/resource/resource.ts +1 -0
  1847. package/src/interface/resource/types.ts +5 -1
  1848. package/src/interface/resource/value.ts +1 -0
  1849. package/src/interface/resource/written.ts +1 -0
  1850. package/src/interface/resources/always.ts +3 -2
  1851. package/src/interface/resources/cadence.ts +4 -3
  1852. package/src/interface/resources/clock.ts +5 -3
  1853. package/src/interface/resources/gpu-device.ts +3 -2
  1854. package/src/interface/resources/index.ts +1 -0
  1855. package/src/interface/resources/wake.ts +3 -2
  1856. package/src/interface/resources/workers.ts +3 -2
  1857. package/src/interface/rule/create.ts +9 -7
  1858. package/src/interface/rule/created.ts +3 -2
  1859. package/src/interface/rule/declaration.ts +7 -3
  1860. package/src/interface/rule/index.ts +1 -0
  1861. package/src/interface/rule/rule.ts +1 -0
  1862. package/src/interface/rule/rule.type-test.ts +17 -27
  1863. package/src/interface/schema/is-struct.ts +12 -0
  1864. package/src/interface/schema/schema.ts +23 -1
  1865. package/src/interface/schema/schema.type-test.ts +18 -16
  1866. package/src/interface/schema/schemas.type-test.ts +1 -0
  1867. package/src/interface/system/access.ts +68 -28
  1868. package/src/interface/system/body.ts +53 -23
  1869. package/src/interface/system/check.ts +82 -44
  1870. package/src/interface/system/commands.ts +50 -5
  1871. package/src/interface/system/commands.type-test.ts +2 -8
  1872. package/src/interface/system/composite-declaration.ts +1 -2
  1873. package/src/interface/system/composite-input.type-test.ts +13 -29
  1874. package/src/interface/system/composite.ts +1 -0
  1875. package/src/interface/system/conditions.type-test.ts +11 -22
  1876. package/src/interface/system/create-resolved.ts +21 -0
  1877. package/src/interface/system/create.test.ts +96 -116
  1878. package/src/interface/system/create.ts +121 -94
  1879. package/src/interface/system/declaration.ts +33 -25
  1880. package/src/interface/system/definition.ts +1 -0
  1881. package/src/interface/system/index.ts +1 -0
  1882. package/src/interface/system/input.ts +35 -4
  1883. package/src/interface/system/leaf.ts +10 -3
  1884. package/src/interface/system/lists.type-test.ts +53 -0
  1885. package/src/interface/system/name.ts +4 -3
  1886. package/src/interface/system/optional.type-test.ts +51 -0
  1887. package/src/interface/system/property.ts +1 -0
  1888. package/src/interface/system/render.ts +45 -20
  1889. package/src/interface/system/resolve.test.ts +49 -0
  1890. package/src/interface/system/resolve.ts +165 -0
  1891. package/src/interface/system/shared.type-test.ts +205 -0
  1892. package/src/interface/system/struct.ts +1 -0
  1893. package/src/interface/system/system.ts +5 -3
  1894. package/src/interface/system/system.type-test.ts +160 -197
  1895. package/src/interface/system/threads.ts +9 -8
  1896. package/src/interface/system/threads.type-test.ts +29 -60
  1897. package/src/interface/system/up.type-test.ts +15 -28
  1898. package/src/interface/system/values-of.ts +17 -0
  1899. package/src/interface/system/values.ts +15 -12
  1900. package/src/interface/thread/of.ts +4 -3
  1901. package/src/interface/thread/thread.ts +1 -0
  1902. package/src/interface/thread/thread.type-test.ts +3 -68
  1903. package/src/interface/trait/key.ts +2 -1
  1904. package/src/interface/trait/trait.type-test.ts +4 -77
  1905. package/src/interface/trait/types.ts +19 -6
  1906. package/src/interface/tsconfig.json +1 -1
  1907. package/src/interface/world/create.ts +9 -2
  1908. package/src/interface/world/declarations.ts +34 -0
  1909. package/src/interface/world/filter.ts +1 -0
  1910. package/src/interface/world/index.ts +1 -0
  1911. package/src/interface/world/join.ts +11 -4
  1912. package/src/interface/world/loop.type-test.ts +15 -10
  1913. package/src/interface/world/run.type-test.ts +87 -0
  1914. package/src/interface/world/share.type-test.ts +8 -2
  1915. package/src/interface/world/world.ts +32 -17
  1916. package/src/interface/world/world.type-test.ts +6 -10
  1917. package/src/observe/compare.ts +1 -0
  1918. package/src/observe/entity.ts +21 -13
  1919. package/src/observe/index.ts +1 -0
  1920. package/src/observe/members.ts +1 -0
  1921. package/src/observe/observe.ts +1 -0
  1922. package/src/observe/observe.type-test.ts +1 -4
  1923. package/src/observe/plans.ts +1 -0
  1924. package/src/observe/query.ts +1 -0
  1925. package/src/observe/resource.ts +5 -4
  1926. package/src/observe/select.ts +13 -12
  1927. package/src/observe/to-promise.ts +1 -0
  1928. package/src/observe/tsconfig.json +1 -1
  1929. package/src/observe/values.ts +1 -0
  1930. package/src/observe/world-state.ts +41 -34
  1931. package/src/observe-imports.test.ts +1 -0
  1932. package/src/perftest/benchmark.ts +1 -0
  1933. package/src/perftest/benchmarks.ts +24 -8
  1934. package/src/perftest/editor.ts +126 -0
  1935. package/src/perftest/filters.ts +124 -0
  1936. package/src/perftest/finalized.ts +72 -24
  1937. package/src/perftest/flat.ts +16 -26
  1938. package/src/perftest/growth.ts +7 -15
  1939. package/src/perftest/handoff.ts +30 -37
  1940. package/src/perftest/hierarchy.ts +23 -40
  1941. package/src/perftest/indexes.ts +132 -64
  1942. package/src/perftest/invariants.ts +63 -0
  1943. package/src/perftest/joined.ts +13 -5
  1944. package/src/perftest/journal.ts +55 -0
  1945. package/src/perftest/keys.ts +1 -0
  1946. package/src/perftest/log.ts +6 -6
  1947. package/src/perftest/loop.ts +2 -1
  1948. package/src/perftest/observed-gpu.ts +6 -7
  1949. package/src/perftest/observed.ts +6 -12
  1950. package/src/perftest/observer.ts +5 -4
  1951. package/src/perftest/optional.ts +102 -0
  1952. package/src/perftest/particles.ts +13 -20
  1953. package/src/perftest/placed.ts +1 -0
  1954. package/src/perftest/reads.ts +13 -18
  1955. package/src/perftest/remote.ts +26 -28
  1956. package/src/perftest/render-order.ts +86 -0
  1957. package/src/perftest/run.ts +1 -0
  1958. package/src/perftest/shared.ts +416 -0
  1959. package/src/perftest/strings.ts +14 -12
  1960. package/src/perftest/structural.ts +32 -46
  1961. package/src/perftest/suite.perf-browser-test.ts +3 -0
  1962. package/src/perftest/suite.perf-test.ts +1 -0
  1963. package/src/perftest/suite.ts +41 -59
  1964. package/src/perftest/systems.ts +4 -6
  1965. package/src/perftest/tails.ts +40 -48
  1966. package/src/perftest/transfers.ts +25 -20
  1967. package/src/perftest/uploads.ts +11 -13
  1968. package/src/perftest/values.ts +8 -12
  1969. package/src/perftest/wake.ts +1 -0
  1970. package/src/world.test.ts +10 -10
  1971. package/dist/implementation/compiler/exact.d.ts +0 -24
  1972. package/dist/implementation/compiler/exact.js +0 -64
  1973. package/dist/implementation/compiler/exact.js.map +0 -1
  1974. package/dist/implementation/world/reports.d.ts +0 -63
  1975. package/dist/implementation/world/reports.js +0 -180
  1976. package/dist/implementation/world/reports.js.map +0 -1
  1977. package/dist/interface/archetype/archetype.d.ts +0 -2
  1978. package/dist/interface/archetype/archetype.js +0 -2
  1979. package/dist/interface/archetype/archetype.js.map +0 -1
  1980. package/dist/interface/archetype/create.d.ts +0 -7
  1981. package/dist/interface/archetype/create.js +0 -11
  1982. package/dist/interface/archetype/create.js.map +0 -1
  1983. package/dist/interface/archetype/index.d.ts +0 -1
  1984. package/dist/interface/archetype/index.js +0 -2
  1985. package/dist/interface/archetype/index.js.map +0 -1
  1986. package/dist/interface/archetype/values-of.d.ts +0 -17
  1987. package/dist/interface/archetype/values-of.js.map +0 -1
  1988. package/dist/interface/component/declaration.d.ts +0 -74
  1989. package/dist/interface/component/declaration.js +0 -2
  1990. package/dist/interface/component/declaration.js.map +0 -1
  1991. package/dist/interface/component/register.d.ts +0 -23
  1992. package/dist/interface/component/register.js +0 -6
  1993. package/dist/interface/component/register.js.map +0 -1
  1994. package/dist/interface/finalizer/name.d.ts +0 -6
  1995. package/dist/interface/finalizer/name.js +0 -2
  1996. package/dist/interface/finalizer/name.js.map +0 -1
  1997. package/dist/interface/indexes/name.d.ts +0 -5
  1998. package/dist/interface/indexes/name.js +0 -2
  1999. package/dist/interface/indexes/name.js.map +0 -1
  2000. package/dist/interface/report/components.d.ts +0 -38
  2001. package/dist/interface/report/components.js +0 -48
  2002. package/dist/interface/report/components.js.map +0 -1
  2003. package/dist/interface/report/failure.d.ts +0 -29
  2004. package/dist/interface/report/failure.js +0 -2
  2005. package/dist/interface/report/failure.js.map +0 -1
  2006. package/dist/interface/report/index.d.ts +0 -5
  2007. package/dist/interface/report/index.js +0 -6
  2008. package/dist/interface/report/index.js.map +0 -1
  2009. package/dist/interface/report/report.d.ts +0 -12
  2010. package/dist/interface/report/report.js +0 -2
  2011. package/dist/interface/report/report.js.map +0 -1
  2012. package/dist/interface/resource/declaration.d.ts +0 -31
  2013. package/dist/interface/resource/declaration.js +0 -2
  2014. package/dist/interface/resource/declaration.js.map +0 -1
  2015. package/dist/interface/resource/register.d.ts +0 -13
  2016. package/dist/interface/resource/register.js +0 -6
  2017. package/dist/interface/resource/register.js.map +0 -1
  2018. package/dist/interface/rule/name.d.ts +0 -6
  2019. package/dist/interface/rule/name.js +0 -2
  2020. package/dist/interface/rule/name.js.map +0 -1
  2021. package/dist/interface/schema/is-data.d.ts +0 -19
  2022. package/dist/interface/schema/is-data.js +0 -2
  2023. package/dist/interface/schema/is-data.js.map +0 -1
  2024. package/dist/interface/trait/index.d.ts +0 -1
  2025. package/dist/interface/trait/index.js +0 -2
  2026. package/dist/interface/trait/index.js.map +0 -1
  2027. package/dist/interface/trait/register.d.ts +0 -7
  2028. package/dist/interface/trait/register.js +0 -8
  2029. package/dist/interface/trait/register.js.map +0 -1
  2030. package/dist/interface/trait/required.d.ts +0 -10
  2031. package/dist/interface/trait/required.js +0 -2
  2032. package/dist/interface/trait/required.js.map +0 -1
  2033. package/dist/interface/trait/symbol-keys.d.ts +0 -16
  2034. package/dist/interface/trait/symbol-keys.js +0 -2
  2035. package/dist/interface/trait/symbol-keys.js.map +0 -1
  2036. package/dist/interface/trait/trait.d.ts +0 -2
  2037. package/dist/interface/trait/trait.js +0 -2
  2038. package/dist/interface/trait/trait.js.map +0 -1
  2039. package/src/guide/01-resources.test.ts +0 -44
  2040. package/src/guide/02-entities.test.ts +0 -57
  2041. package/src/guide/03-systems.test.ts +0 -87
  2042. package/src/guide/04-ticks.test.ts +0 -73
  2043. package/src/guide/05-scheduling.test.ts +0 -60
  2044. package/src/guide/06-sync-points.test.ts +0 -59
  2045. package/src/guide/07-change-filters.test.ts +0 -87
  2046. package/src/guide/08-input.test.ts +0 -47
  2047. package/src/guide/09-rules.test.ts +0 -57
  2048. package/src/guide/10-finalizers.test.ts +0 -64
  2049. package/src/guide/11-traits.test.ts +0 -58
  2050. package/src/guide/13-indexes.test.ts +0 -95
  2051. package/src/guide/guide.md +0 -551
  2052. package/src/implementation/compiler/exact.ts +0 -77
  2053. package/src/implementation/world/reports.test-helper.ts +0 -117
  2054. package/src/implementation/world/reports.test.ts +0 -167
  2055. package/src/implementation/world/reports.ts +0 -203
  2056. package/src/interface/archetype/archetype.ts +0 -3
  2057. package/src/interface/archetype/archetype.type-test.ts +0 -37
  2058. package/src/interface/archetype/create.test.ts +0 -40
  2059. package/src/interface/archetype/create.ts +0 -12
  2060. package/src/interface/archetype/index.ts +0 -1
  2061. package/src/interface/archetype/values-of.ts +0 -16
  2062. package/src/interface/component/declaration.ts +0 -67
  2063. package/src/interface/component/declaration.type-test.ts +0 -87
  2064. package/src/interface/component/register.ts +0 -28
  2065. package/src/interface/finalizer/name.ts +0 -6
  2066. package/src/interface/indexes/name.ts +0 -5
  2067. package/src/interface/report/components.ts +0 -69
  2068. package/src/interface/report/failure.ts +0 -26
  2069. package/src/interface/report/index.ts +0 -8
  2070. package/src/interface/report/report.ts +0 -11
  2071. package/src/interface/report/report.type-test.ts +0 -63
  2072. package/src/interface/resource/declaration.ts +0 -29
  2073. package/src/interface/resource/declaration.type-test.ts +0 -89
  2074. package/src/interface/resource/register.ts +0 -18
  2075. package/src/interface/rule/name.ts +0 -6
  2076. package/src/interface/schema/is-data.ts +0 -25
  2077. package/src/interface/trait/index.ts +0 -1
  2078. package/src/interface/trait/register.ts +0 -9
  2079. package/src/interface/trait/required.ts +0 -7
  2080. package/src/interface/trait/symbol-keys.ts +0 -19
  2081. package/src/interface/trait/symbol-keys.type-test.ts +0 -14
  2082. package/src/interface/trait/trait.ts +0 -3
  2083. package/src/samples/particles/build.test.ts +0 -23
  2084. package/src/samples/particles/gpu/main.ts +0 -96
  2085. package/src/samples/particles/gpu/particles.ts +0 -138
  2086. package/src/samples/particles/index.html +0 -22
  2087. package/src/samples/particles/particles.test.ts +0 -31
  2088. package/src/samples/particles/particles.ts +0 -85
  2089. package/src/samples/particles/particles.type-test.ts +0 -7
  2090. package/src/samples/todo/README.md +0 -174
  2091. package/src/samples/todo/app/app.browser.test.ts +0 -215
  2092. package/src/samples/todo/app/app.ts +0 -30
  2093. package/src/samples/todo/app/log-failures.test.ts +0 -28
  2094. package/src/samples/todo/app/log-failures.ts +0 -7
  2095. package/src/samples/todo/app/main.ts +0 -4
  2096. package/src/samples/todo/app/profile.perf-browser-test.ts +0 -100
  2097. package/src/samples/todo/app/proportional.browser.test.ts +0 -157
  2098. package/src/samples/todo/app/todo.perf-browser-test.ts +0 -207
  2099. package/src/samples/todo/build.test.ts +0 -23
  2100. package/src/samples/todo/features/completion/data.ts +0 -5
  2101. package/src/samples/todo/features/completion/dom.browser.test.ts +0 -53
  2102. package/src/samples/todo/features/completion/dom.ts +0 -39
  2103. package/src/samples/todo/features/completion/elements/elements.browser.test.ts +0 -68
  2104. package/src/samples/todo/features/completion/elements/todo-summary.ts +0 -82
  2105. package/src/samples/todo/features/completion/elements/todo-toggle-all.ts +0 -69
  2106. package/src/samples/todo/features/completion/events.ts +0 -7
  2107. package/src/samples/todo/features/completion/feature.ts +0 -13
  2108. package/src/samples/todo/features/completion/model.test.ts +0 -40
  2109. package/src/samples/todo/features/completion/model.ts +0 -21
  2110. package/src/samples/todo/features/filter/data.ts +0 -16
  2111. package/src/samples/todo/features/filter/dom.browser.test.ts +0 -84
  2112. package/src/samples/todo/features/filter/dom.ts +0 -63
  2113. package/src/samples/todo/features/filter/elements/elements.browser.test.ts +0 -43
  2114. package/src/samples/todo/features/filter/elements/todo-filters.ts +0 -70
  2115. package/src/samples/todo/features/filter/events.ts +0 -4
  2116. package/src/samples/todo/features/filter/feature.ts +0 -12
  2117. package/src/samples/todo/features/filter/model.test.ts +0 -18
  2118. package/src/samples/todo/features/filter/model.ts +0 -10
  2119. package/src/samples/todo/features/generate/elements/elements.browser.test.ts +0 -18
  2120. package/src/samples/todo/features/generate/elements/todo-generate.ts +0 -36
  2121. package/src/samples/todo/features/generate/events.ts +0 -4
  2122. package/src/samples/todo/features/generate/feature.ts +0 -11
  2123. package/src/samples/todo/features/generate/model.test.ts +0 -13
  2124. package/src/samples/todo/features/generate/model.ts +0 -19
  2125. package/src/samples/todo/features/index.ts +0 -4
  2126. package/src/samples/todo/features/todos/data.ts +0 -31
  2127. package/src/samples/todo/features/todos/dom.browser.test.ts +0 -205
  2128. package/src/samples/todo/features/todos/dom.ts +0 -90
  2129. package/src/samples/todo/features/todos/elements/elements.browser.test.ts +0 -211
  2130. package/src/samples/todo/features/todos/elements/todo-entry.ts +0 -45
  2131. package/src/samples/todo/features/todos/elements/todo-list.ts +0 -93
  2132. package/src/samples/todo/features/todos/elements/todo-row.ts +0 -138
  2133. package/src/samples/todo/features/todos/events.ts +0 -11
  2134. package/src/samples/todo/features/todos/feature.ts +0 -14
  2135. package/src/samples/todo/features/todos/model.test.ts +0 -77
  2136. package/src/samples/todo/features/todos/model.ts +0 -80
  2137. package/src/samples/todo/features/todos/todos.test-helper.ts +0 -34
  2138. package/src/samples/todo/imports.test.ts +0 -113
  2139. package/src/samples/todo/index.html +0 -51
  2140. package/src/samples/todo/shared/attach.browser.test.ts +0 -73
  2141. package/src/samples/todo/shared/attach.ts +0 -32
  2142. package/src/samples/todo/shared/connect.ts +0 -21
  2143. package/src/samples/todo/shared/elements/define.ts +0 -7
  2144. package/src/samples/todo/shared/elements/elements.test-helper.ts +0 -28
  2145. package/src/samples/todo/shared/feature.ts +0 -20
  2146. package/src/samples/todo/shared/ticks.test-helper.ts +0 -25
  2147. package/src/samples/transfers/build.test.ts +0 -22
  2148. package/src/samples/transfers/index.html +0 -18
  2149. package/src/samples/transfers/loader.ts +0 -42
  2150. package/src/samples/transfers/main.ts +0 -46
  2151. package/src/samples/transfers/sprites.ts +0 -96
  2152. package/src/samples/transfers/world.ts +0 -11
  2153. /package/dist/interface/{archetype → system}/values-of.js +0 -0
@@ -1,130 +1,128 @@
1
- import type { Component } from '../component/component.js';
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import type { Entity } from '../entity/entity.js';
3
3
  import type { Index } from '../indexes/index-type.js';
4
+ import type { Condition } from '../resource/condition.js';
4
5
  import { takeIdOfDeclaration } from '../registry/ids.js';
5
6
  import { nameOf } from '../registry/items.js';
6
7
  import { claimSystem } from '../registry/program.js';
7
- import type { Resource } from '../resource/resource.js';
8
- import type { Schema } from '../schema/schema.js';
9
- import type { Body } from './body.js';
10
- import type { Commands } from './commands.js';
11
- import { checkComposite, checkLeaf } from './check.js';
8
+ import type { Body, Context } from './body.js';
9
+ import { checkComposite, checkLeaf, inputSchemaOf } from './check.js';
12
10
  import type { Composite } from './composite.js';
13
11
  import type { CompositeDeclaration } from './composite-declaration.js';
14
- import type { Declaration } from './declaration.js';
15
- import type { CheckMembers, CompositeInputOf, InputOf } from './input.js';
12
+ import type { Declaration, Resolved } from './declaration.js';
13
+ import type { CheckMembers, CompositeInputOf, InputOf, ResultOf, ReturnsNoPromise } from './input.js';
16
14
  import type { Leaf } from './leaf.js';
17
15
  import type { Listed, Property } from './property.js';
18
- import type { StructComponent, StructResource } from './struct.js';
19
16
  import type { System } from './system.js';
20
17
  import type { OneThread, ThreadedBy, ThreadsOf } from './threads.js';
21
18
  import type { HeldBy } from './values.js';
19
+ import type { Shared } from '../component/value.js';
20
+ import { accessOf, compact, componentLists, lookupsLists, resourceUses, upReads, whereReadsOf } from './resolve.js';
22
21
 
23
- type Reduced<D extends Declaration> = keyof Property<D, "reduce"> & Resource.Key;
24
- type Written<D, K extends "components" | "resources"> = Listed<Property<D, K>, "write">;
25
- type Is<D> = Listed<Property<D, "resources">, "is">;
26
22
  type Lookups<D> = Property<D, "lookup">;
27
23
 
28
- /**
29
- * An index lookup reads and watches only what every entity its index holds has, and its system doesn't write what it
30
- * finds rows by or reads through it. A lookup by entity watches only what it reads or has.
31
- */
32
- type IndexLookups<D> = {
24
+ /** A lookup's `changed` names what it requires: a lookup by entity's `with`, an index lookup's what its index holds. */
25
+ type LookupChanges<D> = {
33
26
  readonly lookup?: {
34
27
  readonly [N in keyof Lookups<D>]?: Lookups<D>[N] extends { readonly index: Index<infer I> }
35
- ? {
36
- readonly index?: Index<{ readonly key: readonly Exclude<Component.Key, Written<D, "components">>[] }>;
37
- readonly read?: readonly Exclude<HeldBy<I>, Written<D, "components">>[];
38
- readonly changed?: readonly HeldBy<I>[] | true;
39
- }
40
- : { readonly changed?: readonly (Listed<Lookups<D>[N], "read"> | Listed<Lookups<D>[N], "has">)[] }
28
+ ? { readonly changed?: readonly HeldBy<I>[] | true }
29
+ : { readonly changed?: readonly Listed<Lookups<D>[N], "with">[] }
41
30
  };
42
31
  };
43
32
 
44
- /** A system's rows are ordered by an index whose key parts it doesn't write. */
45
- type Order<D> = { readonly order?: Index<{ readonly key: readonly Exclude<Component.Key, Written<D, "components">>[] }> };
46
-
47
- /**
48
- * A key in `write` is readable too, so it isn't also in `read`. A system doesn't read or filter on what it reduces
49
- * into, since the fold is only finished after every contributor runs. A condition in `is` is readable too, and isn't
50
- * written or also in `not`.
51
- */
52
- type Lists<D extends Declaration> = {
53
- readonly components?: { readonly read?: readonly Exclude<Component.Key, Written<D, "components">>[] };
54
- readonly resources?: {
55
- readonly read?: readonly Exclude<Resource.Key, Written<D, "resources"> | Reduced<D> | Is<D>>[];
56
- readonly write?: readonly Exclude<Resource.Key, Is<D>>[];
57
- readonly changed?: readonly Exclude<Resource.Key, Reduced<D>>[];
58
- readonly not?: readonly Exclude<Resource.Key, Is<D>>[];
59
- };
33
+ /** What a body reads, writes and reduces into is inferred, never declared. */
34
+ type Inferred = {
35
+ readonly components?: { readonly read?: never; readonly write?: never; readonly has?: never };
36
+ readonly resources?: { readonly read?: never; readonly write?: never; readonly reduce?: never };
37
+ readonly up?: { readonly read?: never };
38
+ readonly reduce?: never;
60
39
  };
61
40
 
62
- type Kernel = {
63
- readonly components?: { readonly read?: readonly StructComponent[]; readonly write?: readonly StructComponent[] };
64
- readonly lookup?: {
65
- readonly [name: string]:
66
- | { readonly read?: readonly StructComponent[]; readonly has?: readonly Component.Key[]; readonly not?: readonly Component.Key[]; readonly changed?: readonly Component.Key[]; readonly index?: never }
67
- | { readonly read?: readonly StructComponent[]; readonly changed?: readonly Component.Key[] | true; readonly index: Index<{ readonly key: readonly StructComponent[] }> };
68
- };
69
- readonly up?: { readonly read?: readonly StructComponent[] };
70
- readonly order?: Index<{ readonly key: readonly StructComponent[] }>;
71
- readonly resources?: { readonly read?: readonly StructResource[]; readonly write?: never };
72
- };
41
+ /** A condition is in `is` or `not`, not both. */
42
+ type Conditions<D> = { readonly resources?: { readonly not?: readonly Exclude<Condition, Listed<Property<D, "resources">, "is">>[] } };
73
43
 
74
44
  /** What a GPU kernel can't use yet, beyond any kernel's limits. */
75
45
  type GpuKernel = {
76
46
  readonly lookup?: { readonly [name: string]: never };
77
47
  readonly components?: { readonly added?: never; readonly changed?: never };
78
48
  readonly resources?: { readonly changed?: never };
79
- readonly reduce?: { readonly [K in Resource.Key]?: never };
80
49
  readonly order?: { readonly "error: GPU kernels have no order yet": true };
81
50
  };
82
51
 
83
52
  /**
84
- * An observer system only reads, after a sync point: it writes and reduces into nothing, takes no input, isn't a
85
- * kernel, has no `up`, and is ordered with nothing.
53
+ * An observer system only reads, after a sync point: its row and resources are read-only, and it never compiles to a
54
+ * kernel, has no `up`, and is ordered with nothing. That it takes no input is checked at its body.
86
55
  */
87
56
  type Observer = {
88
- readonly kernel?: never;
89
- readonly components?: { readonly write?: never };
90
- readonly resources?: { readonly write?: never };
91
- readonly reduce?: never;
92
- readonly input?: never;
57
+ readonly kernel?: false;
93
58
  readonly up?: never;
94
59
  readonly before?: never;
95
60
  readonly after?: never;
96
61
  readonly during?: never;
97
62
  };
98
63
 
99
- /** The fields of input `I` that hold an entity. */
100
- type EntityFields<I> = { [K in keyof I]-?: [Exclude<I[K], undefined>] extends [Entity] ? K : never }[keyof I] & string;
101
-
102
- /** A system on one entity takes it from an entity field of its input, and runs on its row, in no order. */
103
- type Targeted<D extends Declaration> = {
104
- readonly target?: EntityFields<InputOf<D>>;
105
- readonly kernel?: never;
64
+ /** A system on one entity runs on its row, in no order; that its target is an entity field of its input is checked at its body. */
65
+ type Targeted = {
66
+ readonly kernel?: false;
106
67
  readonly up?: never;
107
68
  readonly order?: never;
108
- readonly reduce?: never;
109
69
  };
110
70
 
71
+ /** `where` names only shared components, and keeps rows unordered across archetypes, so it's without `up`, `order` and a target. */
72
+ type Where<D> = D extends { readonly components: { readonly where: infer W } }
73
+ ? { readonly components?: { readonly where?: { readonly [K in Exclude<keyof W, Shared>]: { readonly "error: where names only shared components, which each archetype holds one value of": K } } } }
74
+ & (D extends { readonly up: object } | { readonly order: object } | { readonly target: string }
75
+ ? { readonly components?: { readonly where?: { readonly "error: where can't be used with up, order or a target, which run rows across archetypes": true } } } : {})
76
+ : {};
77
+
78
+ /**
79
+ * Whether the threads a declaration's objects live on hold, once its type is known: never checked against the
80
+ * constraint itself, which TypeScript instantiates the parameter with while a predicate in `where` waits for its type.
81
+ */
82
+ type Placed<D extends Declaration> = Declaration extends D ? {} : OneThread<ThreadsOf<D>, ThreadedBy<D>>;
83
+
111
84
  type Validate<D extends Declaration> =
112
- Lists<D>
113
- & IndexLookups<D>
114
- & Order<D>
115
- & (D extends { readonly input: Schema } ? { readonly components?: { readonly added?: never; readonly changed?: never } } : {})
116
- & (D extends { readonly kernel: "cpu" | "gpu" } ? Kernel : {})
85
+ LookupChanges<D>
86
+ & Where<D>
87
+ & Conditions<D>
88
+ & Inferred
117
89
  & (D extends { readonly kernel: "gpu" } ? GpuKernel : {})
118
90
  // `up` and `order` order rows, so a system without them has neither, and one has at most one of them.
119
- & (Property<D, "components"> extends undefined ? { readonly up?: { readonly [key: string]: never }; readonly order?: { readonly "error: a system without components runs once, in no order": true } } : {})
91
+ & (Property<D, "components"> extends undefined ? {
92
+ readonly up?: { readonly [key: string]: never };
93
+ readonly order?: { readonly "error: a system without components runs once, in no order": true };
94
+ readonly kernel?: false | { readonly "error: a system without components runs once, so there's nothing to compile": true };
95
+ } : {})
120
96
  & (D extends { readonly up: object } ? { readonly order?: { readonly "error: up and order both decide the order of its rows": true } } : {})
97
+ // GPU kernels don't read components an archetype may lack yet.
98
+ & (D extends { readonly components: { readonly optional: readonly [unknown, ...unknown[]] } }
99
+ ? { readonly kernel?: boolean | { readonly "error: a GPU kernel can't have optional components yet": true } } : {})
121
100
  & (D extends { readonly observer: true } ? Observer : {})
122
- & (D extends { readonly target: string } ? Targeted<D> : {})
101
+ & (D extends { readonly target: string } ? Targeted : {})
123
102
  & (D extends { readonly target: string } ? Property<D, "components"> extends undefined ? { readonly target?: { readonly "error: a system on one entity runs on its row, so it needs components": true } } : {} : {})
124
- & { readonly shader?: never };
103
+ // A body's input is the type of its parameter after its context, not part of its declaration.
104
+ & { readonly shader?: never; readonly input?: never };
105
+
106
+ /** The fields of input `I` that hold an entity. */
107
+ type EntityFields<I> = { [K in keyof I]-?: [Exclude<I[K], undefined>] extends [Entity] ? K : never }[keyof I] & string;
125
108
 
126
- /** The body of a system that declares nothing, which runs once per run with its commands. */
127
- type Alone = (context: { readonly commands: Commands }) => void;
109
+ /**
110
+ * What a declaration requires of the input its body takes, checked at the body, since the input is known only once the
111
+ * body is: a target names an entity field of it, and a system with input doesn't filter on added or changed, as its
112
+ * runs pass different input, nor is it an observer. Every check passes for `never`, the input before the body is
113
+ * inferred.
114
+ */
115
+ type Checks<D, I> = [I] extends [never] ? unknown :
116
+ (D extends { readonly target: infer T extends string }
117
+ ? [I] extends [undefined] ? { readonly "error: a system with a target takes its input after its context": T }
118
+ : T extends EntityFields<I> ? unknown : { readonly "error: its target is no entity field of its input": T }
119
+ : unknown)
120
+ & ([I] extends [undefined] ? unknown
121
+ : (D extends { readonly components: { readonly added: object } | { readonly changed: object } } ? { readonly "error: a system with input can't filter on added or changed, as its runs pass different input; pass it through a resource": true } : unknown)
122
+ & (D extends { readonly observer: true } ? { readonly "error: an observer system takes no input": true } : unknown));
123
+
124
+ /** The body of a system that declares nothing, which runs once per run with its resources and commands. */
125
+ type Alone = (context: Context<{}>) => void;
128
126
 
129
127
  /** A composite: its list of members, or its declaration. */
130
128
  type Composition = readonly System<unknown>[] | CompositeDeclaration;
@@ -133,48 +131,77 @@ type Composition = readonly System<unknown>[] | CompositeDeclaration;
133
131
  type MembersOf<C> = C extends CompositeDeclaration ? C["systems"] : C;
134
132
 
135
133
  /** A member whose input has a field of a different type than another member's becomes the error saying so. */
136
- type Checked<C> = C extends Alone ? unknown : C extends CompositeDeclaration ? { readonly systems: CheckMembers<C["systems"]> } : CheckMembers<C>;
134
+ type Checked<C> = C extends Alone ? ReturnsNoPromise<C> : C extends CompositeDeclaration ? { readonly systems: CheckMembers<C["systems"]> } : CheckMembers<C>;
137
135
 
138
136
  /**
139
137
  * Declares a system and returns it; nothing runs. The arguments tell the forms apart:
140
- * - `create(body)`: a system that declares nothing, whose body runs once per run with its commands.
138
+ * - `create(body)`: a system that declares nothing, whose body runs once per run with its resources and commands.
141
139
  * - `create(declaration, body)`: a system.
142
140
  * - `create([move, collide])`: a composite of the systems listed, which may live on different threads.
143
- * - `create({ systems: [move, collide], after: [input] })`: a composite with a name or constraints.
141
+ * - `create({ systems: [move, collide], after: [input] })`: a composite with constraints.
144
142
  *
145
- * Each run passes a composite's members one input, with every field of theirs. Throws if a system names a key that
146
- * isn't registered as its kind, lists a key in both `read` and `write`, writes a reference, a lookup reads a component
147
- * it writes or goes through an index keyed by one, or reads through an index what not every entity it holds has, its
143
+ * What a body reads, writes and reduces into the build infers from it. Each run passes a composite's members one
144
+ * input, with every field of theirs. Throws if a system names a key that isn't registered as its kind, its body writes
145
+ * a reference, a lookup's rows are read where it writes them or it goes through an index keyed by what it writes, its
148
146
  * rows are ordered by an index it isn't sorted or keyed by what it writes, its object components and resources live on
149
147
  * different threads, or its reductions, conditions, `up`, `order` or placement can't hold, or it's an observer and
150
- * writes, reduces, takes input, is a kernel, has `up` or is ordered; or if a composite's member isn't a system a
151
- * constructor returned, or two members declare an input field with different schemas. A composite's observer members
152
- * run after its sync point, ordered with nothing.
148
+ * writes, reduces, takes input, is a kernel, has `up` or is ordered; if the build couldn't follow how its body uses its
149
+ * resources, lookups or parent; or if a composite's member isn't a system a constructor returned, or two members
150
+ * declare an input field with different schemas. A composite's observer members run after its sync point, ordered
151
+ * with nothing.
152
+ *
153
+ * A run of a system without components resolves to what its body returns, or `undefined` when its conditions, resource
154
+ * change filters or index lookups' `changed: true` skip it; a run of any other system or a composite to nothing. A
155
+ * body returns no promise, by type and at runtime, where returning one fails its system: a run never waits for one.
153
156
  *
154
157
  * One argument, a body or a composite, is one overload, so a mistake in it is reported where it is rather than as no
155
158
  * overload matching.
156
159
  */
157
- export function create<const D extends Declaration>(declaration: D & Validate<D> & OneThread<ThreadsOf<D>, ThreadedBy<D>>, body: Body<D>): System<InputOf<D>>;
158
- export function create<const C extends Alone | Composition>(only: C & Checked<C>): C extends Alone ? System : System<CompositeInputOf<MembersOf<C>>>;
159
- export function create(first: Declaration | Leaf["body"] | readonly System<unknown>[] | CompositeDeclaration, second?: Leaf["body"]): System<unknown> {
160
+ export function create<const D extends Declaration, B extends Body<D, never>>(declaration: D & Validate<D> & Placed<D>, body: B & Checks<D, InputOf<D, B>> & ReturnsNoPromise<B>): System<InputOf<D, B>, ResultOf<D, B>>;
161
+ export function create<const C extends Alone | Composition>(only: C & Checked<C>): C extends (context: Context<{}>) => infer R ? System<undefined, R> : System<CompositeInputOf<MembersOf<C>>>;
162
+ // The plugin passes the schema of the body's input as a third argument.
163
+ export function create(first: Declaration | Leaf["body"] | readonly System<unknown>[] | CompositeDeclaration, second?: Leaf["body"], input?: unknown): System<unknown> {
160
164
  // The plugin gives its id to the call's first argument: the declaration, the members, or the body made into a
161
165
  // system alone.
162
166
  const id = takeIdOfDeclaration(first);
163
- if (isList(first)) return compose({ systems: first }, id);
164
- if (typeof first !== "function" && second === undefined && "systems" in first) return compose(first, id);
165
- const declaration: Declaration = typeof first === "function" ? {} : first;
167
+ if (isList(first)) return compose(first, { systems: first }, id);
168
+ if (typeof first !== "function" && second === undefined && "systems" in first) return compose(first, first, id);
169
+ const declared: Declaration = typeof first === "function" ? {} : first;
166
170
  const body = typeof first === "function" ? first : second;
167
171
  if (body === undefined) throw new Error("A system needs a body, and a composite its systems.");
168
- const system: Leaf & System<unknown> = { kind: "system", name: nameOf(declaration.name, id, "system"), declaration, body };
172
+ const name = nameOf(first, id, "system");
173
+ const declaration = resolve(`System "${name}"`, declared, accessOf(`System "${name}"`, first));
174
+ const schema = inputSchemaOf(name, body, declaration.components === undefined ? 1 : 2, input);
175
+ const system: Leaf & System<unknown> = { kind: "system", name, declaration, input: schema, body };
169
176
  checkLeaf(system);
170
177
  claimSystem(system, id);
171
178
  return system;
172
179
  }
173
180
 
181
+ /** A declaration as the world takes it, with what the build inferred its body uses. */
182
+ const resolve = (what: string, declared: Declaration, access: ReturnType<typeof accessOf>): Resolved => {
183
+ const reading = declared.observer === true;
184
+ const { components, lookup, up, resources, ...rest } = declared;
185
+ const uses = resourceUses(what, access, resources?.is);
186
+ // What `where`'s predicates read counts as the system's reads, for its order, conflicts and placement.
187
+ const whereReads = whereReadsOf(what, components, access);
188
+ const conditions: readonly symbol[] = resources?.is ?? [];
189
+ for (const key of whereReads) if (!uses.read.includes(key) && !uses.write.includes(key) && !conditions.includes(key)) uses.read.push(key);
190
+ const resolved: Resolved = {
191
+ ...rest,
192
+ ...components === undefined ? {} : { components: componentLists(components, access.components, reading, whereReads) },
193
+ ...lookup === undefined ? {} : { lookup: lookupsLists(lookup, access) },
194
+ ...up === undefined ? {} : { up: { through: up.through, read: upReads(what, access) } },
195
+ };
196
+ const lists = compact({ read: uses.read, write: uses.write, reduce: uses.reduce, changed: resources?.changed, is: resources?.is, not: resources?.not });
197
+ return Object.keys(lists).length === 0 ? resolved : { ...resolved, resources: lists };
198
+ };
199
+
174
200
  const isList = (value: unknown): value is readonly System<unknown>[] => Array.isArray(value);
175
201
 
176
- const compose = (declaration: CompositeDeclaration, id: string | undefined): System<unknown> => {
177
- const system: Composite & System<unknown> = { kind: "composite", name: nameOf(declaration.name, id, "system"), declaration };
202
+ /** A composite of `declaration`, labeled by `first`, the argument the plugin labeled. */
203
+ const compose = (first: object, declaration: CompositeDeclaration, id: string | undefined): System<unknown> => {
204
+ const system: Composite & System<unknown> = { kind: "composite", name: nameOf(first, id, "system"), declaration };
178
205
  checkComposite(system);
179
206
  claimSystem(system, id);
180
207
  return system;
@@ -1,35 +1,39 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
1
2
  import type { Index } from '../indexes/index-type.js';
2
3
  import type { Resource } from '../resource/resource.js';
3
- import type { Schema } from '../schema/schema.js';
4
- import type { ComponentAccess, ResourceAccess, SystemLookup, Up } from './access.js';
5
- import type { Name } from './name.js';
4
+ import type { ComponentAccess, ComponentLists, ResourceAccess, ResourceLists, SystemLookup, SystemLookupLists, Up, UpLists } from './access.js';
6
5
  import type { Shader } from './render.js';
7
6
  import type { System } from './system.js';
8
- import type { OperatorOf, Reduced } from '../resource/reduction.js';
9
7
 
10
8
  /**
11
9
  * A system never declares its thread: it runs on the one its object components and resources live on, those it
12
- * reads, writes or filters on by change, through `components`, `lookup`, `up` and `resources` but `has` and `not`.
13
- * Without them, a kernel runs on the kernel pool and any other system on `"world"`.
10
+ * reads, writes or filters on by change, through its row, lookups, `up` and resources. Without them, a kernel runs on
11
+ * the kernel pool and any other system on `"world"`. A declaration says only what its body can't show: which entities
12
+ * it runs over, its filters and conditions, and its order; the build infers what the body reads, writes and reduces.
14
13
  */
15
14
  export type Declaration = {
16
- readonly name?: Name;
17
15
  /**
18
- * Compiled to a kernel, which the build rejects if the body leaves the kernel subset. Values in `components` and
19
- * `lookup` must be structs and resources read-only. Without it, the system runs as written, on its thread.
20
- * - `"cpu"`: runs on the kernel pool. - `"gpu"`: also has no lookups, change filters, commands or loops, and only
21
- * 4-byte scalar values, its `up` included. It runs as a compute shader in a world with a GPU, and as a `"cpu"`
22
- * kernel in one without. Every matched row counts as changed in what it writes.
16
+ * Whether its body compiles to a kernel, a function the build compiles to run on every matched row, in parallel, on
17
+ * the kernel pool. Values in `components` and `lookup` must be structs and resources read-only.
18
+ * - Without it, a system with components compiles when its body is in the kernel subset and its declaration allows
19
+ * it, and otherwise runs as written, computing as the body as written does. A system without components runs once,
20
+ * as written.
21
+ * - `true`: compiles, or the build fails saying why. Its arithmetic may round each step to storage precision, as
22
+ * WASM's f32 SIMD lanes do, so its results may differ from the body as written.
23
+ * - `false`: runs as written, on its thread.
24
+ * - `"gpu"`: also has no lookups, change filters, commands or loops, and only 4-byte scalar values, its `up`
25
+ * included. It runs as a compute shader in a world with a GPU, and as a kernel on the pool in one without. Every
26
+ * matched row counts as changed in what it writes.
23
27
  */
24
- readonly kernel?: "cpu" | "gpu";
25
- /** The entities it runs over, and what it reads and writes of theirs. Omitted for a system that runs once per run. */
28
+ readonly kernel?: boolean | "gpu";
29
+ /** The entities it runs over. Omitted for a system that runs once per run. */
26
30
  readonly components?: ComponentAccess;
27
31
  readonly lookup?: { readonly [name: string]: SystemLookup };
28
32
  /**
29
- * Runs rows in depth order through `through`, so each reads its parent's `read` values after the parent ran, as
30
- * the context's `up`, or null for a row without a parent. With change filters, a row also passes when its parent,
31
- * or what it reads of its parent, changed since the system last ran, or it moved to another archetype, as removing
32
- * its parent moves it. Rows on or under a parent cycle don't run.
33
+ * Runs rows in depth order through `through`, so each reads its parent's values after the parent ran, as the
34
+ * context's `up`, or null for a row without a parent. With change filters, a row also passes when its parent, or
35
+ * what it reads of its parent, changed since the system last ran, or it moved to another archetype, as removing its
36
+ * parent moves it. Rows on or under a parent cycle don't run.
33
37
  */
34
38
  readonly up?: Up;
35
39
  /**
@@ -39,14 +43,10 @@ export type Declaration = {
39
43
  */
40
44
  readonly order?: Index<{ readonly sorted: true }>;
41
45
  readonly resources?: ResourceAccess;
42
- /** The resources its body contributes to, each with the operator its `reduce` trait declares. */
43
- readonly reduce?: { readonly [K in Reduced]?: OperatorOf<K> };
44
- /** The object of named fields passed to each run. A system with input can't use `added` or `changed`. */
45
- readonly input?: Extract<Schema, { readonly type: "object" }>;
46
46
  /**
47
- * The input field naming the one entity it runs on: its body runs once, on that entity's row, when the entity is
48
- * alive and matches `components`, and not at all otherwise. Needs `components`; not with `kernel`, `up`, `order`
49
- * or `reduce`.
47
+ * The field of its body's input naming the one entity it runs on: its body runs once, on that entity's row, when
48
+ * the entity is alive and matches `components`, and not at all otherwise. Needs `components`; not with `kernel`,
49
+ * `up` or `order`, nor with a body that reduces.
50
50
  */
51
51
  readonly target?: string;
52
52
  /** Makes this a render system (see `render`): its body records GPU work over the GPU copy of the components it names. */
@@ -63,3 +63,11 @@ export type Declaration = {
63
63
  */
64
64
  readonly observer?: true;
65
65
  };
66
+
67
+ /** A declaration as the world takes it: the build's inferred reads, writes and reductions joined with what it declares. */
68
+ export type Resolved = Omit<Declaration, "components" | "lookup" | "up" | "resources"> & {
69
+ readonly components?: ComponentLists;
70
+ readonly lookup?: { readonly [name: string]: SystemLookupLists };
71
+ readonly up?: UpLists;
72
+ readonly resources?: ResourceLists;
73
+ };
@@ -1,3 +1,4 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
1
2
  import type { Composite } from './composite.js';
2
3
  import type { Leaf } from './leaf.js';
3
4
 
@@ -1,3 +1,4 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
1
2
  export type { Commands } from './commands.js';
2
3
  export * from './create.js';
3
4
  export { render, type RenderContext, type RenderTable } from './render.js';
@@ -1,11 +1,42 @@
1
- import type { Schema } from '../schema/schema.js';
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import type { Property } from './property.js';
2
3
  import type { System } from './system.js';
3
4
 
5
+ /** How many parameters come before a body's input: the row and the context, or the context alone. */
6
+ type Before<D> = D extends { readonly components: object } ? 2 : 1;
7
+
8
+ /** The input body `B` of declaration `D` takes: the type of its parameter after the context, or `undefined` without one. */
9
+ export type InputOf<D, B> = B extends (...parameters: infer P) => void ? P["length"] extends Before<D> ? undefined : P[Before<D>] : undefined;
10
+
11
+ /** Whether a declaration's conditions, resource change filters or index lookups' `changed: true` can skip its body. */
12
+ type Skippable<D> =
13
+ D extends { readonly resources: { readonly is: object } | { readonly not: object } | { readonly changed: object } } ? true
14
+ : true extends { [N in keyof Property<D, "lookup">]: Property<D, "lookup">[N] extends { readonly changed: true } ? true : false }[keyof Property<D, "lookup">] ? true
15
+ : false;
16
+
17
+ /**
18
+ * What a run of a system of declaration `D` and body `B` resolves to: for one without components, what its body
19
+ * returns, or `undefined` too when its body may be skipped; for one with components, nothing.
20
+ */
21
+ export type ResultOf<D, B> = D extends { readonly components: object } ? void
22
+ : B extends (...parameters: never[]) => infer R ? [R] extends [void] ? R : Skippable<D> extends true ? R | undefined : R : void;
23
+
24
+ /** Whether `R` is exactly `unknown` or `object`, return types wide enough to hide a promise. */
25
+ type Hides<R> = unknown extends R ? true
26
+ : [R] extends [object] ? [object] extends [R] ? [keyof R] extends [never] ? string extends R ? false : true : false : false : false;
27
+
4
28
  /**
5
- * The input a system declares: a value of its `input` schema, or `undefined` without one; `unknown` for `any`, as an
6
- * overload's declaration erases to, since every schema's value type is too deep to compute.
29
+ * A body returning a promise or another `PromiseLike`, or declared to return `unknown` or `object`, which may be one,
30
+ * becomes the error saying it returns none: a run never waits for one, so a body starts the work and a later run
31
+ * finishes it. Types can't tell a body returning `any`, nor an async function typed as returning `void`.
7
32
  */
8
- export type InputOf<D> = 0 extends 1 & D ? unknown : D extends { readonly input: infer A extends Schema } ? Schema.ToType<A> : undefined;
33
+ export type ReturnsNoPromise<B> = B extends (...parameters: never[]) => infer R
34
+ ? 0 extends (1 & R) ? unknown
35
+ : [Extract<R, PromiseLike<unknown>>] extends [never] ? Hides<R> extends true ? NoPromise : unknown
36
+ : NoPromise
37
+ : unknown;
38
+
39
+ type NoPromise = { readonly "error: a body returns no promise; start the work, and finish it in a later run": true };
9
40
 
10
41
  /** What `run` takes after a system: nothing, or one value. */
11
42
  export type Input<I> = [I] extends [undefined] ? [] : [input: I];
@@ -1,13 +1,20 @@
1
- import type { Declaration } from './declaration.js';
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import type { Schema } from '../schema/schema.js';
3
+ import type { Resolved } from './declaration.js';
2
4
  import type { Name } from './name.js';
3
5
 
6
+ /** The schema of a body's input: an object of named fields. */
7
+ export type InputSchema = Extract<Schema, { readonly type: "object" }>;
8
+
4
9
  /**
5
10
  * A system that runs a body: `"render"` for one made by `render`, `"system"` otherwise. Its body's parameters are
6
- * checked where it's created, so a leaf holds any body.
11
+ * checked where it's created, so a leaf holds any body. `input` is the schema of its body's input, which the plugin
12
+ * gives from the type of the body's parameter after its context, or undefined; every leaf has it, so leaves share a shape.
7
13
  */
8
14
  export type Leaf = {
9
15
  readonly kind: "system" | "render";
10
16
  readonly name: Name;
11
- readonly declaration: Declaration;
17
+ readonly declaration: Resolved;
18
+ readonly input: InputSchema | undefined;
12
19
  readonly body: (...parameters: never[]) => void;
13
20
  };
@@ -0,0 +1,53 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Component } from '../component/component.js';
3
+ import { Entity, Index, System } from "@adobe/ecs";
4
+
5
+ const position = Symbol("listsTypeTest/position");
6
+ const velocity = Symbol("listsTypeTest/velocity");
7
+ const scale = Symbol("listsTypeTest/scale");
8
+ declare module "@adobe/ecs" {
9
+ interface Components {
10
+ [position]: { type: number };
11
+ [velocity]: { type: number };
12
+ }
13
+ interface Resources {
14
+ [scale]: { type: number };
15
+ }
16
+ }
17
+
18
+ type Equal<A, B> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
19
+ const expectType = <T extends true>(): T | undefined => undefined;
20
+
21
+ // A list of components declared `as const` is a tuple, an archetype wherever component lists go.
22
+ export const Particle = [position, velocity] as const;
23
+ expectType<Equal<typeof Particle, readonly [typeof position, typeof velocity]>>();
24
+ export const one: readonly Component.Key[] = Particle;
25
+ export const move = System.create({ components: { with: [...Particle] } }, row => { row[position] += row[velocity]; });
26
+ export const read = System.create({ observer: true, components: { with: [...Particle] } }, row => { void row[velocity]; });
27
+
28
+ // Declared without `as const`, a list's keys widen to `symbol`, which no list of components takes.
29
+ const loose = [position, velocity];
30
+ expectType<Equal<typeof loose, symbol[]>>();
31
+ // @ts-expect-error so it's never a list of components
32
+ export const looseList: readonly Component.Key[] = loose;
33
+ // @ts-expect-error nor an index's
34
+ export const byLoose = Index.create({ key: [position], components: { with: loose } });
35
+
36
+ /** A list whose components are known only at runtime says so by its type. */
37
+ const runtime: readonly (typeof position | typeof velocity)[] = Particle;
38
+
39
+ export const spawn = System.create(({ commands }) => {
40
+ commands.spawn(Particle)({ [position]: 1, [velocity]: 2 });
41
+ // @ts-expect-error a tuple's values are required
42
+ commands.spawn(Particle)({ [position]: 1 });
43
+ commands.spawn([position, velocity])({ [position]: 1, [velocity]: 2 });
44
+ // @ts-expect-error a list declared without `as const` can't be spawned
45
+ commands.spawn(loose);
46
+ // @ts-expect-error nor added
47
+ commands.add(Entity.none, loose, {});
48
+ // A runtime list takes any of its values.
49
+ commands.spawn(runtime)({ [position]: 1 });
50
+ commands.add(Entity.none, Particle, { [position]: 1, [velocity]: 2 });
51
+ // @ts-expect-error a resource is never in a list of components
52
+ commands.spawn([position, scale]);
53
+ });
@@ -1,6 +1,7 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
1
2
  /**
2
- * The label reports and errors give it, which needn't be unique: the value its constructor returns is its identity, so
3
- * separately written code can't collide by name. Namespacing it (`"physics/integrate"`) keeps labels short. Without
4
- * one, it's labeled by its binding and the id the plugin gave it, or else by its kind numbered.
3
+ * The label errors give it, for display: its binding, from the id the plugin gave it; for one made in a
4
+ * function, the binding or function the plugin found it in; else its kind numbered. The value its constructor returns
5
+ * is its identity, so labels needn't be unique.
5
6
  */
6
7
  export type Name = string;
@@ -0,0 +1,51 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Entity } from '../entity/entity.js';
3
+ import { System } from './system.js';
4
+
5
+ type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
6
+ const check = <_T extends true>() => { };
7
+
8
+ const position = Symbol("optionalTest/position");
9
+ const velocity = Symbol("optionalTest/velocity");
10
+ const pilot = Symbol("optionalTest/pilot");
11
+
12
+ declare module '@adobe/ecs' {
13
+ export interface Components {
14
+ [position]: { type: number };
15
+ [velocity]: { type: number };
16
+ [pilot]: { type: Entity; reference: "owner" };
17
+ }
18
+ }
19
+
20
+ // An optional component is its value, or undefined where an entity lacks it.
21
+ System.create({ components: { with: [position], optional: [velocity, pilot] } }, row => {
22
+ check<Equal<typeof row[typeof velocity], number | undefined>>();
23
+ const speed = row[velocity];
24
+ if (speed !== undefined) row[position] += speed;
25
+ row[velocity] = 2;
26
+ // @ts-expect-error a reference is read-only in a row, optional or not
27
+ row[pilot] = Entity.none;
28
+ });
29
+
30
+ // A CPU kernel reads them as a body run as written does; GPU kernels don't read components an archetype may lack yet.
31
+ System.create({ kernel: true, components: { with: [position], optional: [velocity] } }, row => { void row[velocity]; });
32
+ System.create({
33
+ // @ts-expect-error a GPU kernel can't have optional components yet
34
+ kernel: "gpu",
35
+ components: { with: [position], optional: [velocity] },
36
+ }, row => { void row[velocity]; });
37
+
38
+ // An observer system reads its optional components and writes nothing.
39
+ System.create({ observer: true, components: { with: [position], optional: [velocity] } }, row => {
40
+ void row[velocity];
41
+ // @ts-expect-error an observer system's row is read-only
42
+ row[velocity] = 1;
43
+ });
44
+
45
+ // A lookup by entity's optional component is its value, or undefined where the entity lacks it.
46
+ System.create({ components: { with: [pilot] }, lookup: { pilots: { with: [position], optional: [velocity] } } }, (row, { lookup }) => {
47
+ const found = lookup.pilots(row[pilot]);
48
+ if (found === null) return;
49
+ check<Equal<typeof found[typeof position], number>>();
50
+ check<Equal<typeof found[typeof velocity], number | undefined>>();
51
+ });
@@ -1,3 +1,4 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
1
2
 
2
3
  export type Property<T, K extends PropertyKey> = T extends { readonly [P in K]?: infer V } ? V : undefined;
3
4