@edge-base/web 0.1.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 (51) hide show
  1. package/README.md +352 -0
  2. package/dist/analytics.d.ts +60 -0
  3. package/dist/analytics.d.ts.map +1 -0
  4. package/dist/analytics.js +146 -0
  5. package/dist/analytics.js.map +1 -0
  6. package/dist/auth-refresh.d.ts +5 -0
  7. package/dist/auth-refresh.d.ts.map +1 -0
  8. package/dist/auth-refresh.js +26 -0
  9. package/dist/auth-refresh.js.map +1 -0
  10. package/dist/auth.d.ts +314 -0
  11. package/dist/auth.d.ts.map +1 -0
  12. package/dist/auth.js +518 -0
  13. package/dist/auth.js.map +1 -0
  14. package/dist/browser-storage.d.ts +7 -0
  15. package/dist/browser-storage.d.ts.map +1 -0
  16. package/dist/browser-storage.js +43 -0
  17. package/dist/browser-storage.js.map +1 -0
  18. package/dist/client.d.ts +145 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +310 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/database-live.d.ts +65 -0
  23. package/dist/database-live.d.ts.map +1 -0
  24. package/dist/database-live.js +486 -0
  25. package/dist/database-live.js.map +1 -0
  26. package/dist/index.d.ts +21 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +28 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/match-filter.d.ts +30 -0
  31. package/dist/match-filter.d.ts.map +1 -0
  32. package/dist/match-filter.js +86 -0
  33. package/dist/match-filter.js.map +1 -0
  34. package/dist/room-realtime-media.d.ts +96 -0
  35. package/dist/room-realtime-media.d.ts.map +1 -0
  36. package/dist/room-realtime-media.js +418 -0
  37. package/dist/room-realtime-media.js.map +1 -0
  38. package/dist/room.d.ts +450 -0
  39. package/dist/room.d.ts.map +1 -0
  40. package/dist/room.js +1506 -0
  41. package/dist/room.js.map +1 -0
  42. package/dist/token-manager.d.ts +73 -0
  43. package/dist/token-manager.d.ts.map +1 -0
  44. package/dist/token-manager.js +378 -0
  45. package/dist/token-manager.js.map +1 -0
  46. package/dist/turnstile.d.ts +56 -0
  47. package/dist/turnstile.d.ts.map +1 -0
  48. package/dist/turnstile.js +191 -0
  49. package/dist/turnstile.js.map +1 -0
  50. package/llms.txt +549 -0
  51. package/package.json +50 -0
