UNPKG

@game-vir/multiplayer

Version:

Client side definitions and types for @game-vir/multiplayer-server

147 lines (146 loc) 9.23 kB
import { mapServiceDevPort } from '@rest-vir/define-service'; /** * The output from {@link createMultiplayerApi}, regardless of what the given `serverOrigin` is. * * @category Main */ export type MultiplayerApi = Awaited<ReturnType<typeof createMultiplayerApi>>; /** * Creates an API for accessing the multiplayer server at the given origin. * * @category Main */ export declare function createMultiplayerApi({ backendOrigin, portScanOptions, }: { backendOrigin?: string | undefined; /** * Set to `undefined` or `false` to disable port scanning. Set to `true` to enable port * scanning. Set to an options object to configure port scanning. */ portScanOptions: undefined | Parameters<typeof mapServiceDevPort>[1] | boolean; }): Promise<import("@rest-vir/define-service").RestVirApi<import("@rest-vir/define-service").ServiceDefinition<"multiplayer-service", { '/': { methods: { GET: true; }; requestDataShape: undefined; responseDataShape: import("object-shape-tester").ShapeExact<readonly ["ok"]>; requiredClientOrigin: { anyOrigin: boolean; }; }; '/health': { methods: { GET: true; }; requestDataShape: undefined; responseDataShape: import("object-shape-tester").ShapeExact<readonly ["ok"]>; requiredClientOrigin: { anyOrigin: boolean; }; }; '/rooms': { requestDataShape: undefined; responseDataShape: import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeIndexedKeys<[{ keys: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; values: import("object-shape-tester").ShapeDefinition<{ roomName: string; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; clientCount: number; hasRoomPassword: boolean; }, false>; required: false; }]>, false>; methods: { GET: true; }; searchParamsShape: { gameId: import("object-shape-tester").ShapeTuple<[string]>; }; }; }, { '/connect': { messageFromClientShape: import("object-shape-tester").ShapeOr<[import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ clientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomName: string; }, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Answer]>; data: import("object-shape-tester").ShapeOr<[{ rejected: import("object-shape-tester").ShapeExact<readonly [true]>; }, import("object-shape-tester").ShapeDefinition<{ type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Answer]>; sdp: string; }, false>]>; }]>, false>, import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ clientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomName: string; }, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Offer]>; data: import("object-shape-tester").ShapeDefinition<{ type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Offer]>; sdp: string; }, false>; }]>, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { clientSecret: string; roomPassword: string; }]>, false>, import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ clientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomName: string; }, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.HostPing]>; clientSecret: string; clientCount: number; roomPassword: string; }]>, false>]>; messageFromHostShape: import("object-shape-tester").ShapeOr<[import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ clientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomName: string; }, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Answer]>; data: import("object-shape-tester").ShapeOr<[{ rejected: import("object-shape-tester").ShapeExact<readonly [true]>; }, import("object-shape-tester").ShapeDefinition<{ type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Answer]>; sdp: string; }, false>]>; }]>, false>, import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ clientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; roomName: string; }, false>, import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Offer]>; data: import("object-shape-tester").ShapeDefinition<{ type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Offer]>; sdp: string; }, false>; }]>, false>, import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.OfferResult]>; hostClientId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }]>, false>, import("object-shape-tester").ShapeDefinition<import("object-shape-tester").ShapeAnd<[import("object-shape-tester").ShapeDefinition<{ messageId: import("object-shape-tester").CustomSpecifier<`${string}-${string}-${string}-${string}-${string}`>; }, false>, { type: import("object-shape-tester").ShapeExact<readonly [import("../index.js").MultiplayerWebSocketMessageType.Error]>; errorMessage: string; }]>, false>]>; searchParamsShape: { gameId: import("object-shape-tester").ShapeTuple<[string]>; }; }; }>>>;