UNPKG

@colyseus/core

Version:

Multiplayer Framework for Node.js.

74 lines (73 loc) 2.27 kB
export interface SortOptions { [fieldName: string]: 1 | -1 | 'asc' | 'desc' | 'ascending' | 'descending'; } export interface IRoomListingData { clients: number; locked: boolean; private: boolean; maxClients: number; metadata: any; name: string; publicAddress?: string; processId: string; roomId: string; unlisted: boolean; [property: string]: any; } export interface RoomListingData<Metadata = any> extends IRoomListingData { metadata: Metadata; updateOne(operations: any): any; save(): any; remove(): any; } export interface QueryHelpers<T> { then: Promise<T>['then']; sort(options: SortOptions): any; } export interface MatchMakerDriver { /** * Initialize a room cache which contains CRUD operations for room listings. * * @param initialValues - Predefined room properties. * * @returns RoomData - New room cache. */ createInstance(initialValues: Partial<IRoomListingData>): RoomListingData; /** * Check if a room exists in room cache. * * @param roomId - The room id. * * @returns Promise<boolean> | boolean - A promise or a boolean value indicating if the room exists. */ has(roomId: string): Promise<boolean> | boolean; /** * Query rooms in room cache for given conditions. * * @param conditions - Filtering conditions. * * @returns Promise<RoomListingData[]> | RoomListingData[] - A promise or an object contaning room metadata list. */ find(conditions: Partial<IRoomListingData>, additionalProjectionFields?: any): Promise<RoomListingData[]> | RoomListingData[]; /** * Clean up rooms in room cache by process id. * @param processId - The process id. */ cleanup?(processId: string): Promise<void>; /** * Query for a room in room cache for given conditions. * * @param conditions - Filtering conditions. * * @returns `RoomListingData` - An object contaning filtered room metadata. */ findOne(conditions: Partial<IRoomListingData>): QueryHelpers<RoomListingData>; /** * Empty the room cache. */ clear(): void; /** * Dispose the connection of the room cache medium. */ shutdown(): void; }