@multitapio/multitap 0.0.1

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 (286) hide show
  1. package/dist/.stamp +0 -0
  2. package/dist/cache.d.ts +117 -0
  3. package/dist/cache.d.ts.map +1 -0
  4. package/dist/channel.d.ts +91 -0
  5. package/dist/channel.d.ts.map +1 -0
  6. package/dist/channel.worker.d.ts +3 -0
  7. package/dist/channel.worker.d.ts.map +1 -0
  8. package/dist/codegen/config.d.ts +107 -0
  9. package/dist/codegen/config.d.ts.map +1 -0
  10. package/dist/codegen/generator.d.ts +78 -0
  11. package/dist/codegen/generator.d.ts.map +1 -0
  12. package/dist/codegen/index.d.ts +13 -0
  13. package/dist/codegen/index.d.ts.map +1 -0
  14. package/dist/codegen/inject.d.ts +51 -0
  15. package/dist/codegen/inject.d.ts.map +1 -0
  16. package/dist/codegen/rust.d.ts +22 -0
  17. package/dist/codegen/rust.d.ts.map +1 -0
  18. package/dist/codegen/typescript.d.ts +22 -0
  19. package/dist/codegen/typescript.d.ts.map +1 -0
  20. package/dist/constants.d.ts +5 -0
  21. package/dist/constants.d.ts.map +1 -0
  22. package/dist/crypto.d.ts +141 -0
  23. package/dist/crypto.d.ts.map +1 -0
  24. package/dist/debug.d.ts +39 -0
  25. package/dist/debug.d.ts.map +1 -0
  26. package/dist/diagnostics/index.d.ts +12 -0
  27. package/dist/diagnostics/index.d.ts.map +1 -0
  28. package/dist/diagnostics.js +5502 -0
  29. package/dist/e2e/cli.d.ts +2 -0
  30. package/dist/e2e/cli.d.ts.map +1 -0
  31. package/dist/executor.d.ts +130 -0
  32. package/dist/executor.d.ts.map +1 -0
  33. package/dist/globals.d.ts +32 -0
  34. package/dist/helpers.d.ts +3 -0
  35. package/dist/helpers.d.ts.map +1 -0
  36. package/dist/input-codec.d.ts +136 -0
  37. package/dist/input-codec.d.ts.map +1 -0
  38. package/dist/input-graph.d.ts +106 -0
  39. package/dist/input-graph.d.ts.map +1 -0
  40. package/dist/lib.d.ts +10 -0
  41. package/dist/lib.d.ts.map +1 -0
  42. package/dist/lib.js +9409 -0
  43. package/dist/messages.d.ts +63 -0
  44. package/dist/messages.d.ts.map +1 -0
  45. package/dist/peer-mesh.d.ts +77 -0
  46. package/dist/peer-mesh.d.ts.map +1 -0
  47. package/dist/react/Crosshair.d.ts +17 -0
  48. package/dist/react/Crosshair.d.ts.map +1 -0
  49. package/dist/react/Player.d.ts +10 -0
  50. package/dist/react/Player.d.ts.map +1 -0
  51. package/dist/react/PlayerPoseContext.d.ts +31 -0
  52. package/dist/react/PlayerPoseContext.d.ts.map +1 -0
  53. package/dist/react/hooks/index.d.ts +7 -0
  54. package/dist/react/hooks/index.d.ts.map +1 -0
  55. package/dist/react/hooks/useEvent.d.ts +46 -0
  56. package/dist/react/hooks/useEvent.d.ts.map +1 -0
  57. package/dist/react/hooks/useFrame.d.ts +23 -0
  58. package/dist/react/hooks/useFrame.d.ts.map +1 -0
  59. package/dist/react/hooks/usePlayers.d.ts +24 -0
  60. package/dist/react/hooks/usePlayers.d.ts.map +1 -0
  61. package/dist/react/hooks/useQuery.d.ts +41 -0
  62. package/dist/react/hooks/useQuery.d.ts.map +1 -0
  63. package/dist/react/hooks/useSession.d.ts +10 -0
  64. package/dist/react/hooks/useSession.d.ts.map +1 -0
  65. package/dist/react/index.d.ts +18 -0
  66. package/dist/react/index.d.ts.map +1 -0
  67. package/dist/react/input/DesktopInputMapper.d.ts +38 -0
  68. package/dist/react/input/DesktopInputMapper.d.ts.map +1 -0
  69. package/dist/react/input/index.d.ts +4 -0
  70. package/dist/react/input/index.d.ts.map +1 -0
  71. package/dist/react/input/types.d.ts +46 -0
  72. package/dist/react/input/types.d.ts.map +1 -0
  73. package/dist/react/providers/SessionProvider.d.ts +17 -0
  74. package/dist/react/providers/SessionProvider.d.ts.map +1 -0
  75. package/dist/react/providers/index.d.ts +2 -0
  76. package/dist/react/providers/index.d.ts.map +1 -0
  77. package/dist/react/types/index.d.ts +2 -0
  78. package/dist/react/types/index.d.ts.map +1 -0
  79. package/dist/react/types/session.d.ts +88 -0
  80. package/dist/react/types/session.d.ts.map +1 -0
  81. package/dist/react/types.d.ts +134 -0
  82. package/dist/react/types.d.ts.map +1 -0
  83. package/dist/react/utils/math.d.ts +19 -0
  84. package/dist/react/utils/math.d.ts.map +1 -0
  85. package/dist/react/views/AsteroidsView.d.ts +24 -0
  86. package/dist/react/views/AsteroidsView.d.ts.map +1 -0
  87. package/dist/react/views/FirstPersonView.d.ts +10 -0
  88. package/dist/react/views/FirstPersonView.d.ts.map +1 -0
  89. package/dist/react/views/IsometricView.d.ts +21 -0
  90. package/dist/react/views/IsometricView.d.ts.map +1 -0
  91. package/dist/react/views/MapView.d.ts +16 -0
  92. package/dist/react/views/MapView.d.ts.map +1 -0
  93. package/dist/react/views/MobaView.d.ts +17 -0
  94. package/dist/react/views/MobaView.d.ts.map +1 -0
  95. package/dist/react/views/SideOnView.d.ts +23 -0
  96. package/dist/react/views/SideOnView.d.ts.map +1 -0
  97. package/dist/react/views/ThirdPersonFixedView.d.ts +21 -0
  98. package/dist/react/views/ThirdPersonFixedView.d.ts.map +1 -0
  99. package/dist/react/views/ThirdPersonView.d.ts +12 -0
  100. package/dist/react/views/ThirdPersonView.d.ts.map +1 -0
  101. package/dist/react/views/TopDownFixedView.d.ts +20 -0
  102. package/dist/react/views/TopDownFixedView.d.ts.map +1 -0
  103. package/dist/react/views/TopDownView.d.ts +12 -0
  104. package/dist/react/views/TopDownView.d.ts.map +1 -0
  105. package/dist/react/views/TwinStickView.d.ts +13 -0
  106. package/dist/react/views/TwinStickView.d.ts.map +1 -0
  107. package/dist/react/views/VehicleFixedView.d.ts +16 -0
  108. package/dist/react/views/VehicleFixedView.d.ts.map +1 -0
  109. package/dist/react/views/VehicleView.d.ts +13 -0
  110. package/dist/react/views/VehicleView.d.ts.map +1 -0
  111. package/dist/react/views/index.d.ts +21 -0
  112. package/dist/react/views/index.d.ts.map +1 -0
  113. package/dist/react/views/types.d.ts +136 -0
  114. package/dist/react/views/types.d.ts.map +1 -0
  115. package/dist/rollback.d.ts +193 -0
  116. package/dist/rollback.d.ts.map +1 -0
  117. package/dist/rollback.worker.d.ts +3 -0
  118. package/dist/rollback.worker.d.ts.map +1 -0
  119. package/dist/schema.d.ts +309 -0
  120. package/dist/schema.d.ts.map +1 -0
  121. package/dist/session-config.d.ts +119 -0
  122. package/dist/session-config.d.ts.map +1 -0
  123. package/dist/session.d.ts +120 -0
  124. package/dist/session.d.ts.map +1 -0
  125. package/dist/state.d.ts +400 -0
  126. package/dist/state.d.ts.map +1 -0
  127. package/dist/stats.d.ts +21 -0
  128. package/dist/stats.d.ts.map +1 -0
  129. package/dist/test-session.d.ts +170 -0
  130. package/dist/test-session.d.ts.map +1 -0
  131. package/dist/types/cache.d.ts +117 -0
  132. package/dist/types/cache.d.ts.map +1 -0
  133. package/dist/types/channel.d.ts +91 -0
  134. package/dist/types/channel.d.ts.map +1 -0
  135. package/dist/types/channel.worker.d.ts +3 -0
  136. package/dist/types/channel.worker.d.ts.map +1 -0
  137. package/dist/types/codegen/config.d.ts +107 -0
  138. package/dist/types/codegen/config.d.ts.map +1 -0
  139. package/dist/types/codegen/generator.d.ts +78 -0
  140. package/dist/types/codegen/generator.d.ts.map +1 -0
  141. package/dist/types/codegen/index.d.ts +13 -0
  142. package/dist/types/codegen/index.d.ts.map +1 -0
  143. package/dist/types/codegen/inject.d.ts +51 -0
  144. package/dist/types/codegen/inject.d.ts.map +1 -0
  145. package/dist/types/codegen/rust.d.ts +22 -0
  146. package/dist/types/codegen/rust.d.ts.map +1 -0
  147. package/dist/types/codegen/typescript.d.ts +22 -0
  148. package/dist/types/codegen/typescript.d.ts.map +1 -0
  149. package/dist/types/constants.d.ts +5 -0
  150. package/dist/types/constants.d.ts.map +1 -0
  151. package/dist/types/crypto.d.ts +141 -0
  152. package/dist/types/crypto.d.ts.map +1 -0
  153. package/dist/types/debug.d.ts +39 -0
  154. package/dist/types/debug.d.ts.map +1 -0
  155. package/dist/types/diagnostics/index.d.ts +12 -0
  156. package/dist/types/diagnostics/index.d.ts.map +1 -0
  157. package/dist/types/e2e/cli.d.ts +2 -0
  158. package/dist/types/e2e/cli.d.ts.map +1 -0
  159. package/dist/types/executor.d.ts +130 -0
  160. package/dist/types/executor.d.ts.map +1 -0
  161. package/dist/types/helpers.d.ts +3 -0
  162. package/dist/types/helpers.d.ts.map +1 -0
  163. package/dist/types/input-codec.d.ts +136 -0
  164. package/dist/types/input-codec.d.ts.map +1 -0
  165. package/dist/types/input-graph.d.ts +106 -0
  166. package/dist/types/input-graph.d.ts.map +1 -0
  167. package/dist/types/lib.d.ts +10 -0
  168. package/dist/types/lib.d.ts.map +1 -0
  169. package/dist/types/messages.d.ts +63 -0
  170. package/dist/types/messages.d.ts.map +1 -0
  171. package/dist/types/peer-mesh.d.ts +77 -0
  172. package/dist/types/peer-mesh.d.ts.map +1 -0
  173. package/dist/types/react/Crosshair.d.ts +17 -0
  174. package/dist/types/react/Crosshair.d.ts.map +1 -0
  175. package/dist/types/react/Player.d.ts +10 -0
  176. package/dist/types/react/Player.d.ts.map +1 -0
  177. package/dist/types/react/PlayerPoseContext.d.ts +31 -0
  178. package/dist/types/react/PlayerPoseContext.d.ts.map +1 -0
  179. package/dist/types/react/hooks/index.d.ts +7 -0
  180. package/dist/types/react/hooks/index.d.ts.map +1 -0
  181. package/dist/types/react/hooks/useEvent.d.ts +46 -0
  182. package/dist/types/react/hooks/useEvent.d.ts.map +1 -0
  183. package/dist/types/react/hooks/useFrame.d.ts +23 -0
  184. package/dist/types/react/hooks/useFrame.d.ts.map +1 -0
  185. package/dist/types/react/hooks/usePlayers.d.ts +24 -0
  186. package/dist/types/react/hooks/usePlayers.d.ts.map +1 -0
  187. package/dist/types/react/hooks/useQuery.d.ts +41 -0
  188. package/dist/types/react/hooks/useQuery.d.ts.map +1 -0
  189. package/dist/types/react/hooks/useSession.d.ts +10 -0
  190. package/dist/types/react/hooks/useSession.d.ts.map +1 -0
  191. package/dist/types/react/index.d.ts +18 -0
  192. package/dist/types/react/index.d.ts.map +1 -0
  193. package/dist/types/react/input/DesktopInputMapper.d.ts +38 -0
  194. package/dist/types/react/input/DesktopInputMapper.d.ts.map +1 -0
  195. package/dist/types/react/input/index.d.ts +4 -0
  196. package/dist/types/react/input/index.d.ts.map +1 -0
  197. package/dist/types/react/input/types.d.ts +46 -0
  198. package/dist/types/react/input/types.d.ts.map +1 -0
  199. package/dist/types/react/providers/SessionProvider.d.ts +17 -0
  200. package/dist/types/react/providers/SessionProvider.d.ts.map +1 -0
  201. package/dist/types/react/providers/index.d.ts +2 -0
  202. package/dist/types/react/providers/index.d.ts.map +1 -0
  203. package/dist/types/react/types/index.d.ts +2 -0
  204. package/dist/types/react/types/index.d.ts.map +1 -0
  205. package/dist/types/react/types/session.d.ts +88 -0
  206. package/dist/types/react/types/session.d.ts.map +1 -0
  207. package/dist/types/react/types.d.ts +134 -0
  208. package/dist/types/react/types.d.ts.map +1 -0
  209. package/dist/types/react/utils/math.d.ts +19 -0
  210. package/dist/types/react/utils/math.d.ts.map +1 -0
  211. package/dist/types/react/views/AsteroidsView.d.ts +24 -0
  212. package/dist/types/react/views/AsteroidsView.d.ts.map +1 -0
  213. package/dist/types/react/views/FirstPersonView.d.ts +10 -0
  214. package/dist/types/react/views/FirstPersonView.d.ts.map +1 -0
  215. package/dist/types/react/views/IsometricView.d.ts +21 -0
  216. package/dist/types/react/views/IsometricView.d.ts.map +1 -0
  217. package/dist/types/react/views/MapView.d.ts +16 -0
  218. package/dist/types/react/views/MapView.d.ts.map +1 -0
  219. package/dist/types/react/views/MobaView.d.ts +17 -0
  220. package/dist/types/react/views/MobaView.d.ts.map +1 -0
  221. package/dist/types/react/views/SideOnView.d.ts +23 -0
  222. package/dist/types/react/views/SideOnView.d.ts.map +1 -0
  223. package/dist/types/react/views/ThirdPersonFixedView.d.ts +21 -0
  224. package/dist/types/react/views/ThirdPersonFixedView.d.ts.map +1 -0
  225. package/dist/types/react/views/ThirdPersonView.d.ts +12 -0
  226. package/dist/types/react/views/ThirdPersonView.d.ts.map +1 -0
  227. package/dist/types/react/views/TopDownFixedView.d.ts +20 -0
  228. package/dist/types/react/views/TopDownFixedView.d.ts.map +1 -0
  229. package/dist/types/react/views/TopDownView.d.ts +12 -0
  230. package/dist/types/react/views/TopDownView.d.ts.map +1 -0
  231. package/dist/types/react/views/TwinStickView.d.ts +13 -0
  232. package/dist/types/react/views/TwinStickView.d.ts.map +1 -0
  233. package/dist/types/react/views/VehicleFixedView.d.ts +16 -0
  234. package/dist/types/react/views/VehicleFixedView.d.ts.map +1 -0
  235. package/dist/types/react/views/VehicleView.d.ts +13 -0
  236. package/dist/types/react/views/VehicleView.d.ts.map +1 -0
  237. package/dist/types/react/views/index.d.ts +21 -0
  238. package/dist/types/react/views/index.d.ts.map +1 -0
  239. package/dist/types/react/views/types.d.ts +136 -0
  240. package/dist/types/react/views/types.d.ts.map +1 -0
  241. package/dist/types/rollback.d.ts +193 -0
  242. package/dist/types/rollback.d.ts.map +1 -0
  243. package/dist/types/rollback.worker.d.ts +3 -0
  244. package/dist/types/rollback.worker.d.ts.map +1 -0
  245. package/dist/types/schema.d.ts +309 -0
  246. package/dist/types/schema.d.ts.map +1 -0
  247. package/dist/types/session-config.d.ts +119 -0
  248. package/dist/types/session-config.d.ts.map +1 -0
  249. package/dist/types/session.d.ts +120 -0
  250. package/dist/types/session.d.ts.map +1 -0
  251. package/dist/types/state.d.ts +400 -0
  252. package/dist/types/state.d.ts.map +1 -0
  253. package/dist/types/stats.d.ts +21 -0
  254. package/dist/types/stats.d.ts.map +1 -0
  255. package/dist/types/test-session.d.ts +170 -0
  256. package/dist/types/test-session.d.ts.map +1 -0
  257. package/dist/types/utils.d.ts +26 -0
  258. package/dist/types/utils.d.ts.map +1 -0
  259. package/dist/types/vite/codegen-runner.d.ts +27 -0
  260. package/dist/types/vite/codegen-runner.d.ts.map +1 -0
  261. package/dist/types/vite/index.d.ts +20 -0
  262. package/dist/types/vite/index.d.ts.map +1 -0
  263. package/dist/types/vite/module-builder.d.ts +28 -0
  264. package/dist/types/vite/module-builder.d.ts.map +1 -0
  265. package/dist/types/vite/plugin.d.ts +27 -0
  266. package/dist/types/vite/plugin.d.ts.map +1 -0
  267. package/dist/types/vite/types.d.ts +37 -0
  268. package/dist/types/vite/types.d.ts.map +1 -0
  269. package/dist/types/vite/wasm-compiler.d.ts +32 -0
  270. package/dist/types/vite/wasm-compiler.d.ts.map +1 -0
  271. package/dist/utils.d.ts +26 -0
  272. package/dist/utils.d.ts.map +1 -0
  273. package/dist/vite/codegen-runner.d.ts +27 -0
  274. package/dist/vite/codegen-runner.d.ts.map +1 -0
  275. package/dist/vite/index.d.ts +20 -0
  276. package/dist/vite/index.d.ts.map +1 -0
  277. package/dist/vite/index.js +4202 -0
  278. package/dist/vite/module-builder.d.ts +28 -0
  279. package/dist/vite/module-builder.d.ts.map +1 -0
  280. package/dist/vite/plugin.d.ts +27 -0
  281. package/dist/vite/plugin.d.ts.map +1 -0
  282. package/dist/vite/types.d.ts +37 -0
  283. package/dist/vite/types.d.ts.map +1 -0
  284. package/dist/vite/wasm-compiler.d.ts +32 -0
  285. package/dist/vite/wasm-compiler.d.ts.map +1 -0
  286. package/package.json +92 -0
