UNPKG

js13k-online

Version:

A simple client SDK for the JS13K Online Challenge Series that abstracts away the WebSocket connection and state management

77 lines 2.77 kB
//#region src/types.d.ts type PartialDeep<T> = { [P in keyof T]?: T[P] extends object ? PartialDeep<T[P]> : T[P] }; type DeltaEvaluator<TState = GameState> = (delta: PartialDeep<TState>, remoteState: PartialDeep<TState>, playerId?: string) => boolean; type DeltaNormalizer<TState = GameState> = (delta: PartialDeep<TState>) => PartialDeep<TState>; interface ClientOptions<TState = GameState> { host?: string; party?: string; deltaNormalizer?: DeltaNormalizer<TState>; deltaEvaluator?: DeltaEvaluator<TState>; throttleMs?: number; debug?: boolean; } interface MessageData { id?: string; connect?: string; disconnect?: string; state?: any; delta?: any; [key: string]: any; } interface GameState { _players: Record<string, any>; [key: string]: any; } type GetPlayerState<TState extends GameState> = TState['_players'][string]; type EventCallback = (data?: any) => void; //#endregion //#region src/Js13kClient.d.ts declare class Js13kClient<TState extends GameState> { private room; private options; private socket; private myId; private localState; private eventListeners; private connected; private remoteState; private pendingUberDelta; private throttleTimer; private tombstones; constructor(room: string, options?: ClientOptions<TState>); private log; shouldSendDelta(delta: PartialDeep<TState>): boolean; connect(): void; handleMessage(data: MessageData): void; on(event: string, callback: EventCallback): void; off(event: string, callback: EventCallback): void; emit(event: string, data?: any): void; getState(): TState; getMyId(): string | null; getMyState(copy?: boolean): GetPlayerState<TState> | null; getPlayerState(playerId: string, copy?: boolean): GetPlayerState<TState> | null; isConnected(): boolean; sendDelta(delta: PartialDeep<TState>): void; updateState(delta: PartialDeep<TState>): void; private addToPendingDelta; private addLocalTombstonesFromDelta; private processPendingDelta; updateMyState(delta: PartialDeep<GetPlayerState<TState>>): void; disconnect(): void; } //#endregion //#region src/util.d.ts declare function deepClone<T>(obj: T): T; declare function mergeState(target: any, source: any, shouldDeleteOnNull?: boolean): any; declare function generateUUID(): string; declare function filterDeltaWithTombstones(delta: any, tombstones: Set<string>): any; //#endregion //#region src/index.d.ts declare global { interface Window { Js13kClient: typeof Js13kClient; } } //#endregion export { ClientOptions, DeltaEvaluator, DeltaNormalizer, EventCallback, GameState, GetPlayerState, Js13kClient, MessageData, PartialDeep, deepClone, Js13kClient as default, filterDeltaWithTombstones, generateUUID, mergeState }; //# sourceMappingURL=index.d.ts.map