package/dist/room.d.ts ADDED
@@ -0,0 +1,450 @@
1
+ /**
2
+ * RoomClient v2 — Client-side room connection for real-time multiplayer state.
3
+ *
4
+ *: Complete redesign from v1.
5
+ * - 3 state areas: sharedState (all clients), playerState (per-player), serverState (server-only, not sent)
6
+ * - Client can only read + subscribe + send(). All writes are server-only.
7
+ * - send() returns a Promise resolved by requestId matching
8
+ * - Subscription returns { unsubscribe() } object
9
+ * - namespace + roomId identification (replaces single roomId)
10
+ */
11
+ import type { TokenManager } from './token-manager.js';
12
+ import { RoomRealtimeMediaTransport, type RoomRealtimeMediaTransportOptions } from './room-realtime-media.js';
13
+ export interface RoomOptions {
14
+ /** Auto-reconnect on disconnect (default: true) */
15
+ autoReconnect?: boolean;
16
+ /** Max reconnect attempts (default: 10) */
17
+ maxReconnectAttempts?: number;
18
+ /** Base delay for reconnect backoff in ms (default: 1000) */
19
+ reconnectBaseDelay?: number;
20
+ /** Timeout for send() requests in ms (default: 10000) */
21
+ sendTimeout?: number;
22
+ }
23
+ export interface Subscription {
24
+ unsubscribe(): void;
25
+ }
26
+ export type SharedStateHandler = (state: Record<string, unknown>, changes: Record<string, unknown>) => void;
27
+ export type PlayerStateHandler = (state: Record<string, unknown>, changes: Record<string, unknown>) => void;
28
+ export type MessageHandler = (data: unknown) => void;
29
+ export type ErrorHandler = (error: {
30
+ code: string;
31
+ message: string;
32
+ }) => void;
33
+ export type KickedHandler = () => void;
34
+ export type RoomConnectionState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'disconnected' | 'auth_lost' | 'kicked';
35
+ export type RoomMemberLeaveReason = 'leave' | 'timeout' | 'kicked';
36
+ export interface RoomSignalMeta {
37
+ memberId?: string | null;
38
+ userId?: string | null;
39
+ connectionId?: string | null;
40
+ sentAt?: number;
41
+ serverSent?: boolean;
42
+ }
43
+ export interface RoomMember {
44
+ memberId: string;
45
+ userId: string;
46
+ connectionId?: string;
47
+ connectionCount?: number;
48
+ role?: string;
49
+ state: Record<string, unknown>;
50
+ }
51
+ export interface RoomReconnectInfo {
52
+ attempt: number;
53
+ }
54
+ export type RoomMediaKind = 'audio' | 'video' | 'screen';
55
+ export interface RoomMediaTrack {
56
+ kind: RoomMediaKind;
57
+ trackId?: string;
58
+ deviceId?: string;
59
+ muted: boolean;
60
+ publishedAt?: number;
61
+ adminDisabled?: boolean;
62
+ providerSessionId?: string;
63
+ }
64
+ export interface RoomMemberMediaKindState {
65
+ published: boolean;
66
+ muted: boolean;
67
+ trackId?: string;
68
+ deviceId?: string;
69
+ publishedAt?: number;
70
+ adminDisabled?: boolean;
71
+ providerSessionId?: string;
72
+ }
73
+ export interface RoomMemberMediaState {
74
+ audio?: RoomMemberMediaKindState;
75
+ video?: RoomMemberMediaKindState;
76
+ screen?: RoomMemberMediaKindState;
77
+ }
78
+ export interface RoomMediaMember {
79
+ member: RoomMember;
80
+ state: RoomMemberMediaState;
81
+ tracks: RoomMediaTrack[];
82
+ }
83
+ export interface RoomMediaDeviceChange {
84
+ kind: RoomMediaKind;
85
+ deviceId: string;
86
+ }
87
+ export interface RoomRealtimeSessionDescription {
88
+ sdp: string;
89
+ type: 'offer' | 'answer';
90
+ }
91
+ export interface RoomRealtimeTrackObject {
92
+ location: 'local' | 'remote';
93
+ mid?: string;
94
+ sessionId?: string;
95
+ trackName?: string;
96
+ bidirectionalMediaStream?: boolean;
97
+ kind?: string;
98
+ simulcast?: {
99
+ preferredRid?: string;
100
+ priorityOrdering?: 'none' | 'asciibetical';
101
+ ridNotAvailable?: 'none' | 'asciibetical';
102
+ };
103
+ errorCode?: string;
104
+ errorDescription?: string;
105
+ }
106
+ export interface RoomRealtimeCreateSessionRequest {
107
+ connectionId?: string;
108
+ correlationId?: string;
109
+ thirdparty?: boolean;
110
+ sessionDescription?: RoomRealtimeSessionDescription;
111
+ }
112
+ export interface RoomRealtimeCreateSessionResponse {
113
+ sessionId: string;
114
+ sessionDescription?: RoomRealtimeSessionDescription;
115
+ errorCode?: string;
116
+ errorDescription?: string;
117
+ connectionId?: string;
118
+ reused?: boolean;
119
+ }
120
+ export interface RoomRealtimeIceServer {
121
+ urls: string[] | string;
122
+ username?: string;
123
+ credential?: string;
124
+ }
125
+ export interface RoomRealtimeIceServersRequest {
126
+ ttl?: number;
127
+ }
128
+ export interface RoomRealtimeIceServersResponse {
129
+ iceServers: RoomRealtimeIceServer[];
130
+ }
131
+ export interface RoomRealtimeTracksRequest {
132
+ sessionId: string;
133
+ connectionId?: string;
134
+ sessionDescription?: RoomRealtimeSessionDescription;
135
+ tracks: RoomRealtimeTrackObject[];
136
+ autoDiscover?: boolean;
137
+ publish?: {
138
+ kind?: RoomMediaKind;
139
+ trackId?: string;
140
+ deviceId?: string;
141
+ muted?: boolean;
142
+ };
143
+ }
144
+ export interface RoomRealtimeTracksResponse {
145
+ errorCode?: string;
146
+ errorDescription?: string;
147
+ requiresImmediateRenegotiation?: boolean;
148
+ sessionDescription?: RoomRealtimeSessionDescription;
149
+ tracks?: RoomRealtimeTrackObject[];
150
+ }
151
+ export interface RoomRealtimeRenegotiateRequest {
152
+ sessionId: string;
153
+ connectionId?: string;
154
+ sessionDescription: RoomRealtimeSessionDescription;
155
+ }
156
+ export interface RoomRealtimeCloseTracksRequest {
157
+ sessionId: string;
158
+ connectionId?: string;
159
+ sessionDescription?: RoomRealtimeSessionDescription;
160
+ tracks: Array<{
161
+ mid: string;
162
+ }>;
163
+ force?: boolean;
164
+ unpublish?: {
165
+ kind?: RoomMediaKind;
166
+ };
167
+ }
168
+ export declare class RoomClient {
169
+ private baseUrl;
170
+ private tokenManager;
171
+ private options;
172
+ /** Room namespace (e.g. 'game', 'chat') */
173
+ readonly namespace: string;
174
+ /** Room instance ID within the namespace */
175
+ readonly roomId: string;
176
+ private _sharedState;
177
+ private _sharedVersion;
178
+ private _playerState;
179
+ private _playerVersion;
180
+ private _members;
181
+ private _mediaMembers;
182
+ private ws;
183
+ private reconnectAttempts;
184
+ private connected;
185
+ private authenticated;
186
+ private joined;
187
+ private currentUserId;
188
+ private currentConnectionId;
189
+ private connectionState;
190
+ private reconnectInfo;
191
+ private connectingPromise;
192
+ private heartbeatTimer;
193
+ private intentionallyLeft;
194
+ private waitingForAuth;
195
+ private joinRequested;
196
+ private unsubAuthState;
197
+ private pendingRequests;
198
+ private pendingSignalRequests;
199
+ private pendingAdminRequests;
200
+ private pendingMemberStateRequests;
201
+ private pendingMediaRequests;
202
+ private sharedStateHandlers;
203
+ private playerStateHandlers;
204
+ private messageHandlers;
205
+ private allMessageHandlers;
206
+ private errorHandlers;
207
+ private kickedHandlers;
208
+ private memberSyncHandlers;
209
+ private memberJoinHandlers;
210
+ private memberLeaveHandlers;
211
+ private memberStateHandlers;
212
+ private signalHandlers;
213
+ private anySignalHandlers;
214
+ private mediaTrackHandlers;
215
+ private mediaTrackRemovedHandlers;
216
+ private mediaStateHandlers;
217
+ private mediaDeviceHandlers;
218
+ private reconnectHandlers;
219
+ private connectionStateHandlers;
220
+ readonly state: {
221
+ getShared: () => Record<string, unknown>;
222
+ getMine: () => Record<string, unknown>;
223
+ onSharedChange: (handler: SharedStateHandler) => Subscription;
224
+ onMineChange: (handler: PlayerStateHandler) => Subscription;
225
+ send: (actionType: string, payload?: unknown) => Promise<unknown>;
226
+ };
227
+ readonly meta: {
228
+ get: () => Promise<Record<string, unknown>>;
229
+ };
230
+ readonly signals: {
231
+ send: (event: string, payload?: unknown, options?: {
232
+ includeSelf?: boolean;
233
+ }) => Promise<void>;
234
+ sendTo: (memberId: string, event: string, payload?: unknown) => Promise<void>;
235
+ on: (event: string, handler: (payload: unknown, meta: RoomSignalMeta) => void) => Subscription;
236
+ onAny: (handler: (event: string, payload: unknown, meta: RoomSignalMeta) => void) => Subscription;
237
+ };
238
+ readonly members: {
239
+ list: () => RoomMember[];
240
+ onSync: (handler: (members: RoomMember[]) => void) => Subscription;
241
+ onJoin: (handler: (member: RoomMember) => void) => Subscription;
242
+ onLeave: (handler: (member: RoomMember, reason: RoomMemberLeaveReason) => void) => Subscription;
243
+ setState: (state: Record<string, unknown>) => Promise<void>;
244
+ clearState: () => Promise<void>;
245
+ onStateChange: (handler: (member: RoomMember, state: Record<string, unknown>) => void) => Subscription;
246
+ };
247
+ readonly admin: {
248
+ kick: (memberId: string) => Promise<void>;
249
+ mute: (memberId: string) => Promise<void>;
250
+ block: (memberId: string) => Promise<void>;
251
+ setRole: (memberId: string, role: string) => Promise<void>;
252
+ disableVideo: (memberId: string) => Promise<void>;
253
+ stopScreenShare: (memberId: string) => Promise<void>;
254
+ };
255
+ readonly media: {
256
+ list: () => RoomMediaMember[];
257
+ audio: {
258
+ enable: (payload?: {
259
+ trackId?: string;
260
+ deviceId?: string;
261
+ providerSessionId?: string;
262
+ }) => Promise<void>;
263
+ disable: () => Promise<void>;
264
+ setMuted: (muted: boolean) => Promise<void>;
265
+ };
266
+ video: {
267
+ enable: (payload?: {
268
+ trackId?: string;
269
+ deviceId?: string;
270
+ providerSessionId?: string;
271
+ }) => Promise<void>;
272
+ disable: () => Promise<void>;
273
+ setMuted: (muted: boolean) => Promise<void>;
274
+ };
275
+ screen: {
276
+ start: (payload?: {
277
+ trackId?: string;
278
+ deviceId?: string;
279
+ providerSessionId?: string;
280
+ }) => Promise<void>;
281
+ stop: () => Promise<void>;
282
+ };
283
+ devices: {
284
+ switch: (payload: {
285
+ audioInputId?: string;
286
+ videoInputId?: string;
287
+ screenInputId?: string;
288
+ }) => Promise<void>;
289
+ };
290
+ realtime: {
291
+ createSession: (payload?: RoomRealtimeCreateSessionRequest) => Promise<RoomRealtimeCreateSessionResponse>;
292
+ getIceServers: (payload?: RoomRealtimeIceServersRequest) => Promise<RoomRealtimeIceServersResponse>;
293
+ addTracks: (payload: RoomRealtimeTracksRequest) => Promise<RoomRealtimeTracksResponse>;
294
+ renegotiate: (payload: RoomRealtimeRenegotiateRequest) => Promise<RoomRealtimeTracksResponse>;
295
+ closeTracks: (payload: RoomRealtimeCloseTracksRequest) => Promise<RoomRealtimeTracksResponse>;
296
+ transport: (options?: RoomRealtimeMediaTransportOptions) => RoomRealtimeMediaTransport;
297
+ };
298
+ onTrack: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
299
+ onTrackRemoved: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
300
+ onStateChange: (handler: (member: RoomMember, state: RoomMemberMediaState) => void) => Subscription;
301
+ onDeviceChange: (handler: (member: RoomMember, change: RoomMediaDeviceChange) => void) => Subscription;
302
+ };
303
+ readonly session: {
304
+ onError: (handler: ErrorHandler) => Subscription;
305
+ onKicked: (handler: KickedHandler) => Subscription;
306
+ onReconnect: (handler: (info: RoomReconnectInfo) => void) => Subscription;
307
+ onConnectionStateChange: (handler: (state: RoomConnectionState) => void) => Subscription;
308
+ };
309
+ constructor(baseUrl: string, namespace: string, roomId: string, tokenManager: TokenManager, options?: RoomOptions);
310
+ /** Get current shared state (read-only snapshot) */
311
+ getSharedState(): Record<string, unknown>;
312
+ /** Get current player state (read-only snapshot) */
313
+ getPlayerState(): Record<string, unknown>;
314
+ /**
315
+ * Get room metadata without joining (HTTP GET).
316
+ * Returns developer-defined metadata set by room.setMetadata() on the server.
317
+ */
318
+ getMetadata(): Promise<Record<string, unknown>>;
319
+ /**
320
+ * Static: Get room metadata without creating a RoomClient instance.
321
+ * Useful for lobby screens where you need room info before joining.
322
+ */
323
+ static getMetadata(baseUrl: string, namespace: string, roomId: string): Promise<Record<string, unknown>>;
324
+ private requestRealtimeMedia;
325
+ /** Connect to the room, authenticate, and join */
326
+ join(): Promise<void>;
327
+ /** Leave the room and disconnect. Cleans up all pending requests. */
328
+ leave(): void;
329
+ /**
330
+ * Send an action to the server.
331
+ * Returns a Promise that resolves with the action result from the server.
332
+ *
333
+ * @example
334
+ * const result = await room.send('SET_SCORE', { score: 42 });
335
+ */
336
+ send(actionType: string, payload?: unknown): Promise<unknown>;
337
+ /**
338
+ * Subscribe to shared state changes.
339
+ * Called on full sync and on each shared_delta.
340
+ *
341
+ * @returns Subscription with unsubscribe()
342
+ */
343
+ onSharedState(handler: SharedStateHandler): Subscription;
344
+ /**
345
+ * Subscribe to player state changes.
346
+ * Called on full sync and on each player_delta.
347
+ *
348
+ * @returns Subscription with unsubscribe()
349
+ */
350
+ onPlayerState(handler: PlayerStateHandler): Subscription;
351
+ /**
352
+ * Subscribe to messages of a specific type sent by room.sendMessage().
353
+ *
354
+ * @example
355
+ * room.onMessage('game_over', (data) => { console.log(data.winner); });
356
+ *
357
+ * @returns Subscription with unsubscribe()
358
+ */
359
+ onMessage(messageType: string, handler: MessageHandler): Subscription;
360
+ /**
361
+ * Subscribe to ALL messages regardless of type.
362
+ *
363
+ * @returns Subscription with unsubscribe()
364
+ */
365
+ onAnyMessage(handler: (messageType: string, data: unknown) => void): Subscription;
366
+ /** Subscribe to errors */
367
+ onError(handler: ErrorHandler): Subscription;
368
+ /** Subscribe to kick events */
369
+ onKicked(handler: KickedHandler): Subscription;
370
+ private onSignal;
371
+ private onAnySignal;
372
+ private onMembersSync;
373
+ private onMemberJoin;
374
+ private onMemberLeave;
375
+ private onMemberStateChange;
376
+ private onReconnect;
377
+ private onConnectionStateChange;
378
+ private onMediaTrack;
379
+ private onMediaTrackRemoved;
380
+ private onMediaStateChange;
381
+ private onMediaDeviceChange;
382
+ private sendSignal;
383
+ private sendMemberState;
384
+ private clearMemberState;
385
+ private sendMemberStateRequest;
386
+ private sendAdmin;
387
+ private sendMedia;
388
+ private switchMediaDevices;
389
+ private establishConnection;
390
+ private ensureConnection;
391
+ private authenticate;
392
+ private handleMessage;
393
+ private handleSync;
394
+ private handleSharedDelta;
395
+ private handlePlayerDelta;
396
+ private handleActionResult;
397
+ private handleActionError;
398
+ private handleAuthAck;
399
+ private handleServerMessage;
400
+ private handleSignalFrame;
401
+ private handleSignalSent;
402
+ private handleSignalError;
403
+ private handleMembersSync;
404
+ private handleMediaSync;
405
+ private handleMemberJoinFrame;
406
+ private handleMemberLeaveFrame;
407
+ private handleMemberStateFrame;
408
+ private handleMemberStateError;
409
+ private handleMediaTrackFrame;
410
+ private handleMediaTrackRemovedFrame;
411
+ private handleMediaStateFrame;
412
+ private handleMediaDeviceFrame;
413
+ private handleMediaResult;
414
+ private handleMediaError;
415
+ private handleAdminResult;
416
+ private handleAdminError;
417
+ private handleKicked;
418
+ private handleError;
419
+ private refreshAuth;
420
+ private handleAuthStateChange;
421
+ private handleAuthenticationFailure;
422
+ private normalizeMembers;
423
+ private normalizeMediaMembers;
424
+ private normalizeMember;
425
+ private normalizeState;
426
+ private normalizeMediaMember;
427
+ private normalizeMediaState;
428
+ private normalizeMediaKindState;
429
+ private normalizeMediaTracks;
430
+ private normalizeMediaTrack;
431
+ private normalizeMediaKind;
432
+ private normalizeSignalMeta;
433
+ private normalizeLeaveReason;
434
+ private upsertMember;
435
+ private removeMember;
436
+ private syncMediaMemberInfo;
437
+ private ensureMediaMember;
438
+ private removeMediaMember;
439
+ private upsertMediaTrack;
440
+ private removeMediaTrack;
441
+ private mergeMediaState;
442
+ private rejectPendingVoidRequests;
443
+ private setConnectionState;
444
+ private sendRaw;
445
+ private buildWsUrl;
446
+ private scheduleReconnect;
447
+ private startHeartbeat;
448
+ private stopHeartbeat;
449
+ }
450
+ //# sourceMappingURL=room.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}