package/dist/.stamp ADDED
File without changes
@@ -0,0 +1,117 @@
1
+ /**
2
+ * State Cache for Rollback Networking
3
+ *
4
+ * Provides O(1) lookup of cached states by their stateId.
5
+ * Used during rollback to avoid redundant state transitions when
6
+ * authoritative inputs match predictions.
7
+ *
8
+ * @module state-cache
9
+ */
10
+ /**
11
+ * Convert a 32-byte stateId to a 64-character hex string for use as Map key.
12
+ */
13
+ export declare function stateIdToKey(stateId: Uint8Array): string;
14
+ /**
15
+ * Convert a 64-character hex string back to a 32-byte stateId.
16
+ */
17
+ export declare function keyToStateId(key: string): Uint8Array;
18
+ /**
19
+ * Options for StateCache configuration.
20
+ */
21
+ export interface StateCacheOptions {
22
+ /** Maximum number of states to cache. Default: 100. */
23
+ maxSize?: number;
24
+ }
25
+ /**
26
+ * Cache for state snapshots keyed by stateId.
27
+ *
28
+ * Provides O(1) lookup to avoid redundant state transitions during rollback.
29
+ * When authoritative inputs match predictions, we can retrieve the cached
30
+ * state instead of recomputing.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const cache = new StateCache();
35
+ *
36
+ * // After computing a state transition
37
+ * cache.store(state);
38
+ *
39
+ * // Before computing a state transition, check cache
40
+ * const cached = cache.getCached(prevState, tick, orderedPayloadsHash);
41
+ * if (cached) {
42
+ * // Use cached state, skip computation
43
+ * return cached;
44
+ * }
45
+ * ```
46
+ */
47
+ export declare class StateCache {
48
+ private cache;
49
+ private maxSize;
50
+ constructor(options?: StateCacheOptions);
51
+ /**
52
+ * Store a state in the cache, keyed by its embedded stateId.
53
+ * Makes a copy of the state buffer to prevent mutation issues.
54
+ *
55
+ * @param state - State buffer to cache
56
+ */
57
+ store(state: Uint8Array): void;
58
+ /**
59
+ * Get a cached state by its stateId.
60
+ * Returns a copy of the cached state, or undefined if not found.
61
+ *
62
+ * @param stateId - 32-byte stateId to look up
63
+ * @returns Copy of cached state, or undefined
64
+ */
65
+ getByStateId(stateId: Uint8Array): Uint8Array | undefined;
66
+ /**
67
+ * Get the cached state that would result from a state transition.
68
+ *
69
+ * This is the key API for rollback optimization:
70
+ * - Computes what the resulting stateId would be
71
+ * - Looks up that stateId in the cache
72
+ * - If found, returns the cached state (avoiding recomputation)
73
+ *
74
+ * @param prevState - Previous state buffer
75
+ * @param tick - Tick number
76
+ * @param orderedPayloadsHash - 32-byte hash of ordered payloads (one per participant at stable indices)
77
+ * @returns Copy of cached state, or undefined if not found
78
+ */
79
+ getCached(prevState: Uint8Array, tick: number, orderedPayloadsHash: Uint8Array): Uint8Array | undefined;
80
+ /**
81
+ * Check if we have a cached state for a given stateId.
82
+ *
83
+ * @param stateId - 32-byte stateId to check
84
+ * @returns true if cached
85
+ */
86
+ has(stateId: Uint8Array): boolean;
87
+ /**
88
+ * Check if we would have a cached state after a transition.
89
+ *
90
+ * @param prevState - Previous state buffer
91
+ * @param tick - Tick number
92
+ * @param orderedPayloadsHash - 32-byte hash of ordered payloads (one per participant at stable indices)
93
+ * @returns true if we have a cached result for this transition
94
+ */
95
+ hasCached(prevState: Uint8Array, tick: number, orderedPayloadsHash: Uint8Array): boolean;
96
+ /**
97
+ * Remove a cached state by its stateId.
98
+ *
99
+ * @param stateId - 32-byte stateId to remove
100
+ * @returns true if the state was in the cache
101
+ */
102
+ delete(stateId: Uint8Array): boolean;
103
+ /**
104
+ * Clear all cached states.
105
+ */
106
+ clear(): void;
107
+ /**
108
+ * Get the number of cached states.
109
+ */
110
+ get size(): number;
111
+ /**
112
+ * Get all cached stateIds (as hex keys).
113
+ * Useful for debugging.
114
+ */
115
+ keys(): IterableIterator<string>;
116
+ }
117
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CASpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,iBAAsB;IAK3C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAgB9B;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;IAMzD;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;IAMvG;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAKjC;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,GAAG,OAAO;IAMxF;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAKpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC"}
@@ -0,0 +1,91 @@
1
+ import type { InputData, TickMessage } from './messages';
2
+ import { InputGraph, type AsyncTickLog, type GetTicksAfterOptions, type Participant, type PayloadPredictor, type TickNode, type TickPrimitive } from './input-graph';
3
+ export type TickListener = (tick: TickMessage, streamIndex: number) => void;
4
+ export type StateListener = (connected: boolean) => void;
5
+ export type StreamActivityListener = (streamIndex: number) => void;
6
+ export type StreamLifecycleListener = (event: StreamLifecycleEvent) => void;
7
+ export type UnsubscribeFn = () => void;
8
+ export interface StreamLifecycleEvent {
9
+ type: 'added' | 'removed';
10
+ index: number;
11
+ }
12
+ export interface ChannelConfig {
13
+ /** multitap:// connection URL (will be base64-encoded for transport) */
14
+ connectionURL: string;
15
+ serverCertHash: string | null | undefined;
16
+ privateKey?: Uint8Array;
17
+ relayPubKey?: Uint8Array | undefined | null;
18
+ inputPayloadPredictor?: PayloadPredictor | null;
19
+ debug?: boolean | undefined;
20
+ autoConnect?: boolean | undefined;
21
+ connectionTimeoutMs?: number | undefined;
22
+ logSyncTicks?: boolean | undefined;
23
+ }
24
+ export declare class Channel implements AsyncTickLog {
25
+ readonly connectionURL: string;
26
+ readonly serverCertHash: string | null | undefined;
27
+ readonly connectionTimeoutMs: number;
28
+ private privateKey;
29
+ private publicKey;
30
+ private genesisHash;
31
+ private sessionConfig;
32
+ private transport;
33
+ private streams;
34
+ private replayStreams;
35
+ private roundRobinIndex;
36
+ private connectionGeneration;
37
+ private connected;
38
+ private stopped;
39
+ private debug;
40
+ private logSyncTicks;
41
+ private outbox;
42
+ private stateListeners;
43
+ private flushingOutbox;
44
+ private tickRate;
45
+ inputGraph: InputGraph;
46
+ private tickDeadlineWants;
47
+ private tickDeadlineTimer;
48
+ private tickDeadlineGrace;
49
+ private stats;
50
+ constructor(config: ChannelConfig);
51
+ connect(): Promise<void>;
52
+ getPublicKey(): Promise<Uint8Array<ArrayBufferLike>>;
53
+ getGenesisHash(): Promise<Uint8Array<ArrayBufferLike>>;
54
+ onStateChange(fn: StateListener): UnsubscribeFn;
55
+ getStats(): {
56
+ activeStreams: number;
57
+ totalStreams: number;
58
+ messagesRecv: number;
59
+ messagesSent: number;
60
+ reconnections: number;
61
+ };
62
+ getTickRate(): Promise<number>;
63
+ getParticipantSlots(tick: number): Promise<Participant[]>;
64
+ getSyncHead(): Promise<TickNode>;
65
+ getPredictedHead(): Promise<TickNode>;
66
+ addSyncTick(msg: TickMessage): Promise<void>;
67
+ addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
68
+ getPredictionCount(): Promise<number>;
69
+ getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
70
+ setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
71
+ expose(port: MessagePort): Promise<void>;
72
+ close(): Promise<void>;
73
+ private _setConnected;
74
+ private _send;
75
+ private _generateNullInput;
76
+ sendSignedInput(payload: Uint8Array, targetTick?: number): Promise<Uint8Array>;
77
+ private _nextStream;
78
+ private _connectLoop;
79
+ private _acceptStreamsLoop;
80
+ private _addStream;
81
+ private _dropStream;
82
+ private _cleanupHandle;
83
+ private _flushOutbox;
84
+ private _cleanupTransport;
85
+ private _readLoop;
86
+ private _maybeResetDeadline;
87
+ private _resetDeadline;
88
+ private _onTickDeadlineExceeded;
89
+ private _concatBuffers;
90
+ }
91
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAe,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;AACzD,MAAM,MAAM,sBAAsB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AACnE,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AAGvC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAqBD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAOD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEnD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAGrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAS;IAErC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,YAAY,CAAU;IAE9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAqB;IAE3C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAS;IAClB,UAAU,EAAE,UAAU,CAAC;IAG9B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,iBAAiB,CAAc;IAGvC,OAAO,CAAC,KAAK,CAIX;gBAEU,MAAM,EAAE,aAAa;IA+C3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,YAAY;IAKZ,cAAc;IAIpB,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa;IAQ/C,QAAQ;;;;;;;IAWF,WAAW;IAKX,mBAAmB,CAAC,IAAI,EAAE,MAAM;IAIhC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIhC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIrC,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI9F,sBAAsB,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,MAAM,CAAC,IAAI,EAAE,WAAW;IAKxB,KAAK;IAeX,OAAO,CAAC,aAAa;YAaP,KAAK;IA0BnB,OAAO,CAAC,kBAAkB;IAWpB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkCpF,OAAO,CAAC,WAAW;YAQL,YAAY;YA4EZ,kBAAkB;IA6ChC,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,cAAc;YAmBR,YAAY;IA0B1B,OAAO,CAAC,iBAAiB;YAsBX,SAAS;IAwGvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,uBAAuB;IA8B/B,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1,3 @@
1
+ declare const _default: new () => Worker;
2
+ export default _default;
3
+ //# sourceMappingURL=channel.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.worker.d.ts","sourceRoot":"","sources":["../../src/channel.worker.ts"],"names":[],"mappings":"wBAMkC,UAAU,MAAM;AAAlD,wBAAmD"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Configuration loading and plugin graph management for codegen.
3
+ *
4
+ * This module provides:
5
+ * - Config type matching mt.config.json structure
6
+ * - Project loading and config file discovery
7
+ * - Plugin dependency graph construction
8
+ * - Schema merging across plugins
9
+ *
10
+ * @module codegen/config
11
+ */
12
+ import type { StateSchema, InputSchema } from '../schema';
13
+ /**
14
+ * WASM configuration for plugins.
15
+ */
16
+ export interface WasmConfig {
17
+ /** Number of bytes to reserve in shared WASM memory for this plugin */
18
+ reservedBytes: number;
19
+ }
20
+ /**
21
+ * Root configuration structure (mt.config.json).
22
+ */
23
+ export interface Config {
24
+ appID: string;
25
+ entrypoint: string;
26
+ output: string;
27
+ tests?: string[];
28
+ tickRate: number;
29
+ maxTicks: number;
30
+ maxParticipants: number;
31
+ plugins?: string[];
32
+ wasm?: WasmConfig;
33
+ input: InputSchema;
34
+ state: StateSchema;
35
+ fixtures?: unknown;
36
+ }
37
+ /**
38
+ * A loaded project with its configuration and paths.
39
+ */
40
+ export interface Project {
41
+ /** Parsed project configuration */
42
+ config: Config;
43
+ /** Absolute path to the config file */
44
+ configPath: string;
45
+ /** Absolute path to the project directory */
46
+ dir: string;
47
+ }
48
+ /**
49
+ * A node in the plugin dependency graph.
50
+ */
51
+ export interface PluginNode {
52
+ /** Absolute path to the plugin directory */
53
+ path: string;
54
+ /** Parsed plugin configuration */
55
+ config: Config;
56
+ /** Absolute paths of plugins this node depends on */
57
+ dependencies: string[];
58
+ }
59
+ /**
60
+ * The complete plugin dependency graph.
61
+ */
62
+ export interface ConfigGraph {
63
+ /** Root project */
64
+ root: Project;
65
+ /** Plugin nodes mapped by absolute path */
66
+ plugins: Map<string, PluginNode>;
67
+ /** Topologically sorted list of plugin paths (dependencies first) */
68
+ order: string[];
69
+ }
70
+ /**
71
+ * Result of merging all plugin configs.
72
+ */
73
+ export interface MergedConfig {
74
+ /** Merged configuration with all components */
75
+ config: Config;
76
+ /** Execution order of plugins (dependencies first) */
77
+ pluginOrder: string[];
78
+ /** Maps component names to the plugin path that defined them */
79
+ componentOwners: Map<string, string>;
80
+ }
81
+ /**
82
+ * Find a *mt.config.json file in the given path.
83
+ * If path is a file, returns it directly.
84
+ * If path is a directory, searches for files ending in mt.config.json.
85
+ */
86
+ export declare function findConfig(path: string): string;
87
+ /**
88
+ * Load and parse a config file.
89
+ */
90
+ export declare function loadConfig(path: string): Config;
91
+ /**
92
+ * Load a project from the given path.
93
+ * If path is a file, loads that config directly.
94
+ * If path is a directory, searches for a *mt.config.json file.
95
+ */
96
+ export declare function loadProject(path: string): Project;
97
+ /**
98
+ * Load the complete plugin dependency graph starting from a root project.
99
+ * Uses BFS to walk the dependency DAG.
100
+ */
101
+ export declare function loadConfigGraph(root: Project): ConfigGraph;
102
+ /**
103
+ * Merge all plugin configs into a single config.
104
+ * Components and events are merged in topological order with conflict detection.
105
+ */
106
+ export declare function mergeConfigs(graph: ConfigGraph): MergedConfig;
107
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/codegen/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAA0B,MAAM,WAAW,CAAC;AAMlF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,2CAA2C;IAC3C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,qEAAqE;IACrE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gEAAgE;IAChE,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoB/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjD;AAgBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAsE1D;AAsDD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAqF7D"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Code generator interface and utilities for codegen.
3
+ *
4
+ * This module defines the Generator interface and provides common utilities
5
+ * for name conversion and type mapping used by language-specific generators.
6
+ *
7
+ * @module codegen/generator
8
+ */
9
+ import type { CompiledStateSchema, CompiledInputSchema } from '../schema';
10
+ /**
11
+ * Options for code generators.
12
+ */
13
+ export interface GeneratorOptions {
14
+ /** Optional plugin name for prefixing (e.g., "physics") */
15
+ pluginName?: string;
16
+ }
17
+ /**
18
+ * Code generator interface.
19
+ * Implementations produce language-specific code from compiled schemas.
20
+ */
21
+ export interface Generator {
22
+ /** The target language */
23
+ readonly language: 'typescript' | 'rust';
24
+ /**
25
+ * Generate state accessor code from a compiled state schema.
26
+ * @param schema - Compiled state schema with layout information
27
+ * @returns Generated source code as a string
28
+ */
29
+ generateState(schema: CompiledStateSchema): string;
30
+ /**
31
+ * Generate input codec code from a compiled input schema.
32
+ * @param schema - Compiled input schema with control/command information
33
+ * @returns Generated source code as a string
34
+ */
35
+ generateInput(schema: CompiledInputSchema): string;
36
+ /**
37
+ * Generate combined game module with both state and input.
38
+ * @param state - Compiled state schema
39
+ * @param input - Compiled input schema
40
+ * @returns Generated source code as a string
41
+ */
42
+ generateGame(state: CompiledStateSchema, input: CompiledInputSchema): string;
43
+ }
44
+ /**
45
+ * Convert a string from PascalCase/camelCase to UPPER_SNAKE_CASE.
46
+ * @example toUpperSnake("RigidBodyType") // "RIGID_BODY_TYPE"
47
+ * @example toUpperSnake("shapeType") // "SHAPE_TYPE"
48
+ */
49
+ export declare function toUpperSnake(s: string): string;
50
+ /**
51
+ * Convert a string to lower_snake_case.
52
+ * @example toLowerSnake("RigidBodyType") // "rigid_body_type"
53
+ * @example toLowerSnake("PlayerIndex") // "player_index"
54
+ */
55
+ export declare function toLowerSnake(s: string): string;
56
+ /**
57
+ * Convert a string to camelCase.
58
+ * @example toCamelCase("player_index") // "playerIndex"
59
+ * @example toCamelCase("RIGID_BODY_TYPE") // "rigidBodyType"
60
+ */
61
+ export declare function toCamelCase(s: string): string;
62
+ /**
63
+ * Convert a string to PascalCase.
64
+ * @example toPascalCase("player_index") // "PlayerIndex"
65
+ * @example toPascalCase("rigidBodyType") // "RigidBodyType"
66
+ */
67
+ export declare function toPascalCase(s: string): string;
68
+ /**
69
+ * Parse array type string like "uint16[8]" into [elementType, length].
70
+ * Returns null if not a valid array type (must have primitive element type).
71
+ * Matches Go's ParseArrayType behavior which only allows primitive element types.
72
+ */
73
+ export declare function parseArrayType(type: string): [string, number] | null;
74
+ /** Check if a type needs endianness handling (multi-byte types) */
75
+ export declare function needsEndian(type: string): boolean;
76
+ /** Get the element size for a primitive type */
77
+ export declare function getElementSize(type: string): number;
78
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/codegen/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAM1E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC;IAEzC;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAEnD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAEnD;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC;CAC9E;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAiB9C;AAmBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CASpE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code generation module for Multitap.
3
+ *
4
+ * Provides TypeScript and Rust code generators from compiled schemas.
5
+ *
6
+ * @module codegen
7
+ */
8
+ export { type Config, type WasmConfig, type Project, type PluginNode, type ConfigGraph, type MergedConfig, findConfig, loadConfig, loadProject, loadConfigGraph, mergeConfigs, } from './config';
9
+ export { buildPlayerComponent, injectPlayerComponent, buildCommandEvents, injectCommandEvents, prepareStateSchema, } from './inject';
10
+ export { type Generator, type GeneratorOptions, toUpperSnake, toLowerSnake, toCamelCase, toPascalCase, parseArrayType, needsEndian, getElementSize, } from './generator';
11
+ export { TypeScriptGenerator } from './typescript';
12
+ export { RustGenerator } from './rust';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Player component and command event injection for codegen.
3
+ *
4
+ * This module provides functions to automatically generate:
5
+ * - Player component from input schema controls
6
+ * - Command events from input schema commands
7
+ *
8
+ * @module codegen/inject
9
+ */
10
+ import type { StateSchema, ComponentDef, EventDef, CompiledInputSchema } from '../schema';
11
+ /**
12
+ * Build a Player component definition from compiled input schema controls.
13
+ *
14
+ * The Player component contains:
15
+ * - `index` field (uint8) - identifies which player owns this entity
16
+ * - One field per control, with vec2/vec3/quat flattened to x/y/z/w components
17
+ * - Flag types (flags8/16/32) map to uint8/16/32
18
+ */
19
+ export declare function buildPlayerComponent(inputSchema: CompiledInputSchema): ComponentDef;
20
+ /**
21
+ * Inject the Player component into a state schema.
22
+ * Mutates the schema in place.
23
+ *
24
+ * @throws Error if schema already contains a 'Player' component
25
+ */
26
+ export declare function injectPlayerComponent(schema: {
27
+ components: ComponentDef[];
28
+ }, inputSchema: CompiledInputSchema): void;
29
+ /**
30
+ * Build event definitions from compiled input schema commands.
31
+ *
32
+ * Each command becomes a `{Name}Command` event with:
33
+ * - `player_index` field (uint8) - identifies which player issued the command
34
+ * - One field per command argument, with vec2/vec3/quat flattened to x/y/z/w components
35
+ */
36
+ export declare function buildCommandEvents(inputSchema: CompiledInputSchema): EventDef[];
37
+ /**
38
+ * Inject command-derived events into a state schema.
39
+ * Mutates the schema in place.
40
+ *
41
+ * @throws Error if schema already contains an event with a conflicting name
42
+ */
43
+ export declare function injectCommandEvents(schema: {
44
+ events?: EventDef[];
45
+ }, inputSchema: CompiledInputSchema): void;
46
+ /**
47
+ * Prepare a state schema for codegen by injecting Player component and command events.
48
+ * Returns a new schema object (does not mutate the original).
49
+ */
50
+ export declare function prepareStateSchema(stateSchema: StateSchema, inputSchema: CompiledInputSchema): StateSchema;
51
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/codegen/inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,QAAQ,EAER,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAMnB;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,mBAAmB,GAAG,YAAY,CAgDnF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,EACtC,WAAW,EAAE,mBAAmB,GAC/B,IAAI,CAWN;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,GAAG,QAAQ,EAAE,CAyD/E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;CAAE,EAC/B,WAAW,EAAE,mBAAmB,GAC/B,IAAI,CAsBN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,mBAAmB,GAC/B,WAAW,CAeb"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Rust code generator for state and input bindings.
3
+ *
4
+ * Generates Rust code from compiled schemas using template literals.
5
+ *
6
+ * @module codegen/rust
7
+ */
8
+ import type { CompiledStateSchema, CompiledInputSchema } from '../schema';
9
+ import type { Generator, GeneratorOptions } from './generator';
10
+ /**
11
+ * Rust code generator.
12
+ * Generates Rust accessors for state and input schemas.
13
+ */
14
+ export declare class RustGenerator implements Generator {
15
+ readonly language: "rust";
16
+ private opts;
17
+ constructor(opts?: GeneratorOptions);
18
+ generateState(schema: CompiledStateSchema): string;
19
+ generateInput(schema: CompiledInputSchema): string;
20
+ generateGame(state: CompiledStateSchema, input: CompiledInputSchema): string;
21
+ }
22
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/codegen/rust.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAKpB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAy5C/D;;;GAGG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IACpC,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,GAAE,gBAAqB;IAIvC,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IA2ClD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IA2BlD,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM;CAe7E"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * TypeScript code generator for state and input bindings.
3
+ *
4
+ * Generates TypeScript code from compiled schemas using template literals.
5
+ *
6
+ * @module codegen/typescript
7
+ */
8
+ import type { CompiledStateSchema, CompiledInputSchema } from '../schema';
9
+ import type { Generator, GeneratorOptions } from './generator';
10
+ /**
11
+ * TypeScript code generator.
12
+ * Generates TypeScript accessors for state and input schemas.
13
+ */
14
+ export declare class TypeScriptGenerator implements Generator {
15
+ readonly language: "typescript";
16
+ private opts;
17
+ constructor(opts?: GeneratorOptions);
18
+ generateState(schema: CompiledStateSchema): string;
19
+ generateInput(schema: CompiledInputSchema): string;
20
+ generateGame(state: CompiledStateSchema, input: CompiledInputSchema): string;
21
+ }
22
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/codegen/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAMpB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAklD/D;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IACnD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;IAC1C,OAAO,CAAC,IAAI,CAAmB;gBAEnB,IAAI,GAAE,gBAAqB;IAIvC,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IA0ClD,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAyClD,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM;CAG7E"}
@@ -0,0 +1,5 @@
1
+ /** Maximum ticks the predicted head can run ahead of sync head before stalling */
2
+ export declare const ROLLBACK_WINDOW = 20;
3
+ /** Range around current tick where inputs are valid (±10 ticks) */
4
+ export declare const INPUT_VALIDITY_WINDOW = 10;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,kFAAkF;AAClF,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,KAAK,CAAC"}