@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.
- package/dist/.stamp +0 -0
- package/dist/cache.d.ts +117 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/channel.d.ts +91 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.worker.d.ts +3 -0
- package/dist/channel.worker.d.ts.map +1 -0
- package/dist/codegen/config.d.ts +107 -0
- package/dist/codegen/config.d.ts.map +1 -0
- package/dist/codegen/generator.d.ts +78 -0
- package/dist/codegen/generator.d.ts.map +1 -0
- package/dist/codegen/index.d.ts +13 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/inject.d.ts +51 -0
- package/dist/codegen/inject.d.ts.map +1 -0
- package/dist/codegen/rust.d.ts +22 -0
- package/dist/codegen/rust.d.ts.map +1 -0
- package/dist/codegen/typescript.d.ts +22 -0
- package/dist/codegen/typescript.d.ts.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/crypto.d.ts +141 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/debug.d.ts +39 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/diagnostics/index.d.ts +12 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics.js +5502 -0
- package/dist/e2e/cli.d.ts +2 -0
- package/dist/e2e/cli.d.ts.map +1 -0
- package/dist/executor.d.ts +130 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/globals.d.ts +32 -0
- package/dist/helpers.d.ts +3 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/input-codec.d.ts +136 -0
- package/dist/input-codec.d.ts.map +1 -0
- package/dist/input-graph.d.ts +106 -0
- package/dist/input-graph.d.ts.map +1 -0
- package/dist/lib.d.ts +10 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +9409 -0
- package/dist/messages.d.ts +63 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/peer-mesh.d.ts +77 -0
- package/dist/peer-mesh.d.ts.map +1 -0
- package/dist/react/Crosshair.d.ts +17 -0
- package/dist/react/Crosshair.d.ts.map +1 -0
- package/dist/react/Player.d.ts +10 -0
- package/dist/react/Player.d.ts.map +1 -0
- package/dist/react/PlayerPoseContext.d.ts +31 -0
- package/dist/react/PlayerPoseContext.d.ts.map +1 -0
- package/dist/react/hooks/index.d.ts +7 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/useEvent.d.ts +46 -0
- package/dist/react/hooks/useEvent.d.ts.map +1 -0
- package/dist/react/hooks/useFrame.d.ts +23 -0
- package/dist/react/hooks/useFrame.d.ts.map +1 -0
- package/dist/react/hooks/usePlayers.d.ts +24 -0
- package/dist/react/hooks/usePlayers.d.ts.map +1 -0
- package/dist/react/hooks/useQuery.d.ts +41 -0
- package/dist/react/hooks/useQuery.d.ts.map +1 -0
- package/dist/react/hooks/useSession.d.ts +10 -0
- package/dist/react/hooks/useSession.d.ts.map +1 -0
- package/dist/react/index.d.ts +18 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/input/DesktopInputMapper.d.ts +38 -0
- package/dist/react/input/DesktopInputMapper.d.ts.map +1 -0
- package/dist/react/input/index.d.ts +4 -0
- package/dist/react/input/index.d.ts.map +1 -0
- package/dist/react/input/types.d.ts +46 -0
- package/dist/react/input/types.d.ts.map +1 -0
- package/dist/react/providers/SessionProvider.d.ts +17 -0
- package/dist/react/providers/SessionProvider.d.ts.map +1 -0
- package/dist/react/providers/index.d.ts +2 -0
- package/dist/react/providers/index.d.ts.map +1 -0
- package/dist/react/types/index.d.ts +2 -0
- package/dist/react/types/index.d.ts.map +1 -0
- package/dist/react/types/session.d.ts +88 -0
- package/dist/react/types/session.d.ts.map +1 -0
- package/dist/react/types.d.ts +134 -0
- package/dist/react/types.d.ts.map +1 -0
- package/dist/react/utils/math.d.ts +19 -0
- package/dist/react/utils/math.d.ts.map +1 -0
- package/dist/react/views/AsteroidsView.d.ts +24 -0
- package/dist/react/views/AsteroidsView.d.ts.map +1 -0
- package/dist/react/views/FirstPersonView.d.ts +10 -0
- package/dist/react/views/FirstPersonView.d.ts.map +1 -0
- package/dist/react/views/IsometricView.d.ts +21 -0
- package/dist/react/views/IsometricView.d.ts.map +1 -0
- package/dist/react/views/MapView.d.ts +16 -0
- package/dist/react/views/MapView.d.ts.map +1 -0
- package/dist/react/views/MobaView.d.ts +17 -0
- package/dist/react/views/MobaView.d.ts.map +1 -0
- package/dist/react/views/SideOnView.d.ts +23 -0
- package/dist/react/views/SideOnView.d.ts.map +1 -0
- package/dist/react/views/ThirdPersonFixedView.d.ts +21 -0
- package/dist/react/views/ThirdPersonFixedView.d.ts.map +1 -0
- package/dist/react/views/ThirdPersonView.d.ts +12 -0
- package/dist/react/views/ThirdPersonView.d.ts.map +1 -0
- package/dist/react/views/TopDownFixedView.d.ts +20 -0
- package/dist/react/views/TopDownFixedView.d.ts.map +1 -0
- package/dist/react/views/TopDownView.d.ts +12 -0
- package/dist/react/views/TopDownView.d.ts.map +1 -0
- package/dist/react/views/TwinStickView.d.ts +13 -0
- package/dist/react/views/TwinStickView.d.ts.map +1 -0
- package/dist/react/views/VehicleFixedView.d.ts +16 -0
- package/dist/react/views/VehicleFixedView.d.ts.map +1 -0
- package/dist/react/views/VehicleView.d.ts +13 -0
- package/dist/react/views/VehicleView.d.ts.map +1 -0
- package/dist/react/views/index.d.ts +21 -0
- package/dist/react/views/index.d.ts.map +1 -0
- package/dist/react/views/types.d.ts +136 -0
- package/dist/react/views/types.d.ts.map +1 -0
- package/dist/rollback.d.ts +193 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.worker.d.ts +3 -0
- package/dist/rollback.worker.d.ts.map +1 -0
- package/dist/schema.d.ts +309 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/session-config.d.ts +119 -0
- package/dist/session-config.d.ts.map +1 -0
- package/dist/session.d.ts +120 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/state.d.ts +400 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/stats.d.ts +21 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/test-session.d.ts +170 -0
- package/dist/test-session.d.ts.map +1 -0
- package/dist/types/cache.d.ts +117 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/channel.d.ts +91 -0
- package/dist/types/channel.d.ts.map +1 -0
- package/dist/types/channel.worker.d.ts +3 -0
- package/dist/types/channel.worker.d.ts.map +1 -0
- package/dist/types/codegen/config.d.ts +107 -0
- package/dist/types/codegen/config.d.ts.map +1 -0
- package/dist/types/codegen/generator.d.ts +78 -0
- package/dist/types/codegen/generator.d.ts.map +1 -0
- package/dist/types/codegen/index.d.ts +13 -0
- package/dist/types/codegen/index.d.ts.map +1 -0
- package/dist/types/codegen/inject.d.ts +51 -0
- package/dist/types/codegen/inject.d.ts.map +1 -0
- package/dist/types/codegen/rust.d.ts +22 -0
- package/dist/types/codegen/rust.d.ts.map +1 -0
- package/dist/types/codegen/typescript.d.ts +22 -0
- package/dist/types/codegen/typescript.d.ts.map +1 -0
- package/dist/types/constants.d.ts +5 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/crypto.d.ts +141 -0
- package/dist/types/crypto.d.ts.map +1 -0
- package/dist/types/debug.d.ts +39 -0
- package/dist/types/debug.d.ts.map +1 -0
- package/dist/types/diagnostics/index.d.ts +12 -0
- package/dist/types/diagnostics/index.d.ts.map +1 -0
- package/dist/types/e2e/cli.d.ts +2 -0
- package/dist/types/e2e/cli.d.ts.map +1 -0
- package/dist/types/executor.d.ts +130 -0
- package/dist/types/executor.d.ts.map +1 -0
- package/dist/types/helpers.d.ts +3 -0
- package/dist/types/helpers.d.ts.map +1 -0
- package/dist/types/input-codec.d.ts +136 -0
- package/dist/types/input-codec.d.ts.map +1 -0
- package/dist/types/input-graph.d.ts +106 -0
- package/dist/types/input-graph.d.ts.map +1 -0
- package/dist/types/lib.d.ts +10 -0
- package/dist/types/lib.d.ts.map +1 -0
- package/dist/types/messages.d.ts +63 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/peer-mesh.d.ts +77 -0
- package/dist/types/peer-mesh.d.ts.map +1 -0
- package/dist/types/react/Crosshair.d.ts +17 -0
- package/dist/types/react/Crosshair.d.ts.map +1 -0
- package/dist/types/react/Player.d.ts +10 -0
- package/dist/types/react/Player.d.ts.map +1 -0
- package/dist/types/react/PlayerPoseContext.d.ts +31 -0
- package/dist/types/react/PlayerPoseContext.d.ts.map +1 -0
- package/dist/types/react/hooks/index.d.ts +7 -0
- package/dist/types/react/hooks/index.d.ts.map +1 -0
- package/dist/types/react/hooks/useEvent.d.ts +46 -0
- package/dist/types/react/hooks/useEvent.d.ts.map +1 -0
- package/dist/types/react/hooks/useFrame.d.ts +23 -0
- package/dist/types/react/hooks/useFrame.d.ts.map +1 -0
- package/dist/types/react/hooks/usePlayers.d.ts +24 -0
- package/dist/types/react/hooks/usePlayers.d.ts.map +1 -0
- package/dist/types/react/hooks/useQuery.d.ts +41 -0
- package/dist/types/react/hooks/useQuery.d.ts.map +1 -0
- package/dist/types/react/hooks/useSession.d.ts +10 -0
- package/dist/types/react/hooks/useSession.d.ts.map +1 -0
- package/dist/types/react/index.d.ts +18 -0
- package/dist/types/react/index.d.ts.map +1 -0
- package/dist/types/react/input/DesktopInputMapper.d.ts +38 -0
- package/dist/types/react/input/DesktopInputMapper.d.ts.map +1 -0
- package/dist/types/react/input/index.d.ts +4 -0
- package/dist/types/react/input/index.d.ts.map +1 -0
- package/dist/types/react/input/types.d.ts +46 -0
- package/dist/types/react/input/types.d.ts.map +1 -0
- package/dist/types/react/providers/SessionProvider.d.ts +17 -0
- package/dist/types/react/providers/SessionProvider.d.ts.map +1 -0
- package/dist/types/react/providers/index.d.ts +2 -0
- package/dist/types/react/providers/index.d.ts.map +1 -0
- package/dist/types/react/types/index.d.ts +2 -0
- package/dist/types/react/types/index.d.ts.map +1 -0
- package/dist/types/react/types/session.d.ts +88 -0
- package/dist/types/react/types/session.d.ts.map +1 -0
- package/dist/types/react/types.d.ts +134 -0
- package/dist/types/react/types.d.ts.map +1 -0
- package/dist/types/react/utils/math.d.ts +19 -0
- package/dist/types/react/utils/math.d.ts.map +1 -0
- package/dist/types/react/views/AsteroidsView.d.ts +24 -0
- package/dist/types/react/views/AsteroidsView.d.ts.map +1 -0
- package/dist/types/react/views/FirstPersonView.d.ts +10 -0
- package/dist/types/react/views/FirstPersonView.d.ts.map +1 -0
- package/dist/types/react/views/IsometricView.d.ts +21 -0
- package/dist/types/react/views/IsometricView.d.ts.map +1 -0
- package/dist/types/react/views/MapView.d.ts +16 -0
- package/dist/types/react/views/MapView.d.ts.map +1 -0
- package/dist/types/react/views/MobaView.d.ts +17 -0
- package/dist/types/react/views/MobaView.d.ts.map +1 -0
- package/dist/types/react/views/SideOnView.d.ts +23 -0
- package/dist/types/react/views/SideOnView.d.ts.map +1 -0
- package/dist/types/react/views/ThirdPersonFixedView.d.ts +21 -0
- package/dist/types/react/views/ThirdPersonFixedView.d.ts.map +1 -0
- package/dist/types/react/views/ThirdPersonView.d.ts +12 -0
- package/dist/types/react/views/ThirdPersonView.d.ts.map +1 -0
- package/dist/types/react/views/TopDownFixedView.d.ts +20 -0
- package/dist/types/react/views/TopDownFixedView.d.ts.map +1 -0
- package/dist/types/react/views/TopDownView.d.ts +12 -0
- package/dist/types/react/views/TopDownView.d.ts.map +1 -0
- package/dist/types/react/views/TwinStickView.d.ts +13 -0
- package/dist/types/react/views/TwinStickView.d.ts.map +1 -0
- package/dist/types/react/views/VehicleFixedView.d.ts +16 -0
- package/dist/types/react/views/VehicleFixedView.d.ts.map +1 -0
- package/dist/types/react/views/VehicleView.d.ts +13 -0
- package/dist/types/react/views/VehicleView.d.ts.map +1 -0
- package/dist/types/react/views/index.d.ts +21 -0
- package/dist/types/react/views/index.d.ts.map +1 -0
- package/dist/types/react/views/types.d.ts +136 -0
- package/dist/types/react/views/types.d.ts.map +1 -0
- package/dist/types/rollback.d.ts +193 -0
- package/dist/types/rollback.d.ts.map +1 -0
- package/dist/types/rollback.worker.d.ts +3 -0
- package/dist/types/rollback.worker.d.ts.map +1 -0
- package/dist/types/schema.d.ts +309 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/session-config.d.ts +119 -0
- package/dist/types/session-config.d.ts.map +1 -0
- package/dist/types/session.d.ts +120 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/state.d.ts +400 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/stats.d.ts +21 -0
- package/dist/types/stats.d.ts.map +1 -0
- package/dist/types/test-session.d.ts +170 -0
- package/dist/types/test-session.d.ts.map +1 -0
- package/dist/types/utils.d.ts +26 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/vite/codegen-runner.d.ts +27 -0
- package/dist/types/vite/codegen-runner.d.ts.map +1 -0
- package/dist/types/vite/index.d.ts +20 -0
- package/dist/types/vite/index.d.ts.map +1 -0
- package/dist/types/vite/module-builder.d.ts +28 -0
- package/dist/types/vite/module-builder.d.ts.map +1 -0
- package/dist/types/vite/plugin.d.ts +27 -0
- package/dist/types/vite/plugin.d.ts.map +1 -0
- package/dist/types/vite/types.d.ts +37 -0
- package/dist/types/vite/types.d.ts.map +1 -0
- package/dist/types/vite/wasm-compiler.d.ts +32 -0
- package/dist/types/vite/wasm-compiler.d.ts.map +1 -0
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/vite/codegen-runner.d.ts +27 -0
- package/dist/vite/codegen-runner.d.ts.map +1 -0
- package/dist/vite/index.d.ts +20 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +4202 -0
- package/dist/vite/module-builder.d.ts +28 -0
- package/dist/vite/module-builder.d.ts.map +1 -0
- package/dist/vite/plugin.d.ts +27 -0
- package/dist/vite/plugin.d.ts.map +1 -0
- package/dist/vite/types.d.ts +37 -0
- package/dist/vite/types.d.ts.map +1 -0
- package/dist/vite/wasm-compiler.d.ts +32 -0
- package/dist/vite/wasm-compiler.d.ts.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/e2e/cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASM Executor - Manages state transition via WASM modules
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple plugins executing serially on shared state.
|
|
5
|
+
*
|
|
6
|
+
* @module wasm-host
|
|
7
|
+
*/
|
|
8
|
+
import { type InputSchema } from './input-codec';
|
|
9
|
+
import type { TickPrimitive } from './input-graph';
|
|
10
|
+
import { type CompiledSchema, type StateBuffer } from './state';
|
|
11
|
+
/**
|
|
12
|
+
* Batch transition execution interface.
|
|
13
|
+
*
|
|
14
|
+
* Takes input state and a batch of ticks, returns new state.
|
|
15
|
+
* Note: The function should NOT modify stateId - StateManager handles that.
|
|
16
|
+
*/
|
|
17
|
+
export interface BatchTransitionExecutor {
|
|
18
|
+
transition: (state: StateBuffer, ticks: TickPrimitive[]) => StateBuffer;
|
|
19
|
+
close: () => void;
|
|
20
|
+
}
|
|
21
|
+
export interface TransitionExports {
|
|
22
|
+
/** Per-tick transition function - mutates state in-place */
|
|
23
|
+
apply: (statePtr: number) => void;
|
|
24
|
+
/** WASM memory */
|
|
25
|
+
memory: WebAssembly.Memory;
|
|
26
|
+
}
|
|
27
|
+
/** Plugin definition for multi-plugin executor */
|
|
28
|
+
export interface PluginDef {
|
|
29
|
+
name: string;
|
|
30
|
+
wasmBytes: Uint8Array;
|
|
31
|
+
/** Reserved bytes in shared WASM memory for this plugin's data section and stack */
|
|
32
|
+
reservedBytes: number;
|
|
33
|
+
}
|
|
34
|
+
export interface ExecutorOptions {
|
|
35
|
+
/** Be noisy in the console */
|
|
36
|
+
debug?: boolean | undefined;
|
|
37
|
+
/** The WASM module bytes (single plugin - deprecated, use plugins) */
|
|
38
|
+
moduleBytes?: Uint8Array;
|
|
39
|
+
/** Array of plugins in execution order */
|
|
40
|
+
plugins?: PluginDef[];
|
|
41
|
+
/** The state schema */
|
|
42
|
+
stateSchema: CompiledSchema;
|
|
43
|
+
/** The input schema */
|
|
44
|
+
inputSchema: InputSchema;
|
|
45
|
+
/** Maximum number of ticks per batch (for buffer sizing and yielding execution) */
|
|
46
|
+
maxTicksPerBatch: number;
|
|
47
|
+
}
|
|
48
|
+
export declare class Executor implements BatchTransitionExecutor {
|
|
49
|
+
private memory;
|
|
50
|
+
private plugins;
|
|
51
|
+
private options;
|
|
52
|
+
private stateSize;
|
|
53
|
+
private statePtr;
|
|
54
|
+
private heapPos;
|
|
55
|
+
private arenaResetMark;
|
|
56
|
+
private inputCodec;
|
|
57
|
+
private playerEntities;
|
|
58
|
+
constructor(options: ExecutorOptions);
|
|
59
|
+
/**
|
|
60
|
+
* Host-provided allocator for WASM modules.
|
|
61
|
+
* This enables shared memory across multiple plugins.
|
|
62
|
+
* Returns zeroed memory.
|
|
63
|
+
*/
|
|
64
|
+
private hostAlloc;
|
|
65
|
+
/**
|
|
66
|
+
* Mark current heap position as the arena reset point.
|
|
67
|
+
* Called after init allocations (state buffers) but before game logic.
|
|
68
|
+
*/
|
|
69
|
+
markArenaReset(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Reset heap to the marked position, reclaiming temporary allocations.
|
|
72
|
+
* Called between tick batches.
|
|
73
|
+
*/
|
|
74
|
+
resetArena(): void;
|
|
75
|
+
init(): Promise<Executor>;
|
|
76
|
+
/**
|
|
77
|
+
* Find an existing player entity by player index.
|
|
78
|
+
* Returns undefined if no entity exists for this player.
|
|
79
|
+
*/
|
|
80
|
+
private findPlayerEntity;
|
|
81
|
+
/**
|
|
82
|
+
* Spawn a new player entity and set its Player.index field.
|
|
83
|
+
*/
|
|
84
|
+
private spawnPlayerEntity;
|
|
85
|
+
/**
|
|
86
|
+
* Find or spawn a player entity for the given player index.
|
|
87
|
+
*/
|
|
88
|
+
private findOrSpawnPlayerEntity;
|
|
89
|
+
/**
|
|
90
|
+
* Reset control fields in a Player component to zero/default.
|
|
91
|
+
* Called at tick start before writing new inputs.
|
|
92
|
+
* Skips controls with retain="always" (they persist until explicitly changed).
|
|
93
|
+
*/
|
|
94
|
+
private resetPlayerControls;
|
|
95
|
+
/**
|
|
96
|
+
* Write decoded controls from an InputInstance to the Player component.
|
|
97
|
+
* Maps each control field to the corresponding Player component field.
|
|
98
|
+
*
|
|
99
|
+
* Note: vec2/vec3/quat controls are flattened to individual X/Y/Z/W fields
|
|
100
|
+
* by the Go codegen (e.g., "movement" becomes "movement_x", "movement_y").
|
|
101
|
+
*/
|
|
102
|
+
private writeControlsToPlayer;
|
|
103
|
+
/**
|
|
104
|
+
* Push decoded commands to the generated command events.
|
|
105
|
+
* Each command becomes a {Name}Command event with playerIndex prepended.
|
|
106
|
+
*/
|
|
107
|
+
private pushCommands;
|
|
108
|
+
/**
|
|
109
|
+
* Clear all command events at tick start.
|
|
110
|
+
*/
|
|
111
|
+
private clearCommandEvents;
|
|
112
|
+
/**
|
|
113
|
+
* Decode all payloads for a tick and write to state.
|
|
114
|
+
* - Finds or spawns player entities
|
|
115
|
+
* - Writes controls to Player components
|
|
116
|
+
* - Pushes commands to command events
|
|
117
|
+
*/
|
|
118
|
+
private decodePayloadsToState;
|
|
119
|
+
/**
|
|
120
|
+
* Execute state transition for a batch of ticks.
|
|
121
|
+
*
|
|
122
|
+
* @param state - Current state buffer
|
|
123
|
+
* @param ticks - Array of tick nodes to process
|
|
124
|
+
* @returns New state buffer after applying all ticks
|
|
125
|
+
*/
|
|
126
|
+
transition(state: Uint8Array, ticks: TickPrimitive[]): Uint8Array;
|
|
127
|
+
close(): void;
|
|
128
|
+
getStateSize(): number;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAsC,KAAK,WAAW,EAAsB,MAAM,eAAe,CAAC;AACzG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAWjB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,WAAW,CAAC;IACxE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB;IAClB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;CAC5B;AAED,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,CAAC;IACtB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,sEAAsE;IACtE,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,uBAAuB;IACvB,WAAW,EAAE,cAAc,CAAC;IAC5B,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,mFAAmF;IACnF,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAYD,qBAAa,QAAS,YAAW,uBAAuB;IACtD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAkB;IAGjC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAuB;IAGvC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,cAAc,CAAa;IAGnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAAqC;gBAE/C,OAAO,EAAE,eAAe;IAIpC;;;;OAIG;IACH,OAAO,CAAC,SAAS,CA2Bf;IAEF;;;OAGG;IACH,cAAc,IAAI,IAAI;IAItB;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIZ,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAyF/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA6C3B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IA+C7B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAuCpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,UAAU;IAuDjE,KAAK,IAAI,IAAI;IAKb,YAAY,IAAI,MAAM;CAOvB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Worker files imported with { type: 'bytes' } are inlined as Uint8Array by esbuild
|
|
2
|
+
// esbuild handles the import attribute and converts these to Uint8Array at build time
|
|
3
|
+
// These declarations tell TypeScript what type to expect when using import attributes
|
|
4
|
+
|
|
5
|
+
// Pattern-based declarations for worker files
|
|
6
|
+
// Note: TypeScript may resolve to actual .ts files first, but esbuild will replace
|
|
7
|
+
// these imports with Uint8Array at build time, so the runtime type is correct
|
|
8
|
+
// esbuild-plugin-inline-worker transforms these into constructable Worker classes
|
|
9
|
+
declare module '*.worker' {
|
|
10
|
+
const WorkerClass: new () => Worker;
|
|
11
|
+
export default WorkerClass;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare module '*.wasm' {
|
|
15
|
+
const wasm: Uint8Array;
|
|
16
|
+
export default wasm;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare module '*.rs' {
|
|
20
|
+
const wasm: Uint8Array;
|
|
21
|
+
export default wasm;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare module '*.as.ts' {
|
|
25
|
+
const wasm: Uint8Array;
|
|
26
|
+
export default wasm;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare module 'wasm:*' {
|
|
30
|
+
const wasm: Uint8Array;
|
|
31
|
+
export default wasm;
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema-driven input codec for variable-length game inputs.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a TLV (type-length-value) encoding for game inputs that
|
|
5
|
+
* supports both real-time controls (buttons, axes) and discrete commands (RPC-style).
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Variable-length encoding: Only set fields are transmitted
|
|
9
|
+
* - Semantic hints: Controls declare meaning (momentary, toggle, axis) for prediction
|
|
10
|
+
* - Command support: RTS-style commands with typed arguments
|
|
11
|
+
* - Cross-language: Same wire format for TypeScript and Go
|
|
12
|
+
*
|
|
13
|
+
* See ADR-017: Input Encoding for specification details.
|
|
14
|
+
*
|
|
15
|
+
* @module input-codec
|
|
16
|
+
*/
|
|
17
|
+
import { type InputSchema, type ControlDef, type CommandDef, type CommandArgDef, type FlagType, type InputFieldType } from './schema';
|
|
18
|
+
export type { InputSchema, ControlDef, CommandDef, CommandArgDef, FlagType, };
|
|
19
|
+
export type { InputFieldType as FieldType };
|
|
20
|
+
export type { PrimitiveType, CompoundType, ArrayType } from './schema';
|
|
21
|
+
interface InternalCompiledField {
|
|
22
|
+
name: string;
|
|
23
|
+
type: string;
|
|
24
|
+
size: number;
|
|
25
|
+
offset: number;
|
|
26
|
+
options?: readonly string[] | undefined;
|
|
27
|
+
arrayLength?: number | undefined;
|
|
28
|
+
arrayElementType?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
interface InternalCompiledControl {
|
|
31
|
+
name: string;
|
|
32
|
+
index: number;
|
|
33
|
+
field: InternalCompiledField;
|
|
34
|
+
hint?: string | undefined;
|
|
35
|
+
retain: 'tick' | 'always';
|
|
36
|
+
}
|
|
37
|
+
interface InternalCompiledCommand {
|
|
38
|
+
name: string;
|
|
39
|
+
index: number;
|
|
40
|
+
args: InternalCompiledField[];
|
|
41
|
+
totalSize: number;
|
|
42
|
+
}
|
|
43
|
+
interface InternalCompiledInputSchema {
|
|
44
|
+
controls: InternalCompiledControl[];
|
|
45
|
+
commands: InternalCompiledCommand[];
|
|
46
|
+
controlByName: Map<string, InternalCompiledControl>;
|
|
47
|
+
commandByName: Map<string, InternalCompiledCommand>;
|
|
48
|
+
}
|
|
49
|
+
/** Decoded command with name and arguments */
|
|
50
|
+
export interface DecodedCommand {
|
|
51
|
+
name: string;
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
/** Input instance that can be encoded/decoded */
|
|
55
|
+
export declare class InputInstance {
|
|
56
|
+
private schema;
|
|
57
|
+
private fields;
|
|
58
|
+
private commandList;
|
|
59
|
+
constructor(schema: InternalCompiledInputSchema);
|
|
60
|
+
/** Set a control value by name */
|
|
61
|
+
setControl(name: string, value: unknown): void;
|
|
62
|
+
/** Set a flags control from an object of boolean options */
|
|
63
|
+
setFlags(name: string, flags: Record<string, boolean>): void;
|
|
64
|
+
/** Set a vec2 control (f32 components) */
|
|
65
|
+
setVec2(name: string, value: [number, number]): void;
|
|
66
|
+
/** Set a vec3 control (f32 components) */
|
|
67
|
+
setVec3(name: string, value: [number, number, number]): void;
|
|
68
|
+
/** Set a quat control (f32 components: x, y, z, w) */
|
|
69
|
+
setQuat(name: string, value: [number, number, number, number]): void;
|
|
70
|
+
/** Get a control value by name */
|
|
71
|
+
getControl(name: string): unknown;
|
|
72
|
+
/** Get a flags control as an object of boolean options */
|
|
73
|
+
getFlags(name: string): Record<string, boolean>;
|
|
74
|
+
/** Get a vec2 control (f32 components) */
|
|
75
|
+
getVec2(name: string): [number, number];
|
|
76
|
+
/** Get a vec3 control (f32 components) */
|
|
77
|
+
getVec3(name: string): [number, number, number];
|
|
78
|
+
/** Get a quat control (f32 components: x, y, z, w) */
|
|
79
|
+
getQuat(name: string): [number, number, number, number];
|
|
80
|
+
/** Check if a control is set */
|
|
81
|
+
hasControl(name: string): boolean;
|
|
82
|
+
/** Add a command */
|
|
83
|
+
addCommand(name: string, args: Record<string, unknown>): void;
|
|
84
|
+
/** Get all commands */
|
|
85
|
+
getCommands(): DecodedCommand[];
|
|
86
|
+
/** Encode to TLV wire format */
|
|
87
|
+
encode(): Uint8Array;
|
|
88
|
+
/** Decode from TLV wire format */
|
|
89
|
+
static decode(schema: InternalCompiledInputSchema, bytes: Uint8Array): InputInstance;
|
|
90
|
+
/** Clear all set controls and commands */
|
|
91
|
+
clear(): void;
|
|
92
|
+
private encodeValue;
|
|
93
|
+
private decodeValue;
|
|
94
|
+
private getDefaultValue;
|
|
95
|
+
}
|
|
96
|
+
/** Compiled input codec with create/decode methods */
|
|
97
|
+
export interface InputCodec {
|
|
98
|
+
/** Create a new empty input instance */
|
|
99
|
+
create(): InputInstance;
|
|
100
|
+
/** Decode bytes to an input instance */
|
|
101
|
+
decode(bytes: Uint8Array): InputInstance;
|
|
102
|
+
/** Get the compiled schema (internal format) */
|
|
103
|
+
readonly schema: InternalCompiledInputSchema;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Compile an input schema into a codec.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const codec = compileInputCodec({
|
|
111
|
+
* controls: [
|
|
112
|
+
* { name: "buttons", type: "flags8", options: ["w", "a", "s", "d", "jump", "fire"], hint: "momentary" },
|
|
113
|
+
* { name: "aim", type: "vec2", hint: "axis" },
|
|
114
|
+
* ],
|
|
115
|
+
* commands: [
|
|
116
|
+
* { name: "move", args: [{ name: "unitId", type: "uint16" }, { name: "pos", type: "vec2" }] },
|
|
117
|
+
* ],
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* const input = codec.create();
|
|
121
|
+
* input.setFlags("buttons", { w: true, jump: true });
|
|
122
|
+
* input.setVec2("aim", [0.5, -0.25]); // native f32 floats
|
|
123
|
+
* input.addCommand("move", { unitId: 12, pos: [100.0, 200.0] });
|
|
124
|
+
*
|
|
125
|
+
* const bytes = input.encode();
|
|
126
|
+
* const decoded = codec.decode(bytes);
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* Also works with JSON-imported schemas:
|
|
130
|
+
* ```typescript
|
|
131
|
+
* import config from './game.config.json';
|
|
132
|
+
* const codec = compileInputCodec(config.input);
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export declare function compileInputCodec(schema: InputSchema): InputCodec;
|
|
136
|
+
//# sourceMappingURL=input-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-codec.d.ts","sourceRoot":"","sources":["../../src/input-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type InputData, type TickMessage } from './messages';
|
|
2
|
+
export type TickNodePayload = Uint8Array;
|
|
3
|
+
export type GetTicksAfterOptions = {
|
|
4
|
+
limit?: number;
|
|
5
|
+
lag?: number;
|
|
6
|
+
sync?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export interface TickLog {
|
|
9
|
+
getSyncHead(): TickNode;
|
|
10
|
+
getPredictedHead(): TickNode;
|
|
11
|
+
addSyncTick(msg: TickMessage): void;
|
|
12
|
+
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): void;
|
|
13
|
+
getParticipantSlots(tick: number): (Participant | undefined)[];
|
|
14
|
+
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): TickPrimitive[];
|
|
15
|
+
getPredictionCount(): number;
|
|
16
|
+
setOnParticipantJoined(fn: (participant: Participant) => void): void;
|
|
17
|
+
}
|
|
18
|
+
export interface AsyncTickLog {
|
|
19
|
+
getSyncHead(): Promise<TickNode>;
|
|
20
|
+
getPredictedHead(): Promise<TickNode>;
|
|
21
|
+
addSyncTick(msg: TickMessage): Promise<void>;
|
|
22
|
+
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
|
|
23
|
+
getParticipantSlots(tick: number): Promise<(Participant | undefined)[]>;
|
|
24
|
+
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
|
|
25
|
+
getPredictionCount(): Promise<number>;
|
|
26
|
+
setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export interface TickPrimitive {
|
|
29
|
+
id: string;
|
|
30
|
+
tick: number;
|
|
31
|
+
payloads: TickNodePayload[];
|
|
32
|
+
sync: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface TickNode extends TickPrimitive {
|
|
35
|
+
parent: TickNode | null;
|
|
36
|
+
sig: Uint8Array;
|
|
37
|
+
pending?: boolean;
|
|
38
|
+
verified?: boolean;
|
|
39
|
+
syncPrev: TickNode | null;
|
|
40
|
+
syncNext: TickNode | null;
|
|
41
|
+
}
|
|
42
|
+
export interface Participant {
|
|
43
|
+
id: string;
|
|
44
|
+
pubKey: Uint8Array;
|
|
45
|
+
slot: number;
|
|
46
|
+
joined: number;
|
|
47
|
+
}
|
|
48
|
+
export interface InputGraphConfig {
|
|
49
|
+
genesisHash: Uint8Array;
|
|
50
|
+
maxTicks: number;
|
|
51
|
+
inputPayloadPredictor?: PayloadPredictor | undefined | null;
|
|
52
|
+
verificationPubKey?: Uint8Array | undefined | null;
|
|
53
|
+
debug?: boolean | undefined;
|
|
54
|
+
logSyncTicks?: boolean | undefined;
|
|
55
|
+
}
|
|
56
|
+
export type PayloadPredictor = (tick: number, participantIndex: number, parent: TickNode) => Uint8Array;
|
|
57
|
+
export declare class InputGraph implements TickLog {
|
|
58
|
+
private debug;
|
|
59
|
+
private genesisHash;
|
|
60
|
+
private genesis;
|
|
61
|
+
private syncNodesById;
|
|
62
|
+
private syncHead;
|
|
63
|
+
private predictedHead;
|
|
64
|
+
private pendingSyncMessages;
|
|
65
|
+
private nodeIdSequence;
|
|
66
|
+
private optimisticInputs;
|
|
67
|
+
private participantBySlot;
|
|
68
|
+
private inputPayloadPredictor;
|
|
69
|
+
private verificationPubKey;
|
|
70
|
+
private maxTicks;
|
|
71
|
+
private logSyncTicks;
|
|
72
|
+
private onParticipantJoined;
|
|
73
|
+
constructor(config: InputGraphConfig);
|
|
74
|
+
setOnParticipantJoined(fn: (participant: Participant) => void): void;
|
|
75
|
+
getSyncHead(): TickNode;
|
|
76
|
+
getPredictedHead(): TickNode;
|
|
77
|
+
addSyncTick(msg: TickMessage): void;
|
|
78
|
+
private recoverInputPubKey;
|
|
79
|
+
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): void;
|
|
80
|
+
getParticipantSlots(tick: number): Participant[];
|
|
81
|
+
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): TickPrimitive[];
|
|
82
|
+
getPredictionCount(): number;
|
|
83
|
+
getSyncTicksAfter(nodeId: string | null): TickPrimitive[];
|
|
84
|
+
private getSyncChainForkPointFromNodeId;
|
|
85
|
+
private getPendingSyncMessages;
|
|
86
|
+
private verifyTickSignature;
|
|
87
|
+
private getOrderedPayloadsAtTick;
|
|
88
|
+
private updateHeads;
|
|
89
|
+
private ensureParticipantJoined;
|
|
90
|
+
private logSyncNodeForTests;
|
|
91
|
+
private dequeuePrediction;
|
|
92
|
+
private generateNodeId;
|
|
93
|
+
}
|
|
94
|
+
export declare class AsyncInputGraph implements AsyncTickLog {
|
|
95
|
+
private log;
|
|
96
|
+
constructor(log: TickLog);
|
|
97
|
+
getSyncHead(): Promise<TickNode>;
|
|
98
|
+
getPredictedHead(): Promise<TickNode>;
|
|
99
|
+
addSyncTick(msg: TickMessage): Promise<void>;
|
|
100
|
+
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
|
|
101
|
+
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
|
|
102
|
+
getParticipantSlots(tick: number): Promise<(Participant | undefined)[]>;
|
|
103
|
+
getPredictionCount(): Promise<number>;
|
|
104
|
+
setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=input-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-graph.d.ts","sourceRoot":"","sources":["../../src/input-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/lib.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './session';
|
|
2
|
+
export * from './session-config';
|
|
3
|
+
export * from './state';
|
|
4
|
+
export * as bindings from './input-codec';
|
|
5
|
+
export * from './stats';
|
|
6
|
+
export * from './crypto';
|
|
7
|
+
export * from './test-session';
|
|
8
|
+
export * from './helpers';
|
|
9
|
+
export * from './react';
|
|
10
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|