@phalanx-engine/client 0.1.0

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 (94) hide show
  1. package/README.md +1037 -0
  2. package/dist/DesyncDetector.d.ts +80 -0
  3. package/dist/DesyncDetector.d.ts.map +1 -0
  4. package/dist/DesyncDetector.js +93 -0
  5. package/dist/DesyncDetector.js.map +1 -0
  6. package/dist/DeterministicRandom.d.ts +78 -0
  7. package/dist/DeterministicRandom.d.ts.map +1 -0
  8. package/dist/DeterministicRandom.js +122 -0
  9. package/dist/DeterministicRandom.js.map +1 -0
  10. package/dist/EventEmitter.d.ts +65 -0
  11. package/dist/EventEmitter.d.ts.map +1 -0
  12. package/dist/EventEmitter.js +102 -0
  13. package/dist/EventEmitter.js.map +1 -0
  14. package/dist/FixedMath.d.ts +22 -0
  15. package/dist/FixedMath.d.ts.map +1 -0
  16. package/dist/FixedMath.js +26 -0
  17. package/dist/FixedMath.js.map +1 -0
  18. package/dist/PhalanxClient.d.ts +335 -0
  19. package/dist/PhalanxClient.d.ts.map +1 -0
  20. package/dist/PhalanxClient.js +844 -0
  21. package/dist/PhalanxClient.js.map +1 -0
  22. package/dist/RenderLoop.d.ts +95 -0
  23. package/dist/RenderLoop.d.ts.map +1 -0
  24. package/dist/RenderLoop.js +192 -0
  25. package/dist/RenderLoop.js.map +1 -0
  26. package/dist/SocketManager.d.ts +228 -0
  27. package/dist/SocketManager.d.ts.map +1 -0
  28. package/dist/SocketManager.js +584 -0
  29. package/dist/SocketManager.js.map +1 -0
  30. package/dist/StateHasher.d.ts +76 -0
  31. package/dist/StateHasher.d.ts.map +1 -0
  32. package/dist/StateHasher.js +129 -0
  33. package/dist/StateHasher.js.map +1 -0
  34. package/dist/auth/AuthManager.d.ts +188 -0
  35. package/dist/auth/AuthManager.d.ts.map +1 -0
  36. package/dist/auth/AuthManager.js +462 -0
  37. package/dist/auth/AuthManager.js.map +1 -0
  38. package/dist/auth/adapters/GoogleOAuthAdapter.d.ts +164 -0
  39. package/dist/auth/adapters/GoogleOAuthAdapter.d.ts.map +1 -0
  40. package/dist/auth/adapters/GoogleOAuthAdapter.js +521 -0
  41. package/dist/auth/adapters/GoogleOAuthAdapter.js.map +1 -0
  42. package/dist/auth/index.d.ts +45 -0
  43. package/dist/auth/index.d.ts.map +1 -0
  44. package/dist/auth/index.js +54 -0
  45. package/dist/auth/index.js.map +1 -0
  46. package/dist/auth/storage.d.ts +56 -0
  47. package/dist/auth/storage.d.ts.map +1 -0
  48. package/dist/auth/storage.js +78 -0
  49. package/dist/auth/storage.js.map +1 -0
  50. package/dist/auth/types.d.ts +212 -0
  51. package/dist/auth/types.d.ts.map +1 -0
  52. package/dist/auth/types.js +7 -0
  53. package/dist/auth/types.js.map +1 -0
  54. package/dist/index.d.ts +70 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +83 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/recovery/BrowserLifecycle.d.ts +33 -0
  59. package/dist/recovery/BrowserLifecycle.d.ts.map +1 -0
  60. package/dist/recovery/BrowserLifecycle.js +62 -0
  61. package/dist/recovery/BrowserLifecycle.js.map +1 -0
  62. package/dist/recovery/GuestPlayerIdStore.d.ts +17 -0
  63. package/dist/recovery/GuestPlayerIdStore.d.ts.map +1 -0
  64. package/dist/recovery/GuestPlayerIdStore.js +31 -0
  65. package/dist/recovery/GuestPlayerIdStore.js.map +1 -0
  66. package/dist/recovery/KeyValueStorage.d.ts +32 -0
  67. package/dist/recovery/KeyValueStorage.d.ts.map +1 -0
  68. package/dist/recovery/KeyValueStorage.js +58 -0
  69. package/dist/recovery/KeyValueStorage.js.map +1 -0
  70. package/dist/recovery/MobileTransport.d.ts +12 -0
  71. package/dist/recovery/MobileTransport.d.ts.map +1 -0
  72. package/dist/recovery/MobileTransport.js +24 -0
  73. package/dist/recovery/MobileTransport.js.map +1 -0
  74. package/dist/recovery/NetworkQuality.d.ts +22 -0
  75. package/dist/recovery/NetworkQuality.d.ts.map +1 -0
  76. package/dist/recovery/NetworkQuality.js +35 -0
  77. package/dist/recovery/NetworkQuality.js.map +1 -0
  78. package/dist/recovery/RoomPersistence.d.ts +55 -0
  79. package/dist/recovery/RoomPersistence.d.ts.map +1 -0
  80. package/dist/recovery/RoomPersistence.js +68 -0
  81. package/dist/recovery/RoomPersistence.js.map +1 -0
  82. package/dist/recovery/RoomRecoveryController.d.ts +146 -0
  83. package/dist/recovery/RoomRecoveryController.d.ts.map +1 -0
  84. package/dist/recovery/RoomRecoveryController.js +348 -0
  85. package/dist/recovery/RoomRecoveryController.js.map +1 -0
  86. package/dist/recovery/index.d.ts +13 -0
  87. package/dist/recovery/index.d.ts.map +1 -0
  88. package/dist/recovery/index.js +8 -0
  89. package/dist/recovery/index.js.map +1 -0
  90. package/dist/types.d.ts +501 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +6 -0
  93. package/dist/types.js.map +1 -0
  94. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhalanxClient.js","sourceRoot":"","sources":["../src/PhalanxClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * RenderLoop - Manages frame-based rendering with tick interpolation
