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
package/dist/index.js DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * GameDev Utils
3
- *
4
- * A collection of utilities for game development, including:
5
- * - Binary codecs for efficient serialization
6
- * - Event system for decoupled communication
7
- * - Fixed-timestep ticker for deterministic simulation
8
- * - ID generation utilities
9
- * - Linear interpolation (lerp) utilities
10
- * - NavMesh pathfinding with obstacle management
11
- * - Pooled codecs for zero-allocation networking
12
- * - Prediction system for client-side prediction
13
- * - Protocol layer for networked multiplayer games
14
- * - Transport-agnostic networking layer (client/server abstractions)
15
- * - Entity Component System (ECS) for scalable game architecture
16
- */
17
- // Core utilities
18
- export * from "./core";
19
- // Protocol layer for networking
20
- export * from "./protocol";
21
- // Networking layer (client/server abstractions)
22
- export * from "./net";
23
- // Entity Component System
24
- export * from "./ecs";
@@ -1,74 +0,0 @@
1
- /**
2
- * Browser WebSocket transport adapter for ClientNetwork
3
- *
4
- * @example
5
- * ```ts
6
- * const transport = new BrowserWebSocketClientTransport("ws://localhost:3007");
7
- * const client = new ClientNetwork({ transport, ... });
8
- * ```
9
- */
10
- export class BrowserWebSocketClientTransport {
11
- constructor(url) {
12
- this.openHandler = null;
13
- this.messageHandler = null;
14
- this.closeHandler = null;
15
- this.errorHandler = null;
16
- this.isOpen = false;
17
- this.pendingMessages = [];
18
- this.ws = new WebSocket(url);
19
- this.ws.binaryType = 'arraybuffer';
20
- this.ws.onopen = () => {
21
- this.isOpen = true;
22
- // Flush any pending messages
23
- for (const msg of this.pendingMessages) {
24
- this.ws.send(msg);
25
- }
26
- this.pendingMessages = [];
27
- if (this.openHandler) {
28
- this.openHandler();
29
- }
30
- ;
31
- };
32
- this.ws.onmessage = (event) => {
33
- if (this.messageHandler && event.data instanceof ArrayBuffer) {
34
- this.messageHandler(new Uint8Array(event.data));
35
- }
36
- };
37
- this.ws.onclose = () => {
38
- this.isOpen = false;
39
- if (this.closeHandler) {
40
- this.closeHandler();
41
- }
42
- };
43
- this.ws.onerror = () => {
44
- if (this.errorHandler) {
45
- this.errorHandler(new Error('WebSocket error'));
46
- }
47
- };
48
- }
49
- send(data) {
50
- if (this.isOpen && this.ws.readyState === WebSocket.OPEN) {
51
- // WebSocket.send() copies the buffer, so this is safe
52
- this.ws.send(data);
53
- }
54
- else if (this.ws.readyState === WebSocket.CONNECTING) {
55
- // Queue messages sent before connection is established
56
- this.pendingMessages.push(data);
57
- }
58
- }
59
- onMessage(handler) {
60
- this.messageHandler = handler;
61
- }
62
- onOpen(handler) {
63
- this.openHandler = handler;
64
- }
65
- onClose(handler) {
66
- this.closeHandler = handler;
67
- }
68
- onError(handler) {
69
- this.errorHandler = handler;
70
- }
71
- close() {
72
- this.ws.close();
73
- }
74
- }
@@ -1,245 +0,0 @@
1
- import { generateId } from "../../core/generate-id/generate-id";
2
- /**
3
- * Bun WebSocket transport adapter for client-side connections
4
- */
5
- export class BunWebSocketClientTransport {
6
- constructor(socket) {
7
- this.messageHandlers = [];
8
- this.closeHandlers = [];
9
- this.errorHandlers = [];
10
- this.socket = socket;
11
- this.setupHandlers();
12
- }
13
- send(data) {
14
- if (this.socket.readyState === WebSocket.OPEN) {
15
- this.socket.send(data);
16
- }
17
- }
18
- onMessage(handler) {
19
- this.messageHandlers.push(handler);
20
- }
21
- onClose(handler) {
22
- this.closeHandlers.push(handler);
23
- }
24
- onError(handler) {
25
- this.errorHandlers.push(handler);
26
- }
27
- close() {
28
- this.socket.close();
29
- }
30
- setupHandlers() {
31
- this.socket.binaryType = "arraybuffer";
32
- this.socket.addEventListener("message", (event) => {
33
- if (event.data instanceof ArrayBuffer) {
34
- const data = new Uint8Array(event.data);
35
- for (const handler of this.messageHandlers) {
36
- handler(data);
37
- }
38
- }
39
- else {
40
- // Warn about non-binary messages
41
- const error = new Error(`Unexpected message type: ${typeof event.data}`);
42
- for (const handler of this.errorHandlers) {
43
- handler(error);
44
- }
45
- }
46
- });
47
- this.socket.addEventListener("close", () => {
48
- for (const handler of this.closeHandlers) {
49
- handler();
50
- }
51
- });
52
- this.socket.addEventListener("error", () => {
53
- const error = new Error("WebSocket error");
54
- for (const handler of this.errorHandlers) {
55
- handler(error);
56
- }
57
- });
58
- }
59
- /**
60
- * Static factory method to connect to a server
61
- */
62
- static connect(url) {
63
- return new Promise((resolve, reject) => {
64
- const socket = new WebSocket(url);
65
- const transport = new BunWebSocketClientTransport(socket);
66
- socket.addEventListener("open", () => {
67
- resolve(transport);
68
- });
69
- socket.addEventListener("error", (error) => {
70
- reject(error);
71
- });
72
- });
73
- }
74
- }
75
- /**
76
- * Bun WebSocket transport adapter for server-side peer connections
77
- */
78
- export class BunWebSocketPeerTransport {
79
- constructor(socket) {
80
- this.messageHandlers = [];
81
- this.closeHandlers = [];
82
- this.errorHandlers = [];
83
- this.socket = socket;
84
- }
85
- send(data) {
86
- this.socket.send(data);
87
- }
88
- onMessage(handler) {
89
- this.messageHandlers.push(handler);
90
- }
91
- onClose(handler) {
92
- this.closeHandlers.push(handler);
93
- }
94
- onError(handler) {
95
- this.errorHandlers.push(handler);
96
- }
97
- close() {
98
- this.socket.close();
99
- }
100
- _handleOpen() {
101
- // No-op for server peer transport
102
- }
103
- /**
104
- * Internal: Call message handlers (used by server adapter)
105
- */
106
- _handleMessage(data) {
107
- for (const handler of this.messageHandlers) {
108
- handler(data);
109
- }
110
- }
111
- /**
112
- * Internal: Call close handlers (used by server adapter)
113
- */
114
- _handleClose() {
115
- for (const handler of this.closeHandlers) {
116
- handler();
117
- }
118
- }
119
- /**
120
- * Internal: Call error handlers (used by server adapter)
121
- */
122
- _handleError(error) {
123
- for (const handler of this.errorHandlers) {
124
- handler(error);
125
- }
126
- }
127
- }
128
- /**
129
- * Bun WebSocket server transport adapter
130
- */
131
- export class BunWebSocketServerTransport {
132
- constructor(server) {
133
- this.peers = new Map();
134
- this.connectionHandlers = [];
135
- this.disconnectionHandlers = [];
136
- this.server = server;
137
- }
138
- onConnection(handler) {
139
- this.connectionHandlers.push(handler);
140
- }
141
- onDisconnection(handler) {
142
- this.disconnectionHandlers.push(handler);
143
- }
144
- getPeer(peerId) {
145
- return this.peers.get(peerId);
146
- }
147
- getPeerIds() {
148
- return Array.from(this.peers.keys());
149
- }
150
- close() {
151
- this.server.stop();
152
- this.peers.clear();
153
- }
154
- /**
155
- * Internal: Register a new peer (called from Bun server fetch handler)
156
- */
157
- _registerPeer(socket) {
158
- const peerId = generateId({ prefix: "peer_" });
159
- const peer = new BunWebSocketPeerTransport(socket);
160
- this.peers.set(peerId, peer);
161
- // Notify connection handlers
162
- for (const handler of this.connectionHandlers) {
163
- handler(peer, peerId);
164
- }
165
- return peerId;
166
- }
167
- /**
168
- * Internal: Handle peer message (called from Bun server message handler)
169
- */
170
- _handlePeerMessage(peerId, data) {
171
- const peer = this.peers.get(peerId);
172
- if (peer) {
173
- peer._handleMessage(data);
174
- }
175
- }
176
- /**
177
- * Internal: Handle peer disconnection (called from Bun server close handler)
178
- */
179
- _handlePeerDisconnection(peerId) {
180
- const peer = this.peers.get(peerId);
181
- if (peer) {
182
- peer._handleClose();
183
- this.peers.delete(peerId);
184
- // Notify disconnection handlers
185
- for (const handler of this.disconnectionHandlers) {
186
- handler(peerId);
187
- }
188
- }
189
- }
190
- _handlePeerConnection(peerId) {
191
- const peer = this.peers.get(peerId);
192
- if (peer) {
193
- for (const handler of this.connectionHandlers) {
194
- handler(peer, peerId);
195
- }
196
- }
197
- }
198
- /**
199
- * Static factory method to create a Bun WebSocket server
200
- */
201
- static create(port) {
202
- // Peer ID tracking per socket
203
- const socketToPeerId = new WeakMap();
204
- let transport;
205
- const server = Bun.serve({
206
- port,
207
- fetch(req, server) {
208
- // Upgrade HTTP request to WebSocket
209
- if (server.upgrade(req)) {
210
- return; // Connection upgraded
211
- }
212
- return new Response("Expected WebSocket connection", { status: 400 });
213
- },
214
- websocket: {
215
- open(ws) {
216
- // Register peer on connection
217
- const peerId = transport._registerPeer(ws);
218
- socketToPeerId.set(ws, peerId);
219
- transport._handlePeerConnection(peerId);
220
- transport.connectionHandlers.forEach((handler) => handler(transport.getPeer(peerId), peerId));
221
- },
222
- message(ws, message) {
223
- // Handle incoming message
224
- const peerId = socketToPeerId.get(ws);
225
- if (peerId && message instanceof Uint8Array) {
226
- transport._handlePeerMessage(peerId, message);
227
- }
228
- else if (peerId && message instanceof ArrayBuffer) {
229
- transport._handlePeerMessage(peerId, new Uint8Array(message));
230
- }
231
- },
232
- close(ws) {
233
- // Handle disconnection
234
- const peerId = socketToPeerId.get(ws);
235
- if (peerId) {
236
- transport._handlePeerDisconnection(peerId);
237
- socketToPeerId.delete(ws);
238
- }
239
- },
240
- },
241
- });
242
- transport = new BunWebSocketServerTransport(server);
243
- return transport;
244
- }
245
- }
@@ -1,89 +0,0 @@
1
- import { ObjectPool } from "../core/pooled-codec/pooled-codec";
2
- /**
3
- * Message wrapper pool for network messages
4
- * Pools buffers for wrapping encoded data with message type headers
5
- *
6
- * Works alongside PooledCodec:
7
- * - PooledCodec handles encoding game data (intents/snapshots)
8
- * - MessageWrapperPool handles wrapping with protocol headers
9
- *
10
- * This eliminates the "new Uint8Array(1 + data.length)" allocation in hot paths
11
- *
12
- * Uses ObjectPool from core/pooled-codec for consistent pooling strategy
13
- */
14
- export class MessageWrapperPool {
15
- /**
16
- * @param sizeClass Buffers are pooled in multiples of this size (default: 256 bytes)
17
- * @param zeroBuffersOnRelease If true, zero buffers before returning to pool (default: false for performance)
18
- */
19
- constructor(sizeClass = 256, zeroBuffersOnRelease = false) {
20
- this.pools = new Map();
21
- this.sizeClass = sizeClass;
22
- this.zeroBuffersOnRelease = zeroBuffersOnRelease;
23
- }
24
- /**
25
- * Wrap payload data with a message type header
26
- * Returns a buffer from the pool (or allocates if needed)
27
- *
28
- * Format: [messageType: u8][payload: Uint8Array]
29
- *
30
- * IMPORTANT: Caller must call release() when done to return buffer to pool
31
- */
32
- wrap(messageType, payload) {
33
- const totalSize = 1 + payload.byteLength;
34
- const poolSize = Math.ceil(totalSize / this.sizeClass) * this.sizeClass;
35
- // Get or create pool for this size class
36
- let pool = this.pools.get(poolSize);
37
- if (!pool) {
38
- pool = new ObjectPool(() => new Uint8Array(poolSize));
39
- this.pools.set(poolSize, pool);
40
- }
41
- // Acquire buffer from pool
42
- const buffer = pool.acquire();
43
- // Write message type and payload
44
- buffer[0] = messageType;
45
- buffer.set(payload, 1);
46
- // Return view of exact size needed
47
- return buffer.subarray(0, totalSize);
48
- }
49
- /**
50
- * Return a buffer to the pool for reuse
51
- * Optionally zeros buffer based on constructor config
52
- *
53
- * WARNING: Caller must not use the buffer after calling release()
54
- */
55
- release(buffer) {
56
- // Get the actual underlying buffer size
57
- const poolSize = buffer.buffer.byteLength;
58
- // Only pool buffers that match our size classes
59
- if (poolSize % this.sizeClass !== 0) {
60
- return;
61
- }
62
- const pool = this.pools.get(poolSize);
63
- if (!pool) {
64
- return; // No pool for this size, let it be garbage collected
65
- }
66
- // Create a view of the full buffer
67
- const fullBuffer = new Uint8Array(buffer.buffer);
68
- // Optionally zero buffer (expensive but safer if caller might hold references)
69
- if (this.zeroBuffersOnRelease) {
70
- fullBuffer.fill(0);
71
- }
72
- pool.release(fullBuffer);
73
- }
74
- /**
75
- * Get current pool statistics
76
- * Note: ObjectPool doesn't expose size, so we can only list pool classes
77
- */
78
- getStats() {
79
- return {
80
- poolSizes: Array.from(this.pools.keys()).sort((a, b) => a - b),
81
- };
82
- }
83
- /**
84
- * Clear all pooled buffers (useful for testing or memory cleanup)
85
- */
86
- clear() {
87
- this.pools.clear();
88
- }
89
- }