murow 0.0.70 → 0.0.71

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 (439) hide show
  1. package/README.md +52 -37
  2. package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
  3. package/dist/cjs/core/binary-codec/index.js +1 -0
  4. package/dist/cjs/core/driver/driver.js +1 -0
  5. package/dist/cjs/core/driver/drivers/immediate.js +1 -0
  6. package/dist/cjs/core/driver/drivers/index.js +1 -0
  7. package/dist/cjs/core/driver/drivers/raf.js +1 -0
  8. package/dist/cjs/core/driver/drivers/timeout.js +1 -0
  9. package/dist/cjs/core/driver/index.js +1 -0
  10. package/dist/cjs/core/events/event-system.js +1 -0
  11. package/dist/cjs/core/events/index.js +1 -0
  12. package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
  13. package/dist/cjs/core/fixed-ticker/index.js +1 -0
  14. package/dist/cjs/core/free-list/free-list.js +1 -0
  15. package/dist/cjs/core/free-list/index.js +1 -0
  16. package/dist/cjs/core/generate-id/generate-id.js +1 -0
  17. package/dist/cjs/core/generate-id/index.js +1 -0
  18. package/dist/cjs/core/index.js +1 -0
  19. package/dist/cjs/core/input/index.js +1 -0
  20. package/dist/cjs/core/input/manager.js +1 -0
  21. package/dist/cjs/core/input/sources/browser.js +1 -0
  22. package/dist/cjs/core/input/sources/index.js +1 -0
  23. package/dist/cjs/core/input/types.js +1 -0
  24. package/dist/cjs/core/lerp/index.js +1 -0
  25. package/dist/cjs/core/lerp/lerp.js +1 -0
  26. package/dist/cjs/core/navmesh/index.js +1 -0
  27. package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
  28. package/dist/cjs/core/navmesh/navmesh.js +1 -0
  29. package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
  30. package/dist/cjs/core/pooled-codec/index.js +1 -0
  31. package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
  32. package/dist/cjs/core/prediction/index.js +1 -0
  33. package/dist/cjs/core/prediction/prediction.js +1 -0
  34. package/dist/cjs/core/ray/index.js +1 -0
  35. package/dist/cjs/core/ray/ray-2d.js +1 -0
  36. package/dist/cjs/core/ray/ray-3d.js +1 -0
  37. package/dist/cjs/core/simple-rng/index.js +1 -0
  38. package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
  39. package/dist/cjs/core/sparse-batcher/index.js +1 -0
  40. package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
  41. package/dist/cjs/ecs/component-store.js +1 -0
  42. package/dist/cjs/ecs/component.js +1 -0
  43. package/dist/cjs/ecs/entity-handle.js +1 -0
  44. package/dist/cjs/ecs/index.js +1 -0
  45. package/dist/cjs/ecs/system-builder.js +1 -0
  46. package/dist/cjs/ecs/world-systems.js +1 -0
  47. package/dist/cjs/ecs/world.js +1 -0
  48. package/dist/cjs/game/index.js +1 -0
  49. package/dist/cjs/game/loop/index.js +1 -0
  50. package/dist/cjs/game/loop/loop.js +1 -0
  51. package/dist/cjs/index.js +1 -0
  52. package/dist/cjs/net/adapters/browser-websocket.js +1 -0
  53. package/dist/cjs/net/adapters/bun-websocket.js +1 -0
  54. package/dist/cjs/net/buffer-pool.js +1 -0
  55. package/dist/cjs/net/client.js +1 -0
  56. package/dist/cjs/net/index.js +1 -0
  57. package/dist/cjs/net/server.js +1 -0
  58. package/dist/cjs/net/types.js +1 -0
  59. package/dist/cjs/net/validators.js +1 -0
  60. package/dist/cjs/protocol/index.js +1 -0
  61. package/dist/cjs/protocol/intent/define-intent.js +1 -0
  62. package/dist/cjs/protocol/intent/index.js +1 -0
  63. package/dist/cjs/protocol/intent/intent-registry.js +1 -0
  64. package/dist/cjs/protocol/intent/intent.js +1 -0
  65. package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
  66. package/dist/cjs/protocol/rpc/index.js +1 -0
  67. package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
  68. package/dist/cjs/protocol/rpc/rpc.js +1 -0
  69. package/dist/cjs/protocol/snapshot/index.js +1 -0
  70. package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
  71. package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
  72. package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
  73. package/dist/cjs/renderer/base-2d-renderer.js +1 -0
  74. package/dist/cjs/renderer/base-3d-renderer.js +1 -0
  75. package/dist/cjs/renderer/base-renderer.js +1 -0
  76. package/dist/cjs/renderer/index.js +1 -0
  77. package/dist/cjs/renderer/types.js +1 -0
  78. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  79. package/dist/esm/core/binary-codec/index.js +1 -0
  80. package/dist/esm/core/driver/driver.js +1 -0
  81. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  82. package/dist/esm/core/driver/drivers/index.js +1 -0
  83. package/dist/esm/core/driver/drivers/raf.js +1 -0
  84. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  85. package/dist/esm/core/driver/index.js +1 -0
  86. package/dist/esm/core/events/event-system.js +1 -0
  87. package/dist/esm/core/events/index.js +1 -0
  88. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  89. package/dist/esm/core/fixed-ticker/index.js +1 -0
  90. package/dist/esm/core/free-list/free-list.js +1 -0
  91. package/dist/esm/core/free-list/index.js +1 -0
  92. package/dist/esm/core/generate-id/generate-id.js +1 -0
  93. package/dist/esm/core/generate-id/index.js +1 -0
  94. package/dist/esm/core/index.js +1 -0
  95. package/dist/esm/core/input/index.js +1 -0
  96. package/dist/esm/core/input/manager.js +1 -0
  97. package/dist/esm/core/input/sources/browser.js +1 -0
  98. package/dist/esm/core/input/sources/index.js +1 -0
  99. package/dist/esm/core/input/types.js +0 -0
  100. package/dist/esm/core/lerp/index.js +1 -0
  101. package/dist/esm/core/lerp/lerp.js +1 -0
  102. package/dist/esm/core/navmesh/index.js +1 -0
  103. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  104. package/dist/esm/core/navmesh/navmesh.js +1 -0
  105. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  106. package/dist/esm/core/pooled-codec/index.js +1 -0
  107. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  108. package/dist/esm/core/prediction/index.js +1 -0
  109. package/dist/esm/core/prediction/prediction.js +1 -0
  110. package/dist/esm/core/ray/index.js +1 -0
  111. package/dist/esm/core/ray/ray-2d.js +1 -0
  112. package/dist/esm/core/ray/ray-3d.js +1 -0
  113. package/dist/esm/core/simple-rng/index.js +1 -0
  114. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  115. package/dist/esm/core/sparse-batcher/index.js +1 -0
  116. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  117. package/dist/esm/ecs/component-store.js +1 -0
  118. package/dist/esm/ecs/component.js +1 -0
  119. package/dist/esm/ecs/entity-handle.js +1 -0
  120. package/dist/esm/ecs/index.js +1 -0
  121. package/dist/esm/ecs/system-builder.js +1 -0
  122. package/dist/esm/ecs/world-systems.js +1 -0
  123. package/dist/esm/ecs/world.js +1 -0
  124. package/dist/esm/game/index.js +1 -0
  125. package/dist/esm/game/loop/index.js +1 -0
  126. package/dist/esm/game/loop/loop.js +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  129. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  130. package/dist/esm/net/buffer-pool.js +1 -0
  131. package/dist/esm/net/client.js +1 -0
  132. package/dist/esm/net/index.js +1 -0
  133. package/dist/esm/net/server.js +1 -0
  134. package/dist/esm/net/types.js +1 -0
  135. package/dist/esm/net/validators.js +1 -0
  136. package/dist/esm/protocol/index.js +1 -0
  137. package/dist/esm/protocol/intent/define-intent.js +1 -0
  138. package/dist/esm/protocol/intent/index.js +1 -0
  139. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  140. package/dist/esm/protocol/intent/intent.js +0 -0
  141. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  142. package/dist/esm/protocol/rpc/index.js +1 -0
  143. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  144. package/dist/esm/protocol/rpc/rpc.js +0 -0
  145. package/dist/esm/protocol/snapshot/index.js +1 -0
  146. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  147. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  148. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  149. package/dist/esm/renderer/base-2d-renderer.js +1 -0
  150. package/dist/esm/renderer/base-3d-renderer.js +1 -0
  151. package/dist/esm/renderer/base-renderer.js +1 -0
  152. package/dist/esm/renderer/index.js +1 -0
  153. package/dist/esm/renderer/types.js +0 -0
  154. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  155. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  156. package/dist/types/core/free-list/free-list.d.ts +31 -0
  157. package/dist/types/core/free-list/index.d.ts +1 -0
  158. package/dist/{core → types/core}/index.d.ts +5 -0
  159. package/dist/{core → types/core}/input/index.d.ts +1 -0
  160. package/dist/{core → types/core}/input/manager.d.ts +2 -0
  161. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  162. package/dist/types/core/ray/index.d.ts +2 -0
  163. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  164. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  165. package/dist/types/core/simple-rng/index.d.ts +1 -0
  166. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  167. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  168. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  169. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  170. package/dist/{game → types/game}/loop/loop.d.ts +33 -29
  171. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  172. package/dist/{net → types/net}/index.d.ts +2 -2
  173. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  174. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  175. package/dist/types/renderer/base-renderer.d.ts +21 -0
  176. package/dist/types/renderer/index.d.ts +4 -0
  177. package/dist/types/renderer/types.d.ts +79 -0
  178. package/dist/webgpu/cjs/index.js +6004 -0
  179. package/dist/webgpu/esm/index.js +5972 -0
  180. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  181. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  182. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  183. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  184. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  185. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  186. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  187. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  188. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  189. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  190. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  191. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  192. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  193. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  194. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  195. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  196. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  197. package/dist/webgpu/types/camera/index.d.ts +2 -0
  198. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  199. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  200. package/dist/webgpu/types/core/constants.d.ts +59 -0
  201. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  202. package/dist/webgpu/types/core/index.d.ts +2 -0
  203. package/dist/webgpu/types/core/math.d.ts +37 -0
  204. package/dist/webgpu/types/core/types.d.ts +125 -0
  205. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  206. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  207. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  208. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  209. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  210. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  211. package/dist/webgpu/types/index.d.ts +32 -0
  212. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  213. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  214. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  215. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  216. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  217. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  218. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  219. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  220. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  221. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  222. package/package.json +96 -26
  223. package/dist/core/binary-codec/binary-codec.js +0 -354
  224. package/dist/core/binary-codec/index.js +0 -1
  225. package/dist/core/driver/driver.js +0 -47
  226. package/dist/core/driver/drivers/immediate.js +0 -61
  227. package/dist/core/driver/drivers/index.js +0 -3
  228. package/dist/core/driver/drivers/raf.js +0 -62
  229. package/dist/core/driver/drivers/timeout.js +0 -71
  230. package/dist/core/driver/index.js +0 -2
  231. package/dist/core/events/event-system.js +0 -88
  232. package/dist/core/events/index.js +0 -1
  233. package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
  234. package/dist/core/fixed-ticker/index.js +0 -1
  235. package/dist/core/generate-id/generate-id.js +0 -25
  236. package/dist/core/generate-id/index.js +0 -1
  237. package/dist/core/index.js +0 -10
  238. package/dist/core/input/index.js +0 -2
  239. package/dist/core/input/manager.js +0 -211
  240. package/dist/core/input/sources/browser.js +0 -29
  241. package/dist/core/input/sources/index.js +0 -1
  242. package/dist/core/lerp/index.js +0 -1
  243. package/dist/core/lerp/lerp.js +0 -42
  244. package/dist/core/navmesh/index.js +0 -1
  245. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  246. package/dist/core/navmesh/navmesh.js +0 -799
  247. package/dist/core/navmesh/navmesh.worker.js +0 -79
  248. package/dist/core/pooled-codec/index.js +0 -1
  249. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  250. package/dist/core/prediction/index.js +0 -1
  251. package/dist/core/prediction/prediction.js +0 -99
  252. package/dist/core.esm.js +0 -1
  253. package/dist/core.js +0 -1
  254. package/dist/ecs/component-store.js +0 -175
  255. package/dist/ecs/component.js +0 -43
  256. package/dist/ecs/entity-handle.js +0 -515
  257. package/dist/ecs/example.js +0 -125
  258. package/dist/ecs/index.js +0 -4
  259. package/dist/ecs/system-builder.js +0 -249
  260. package/dist/ecs/world-systems.js +0 -79
  261. package/dist/ecs/world.js +0 -767
  262. package/dist/game/index.js +0 -1
  263. package/dist/game/loop/index.js +0 -1
  264. package/dist/game/loop/loop.js +0 -108
  265. package/dist/index.js +0 -26
  266. package/dist/net/adapters/browser-websocket.js +0 -74
  267. package/dist/net/adapters/bun-websocket.js +0 -245
  268. package/dist/net/buffer-pool.js +0 -89
  269. package/dist/net/client.js +0 -586
  270. package/dist/net/index.js +0 -58
  271. package/dist/net/server.js +0 -974
  272. package/dist/net/types.js +0 -31
  273. package/dist/net/validators.js +0 -88
  274. package/dist/protocol/index.js +0 -92
  275. package/dist/protocol/intent/define-intent.js +0 -125
  276. package/dist/protocol/intent/index.js +0 -91
  277. package/dist/protocol/intent/intent-registry.js +0 -91
  278. package/dist/protocol/rpc/define-rpc.js +0 -84
  279. package/dist/protocol/rpc/index.js +0 -3
  280. package/dist/protocol/rpc/rpc-registry.js +0 -159
  281. package/dist/protocol/rpc/rpc.js +0 -12
  282. package/dist/protocol/snapshot/index.js +0 -43
  283. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  284. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  285. package/dist/protocol/snapshot/snapshot.js +0 -30
  286. package/src/core/binary-codec/README.md +0 -60
  287. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  288. package/src/core/binary-codec/binary-codec.ts +0 -448
  289. package/src/core/binary-codec/index.ts +0 -1
  290. package/src/core/driver/README.md +0 -97
  291. package/src/core/driver/driver.test.ts +0 -414
  292. package/src/core/driver/driver.ts +0 -71
  293. package/src/core/driver/drivers/immediate.ts +0 -66
  294. package/src/core/driver/drivers/index.ts +0 -3
  295. package/src/core/driver/drivers/raf.ts +0 -67
  296. package/src/core/driver/drivers/timeout.ts +0 -77
  297. package/src/core/driver/index.ts +0 -2
  298. package/src/core/events/README.md +0 -47
  299. package/src/core/events/event-system.test.ts +0 -243
  300. package/src/core/events/event-system.ts +0 -140
  301. package/src/core/events/index.ts +0 -1
  302. package/src/core/fixed-ticker/README.md +0 -77
  303. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  304. package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
  305. package/src/core/fixed-ticker/index.ts +0 -1
  306. package/src/core/generate-id/README.md +0 -18
  307. package/src/core/generate-id/generate-id.test.ts +0 -79
  308. package/src/core/generate-id/generate-id.ts +0 -37
  309. package/src/core/generate-id/index.ts +0 -1
  310. package/src/core/index.ts +0 -10
  311. package/src/core/input/README.md +0 -24
  312. package/src/core/input/index.ts +0 -2
  313. package/src/core/input/manager.ts +0 -259
  314. package/src/core/input/sources/browser.ts +0 -39
  315. package/src/core/input/sources/index.ts +0 -1
  316. package/src/core/input/types.ts +0 -40
  317. package/src/core/lerp/README.md +0 -79
  318. package/src/core/lerp/index.ts +0 -1
  319. package/src/core/lerp/lerp.test.ts +0 -90
  320. package/src/core/lerp/lerp.ts +0 -42
  321. package/src/core/navmesh/README.md +0 -164
  322. package/src/core/navmesh/index.ts +0 -1
  323. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  324. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  325. package/src/core/navmesh/navmesh.test.ts +0 -344
  326. package/src/core/navmesh/navmesh.ts +0 -1047
  327. package/src/core/navmesh/navmesh.worker.ts +0 -147
  328. package/src/core/pooled-codec/README.md +0 -70
  329. package/src/core/pooled-codec/index.ts +0 -1
  330. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  331. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  332. package/src/core/prediction/README.md +0 -64
  333. package/src/core/prediction/index.ts +0 -1
  334. package/src/core/prediction/prediction.test.ts +0 -423
  335. package/src/core/prediction/prediction.ts +0 -112
  336. package/src/ecs/README.md +0 -427
  337. package/src/ecs/benchmark.test.ts +0 -1645
  338. package/src/ecs/component-store.ts +0 -198
  339. package/src/ecs/component.ts +0 -90
  340. package/src/ecs/entity-handle.test.ts +0 -393
  341. package/src/ecs/entity-handle.ts +0 -563
  342. package/src/ecs/example.ts +0 -152
  343. package/src/ecs/index.ts +0 -4
  344. package/src/ecs/system-builder.ts +0 -404
  345. package/src/ecs/world-systems.ts +0 -83
  346. package/src/ecs/world.test.ts +0 -310
  347. package/src/ecs/world.ts +0 -904
  348. package/src/game/index.ts +0 -1
  349. package/src/game/loop/README.md +0 -32
  350. package/src/game/loop/index.ts +0 -1
  351. package/src/game/loop/loop.ts +0 -236
  352. package/src/index.ts +0 -32
  353. package/src/net/README.md +0 -474
  354. package/src/net/adapters/browser-websocket.ts +0 -86
  355. package/src/net/adapters/bun-websocket.ts +0 -292
  356. package/src/net/buffer-pool.ts +0 -106
  357. package/src/net/client.test.ts +0 -807
  358. package/src/net/client.ts +0 -695
  359. package/src/net/index.ts +0 -60
  360. package/src/net/server.test.ts +0 -799
  361. package/src/net/server.ts +0 -1152
  362. package/src/net/types.ts +0 -228
  363. package/src/net/validators.ts +0 -104
  364. package/src/protocol/README.md +0 -469
  365. package/src/protocol/index.ts +0 -93
  366. package/src/protocol/intent/define-intent.test.ts +0 -397
  367. package/src/protocol/intent/define-intent.ts +0 -201
  368. package/src/protocol/intent/index.ts +0 -94
  369. package/src/protocol/intent/intent-registry.test.ts +0 -198
  370. package/src/protocol/intent/intent-registry.ts +0 -112
  371. package/src/protocol/intent/intent.ts +0 -12
  372. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  373. package/src/protocol/rpc/define-rpc.ts +0 -113
  374. package/src/protocol/rpc/index.ts +0 -3
  375. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  376. package/src/protocol/rpc/rpc-registry.ts +0 -176
  377. package/src/protocol/rpc/rpc.ts +0 -37
  378. package/src/protocol/snapshot/index.ts +0 -45
  379. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  380. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  381. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  382. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  383. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  384. package/src/protocol/snapshot/snapshot.ts +0 -41
  385. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  386. /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
  387. /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
  388. /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
  390. /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
  391. /package/dist/{core → types/core}/driver/index.d.ts +0 -0
  392. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
  394. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  395. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  396. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  397. /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
  398. /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/input/types.d.ts +0 -0
  400. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  402. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  403. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  404. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  405. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  406. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  407. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  408. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  409. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  410. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  411. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  412. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  413. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  414. /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
  415. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  416. /package/dist/{game → types/game}/index.d.ts +0 -0
  417. /package/dist/{game → types/game}/loop/index.d.ts +0 -0
  418. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  419. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  420. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  421. /package/dist/{net → types/net}/client.d.ts +0 -0
  422. /package/dist/{net → types/net}/server.d.ts +0 -0
  423. /package/dist/{net → types/net}/types.d.ts +0 -0
  424. /package/dist/{net → types/net}/validators.d.ts +0 -0
  425. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  426. /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
  427. /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
  428. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  429. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  430. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  431. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  432. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  433. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  434. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  435. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  436. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  437. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  438. /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
  439. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.test.d.ts} +0 -0
