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