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,159 +0,0 @@
1
- /**
2
- * Registry for managing RPC definitions with binary encoding/decoding
3
- *
4
- * Maps RPC method names to numeric IDs for efficient binary protocol:
5
- * - Method names are assigned sequential IDs (0, 1, 2, ...)
6
- * - Binary format: [methodId: u16][data: variable]
7
- * - Supports bidirectional RPCs (client ↔ server)
8
- *
9
- * @example
10
- * ```ts
11
- * const registry = new RpcRegistry();
12
- *
13
- * // Register RPCs
14
- * registry.register(MatchCountdown);
15
- * registry.register(BuyItem);
16
- *
17
- * // Encode RPC to binary
18
- * const binary = registry.encode(MatchCountdown, { secondsRemaining: 10 });
19
- *
20
- * // Decode RPC from binary
21
- * const { method, data } = registry.decode(binary);
22
- * console.log(method); // 'matchCountdown'
23
- * console.log(data.secondsRemaining); // 10
24
- * ```
25
- */
26
- export class RpcRegistry {
27
- constructor() {
28
- this.codecs = new Map();
29
- this.methodToId = new Map();
30
- this.idToMethod = new Map();
31
- this.nextId = 0;
32
- }
33
- /**
34
- * Register an RPC definition
35
- *
36
- * @param rpc The RPC definition created by defineRPC()
37
- * @throws Error if method is already registered
38
- *
39
- * @example
40
- * ```ts
41
- * const MatchCountdown = defineRPC({
42
- * method: 'matchCountdown',
43
- * schema: { secondsRemaining: BinaryCodec.u8 }
44
- * });
45
- *
46
- * registry.register(MatchCountdown);
47
- * ```
48
- */
49
- register(rpc) {
50
- if (this.codecs.has(rpc.method)) {
51
- throw new Error(`RPC "${rpc.method}" is already registered`);
52
- }
53
- const id = this.nextId++;
54
- this.codecs.set(rpc.method, rpc.codec);
55
- this.methodToId.set(rpc.method, id);
56
- this.idToMethod.set(id, rpc.method);
57
- }
58
- /**
59
- * Encode an RPC to binary format
60
- *
61
- * Binary format: [methodId: u16][data: variable]
62
- *
63
- * @param rpc The RPC definition
64
- * @param data The RPC data to encode
65
- * @returns Encoded binary data
66
- * @throws Error if RPC is not registered
67
- *
68
- * @example
69
- * ```ts
70
- * const binary = registry.encode(MatchCountdown, {
71
- * secondsRemaining: 10
72
- * });
73
- * ```
74
- */
75
- encode(rpc, data) {
76
- const codec = this.codecs.get(rpc.method);
77
- if (!codec) {
78
- throw new Error(`RPC "${rpc.method}" is not registered`);
79
- }
80
- const methodId = this.methodToId.get(rpc.method);
81
- const encodedData = codec.encode(data);
82
- // Message format: [methodId: u16][data]
83
- const buffer = new Uint8Array(2 + encodedData.byteLength);
84
- new DataView(buffer.buffer).setUint16(0, methodId, true);
85
- buffer.set(new Uint8Array(encodedData), 2);
86
- return buffer;
87
- }
88
- /**
89
- * Decode an RPC from binary format
90
- *
91
- * @param buffer Binary data to decode
92
- * @returns Object with method name and decoded data
93
- * @throws Error if method ID is unknown
94
- *
95
- * @example
96
- * ```ts
97
- * const { method, data } = registry.decode(binary);
98
- * console.log(method); // 'matchCountdown'
99
- * console.log(data.secondsRemaining); // 10
100
- * ```
101
- */
102
- decode(buffer) {
103
- if (buffer.byteLength < 2) {
104
- throw new Error('Buffer too small for RPC message');
105
- }
106
- const view = new DataView(buffer.buffer, buffer.byteOffset);
107
- const methodId = view.getUint16(0, true);
108
- const method = this.idToMethod.get(methodId);
109
- if (!method) {
110
- throw new Error(`Unknown RPC method ID: ${methodId}`);
111
- }
112
- const codec = this.codecs.get(method);
113
- const data = codec.decode(buffer.slice(2));
114
- return { method, data };
115
- }
116
- /**
117
- * Check if an RPC method is registered
118
- *
119
- * @param method Method name to check
120
- * @returns True if registered, false otherwise
121
- */
122
- has(method) {
123
- return this.codecs.has(method);
124
- }
125
- /**
126
- * Get all registered RPC method names
127
- *
128
- * @returns Array of method names
129
- */
130
- getMethods() {
131
- return Array.from(this.codecs.keys());
132
- }
133
- /**
134
- * Get the numeric ID for a method
135
- *
136
- * @param method Method name
137
- * @returns Method ID or undefined if not registered
138
- */
139
- getMethodId(method) {
140
- return this.methodToId.get(method);
141
- }
142
- /**
143
- * Release a decoded RPC data object back to the pool.
144
- * Call this after you're done processing the RPC to enable object pooling.
145
- *
146
- * @param method The RPC method name (same as used in decode)
147
- * @param data The RPC data object to release
148
- */
149
- release(method, data) {
150
- const codec = this.codecs.get(method);
151
- if (!codec) {
152
- throw new Error(`RPC "${method}" is not registered`);
153
- }
154
- // Only release if the codec supports pooling
155
- if ('release' in codec && typeof codec.release === 'function') {
156
- codec.release(data);
157
- }
158
- }
159
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * RPC (Remote Procedure Call) type definitions
3
- *
4
- * RPCs are bidirectional one-off events/commands for:
5
- * - Meta-game events (achievements, notifications)
6
- * - Match lifecycle (countdown, results)
7
- * - Request/response patterns
8
- * - System announcements
9
- *
10
- * NOT for game state synchronization (use Snapshots) or player inputs (use Intents)
11
- */
12
- export {};
@@ -1,43 +0,0 @@
1
- /**
2
- * Snapshot system for server-to-client state updates.
3
- *
4
- * Snapshots are delta updates that contain:
5
- * 1. Server tick number
6
- * 2. Partial state updates (only what changed)
7
- *
8
- * They need to be:
9
- * 1. Encoded efficiently (binary)
10
- * 2. Sent over network
11
- * 3. Decoded on the client
12
- * 4. Merged into client state
13
- *
14
- * @example
15
- * ```ts
16
- * import { Snapshot, SnapshotCodec, applySnapshot } from './protocol/snapshot';
17
- * import { PooledCodec } from '../core/pooled-codec';
18
- * import { BinaryCodec } from '../core/binary-codec';
19
- *
20
- * interface GameState {
21
- * players: Record<number, { x: number; y: number }>;
22
- * }
23
- *
24
- * // 1. Create codec once (reuse this instance)
25
- * const snapshotCodec = new SnapshotCodec<GameState>(
26
- * new PooledCodec({ players: // ... your schema })
27
- * );
28
- *
29
- * // 2. Server: Encode snapshot
30
- * const snapshot: Snapshot<GameState> = {
31
- * tick: 100,
32
- * updates: { players: { 1: { x: 5, y: 10 } } }
33
- * };
34
- * const buf = snapshotCodec.encode(snapshot);
35
- *
36
- * // 3. Client: Decode and apply
37
- * const snapshot = snapshotCodec.decode(buf);
38
- * applySnapshot(clientState, snapshot);
39
- * ```
40
- */
41
- export { applySnapshot } from "./snapshot";
42
- export { SnapshotCodec } from "./snapshot-codec";
43
- export { SnapshotRegistry } from "./snapshot-registry";
@@ -1,67 +0,0 @@
1
- /**
2
- * Codec for encoding/decoding snapshots with binary serialization.
3
- *
4
- * Users instantiate this once with a PooledCodec for their state schema.
5
- *
6
- * @example
7
- * ```ts
8
- * import { SnapshotCodec } from './protocol/snapshot';
9
- * import { PooledCodec } from './core/pooled-codec';
10
- * import { BinaryCodec } from './core/binary-codec';
11
- *
12
- * interface GameState {
13
- * players: Record<number, { x: number; y: number }>;
14
- * }
15
- *
16
- * const snapshotCodec = new SnapshotCodec<GameState>(
17
- * new PooledCodec({ players: // schema })
18
- * );
19
- *
20
- * // Encode/decode
21
- * const buf = snapshotCodec.encode(snapshot);
22
- * const decoded = snapshotCodec.decode(buf);
23
- * ```
24
- */
25
- export class SnapshotCodec {
26
- /**
27
- * @param updatesCodec Codec for encoding/decoding the state updates
28
- */
29
- constructor(updatesCodec) {
30
- this.updatesCodec = updatesCodec;
31
- }
32
- /**
33
- * Encode a snapshot into binary format.
34
- * Format: [tick: u32][updates: encoded by updatesCodec]
35
- *
36
- * Uses zero-copy path if codec supports calculateSize and encodeInto.
37
- */
38
- encode(snapshot) {
39
- // Use zero-copy path if available
40
- if (this.updatesCodec.calculateSize && this.updatesCodec.encodeInto) {
41
- const updatesSize = this.updatesCodec.calculateSize(snapshot.updates);
42
- const buf = new Uint8Array(4 + updatesSize);
43
- // Encode tick (4 bytes, little-endian)
44
- new DataView(buf.buffer).setUint32(0, snapshot.tick, true);
45
- // Write updates directly into buffer (ZERO COPY!)
46
- this.updatesCodec.encodeInto(snapshot.updates, buf, 4);
47
- return buf;
48
- }
49
- // Fallback to legacy path
50
- const updatesBytes = this.updatesCodec.encode(snapshot.updates);
51
- const buf = new Uint8Array(4 + updatesBytes.length);
52
- new DataView(buf.buffer).setUint32(0, snapshot.tick, true);
53
- buf.set(updatesBytes, 4);
54
- return buf;
55
- }
56
- /**
57
- * Decode binary data into a snapshot.
58
- */
59
- decode(buf) {
60
- // Decode tick (first 4 bytes)
61
- const tick = new DataView(buf.buffer, buf.byteOffset).getUint32(0, true);
62
- // Decode updates (remaining bytes)
63
- const updatesBytes = buf.subarray(4);
64
- const updates = this.updatesCodec.decode(updatesBytes);
65
- return { tick, updates };
66
- }
67
- }
@@ -1,168 +0,0 @@
1
- /**
2
- * Registry for multiple snapshot types with different update schemas.
3
- *
4
- * This allows efficient delta encoding by only sending specific update types
5
- * instead of encoding all fields (including empty/nil ones).
6
- *
7
- * ## Memory Efficiency
8
- *
9
- * The encoding path minimizes allocations:
10
- * 1. PooledCodec acquires a buffer from its pool (reused across calls)
11
- * 2. PooledCodec writes data directly to the buffer at sequential offsets
12
- * 3. SnapshotRegistry creates ONE final buffer: [typeId(1) + tick(4) + updatesBytes]
13
- * 4. Total allocations per encode: 1 pooled buffer + 1 final buffer
14
- *
15
- * Buffer Layout:
16
- * ```
17
- * ┌─────────┬────────────┬──────────────────┐
18
- * │ Type ID │ Tick │ Updates (codec) │
19
- * │ (u8) │ (u32) │ (variable) │
20
- * │ 1 byte │ 4 bytes │ N bytes │
21
- * └─────────┴────────────┴──────────────────┘
22
- * ```
23
- *
24
- * @example
25
- * ```ts
26
- * import { SnapshotRegistry } from './protocol/snapshot';
27
- * import { PooledCodec } from './core/pooled-codec';
28
- * import { BinaryPrimitives } from './core/binary-codec';
29
- *
30
- * // Define different update types
31
- * interface PlayerUpdate {
32
- * players: Array<{ entityId: number; x: number; y: number }>;
33
- * }
34
- *
35
- * interface ScoreUpdate {
36
- * score: number;
37
- * }
38
- *
39
- * // Create registry
40
- * const registry = new SnapshotRegistry<PlayerUpdate | ScoreUpdate>();
41
- *
42
- * // Register codecs for each update type
43
- * registry.register('players', new PooledCodec({
44
- * players: PooledCodec.array({
45
- * entityId: BinaryPrimitives.u32,
46
- * x: BinaryPrimitives.f32,
47
- * y: BinaryPrimitives.f32,
48
- * })
49
- * }));
50
- *
51
- * registry.register('score', new PooledCodec({
52
- * score: BinaryPrimitives.u32
53
- * }));
54
- *
55
- * // Server: Encode specific update type
56
- * const buf = registry.encode('players', {
57
- * tick: 100,
58
- * updates: { players: [{ entityId: 1, x: 5, y: 10 }] }
59
- * });
60
- *
61
- * // Client: Decode (type is embedded in message)
62
- * const { type, snapshot } = registry.decode(buf);
63
- * applySnapshot(state, snapshot);
64
- * ```
65
- */
66
- export class SnapshotRegistry {
67
- constructor() {
68
- this.codecs = new Map();
69
- this.typeIds = new Map();
70
- this.idToType = new Map();
71
- this.nextId = 0;
72
- }
73
- /**
74
- * Register a codec for a specific update type.
75
- * Call this once per update type at startup.
76
- */
77
- register(type, codec) {
78
- if (this.codecs.has(type)) {
79
- throw new Error(`Snapshot type "${type}" is already registered`);
80
- }
81
- const typeId = this.nextId++;
82
- this.codecs.set(type, codec);
83
- this.typeIds.set(type, typeId);
84
- this.idToType.set(typeId, type);
85
- }
86
- /**
87
- * Encode a snapshot with a specific update type.
88
- * Format: [typeId: u8][tick: u32][updates: encoded by codec]
89
- *
90
- * Zero-copy encoding path:
91
- * - Calculate total size needed
92
- * - Allocate ONE final buffer for [typeId + tick + updates]
93
- * - Write directly into buffer using encodeInto (no intermediate allocations)
94
- *
95
- * Falls back to legacy encode() method if codec doesn't support encodeInto.
96
- */
97
- encode(type, snapshot) {
98
- const codec = this.codecs.get(type);
99
- const typeId = this.typeIds.get(type);
100
- if (!codec || typeId === undefined) {
101
- throw new Error(`No codec registered for snapshot type "${type}"`);
102
- }
103
- // Use zero-copy path if available
104
- if (codec.calculateSize && codec.encodeInto) {
105
- // Calculate total size
106
- const updatesSize = codec.calculateSize(snapshot.updates);
107
- const buf = new Uint8Array(5 + updatesSize);
108
- // Write type ID (1 byte)
109
- buf[0] = typeId;
110
- // Write tick (4 bytes, little-endian)
111
- new DataView(buf.buffer).setUint32(1, snapshot.tick, true);
112
- // Write updates directly into buffer (ZERO COPY!)
113
- codec.encodeInto(snapshot.updates, buf, 5);
114
- return buf;
115
- }
116
- // Fallback to legacy path for backward compatibility
117
- const updatesBytes = codec.encode(snapshot.updates);
118
- const buf = new Uint8Array(1 + 4 + updatesBytes.length);
119
- buf[0] = typeId;
120
- new DataView(buf.buffer).setUint32(1, snapshot.tick, true);
121
- buf.set(updatesBytes, 5);
122
- return buf;
123
- }
124
- /**
125
- * Decode a snapshot and return both the type and the snapshot.
126
- */
127
- decode(buf) {
128
- // Decode type ID (first byte)
129
- const typeId = buf[0];
130
- const type = this.idToType.get(typeId);
131
- if (!type) {
132
- throw new Error(`Unknown snapshot type ID: ${typeId}`);
133
- }
134
- const codec = this.codecs.get(type);
135
- if (!codec) {
136
- throw new Error(`No codec registered for snapshot type "${type}"`);
137
- }
138
- // Decode tick (bytes 1-4)
139
- const tick = new DataView(buf.buffer, buf.byteOffset + 1).getUint32(0, true);
140
- // Decode updates (remaining bytes)
141
- const updatesBytes = buf.subarray(5);
142
- const updates = codec.decode(updatesBytes);
143
- return { type, snapshot: { tick, updates } };
144
- }
145
- has(type) {
146
- return this.codecs.has(type);
147
- }
148
- getTypes() {
149
- return Array.from(this.codecs.keys());
150
- }
151
- /**
152
- * Release a decoded snapshot's updates object back to the pool.
153
- * Call this after you're done processing the snapshot to enable object pooling.
154
- *
155
- * @param type The snapshot type (same as used in decode)
156
- * @param updates The updates object to release
157
- */
158
- release(type, updates) {
159
- const codec = this.codecs.get(type);
160
- if (!codec) {
161
- throw new Error(`No codec registered for snapshot type "${type}"`);
162
- }
163
- // Only release if the codec supports pooling
164
- if ('release' in codec && typeof codec.release === 'function') {
165
- codec.release(updates);
166
- }
167
- }
168
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Apply snapshot updates to state (mutating).
3
- * Deep merges objects, replaces arrays.
4
- *
5
- * @param state State to update
6
- * @param snapshot Snapshot to apply
7
- */
8
- export function applySnapshot(state, snapshot) {
9
- deepMerge(state, snapshot.updates);
10
- }
11
- function deepMerge(target, update) {
12
- for (const key in update) {
13
- if (!Object.prototype.hasOwnProperty.call(update, key))
14
- continue;
15
- const updateValue = update[key];
16
- const targetValue = target[key];
17
- if (updateValue === null || updateValue === undefined) {
18
- target[key] = updateValue;
19
- }
20
- else if (Array.isArray(updateValue)) {
21
- target[key] = updateValue;
22
- }
23
- else if (typeof updateValue === "object" && typeof targetValue === "object") {
24
- deepMerge(targetValue, updateValue);
25
- }
26
- else {
27
- target[key] = updateValue;
28
- }
29
- }
30
- }
@@ -1,60 +0,0 @@
1
- # BinaryCodec
2
-
3
- A minimal TypeScript library for **schema-driven binary encoding and decoding**.
4
- Supports fixed-size numeric fields with automatic buffer sizing.
5
-
6
- ---
7
-
8
- ## Usage
9
-
10
- ### Define a schema
11
-
12
- ```ts
13
- import { BinaryCodec } from ".";
14
-
15
- type Player = {
16
- id: number;
17
- score: number;
18
- };
19
-
20
- const playerSchema = {
21
- id: BinaryCodec.u8,
22
- score: BinaryCodec.u16,
23
- };
24
- ```
25
-
26
- ### Encode an object
27
-
28
- ```ts
29
- const data: Player = { id: 1, score: 420 };
30
- const buffer = BinaryCodec.encode(playerSchema, data);
31
-
32
- console.log(buffer); // Uint8Array [1, 1, 164] (example)
33
- ```
34
-
35
- ### Decode into an object
36
-
37
- ```ts
38
- const target: Player = { id: 0, score: 0 };
39
- BinaryCodec.decode(playerSchema, buffer, target);
40
-
41
- console.log(target); // { id: 1, score: 420 }
42
- ```
43
-
44
- ---
45
-
46
- ## Features
47
-
48
- * Fixed-size fields (`u8`, `u16`, `f32`)
49
- * Automatic buffer sizing
50
- * Explicit big-endian encoding
51
- * Safe, re-entrant, and concurrent-friendly
52
- * Schema-driven and type-safe
53
-
54
- ---
55
-
56
- ## Notes
57
-
58
- * Object keys define **field order** in the binary layout.
59
- * Buffer sizes are validated on decode to avoid overflow.
60
- * Works in browsers and Node.js.