@@ -1,404 +0,0 @@
1
- import { Component } from "./component";
2
- import { Entity, World } from "./world";
3
-
4
- /**
5
- * Extract component data type from Component<T>
6
- */
7
- type InferComponentData<C> = C extends Component<infer T> ? T : never;
8
-
9
- /**
10
- * Field descriptor for specialized proxy creation.
11
- */
12
- type FieldDesc = {
13
- prop: string;
14
- array: any;
15
- };
16
-
17
- /**
18
- * Extract the alias (key) and fields from a field mapping object.
19
- * { transform2d: ['x', 'y'] } => { alias: 'transform2d', fields: ['x', 'y'] }
20
- */
21
- type ExtractFieldMapping<T> = T extends Record<string, readonly any[]>
22
- ? {
23
- [K in keyof T]: {
24
- alias: K;
25
- fields: T[K];
26
- }
27
- }[keyof T]
28
- : never;
29
-
30
- /**
31
- * Build entity proxy from components and field mappings with FLATTENED property names.
32
- * Properties are named as alias_field (e.g., entity.transform_x instead of entity.transform.x).
33
- * This eliminates one property lookup for better performance (~10% faster than nested).
34
- * All properties are mutable for writes.
35
- *
36
- * Also includes _array properties for direct TypedArray access:
37
- * - entity.transform_x (getter/setter - ergonomic but slower)
38
- * - entity.transform_x_array (TypedArray - hybrid mode, faster)
39
- */
40
- export type BuildEntityProxy<
41
- Components extends readonly Component<any>[],
42
- FieldMappings extends readonly any[]
43
- > = {
44
- eid: number;
45
- despawn: () => void;
46
- } & {
47
- // Getter/setter properties (ergonomic API)
48
- -readonly [Index in keyof FieldMappings as Index extends keyof Components
49
- ? Components[Index] extends Component<any>
50
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"] extends readonly (keyof InferComponentData<Components[Index]>)[]
51
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"][number] extends keyof InferComponentData<Components[Index]>
52
- ? `${ExtractFieldMapping<FieldMappings[Index]>["alias"] & string}_${ExtractFieldMapping<FieldMappings[Index]>["fields"][number] & string}`
53
- : never
54
- : never
55
- : never
56
- : never]: Index extends keyof Components
57
- ? Components[Index] extends Component<any>
58
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"] extends readonly (keyof InferComponentData<Components[Index]>)[]
59
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"][number] extends keyof InferComponentData<Components[Index]>
60
- ? InferComponentData<Components[Index]>[ExtractFieldMapping<FieldMappings[Index]>["fields"][number]]
61
- : never
62
- : never
63
- : never
64
- : never;
65
- } & {
66
- // Direct array properties (hybrid API)
67
- -readonly [Index in keyof FieldMappings as Index extends keyof Components
68
- ? Components[Index] extends Component<any>
69
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"] extends readonly (keyof InferComponentData<Components[Index]>)[]
70
- ? ExtractFieldMapping<FieldMappings[Index]>["fields"][number] extends keyof InferComponentData<Components[Index]>
71
- ? `${ExtractFieldMapping<FieldMappings[Index]>["alias"] & string}_${ExtractFieldMapping<FieldMappings[Index]>["fields"][number] & string}_array`
72
- : never
73
- : never
74
- : never
75
- : never]: Float32Array | Int32Array | Uint32Array | Uint16Array | Uint8Array;
76
- };
77
-
78
- /**
79
- * Builder for creating ergonomic systems with automatic field array caching.
80
- *
81
- * Fully chainable API with type safety:
82
- * - System automatically caches TypedArrays and creates proxies
83
- * - Two access patterns: ergonomic (getter/setter) or hybrid (direct array)
84
- * - Full type safety with IntelliSense support for both patterns
85
- *
86
- * **Ergonomic pattern (convenient but slower):**
87
- * ```typescript
88
- * world.addSystem()
89
- * .query(Transform2D, Velocity)
90
- * .fields([{ transform: ['x', 'y'] }, { velocity: ['vx', 'vy'] }])
91
- * .run((entity, deltaTime) => {
92
- * // Fully typed property access (uses getters/setters)
93
- * entity.transform_x += entity.velocity_vx * deltaTime;
94
- * });
95
- * ```
96
- *
97
- * **Hybrid pattern (fast and still ergonomic):**
98
- * ```typescript
99
- * world.addSystem()
100
- * .query(Transform2D, Velocity)
101
- * .fields([{ transform: ['x', 'y'] }, { velocity: ['vx', 'vy'] }])
102
- * .run((entity, deltaTime) => {
103
- * // Fully typed direct array access (no getters/setters)
104
- * const {eid, transform_x_array: tx, velocity_vx_array: vx} = entity;
105
- * tx[eid] += vx[eid] * deltaTime;
106
- * });
107
- * ```
108
- *
109
- * **Note:** The hybrid pattern is recommended for performance-critical systems.
110
- * Both patterns provide full TypeScript autocomplete and type checking.
111
- */
112
- export class SystemBuilder<
113
- C extends Component<any>[] = Component<any>[],
114
- FM extends any[] | undefined = undefined,
115
- CB extends boolean = false
116
- > {
117
- constructor(
118
- private world: World,
119
- private components: C,
120
- private fieldMappings?: FM,
121
- private userCallback?: (entity: any, deltaTime: number, world: World) => void,
122
- private conditionPredicate?: CB extends true
123
- ? (entity: BuildEntityProxy<C, FM>) => boolean
124
- : undefined
125
- ) { }
126
-
127
- /**
128
- * Specify which components this system should query for.
129
- */
130
- query<NewC extends Component<any>[]>(
131
- ...components: NewC
132
- ): SystemBuilder<NewC, FM, CB> {
133
- return new SystemBuilder(this.world, components, this.fieldMappings, this.userCallback, this.conditionPredicate as any);
134
- }
135
-
136
- /**
137
- * Specify which component fields should be accessible via proxy.
138
- */
139
- fields<
140
- const NewFM extends {
141
- [K in keyof C]: C[K] extends Component<infer T>
142
- ? Record<string, readonly (keyof T)[]>
143
- : never
144
- }
145
- >(
146
- fieldMappings: NewFM
147
- ): SystemBuilder<C, NewFM, CB> {
148
- return new SystemBuilder(this.world, this.components, fieldMappings as any, this.userCallback, this.conditionPredicate as any);
149
- }
150
-
151
- /**
152
- * Specify a condition to filter entities before running the system callback.
153
- * @param predicate - Condition to filter entities before running the system callback.
154
- * @returns A new SystemBuilder instance with the specified condition.
155
- */
156
- when(predicate: (entity: BuildEntityProxy<C, FM>) => boolean): SystemBuilder<C, FM, true> {
157
- if (!this.fieldMappings) {
158
- throw new Error('Must call .fields() before .when()');
159
- }
160
-
161
- // Extract all field arrays once (or reuse cached)
162
- const fieldArrays: Record<string, any> = {};
163
-
164
- for (let i = 0; i < this.components.length; i++) {
165
- const component = this.components[i]!;
166
- const mapping = this.fieldMappings[i];
167
- if (!mapping) continue;
168
-
169
- const alias = Object.keys(mapping)[0]!;
170
- const fields = mapping[alias];
171
-
172
- for (const fieldName of fields) {
173
- const flattenedName = `${alias}_${fieldName}`;
174
- const array = this.world.getFieldArray(component, fieldName);
175
- fieldArrays[flattenedName] = array;
176
- }
177
- }
178
-
179
- // Create reusable proxy (ZERO allocations per entity!)
180
- const proxyEntity: any = { eid: 0 };
181
-
182
- // Define getters + expose arrays (for...in instead of Object.entries)
183
- for (const name in fieldArrays) {
184
- const array = fieldArrays[name];
185
-
186
- // Ergonomic getter/setter access
187
- Object.defineProperty(proxyEntity, name, {
188
- get() { return array[this.eid]; },
189
- set(value: any) { array[this.eid] = value; },
190
- enumerable: true,
191
- configurable: false
192
- });
193
-
194
- // Hybrid direct array access
195
- proxyEntity[`${name}_array`] = array;
196
- }
197
-
198
- // Seal proxy to lock shape (allows eid updates, prevents additions/deletions)
199
- Object.seal(proxyEntity);
200
-
201
- // Fast predicate: reuses proxy, updates eid (clean signature)
202
- const userPredicate = predicate; // Inline reference
203
-
204
- return new SystemBuilder(this.world, this.components, this.fieldMappings, this.userCallback, userPredicate);
205
- }
206
-
207
- /**
208
- * Set the system callback. If components and fields are set, builds the system.
209
- */
210
- run(
211
- callback: FM extends undefined
212
- ? (entity: any, deltaTime: number, world: World) => void
213
- : (entity: BuildEntityProxy<C, FM>, deltaTime: number, world: World) => void
214
- ): ExecutableSystem {
215
- const builder = new SystemBuilder(
216
- this.world,
217
- this.components,
218
- this.fieldMappings,
219
- callback as any,
220
- this.conditionPredicate,
221
- );
222
-
223
- return builder.buildAndRegister();
224
- }
225
-
226
- /**
227
- * Build and register the system.
228
- * @internal
229
- */
230
- buildAndRegister(): ExecutableSystem {
231
- if (!this.userCallback) {
232
- throw new Error('System callback must be set');
233
- }
234
- if (!this.fieldMappings) {
235
- throw new Error('Field mappings must be set');
236
- }
237
-
238
- const world = this.world;
239
- const components = this.components;
240
- const fieldMappings = this.fieldMappings;
241
- const userCallback = this.userCallback;
242
-
243
- // Cache field arrays once at system creation
244
- const fieldArrayCache: Record<string, Record<string, any>> = {};
245
- const componentByAlias: Record<string, Component<any>> = {};
246
- const aliases: string[] = [];
247
-
248
- // Iterate over components and their field mappings
249
- for (let i = 0; i < components.length; i++) {
250
- const component = components[i]!;
251
- const mapping = fieldMappings[i];
252
-
253
- if (!mapping) continue;
254
-
255
- // Extract alias and fields from { alias: ['fields'] } object
256
- const alias = Object.keys(mapping)[0]!;
257
- const fields = mapping[alias];
258
-
259
- aliases.push(alias);
260
- componentByAlias[alias] = component;
261
- fieldArrayCache[alias] = {};
262
-
263
- // Cache all field arrays for this component
264
- for (const fieldName of fields) {
265
- const array = (world as any).getFieldArray(component, fieldName);
266
- fieldArrayCache[alias][fieldName as string] = array;
267
- }
268
- }
269
-
270
- // Precompute flat field descriptor list (specialization contract)
271
- const fieldDescs: FieldDesc[] = [];
272
- for (const alias of aliases) {
273
- const fields = fieldArrayCache[alias];
274
- for (const fieldName in fields) {
275
- fieldDescs.push({
276
- prop: `${alias}_${fieldName}`,
277
- array: fields[fieldName],
278
- });
279
- }
280
- }
281
-
282
- // Precompute query mask and mask key for fast queries
283
- // This avoids rebuilding the cache key string every frame
284
- world.query(...components); // Initializes the cache
285
- const queryMaskKey = (world as any)._getQueryMaskKey(components);
286
- const queryMask = (world as any).getQueryMask(components);
287
-
288
- // Create the executable system with specialized field descriptors
289
- const system = new ExecutableSystem(
290
- world,
291
- components,
292
- userCallback,
293
- fieldDescs,
294
- queryMaskKey,
295
- queryMask,
296
- this.conditionPredicate,
297
- );
298
-
299
- // Register with world
300
- world._registerSystem(system);
301
-
302
- return system;
303
- }
304
-
305
- }
306
-
307
- /**
308
- * Executable system that can be run with world.runSystems().
309
- *
310
- * Uses reusable proxy entity with optimized getter/setter access.
311
- */
312
- export class ExecutableSystem {
313
- // Reusable proxy entity
314
- private proxyEntity: any;
315
-
316
- constructor(
317
- private world: World,
318
- private components: Component<any>[],
319
- private userCallback: (entity: any, deltaTime: number, world: World) => void,
320
- private fieldDescs: FieldDesc[],
321
- private queryMaskKey: string,
322
- private queryMask: number[],
323
- private conditionPredicate?: (entity: any) => boolean,
324
- ) {
325
- // Create proxy entity once and reuse
326
- this.proxyEntity = this.createProxyEntity();
327
- }
328
-
329
- /**
330
- * Execute the system for all matching entities.
331
- *
332
- * @param deltaTime - Time delta to pass to system callback
333
- */
334
- execute(deltaTime: number): void {
335
- const entities = (this.world as any)._queryByMaskKey(this.queryMaskKey, this.queryMask);
336
- const callback = this.userCallback;
337
- const world = this.world;
338
- const entity = this.proxyEntity;
339
- const length = entities.length;
340
-
341
- // Fast path: no predicate
342
- if (!this.conditionPredicate) {
343
- for (let i = 0; i < length; i++) {
344
- entity.eid = entities[i]!;
345
-
346
- callback(entity, deltaTime, world);
347
- }
348
- } else {
349
- // Filtered path: with predicate
350
- const predicate = this.conditionPredicate;
351
- for (let i = 0; i < length; i++) {
352
- entity.eid = entities[i]!;
353
-
354
- if (predicate(entity)) {
355
- callback(entity, deltaTime, world);
356
- }
357
- }
358
- }
359
- }
360
-
361
- /**
362
- * Create proxy entity that exposes arrays directly.
363
- *
364
- * Each getter closes over a specific TypedArray.
365
- */
366
- private createProxyEntity(): any {
367
- const world = this.world;
368
-
369
- const entity = {
370
- eid: 0,
371
- despawn() {
372
- world.despawn(this.eid);
373
- },
374
- };
375
-
376
- // static property list, static closures
377
- for (let i = 0; i < this.fieldDescs.length; i++) {
378
- const { prop, array } = this.fieldDescs[i]!;
379
-
380
- // Hybrid direct array access
381
- entity[`${prop}_array`] = array;
382
-
383
- // Ergonomic getter/setter access
384
- Object.defineProperty(entity, prop, {
385
- get() { return array[this.eid]; },
386
- set(value: any) { array[this.eid] = value; },
387
- enumerable: true,
388
- configurable: false,
389
- });
390
- }
391
-
392
- Object.seal(entity);
393
- Object.preventExtensions(entity);
394
-
395
- return entity;
396
- }
397
-
398
- /**
399
- * Get the components this system operates on.
400
- */
401
- getComponents(): Component<any>[] {
402
- return this.components;
403
- }
404
- }
@@ -1,83 +0,0 @@
1
- import { SystemBuilder, ExecutableSystem } from "./system-builder";
2
- import { World } from "./world";
3
-
4
- /**
5
- * Systems API for a World.
6
- *
7
- * The world extends this class to provide system building capabilities.
8
- *
9
- * **Performance Comparison** (50K entities benchmark):
10
- * - Raw API: 8.94ms (baseline - fastest)
11
- * - Hybrid API: 15.65ms (1.75x slower - recommended!)
12
- * - Ergonomic API: 18.79ms (2.1x slower - most convenient)
13
- *
14
- * **Recommendation:**
15
- * Use the hybrid API pattern (see examples below) for the best balance of
16
- * performance and ergonomics. It's only ~75% slower than raw while maintaining
17
- * the convenience of the system builder.
18
- */
19
- export class WorldSystems {
20
- /** Registered systems that run automatically with runSystems() */
21
- private registeredSystems: ExecutableSystem[] = [];
22
-
23
- /**
24
- * Create a new system builder for ergonomic system definition.
25
- *
26
- * @example
27
- * Basic usage (ergonomic but ~2x slower):
28
- * ```typescript
29
- * world.addSystem()
30
- * .query(Transform2D, Velocity)
31
- * .fields([
32
- * { transform: ['x', 'y'] },
33
- * { velocity: ['vx', 'vy'] }
34
- * ])
35
- * .run((entity, deltaTime) => {
36
- * entity.transform_x += entity.velocity_vx * deltaTime;
37
- * entity.transform_y += entity.velocity_vy * deltaTime;
38
- * });
39
- * ```
40
- *
41
- * @example
42
- * Performance mode (raw speed, still ergonomic):
43
- * ```typescript
44
- * world.addSystem()
45
- * .query(Transform2D, Velocity)
46
- * .fields([
47
- * { transform: ['x', 'y'] },
48
- * { velocity: ['vx', 'vy'] }
49
- * ])
50
- * .run((entity, deltaTime) => {
51
- * // Destructure arrays for direct access (fast!)
52
- * const {eid, transform_x_array: tx, transform_y_array: ty,
53
- * velocity_vx_array: vx, velocity_vy_array: vy} = entity;
54
- * tx[eid] += vx[eid] * deltaTime;
55
- * ty[eid] += vy[eid] * deltaTime;
56
- * });
57
- * ```
58
- */
59
- addSystem(): SystemBuilder {
60
- return new SystemBuilder(this as any as World, [], undefined, undefined);
61
- }
62
-
63
- /**
64
- * Run all registered systems with the given deltaTime.
65
- * Systems are executed in registration order.
66
- *
67
- * @param deltaTime - Time delta to pass to each system
68
- */
69
- runSystems(deltaTime: number): void {
70
- for (let i = 0; i < this.registeredSystems.length; i++) {
71
- this.registeredSystems[i]!.execute(deltaTime);
72
- }
73
- }
74
-
75
- /**
76
- * Register a system for automatic execution.
77
- * @internal - Called by SystemBuilder
78
- */
79
- _registerSystem(system: ExecutableSystem): void {
80
- this.registeredSystems.push(system);
81
- }
82
- }
83
-