3
+ *
4
+ * Provides:
5
+ * - requestAnimationFrame-based render loop
6
+ * - Interpolation alpha calculation for smooth rendering between ticks
7
+ * - Tick and frame handler registration
8
+ * - Automatic command flushing
9
+ * - Cross-environment compatibility (browser and Node.js)
10
+ */
11
+ import type { PlayerCommand, TickHandler, FrameHandler, Unsubscribe } from './types.js';
12
+ /**
13
+ * Configuration for RenderLoop
14
+ */
15
+ export interface RenderLoopConfig {
16
+ /** Ticks per second (default: 20) */
17
+ tickRate: number;
18
+ /** Enable debug logging (default: false) */
19
+ debug: boolean;
20
+ }
21
+ /**
22
+ * Callback to flush pending commands
23
+ */
24
+ export type CommandFlushCallback = () => void;
25
+ /**
26
+ * RenderLoop - Handles frame rendering and tick interpolation
27
+ */
28
+ export declare class RenderLoop {
29
+ private config;
30
+ private rafId;
31
+ private lastTickTime;
32
+ private lastFrameTime;
33
+ private tickDurationMs;
34
+ private tickHandlers;
35
+ private frameHandlers;
36
+ private commandFlushCallback;
37
+ constructor(config: RenderLoopConfig);
38
+ /**
39
+ * Set the callback for flushing commands each frame
40
+ */
41
+ setCommandFlushCallback(callback: CommandFlushCallback | null): void;
42
+ /**
43
+ * Register a callback for simulation ticks
44
+ * Called when processTick is invoked with commands from all players
45
+ *
46
+ * @param handler Callback receiving tick number and commands grouped by player
47
+ * @returns Unsubscribe function
48
+ */
49
+ onTick(handler: TickHandler): Unsubscribe;
50
+ /**
51
+ * Register a callback for render frames
52
+ * Called every animation frame (~60fps) with interpolation alpha
53
+ * Automatically starts the render loop when first handler is added
54
+ *
55
+ * @param handler Callback receiving alpha (0-1) and delta time in seconds
56
+ * @returns Unsubscribe function
57
+ */
58
+ onFrame(handler: FrameHandler): Unsubscribe;
59
+ /**
60
+ * Process an incoming tick and notify all tick handlers
61
+ * @param tick Tick number
62
+ * @param commands Commands for this tick
63
+ */
64
+ processTick(tick: number, commands: PlayerCommand[]): void;
65
+ /**
66
+ * Start the render loop
67
+ */
68
+ start(): void;
69
+ /**
70
+ * Stop the render loop
71
+ */
72
+ stop(): void;
73
+ /**
74
+ * Check if render loop is running
75
+ */
76
+ isRunning(): boolean;
77
+ /**
78
+ * Calculate interpolation alpha for smooth rendering
79
+ * @returns Value between 0 and 1 representing progress between ticks
80
+ */
81
+ calculateInterpolationAlpha(): number;
82
+ /**
83
+ * Update the last tick time (called when tick is received)
84
+ */
85
+ updateTickTime(): void;
86
+ /**
87
+ * Get tick duration in milliseconds
88
+ */
89
+ getTickDurationMs(): number;
90
+ /**
91
+ * Clear all handlers and stop the loop
92
+ */
93
+ dispose(): void;
94
+ }
95
+ //# sourceMappingURL=RenderLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderLoop.d.ts","sourceRoot":"","sources":["../src/RenderLoop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAcpB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAE9C;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IAGjC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,aAAa,CAAgC;IAGrD,OAAO,CAAC,oBAAoB,CAAqC;gBAErD,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI;IAIpE;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOzC;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAiB3C;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IA6B1D;;OAEG;IACH,KAAK,IAAI,IAAI;IAoCb;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,2BAA2B,IAAI,MAAM;IAOrC;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * RenderLoop - Manages frame-based rendering with tick interpolation
3
+ *
4
+ * Provides:
5
+ * - requestAnimationFrame-based render loop
6
+ * - Interpolation alpha calculation for smooth rendering between ticks
7
+ * - Tick and frame handler registration
8
+ * - Automatic command flushing
9
+ * - Cross-environment compatibility (browser and Node.js)
10
+ */
11
+ // Cross-environment compatibility for animation frame
12
+ const raf = typeof requestAnimationFrame !== 'undefined'
13
+ ? requestAnimationFrame
14
+ : (cb) => setTimeout(() => cb(Date.now()), 16);
15
+ const caf = typeof cancelAnimationFrame !== 'undefined'
16
+ ? cancelAnimationFrame
17
+ : (id) => clearTimeout(id);
18
+ /**
19
+ * RenderLoop - Handles frame rendering and tick interpolation
20
+ */
21
+ export class RenderLoop {
22
+ config;
23
+ // Render loop state
24
+ rafId = null;
25
+ lastTickTime = 0;
26
+ lastFrameTime = 0;
27
+ tickDurationMs;
28
+ // Handlers
29
+ tickHandlers = new Set();
30
+ frameHandlers = new Set();
31
+ // Command flushing callback
32
+ commandFlushCallback = null;
33
+ constructor(config) {
34
+ this.config = config;
35
+ this.tickDurationMs = 1000 / config.tickRate;
36
+ }
37
+ /**
38
+ * Set the callback for flushing commands each frame
39
+ */
40
+ setCommandFlushCallback(callback) {
41
+ this.commandFlushCallback = callback;
42
+ }
43
+ /**
44
+ * Register a callback for simulation ticks
45
+ * Called when processTick is invoked with commands from all players
46
+ *
47
+ * @param handler Callback receiving tick number and commands grouped by player
48
+ * @returns Unsubscribe function
49
+ */
50
+ onTick(handler) {
51
+ this.tickHandlers.add(handler);
52
+ return () => {
53
+ this.tickHandlers.delete(handler);
54
+ };
55
+ }
56
+ /**
57
+ * Register a callback for render frames
58
+ * Called every animation frame (~60fps) with interpolation alpha
59
+ * Automatically starts the render loop when first handler is added
60
+ *
61
+ * @param handler Callback receiving alpha (0-1) and delta time in seconds
62
+ * @returns Unsubscribe function
63
+ */
64
+ onFrame(handler) {
65
+ this.frameHandlers.add(handler);
66
+ // Start render loop when first handler is added
67
+ if (this.frameHandlers.size === 1) {
68
+ this.start();
69
+ }
70
+ return () => {
71
+ this.frameHandlers.delete(handler);
72
+ // Stop render loop when no handlers remain
73
+ if (this.frameHandlers.size === 0) {
74
+ this.stop();
75
+ }
76
+ };
77
+ }
78
+ /**
79
+ * Process an incoming tick and notify all tick handlers
80
+ * @param tick Tick number
81
+ * @param commands Commands for this tick
82
+ */
83
+ processTick(tick, commands) {
84
+ this.lastTickTime = performance.now();
85
+ // Group commands by player
86
+ const commandsBatch = {
87
+ tick,
88
+ commands: {},
89
+ };
90
+ for (const cmd of commands) {
91
+ const playerId = cmd.playerId ?? 'unknown';
92
+ if (!commandsBatch.commands[playerId]) {
93
+ commandsBatch.commands[playerId] = [];
94
+ }
95
+ commandsBatch.commands[playerId].push(cmd);
96
+ }
97
+ // Call all tick handlers
98
+ for (const handler of this.tickHandlers) {
99
+ try {
100
+ handler(tick, commandsBatch);
101
+ }
102
+ catch (error) {
103
+ if (this.config.debug) {
104
+ console.error('[RenderLoop] Error in tick handler:', error);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Start the render loop
111
+ */
112
+ start() {
113
+ if (this.rafId !== null)
114
+ return;
115
+ this.lastFrameTime = performance.now();
116
+ const loop = (now) => {
117
+ const dt = (now - this.lastFrameTime) / 1000;
118
+ this.lastFrameTime = now;
119
+ // Flush pending commands at the start of each frame
120
+ this.commandFlushCallback?.();
121
+ // Calculate interpolation alpha
122
+ const alpha = this.calculateInterpolationAlpha();
123
+ // Call all frame handlers
124
+ for (const handler of this.frameHandlers) {
125
+ try {
126
+ handler(alpha, dt);
127
+ }
128
+ catch (error) {
129
+ if (this.config.debug) {
130
+ console.error('[RenderLoop] Error in frame handler:', error);
131
+ }
132
+ }
133
+ }
134
+ this.rafId = raf(loop);
135
+ };
136
+ this.rafId = raf(loop);
137
+ if (this.config.debug) {
138
+ console.log('[RenderLoop] Started');
139
+ }
140
+ }
141
+ /**
142
+ * Stop the render loop
143
+ */
144
+ stop() {
145
+ if (this.rafId !== null) {
146
+ caf(this.rafId);
147
+ this.rafId = null;
148
+ if (this.config.debug) {
149
+ // eslint-disable-next-line no-console
150
+ console.log('[RenderLoop] Stopped');
151
+ }
152
+ }
153
+ }
154
+ /**
155
+ * Check if render loop is running
156
+ */
157
+ isRunning() {
158
+ return this.rafId !== null;
159
+ }
160
+ /**
161
+ * Calculate interpolation alpha for smooth rendering
162
+ * @returns Value between 0 and 1 representing progress between ticks
163
+ */
164
+ calculateInterpolationAlpha() {
165
+ if (this.lastTickTime === 0)
166
+ return 0;
167
+ const elapsed = performance.now() - this.lastTickTime;
168
+ return Math.min(1, Math.max(0, elapsed / this.tickDurationMs));
169
+ }
170
+ /**
171
+ * Update the last tick time (called when tick is received)
172
+ */
173
+ updateTickTime() {
174
+ this.lastTickTime = performance.now();
175
+ }
176
+ /**
177
+ * Get tick duration in milliseconds
178
+ */
179
+ getTickDurationMs() {
180
+ return this.tickDurationMs;
181
+ }
182
+ /**
183
+ * Clear all handlers and stop the loop
184
+ */
185
+ dispose() {
186
+ this.stop();
187
+ this.tickHandlers.clear();
188
+ this.frameHandlers.clear();
189
+ this.commandFlushCallback = null;
190
+ }
191
+ }
192
+ //# sourceMappingURL=RenderLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderLoop.js","sourceRoot":"","sources":["../src/RenderLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * SocketManager - Manages socket.io connection and event handling
3
+ *
4
+ * Handles:
5
+ * - Connection/disconnection to server
6
+ * - Socket event routing
7
+ * - Reconnection logic with retries
8
+ * - Connection state tracking
9
+ */
10
+ import type { MatchFoundEvent, CountdownEvent, GameStartEvent, TickSyncEvent, CommandsBatchEvent, QueueStatusEvent, RoomCreatedEvent, RoomErrorEvent, RoomExpiredEvent, RoomCancelledEvent, RoomRecoveredEvent, PlayerDisconnectedEvent, PlayerReconnectedEvent, PlayerReadyEvent, ReconnectStateEvent, ReconnectStatusEvent, SubmitCommandsAck, MatchEndEvent, HashComparisonEvent, GamePausedEvent, GameResumedEvent, PhalanxError, ConnectionState, PlayerCommand, SocketTransport } from './types.js';
11
+ /**
12
+ * Configuration for SocketManager
13
+ */
14
+ export interface SocketManagerConfig {
15
+ /** Server URL */
16
+ serverUrl: string;
17
+ /** Player ID */
18
+ playerId: string;
19
+ /** Username */
20
+ username: string;
21
+ /** Authentication token (e.g., Google ID token) */
22
+ authToken?: string;
23
+ /** Connection timeout in milliseconds */
24
+ connectionTimeoutMs: number;
25
+ /** Timeout for private-room recovery acknowledgement in milliseconds */
26
+ recoverRoomTimeoutMs: number;
27
+ /** Socket.IO transports to use when connecting */
28
+ socketTransports: readonly SocketTransport[];
29
+ /** Whether to auto-reconnect */
30
+ autoReconnect: boolean;
31
+ /** Maximum reconnection attempts */
32
+ maxReconnectAttempts: number;
33
+ /** Delay between reconnection attempts in milliseconds */
34
+ reconnectDelayMs: number;
35
+ /** Enable debug logging */
36
+ debug: boolean;
37
+ }
38
+ /**
39
+ * Callbacks from SocketManager to the client
40
+ */
41
+ export interface SocketManagerCallbacks {
42
+ onConnected: () => void;
43
+ onDisconnected: () => void;
44
+ onReconnecting: (attempt: number) => void;
45
+ onReconnectFailed: () => void;
46
+ onError: (error: PhalanxError) => void;
47
+ onMatchFound: (data: MatchFoundEvent) => void;
48
+ onCountdown: (data: CountdownEvent) => void;
49
+ onGameStart: (data: GameStartEvent) => void;
50
+ onMatchEnd: (data: MatchEndEvent) => void;
51
+ onTickSync: (data: TickSyncEvent) => void;
52
+ onCommandsBatch: (data: CommandsBatchEvent) => void;
53
+ onPlayerDisconnected: (data: PlayerDisconnectedEvent) => void;
54
+ onPlayerReconnected: (data: PlayerReconnectedEvent) => void;
55
+ onPlayerReady: (data: PlayerReadyEvent) => void;
56
+ onReconnectState: (data: ReconnectStateEvent) => void;
57
+ onReconnectStatus: (data: ReconnectStatusEvent) => void;
58
+ onHashComparison: (data: HashComparisonEvent) => void;
59
+ onGamePaused: (data: GamePausedEvent) => void;
60
+ onGameResumed: (data: GameResumedEvent) => void;
61
+ onRoomError: (data: RoomErrorEvent) => void;
62
+ onRoomExpired: (data: RoomExpiredEvent) => void;
63
+ onRoomCancelled: (data: RoomCancelledEvent) => void;
64
+ onRoomRecovered: (data: RoomRecoveredEvent) => void;
65
+ isPlaying: () => boolean;
66
+ getCurrentMatchId: () => string | null;
67
+ }
68
+ /**
69
+ * SocketManager - Handles socket.io connection and event handling
70
+ */
71
+ export declare class SocketManager {
72
+ private socket;
73
+ private config;
74
+ private callbacks;
75
+ private connectionState;
76
+ private reconnectAttempts;
77
+ constructor(config: SocketManagerConfig, callbacks: SocketManagerCallbacks);
78
+ /**
79
+ * Connect to the server
80
+ */
81
+ connect(): Promise<void>;
82
+ /**
83
+ * Disconnect from the server
84
+ */
85
+ disconnect(): void;
86
+ /**
87
+ * Check if connected
88
+ */
89
+ isConnected(): boolean;
90
+ /**
91
+ * Get connection state
92
+ */
93
+ getConnectionState(): ConnectionState;
94
+ /**
95
+ * Update player credentials (after auth)
96
+ */
97
+ updateCredentials(playerId: string, username: string, authToken?: string): void;
98
+ /**
99
+ * Join the matchmaking queue
100
+ */
101
+ joinQueue(): Promise<QueueStatusEvent>;
102
+ /**
103
+ * Leave the matchmaking queue
104
+ */
105
+ leaveQueue(): void;
106
+ /**
107
+ * Create a private room. Resolves with the room code.
108
+ */
109
+ createRoom(gameType?: string): Promise<RoomCreatedEvent>;
110
+ /**
111
+ * Join an existing private room by code.
112
+ * After joining, the server will emit match-found to both players.
113
+ */
114
+ joinRoom(code: string): void;
115
+ /**
116
+ * Cancel a previously created private room.
117
+ */
118
+ cancelRoom(): void;
119
+ /**
120
+ * Reclaim a private room after the underlying socket was briefly torn
121
+ * down and reconnected.
122
+ *
123
+ * This is the client half of the host-disconnect grace-period contract
124
+ * introduced server-side in PR #18 and extended with countdown/game-start
125
+ * snapshotting in PR #19: the server holds the room (and, if the guest
126
+ * already joined, the running match) open for `HOST_DISCONNECT_GRACE_MS`
127
+ * so the host's new socket can reclaim it via `room-recover`.
128
+ *
129
+ * Typical trigger: a mobile browser kills the WebSocket when the user
130
+ * switches to a messenger to share the invite link, then re-opens the
131
+ * tab. The caller (Game / UI layer) should listen for `visibilitychange`
132
+ * and, when the tab becomes visible again and the socket is dead, call
133
+ * `connect()` followed by `recoverRoom(code)`.
134
+ *
135
+ * Resolves with the `RoomRecoveredEvent` on success. Rejects with the
136
+ * server's error message on `room-error`, or with `'Recover timeout'`
137
+ * if the server never answers within `timeoutMs` (default 10 s). The
138
+ * timeout is important because a stubbornly flaky connection can cause
139
+ * `socket.emit` to succeed locally but never round-trip — we must not
140
+ * leave the host hanging on a dead promise while their countdown UI
141
+ * stays frozen.
142
+ */
143
+ recoverRoom(code: string, timeoutMs?: number): Promise<RoomRecoveredEvent>;
144
+ /**
145
+ * Register a handler for room-recovered events. Exposed alongside the
146
+ * one-shot `recoverRoom` promise so callers that want to observe
147
+ * recoveries initiated elsewhere (e.g. for analytics) can do so.
148
+ */
149
+ onRoomRecovered(handler: (event: RoomRecoveredEvent) => void): void;
150
+ /**
151
+ * Register a handler for room-expired events.
152
+ */
153
+ onRoomExpired(handler: (event: RoomExpiredEvent) => void): void;
154
+ /**
155
+ * Register a handler for room-cancelled events.
156
+ */
157
+ onRoomCancelled(handler: (event: RoomCancelledEvent) => void): void;
158
+ /**
159
+ * Wait for match found event
160
+ */
161
+ waitForMatch(): Promise<MatchFoundEvent>;
162
+ /**
163
+ * Wait for countdown to complete
164
+ */
165
+ waitForCountdown(onCountdown?: (event: CountdownEvent) => void): Promise<void>;
166
+ /**
167
+ * Wait for game start event
168
+ */
169
+ waitForGameStart(): Promise<GameStartEvent>;
170
+ /**
171
+ * Submit commands with acknowledgment
172
+ */
173
+ submitCommands(tick: number, commands: PlayerCommand[]): Promise<SubmitCommandsAck>;
174
+ /**
175
+ * Submit commands without acknowledgment (fire and forget)
176
+ */
177
+ submitCommandsAsync(tick: number, commands: PlayerCommand[]): void;
178
+ /**
179
+ * Send state hash for desync detection
180
+ * @param tick - The tick this hash is for
181
+ * @param hash - The state hash string
182
+ */
183
+ sendStateHash(tick: number, hash: string): void;
184
+ /**
185
+ * Send a pause-game request to the server (fire-and-forget)
186
+ */
187
+ sendPauseGame(): void;
188
+ /**
189
+ * Send a resume-game request to the server (fire-and-forget)
190
+ */
191
+ sendResumeGame(): void;
192
+ /**
193
+ * Notify the server that this client has finished loading and is ready to receive ticks.
194
+ */
195
+ sendReady(): void;
196
+ /**
197
+ * Reconnect to a specific match
198
+ */
199
+ reconnectToMatch(matchId: string): Promise<ReconnectStateEvent>;
200
+ /**
201
+ * Attempt automatic reconnection with retries
202
+ */
203
+ attemptReconnection(): Promise<void>;
204
+ private setupEventHandlers;
205
+ private ensureConnected;
206
+ /**
207
+ * Replay `payload` through every listener currently registered for
208
+ * `event` on the local socket.
209
+ *
210
+ * socket.io-client's `socket.emit` sends to the server, so there is
211
+ * no public API to dispatch a server→client event against the
212
+ * client's own handlers. For the private-room recover path we need
213
+ * exactly that: the server already decided that, e.g., countdown
214
+ * should show "3", and we want every listener the application has
215
+ * wired up — including one-shot promises inside `waitForCountdown`
216
+ * / `waitForGameStart` — to observe the value as if the server had
217
+ * broadcast it on the wire.
218
+ *
219
+ * Iterating a snapshot of `socket.listeners(event)` (rather than
220
+ * the live list) is deliberate: a listener may call `socket.off`
221
+ * on itself during handling (e.g. `waitForCountdown`'s handler
222
+ * unsubscribes on `seconds === 0`), which would mutate the array
223
+ * under us and skip siblings.
224
+ */
225
+ private emitSyntheticLocal;
226
+ private delay;
227
+ }
228
+ //# sourceMappingURL=SocketManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketManager.d.ts","sourceRoot":"","sources":["../src/SocketManager.ts"],"names":[],"mappings":"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"}