@game-vir/multiplayer
Version:
Client side definitions and types for @game-vir/multiplayer-server
147 lines (146 loc) • 9.23 kB
TypeScript
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]>;
};
};
}>>>;