@colyseus/sdk 0.17.0

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 (133) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +27 -0
  3. package/build/cjs/3rd_party/discord.js +56 -0
  4. package/build/cjs/3rd_party/discord.js.map +1 -0
  5. package/build/cjs/Auth.js +156 -0
  6. package/build/cjs/Auth.js.map +1 -0
  7. package/build/cjs/Client.js +282 -0
  8. package/build/cjs/Client.js.map +1 -0
  9. package/build/cjs/Connection.js +48 -0
  10. package/build/cjs/Connection.js.map +1 -0
  11. package/build/cjs/HTTP.js +156 -0
  12. package/build/cjs/HTTP.js.map +1 -0
  13. package/build/cjs/Protocol.js +34 -0
  14. package/build/cjs/Protocol.js.map +1 -0
  15. package/build/cjs/Room.js +357 -0
  16. package/build/cjs/Room.js.map +1 -0
  17. package/build/cjs/Storage.js +98 -0
  18. package/build/cjs/Storage.js.map +1 -0
  19. package/build/cjs/core/nanoevents.js +50 -0
  20. package/build/cjs/core/nanoevents.js.map +1 -0
  21. package/build/cjs/core/signal.js +53 -0
  22. package/build/cjs/core/signal.js.map +1 -0
  23. package/build/cjs/core/utils.js +14 -0
  24. package/build/cjs/core/utils.js.map +1 -0
  25. package/build/cjs/errors/Errors.js +29 -0
  26. package/build/cjs/errors/Errors.js.map +1 -0
  27. package/build/cjs/index.js +43 -0
  28. package/build/cjs/index.js.map +1 -0
  29. package/build/cjs/legacy.js +34 -0
  30. package/build/cjs/legacy.js.map +1 -0
  31. package/build/cjs/serializer/NoneSerializer.js +18 -0
  32. package/build/cjs/serializer/NoneSerializer.js.map +1 -0
  33. package/build/cjs/serializer/SchemaSerializer.js +61 -0
  34. package/build/cjs/serializer/SchemaSerializer.js.map +1 -0
  35. package/build/cjs/serializer/Serializer.js +23 -0
  36. package/build/cjs/serializer/Serializer.js.map +1 -0
  37. package/build/cjs/transport/H3Transport.js +171 -0
  38. package/build/cjs/transport/H3Transport.js.map +1 -0
  39. package/build/cjs/transport/WebSocketTransport.js +50 -0
  40. package/build/cjs/transport/WebSocketTransport.js.map +1 -0
  41. package/build/esm/3rd_party/discord.mjs +53 -0
  42. package/build/esm/3rd_party/discord.mjs.map +1 -0
  43. package/build/esm/Auth.mjs +137 -0
  44. package/build/esm/Auth.mjs.map +1 -0
  45. package/build/esm/Client.mjs +272 -0
  46. package/build/esm/Client.mjs.map +1 -0
  47. package/build/esm/Connection.mjs +49 -0
  48. package/build/esm/Connection.mjs.map +1 -0
  49. package/build/esm/HTTP.mjs +159 -0
  50. package/build/esm/HTTP.mjs.map +1 -0
  51. package/build/esm/Protocol.mjs +34 -0
  52. package/build/esm/Protocol.mjs.map +1 -0
  53. package/build/esm/Room.mjs +355 -0
  54. package/build/esm/Room.mjs.map +1 -0
  55. package/build/esm/Storage.mjs +86 -0
  56. package/build/esm/Storage.mjs.map +1 -0
  57. package/build/esm/core/nanoevents.mjs +46 -0
  58. package/build/esm/core/nanoevents.mjs.map +1 -0
  59. package/build/esm/core/signal.mjs +48 -0
  60. package/build/esm/core/signal.mjs.map +1 -0
  61. package/build/esm/core/utils.mjs +12 -0
  62. package/build/esm/core/utils.mjs.map +1 -0
  63. package/build/esm/errors/Errors.mjs +28 -0
  64. package/build/esm/errors/Errors.mjs.map +1 -0
  65. package/build/esm/index.mjs +22 -0
  66. package/build/esm/index.mjs.map +1 -0
  67. package/build/esm/legacy.mjs +32 -0
  68. package/build/esm/legacy.mjs.map +1 -0
  69. package/build/esm/serializer/NoneSerializer.mjs +16 -0
  70. package/build/esm/serializer/NoneSerializer.mjs.map +1 -0
  71. package/build/esm/serializer/SchemaSerializer.mjs +60 -0
  72. package/build/esm/serializer/SchemaSerializer.mjs.map +1 -0
  73. package/build/esm/serializer/Serializer.mjs +20 -0
  74. package/build/esm/serializer/Serializer.mjs.map +1 -0
  75. package/build/esm/transport/H3Transport.mjs +170 -0
  76. package/build/esm/transport/H3Transport.mjs.map +1 -0
  77. package/build/esm/transport/WebSocketTransport.mjs +51 -0
  78. package/build/esm/transport/WebSocketTransport.mjs.map +1 -0
  79. package/dist/colyseus-cocos-creator.js +9538 -0
  80. package/dist/colyseus-cocos-creator.js.map +1 -0
  81. package/dist/colyseus.js +9537 -0
  82. package/dist/colyseus.js.map +1 -0
  83. package/dist/debug.js +2460 -0
  84. package/dist/debug.js.map +1 -0
  85. package/lib/3rd_party/discord.d.ts +33 -0
  86. package/lib/Auth.d.ts +31 -0
  87. package/lib/Client.d.ts +92 -0
  88. package/lib/Connection.d.ts +17 -0
  89. package/lib/HTTP.d.ts +113 -0
  90. package/lib/HTTP_bkp.d.ts +18 -0
  91. package/lib/Protocol.d.ts +21 -0
  92. package/lib/Room.d.ts +140 -0
  93. package/lib/Storage.d.ts +3 -0
  94. package/lib/core/http_bkp.d.ts +319 -0
  95. package/lib/core/nanoevents.d.ts +27 -0
  96. package/lib/core/signal.d.ts +17 -0
  97. package/lib/core/utils.d.ts +1 -0
  98. package/lib/debug.d.ts +1 -0
  99. package/lib/errors/Errors.d.ts +17 -0
  100. package/lib/index.d.ts +9 -0
  101. package/lib/legacy.d.ts +0 -0
  102. package/lib/serializer/FossilDeltaSerializer.d.ts +0 -0
  103. package/lib/serializer/NoneSerializer.d.ts +8 -0
  104. package/lib/serializer/SchemaSerializer.d.ts +14 -0
  105. package/lib/serializer/Serializer.d.ts +10 -0
  106. package/lib/src/3rd_party/discord.d.ts +33 -0
  107. package/lib/src/Auth.d.ts +31 -0
  108. package/lib/src/Client.d.ts +62 -0
  109. package/lib/src/Connection.d.ts +17 -0
  110. package/lib/src/HTTP.d.ts +113 -0
  111. package/lib/src/HTTP_bkp.d.ts +18 -0
  112. package/lib/src/Protocol.d.ts +28 -0
  113. package/lib/src/Room.d.ts +132 -0
  114. package/lib/src/Storage.d.ts +3 -0
  115. package/lib/src/core/http_bkp.d.ts +319 -0
  116. package/lib/src/core/nanoevents.d.ts +27 -0
  117. package/lib/src/core/signal.d.ts +17 -0
  118. package/lib/src/debug.d.ts +1 -0
  119. package/lib/src/errors/Errors.d.ts +15 -0
  120. package/lib/src/index.d.ts +9 -0
  121. package/lib/src/legacy.d.ts +0 -0
  122. package/lib/src/serializer/FossilDeltaSerializer.d.ts +0 -0
  123. package/lib/src/serializer/NoneSerializer.d.ts +8 -0
  124. package/lib/src/serializer/SchemaSerializer.d.ts +14 -0
  125. package/lib/src/serializer/Serializer.d.ts +11 -0
  126. package/lib/src/transport/H3Transport.d.ts +20 -0
  127. package/lib/src/transport/ITransport.d.ts +16 -0
  128. package/lib/src/transport/WebSocketTransport.d.ts +17 -0
  129. package/lib/transport/H3Transport.d.ts +20 -0
  130. package/lib/transport/ITransport.d.ts +16 -0
  131. package/lib/transport/WebSocketTransport.d.ts +17 -0
  132. package/lib/tsconfig.tsbuildinfo +1 -0
  133. package/package.json +108 -0
@@ -0,0 +1,92 @@
1
+ import type { matchMaker, SDKTypes, Room as ServerRoom } from '@colyseus/core';
2
+ import { Room } from './Room.ts';
3
+ import { SchemaConstructor } from './serializer/SchemaSerializer.ts';
4
+ import { HTTP } from './HTTP.ts';
5
+ import { Auth } from './Auth.ts';
6
+ export type JoinOptions = any;
7
+ export type ISeatReservation = matchMaker.ISeatReservation;
8
+ export declare class MatchMakeError extends Error {
9
+ code: number;
10
+ constructor(message: string, code: number);
11
+ }
12
+ export interface EndpointSettings {
13
+ hostname: string;
14
+ secure: boolean;
15
+ port?: number;
16
+ pathname?: string;
17
+ searchParams?: string;
18
+ protocol?: "ws" | "h3";
19
+ }
20
+ export interface ClientOptions {
21
+ headers?: {
22
+ [id: string]: string;
23
+ };
24
+ urlBuilder?: (url: URL) => string;
25
+ protocol?: "ws" | "h3";
26
+ }
27
+ export interface LatencyOptions {
28
+ /** "ws" for WebSocket, "h3" for WebTransport (default: "ws") */
29
+ protocol?: "ws" | "h3";
30
+ /** Number of pings to send (default: 1). Returns the average latency when > 1. */
31
+ pingCount?: number;
32
+ }
33
+ export declare class ColyseusSDK<ServerType extends SDKTypes = any> {
34
+ static VERSION: string;
35
+ /**
36
+ * The HTTP client to make requests to the server.
37
+ */
38
+ http: HTTP<ServerType['~routes']>;
39
+ /**
40
+ * The authentication module to authenticate into requests and rooms.
41
+ */
42
+ auth: Auth;
43
+ /**
44
+ * The settings used to connect to the server.
45
+ */
46
+ settings: EndpointSettings;
47
+ protected urlBuilder: (url: URL) => string;
48
+ constructor(settings?: string | EndpointSettings, options?: ClientOptions);
49
+ /**
50
+ * Select the endpoint with the lowest latency.
51
+ * @param endpoints Array of endpoints to select from.
52
+ * @param options Client options.
53
+ * @param latencyOptions Latency measurement options (protocol, pingCount).
54
+ * @returns The client with the lowest latency.
55
+ */
56
+ static selectByLatency<ServerType extends SDKTypes = any>(endpoints: Array<string | EndpointSettings>, options?: ClientOptions, latencyOptions?: LatencyOptions): Promise<ColyseusSDK<ServerType>>;
57
+ joinOrCreate<R extends keyof ServerType['~rooms']>(roomName: R, options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<ServerType>): Promise<Room<ServerType['~rooms'][R]['~room']>>;
58
+ joinOrCreate<RoomType extends typeof ServerRoom>(roomName: string, options?: Parameters<RoomType['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<RoomType['prototype']['state']>): Promise<Room<RoomType>>;
59
+ joinOrCreate<State = any>(roomName: string, options?: JoinOptions, rootSchema?: SchemaConstructor<State>): Promise<Room<any, State>>;
60
+ create<R extends keyof ServerType['~rooms']>(roomName: R, options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<ServerType>): Promise<Room<ServerType['~rooms'][R]['~room']>>;
61
+ create<RoomType extends typeof ServerRoom>(roomName: string, options?: Parameters<RoomType['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<RoomType['prototype']['state']>): Promise<Room<RoomType>>;
62
+ create<State = any>(roomName: string, options?: JoinOptions, rootSchema?: SchemaConstructor<State>): Promise<Room<any, State>>;
63
+ join<R extends keyof ServerType['~rooms']>(roomName: R, options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<ServerType>): Promise<Room<ServerType['~rooms'][R]['~room']>>;
64
+ join<RoomType extends typeof ServerRoom>(roomName: string, options?: Parameters<RoomType['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<RoomType['prototype']['state']>): Promise<Room<RoomType>>;
65
+ join<State = any>(roomName: string, options?: JoinOptions, rootSchema?: SchemaConstructor<State>): Promise<Room<any, State>>;
66
+ joinById<R extends keyof ServerType['~rooms']>(roomName: R, options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<ServerType>): Promise<Room<ServerType['~rooms'][R]['~room']>>;
67
+ joinById<RoomType extends typeof ServerRoom>(roomId: string, options?: Parameters<RoomType['prototype']['onJoin']>[1], rootSchema?: SchemaConstructor<RoomType['prototype']['state']>): Promise<Room<RoomType>>;
68
+ joinById<State = any>(roomId: string, options?: JoinOptions, rootSchema?: SchemaConstructor<State>): Promise<Room<any, State>>;
69
+ /**
70
+ * Re-establish connection with a room this client was previously connected to.
71
+ *
72
+ * @param reconnectionToken The `room.reconnectionToken` from previously connected room.
73
+ * @param rootSchema (optional) Concrete root schema definition
74
+ * @returns Promise<Room>
75
+ */
76
+ reconnect<R extends keyof ServerType['~rooms']>(reconnectionToken: string, roomName?: R): Promise<Room<ServerType['~rooms'][R]['~room']>>;
77
+ reconnect<RoomType extends typeof ServerRoom>(reconnectionToken: string, rootSchema?: SchemaConstructor<RoomType['prototype']['state']>): Promise<Room<RoomType>>;
78
+ reconnect<State = any>(reconnectionToken: string, rootSchema?: SchemaConstructor<State>): Promise<Room<any, State>>;
79
+ consumeSeatReservation<T>(response: ISeatReservation, rootSchema?: SchemaConstructor<T>): Promise<Room<any, T>>;
80
+ /**
81
+ * Create a new connection with the server, and measure the latency.
82
+ * @param options Latency measurement options (protocol, pingCount).
83
+ */
84
+ getLatency(options?: LatencyOptions): Promise<number>;
85
+ protected createMatchMakeRequest<T>(method: string, roomName: string, options?: JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<any, T>>;
86
+ protected createRoom<T>(roomName: string, rootSchema?: SchemaConstructor<T>): Room<any, T>;
87
+ protected buildEndpoint(seatReservation: ISeatReservation, options?: any): string;
88
+ protected getHttpEndpoint(segments?: string): string;
89
+ protected getEndpointPort(): string;
90
+ }
91
+ export declare const Client: typeof ColyseusSDK;
92
+ export type Client = InstanceType<typeof ColyseusSDK>;
@@ -0,0 +1,17 @@
1
+ import type { ITransport, ITransportEventMap } from "./transport/ITransport.ts";
2
+ export declare class Connection implements ITransport {
3
+ transport: ITransport;
4
+ events: ITransportEventMap;
5
+ url?: string;
6
+ options?: any;
7
+ constructor(protocol?: string);
8
+ connect(url: string, options?: any): void;
9
+ send(data: Buffer | Uint8Array): void;
10
+ sendUnreliable(data: Buffer | Uint8Array): void;
11
+ reconnect(queryParams: {
12
+ reconnectionToken: string;
13
+ skipHandshake?: boolean;
14
+ }): void;
15
+ close(code?: number, reason?: string): void;
16
+ get isOpen(): boolean;
17
+ }
package/lib/HTTP.d.ts ADDED
@@ -0,0 +1,113 @@
1
+ import type { Router, HasRequiredKeys, Prettify, UnionToIntersection, Endpoint, HTTPMethod } from "@colyseus/better-call";
2
+ import { ColyseusSDK } from "./Client.ts";
3
+ type IsAny<T> = 0 extends 1 & T ? true : false;
4
+ type IsAnyOrAnyIndexed<T> = IsAny<T> extends true ? true : (string extends keyof T ? true : (number extends keyof T ? (symbol extends keyof T ? true : false) : false));
5
+ type HasRequired<T extends {
6
+ body?: any;
7
+ query?: any;
8
+ params?: any;
9
+ }> = T["body"] extends object ? HasRequiredKeys<T["body"]> extends true ? true : T["query"] extends object ? HasRequiredKeys<T["query"]> extends true ? true : T["params"] extends object ? HasRequiredKeys<T["params"]> : false : T["params"] extends object ? HasRequiredKeys<T["params"]> : false : T["query"] extends object ? HasRequiredKeys<T["query"]> extends true ? true : T["params"] extends object ? HasRequiredKeys<T["params"]> : false : T["params"] extends object ? HasRequiredKeys<T["params"]> : false;
10
+ type InferContext<T> = T extends (ctx: infer Ctx) => any ? Ctx extends object ? Ctx : never : never;
11
+ type WithRequired<T, K extends keyof any> = Prettify<T & {
12
+ [P in K & keyof T]-?: NonNullable<T[P]>;
13
+ }>;
14
+ type WithoutServerOnly<T extends Record<string, Endpoint>> = {
15
+ [K in keyof T]: T[K] extends Endpoint<any, infer O> ? O extends {
16
+ metadata: {
17
+ SERVER_ONLY: true;
18
+ };
19
+ } ? never : T[K] : T[K];
20
+ };
21
+ type MethodOptions<API, M extends HTTPMethod> = API extends {
22
+ [key: string]: infer T;
23
+ } ? T extends Endpoint<any, infer O> ? O["method"] extends M ? {
24
+ [key in T["path"]]: T;
25
+ } : O["method"] extends M[] ? M extends O["method"][number] ? {
26
+ [key in T["path"]]: T;
27
+ } : {} : O["method"] extends "*" ? {
28
+ [key in T["path"]]: T;
29
+ } : {} : {} : {};
30
+ export type RequiredOptionKeys<C extends {
31
+ body?: any;
32
+ query?: any;
33
+ params?: any;
34
+ }> = (C["body"] extends object ? HasRequiredKeys<C["body"]> extends true ? {
35
+ body: true;
36
+ } : {} : {}) & (C["query"] extends object ? HasRequiredKeys<C["query"]> extends true ? {
37
+ query: true;
38
+ } : {} : {}) & (C["params"] extends object ? HasRequiredKeys<C["params"]> extends true ? {
39
+ params: true;
40
+ } : {} : {});
41
+ type CommonHeaders = {
42
+ accept: "application/json" | "text/plain" | "application/octet-stream";
43
+ "content-type": "application/json" | "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | "application/octet-stream";
44
+ authorization: "Bearer" | "Basic";
45
+ };
46
+ type FetchRequestOptions<Body = any, Query extends Record<string, any> = any, Params extends Record<string, any> | Array<string> | undefined = any, Res = any, ExtraOptions extends Record<string, any> = {}> = Prettify<ExtraOptions & Omit<RequestInit, "body"> & {
47
+ /**
48
+ * Headers
49
+ */
50
+ headers?: CommonHeaders | Headers | HeadersInit;
51
+ /**
52
+ * Body
53
+ */
54
+ body?: Body;
55
+ /**
56
+ * Query parameters (key-value pairs)
57
+ */
58
+ query?: Query;
59
+ /**
60
+ * Dynamic parameters.
61
+ *
62
+ * If url is defined as /path/:id, params will be { id: string }
63
+ */
64
+ params?: Params;
65
+ }>;
66
+ type ResponseData<T> = {
67
+ ok: true;
68
+ data: T;
69
+ error: null;
70
+ response: Response;
71
+ headers: Headers;
72
+ status: number;
73
+ statusText: string;
74
+ };
75
+ type ResponseError<E> = {
76
+ ok: false;
77
+ data: null;
78
+ error: Prettify<(E extends Record<string, any> ? E : {
79
+ message?: string;
80
+ }) & {
81
+ code?: string;
82
+ }>;
83
+ response: Response;
84
+ headers: Headers;
85
+ status: number;
86
+ statusText: string;
87
+ };
88
+ type FetchResponse<T, E extends Record<string, unknown> | unknown = unknown, Throw extends boolean = false> = Throw extends true ? T : ResponseData<T> | ResponseError<E>;
89
+ export declare function isJSONSerializable(value: any): boolean;
90
+ export type ResponseType = "json" | "text" | "blob";
91
+ export declare function detectResponseType(request: Response): ResponseType;
92
+ type InferredAPI<R> = R extends {
93
+ endpoints: Record<string, Endpoint>;
94
+ } ? WithoutServerOnly<R["endpoints"]> : WithoutServerOnly<R & Record<string, Endpoint>>;
95
+ export declare class HTTP<R extends Router | Router["endpoints"]> {
96
+ authToken: string | undefined;
97
+ options: FetchRequestOptions;
98
+ private sdk;
99
+ constructor(sdk: ColyseusSDK, baseOptions: FetchRequestOptions);
100
+ private request;
101
+ get<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "GET">>> = Prettify<UnionToIntersection<MethodOptions<API, "GET">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends true ? K : never), options: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : WithRequired<FetchRequestOptions<C["body"], C["query"], C["params"]>, keyof RequiredOptionKeys<C>>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
102
+ get<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "GET">>> = Prettify<UnionToIntersection<MethodOptions<API, "GET">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends false ? K : never), options?: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : FetchRequestOptions<C["body"], C["query"], C["params"]>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
103
+ post<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "POST">>> = Prettify<UnionToIntersection<MethodOptions<API, "POST">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: (IsAnyOrAnyIndexed<R> extends true ? string : never) | (IsAny<API> extends true ? string : never) | (HasRequired<C> extends true ? K : never), options: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : (IsAny<API> extends true ? FetchRequestOptions<any, any, any> : WithRequired<FetchRequestOptions<C["body"], C["query"], C["params"]>, keyof RequiredOptionKeys<C>>)): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
104
+ post<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "POST">>> = Prettify<UnionToIntersection<MethodOptions<API, "POST">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: (IsAnyOrAnyIndexed<R> extends true ? string : never) | (IsAny<API> extends true ? string : never) | (HasRequired<C> extends false ? K : never), options?: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : (IsAny<API> extends true ? FetchRequestOptions<any, any, any> : FetchRequestOptions<C["body"], C["query"], C["params"]>)): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
105
+ delete<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "DELETE">>> = Prettify<UnionToIntersection<MethodOptions<API, "DELETE">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends true ? K : never), options: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : WithRequired<FetchRequestOptions<C["body"], C["query"], C["params"]>, keyof RequiredOptionKeys<C>>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
106
+ delete<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "DELETE">>> = Prettify<UnionToIntersection<MethodOptions<API, "DELETE">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends false ? K : never), options?: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : FetchRequestOptions<C["body"], C["query"], C["params"]>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
107
+ patch<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "PATCH">>> = Prettify<UnionToIntersection<MethodOptions<API, "PATCH">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends true ? K : never), options: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : WithRequired<FetchRequestOptions<C["body"], C["query"], C["params"]>, keyof RequiredOptionKeys<C>>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
108
+ patch<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "PATCH">>> = Prettify<UnionToIntersection<MethodOptions<API, "PATCH">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends false ? K : never), options?: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : FetchRequestOptions<C["body"], C["query"], C["params"]>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
109
+ put<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "PUT">>> = Prettify<UnionToIntersection<MethodOptions<API, "PUT">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends true ? K : never), options: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : WithRequired<FetchRequestOptions<C["body"], C["query"], C["params"]>, keyof RequiredOptionKeys<C>>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
110
+ put<API extends InferredAPI<R> = InferredAPI<R>, OPT extends Prettify<UnionToIntersection<MethodOptions<API, "PUT">>> = Prettify<UnionToIntersection<MethodOptions<API, "PUT">>>, K extends keyof OPT = keyof OPT, C extends InferContext<OPT[K]> = InferContext<OPT[K]>>(path: IsAnyOrAnyIndexed<R> extends true ? string : (HasRequired<C> extends false ? K : never), options?: IsAnyOrAnyIndexed<R> extends true ? FetchRequestOptions<any, any, any> : FetchRequestOptions<C["body"], C["query"], C["params"]>): Promise<FetchResponse<Awaited<ReturnType<OPT[K] extends Endpoint ? OPT[K] : never>>>>;
111
+ protected executeRequest<M extends HTTPMethod>(method: M, path: any, requestOptions?: any): Promise<any>;
112
+ }
113
+ export {};
@@ -0,0 +1,18 @@
1
+ import * as httpie from "@colyseus/httpie";
2
+ import { ColyseusSDK } from "./Client.ts";
3
+ export declare class HTTP {
4
+ protected sdk: ColyseusSDK;
5
+ headers: {
6
+ [id: string]: string;
7
+ };
8
+ authToken: string | undefined;
9
+ constructor(sdk: ColyseusSDK, headers?: {
10
+ [id: string]: string;
11
+ });
12
+ get<T = any>(path: string, options?: Partial<httpie.Options>): Promise<httpie.Response<T>>;
13
+ post<T = any>(path: string, options?: Partial<httpie.Options>): Promise<httpie.Response<T>>;
14
+ del<T = any>(path: string, options?: Partial<httpie.Options>): Promise<httpie.Response<T>>;
15
+ put<T = any>(path: string, options?: Partial<httpie.Options>): Promise<httpie.Response<T>>;
16
+ protected request(method: "get" | "post" | "put" | "del", path: string, options?: Partial<httpie.Options>): Promise<httpie.Response>;
17
+ protected getOptions(options: Partial<httpie.Options>): Partial<httpie.Options>;
18
+ }
@@ -0,0 +1,21 @@
1
+ export declare enum Protocol {
2
+ HANDSHAKE = 9,
3
+ JOIN_ROOM = 10,
4
+ ERROR = 11,
5
+ LEAVE_ROOM = 12,
6
+ ROOM_DATA = 13,
7
+ ROOM_STATE = 14,
8
+ ROOM_STATE_PATCH = 15,
9
+ ROOM_DATA_SCHEMA = 16,
10
+ ROOM_DATA_BYTES = 17,
11
+ PING = 18
12
+ }
13
+ export declare enum ErrorCode {
14
+ MATCHMAKE_NO_HANDLER = 520,
15
+ MATCHMAKE_INVALID_CRITERIA = 521,
16
+ MATCHMAKE_INVALID_ROOM_ID = 522,
17
+ MATCHMAKE_UNHANDLED = 523,
18
+ MATCHMAKE_EXPIRED = 524,
19
+ AUTH_FAILED = 525,
20
+ APPLICATION_ERROR = 526
21
+ }
package/lib/Room.d.ts ADDED
@@ -0,0 +1,140 @@
1
+ import { type Room as ServerRoom, type ExtractMessageType } from '@colyseus/core';
2
+ import { Schema } from '@colyseus/schema';
3
+ import { Packr } from '@colyseus/msgpackr';
4
+ import { Connection } from './Connection.ts';
5
+ import { Serializer } from './serializer/Serializer.ts';
6
+ import { SchemaConstructor, SchemaSerializer } from './serializer/SchemaSerializer.ts';
7
+ export type InferSerializer<State> = [State] extends [Schema] ? SchemaSerializer<State> : Serializer<State>;
8
+ export interface RoomAvailable<Metadata = any> {
9
+ name: string;
10
+ roomId: string;
11
+ clients: number;
12
+ maxClients: number;
13
+ metadata?: Metadata;
14
+ }
15
+ export interface ReconnectionOptions {
16
+ /**
17
+ * The maximum number of reconnection attempts.
18
+ */
19
+ maxRetries: number;
20
+ /**
21
+ * The minimum delay between reconnection attempts.
22
+ */
23
+ minDelay: number;
24
+ /**
25
+ * The maximum delay between reconnection attempts.
26
+ */
27
+ maxDelay: number;
28
+ /**
29
+ * The minimum uptime of the room before reconnection attempts can be made.
30
+ */
31
+ minUptime: number;
32
+ /**
33
+ * The current number of reconnection attempts.
34
+ */
35
+ retryCount: number;
36
+ /**
37
+ * The initial delay between reconnection attempts.
38
+ */
39
+ delay: number;
40
+ /**
41
+ * The function to calculate the delay between reconnection attempts.
42
+ * @param attempt - The current attempt number.
43
+ * @param delay - The initial delay between reconnection attempts.
44
+ * @returns The delay between reconnection attempts.
45
+ */
46
+ backoff: (attempt: number, delay: number) => number;
47
+ /**
48
+ * The maximum number of enqueued messages to buffer.
49
+ */
50
+ maxEnqueuedMessages: number;
51
+ /**
52
+ * Buffer for messages sent while connection is not open.
53
+ * These messages will be sent once the connection is re-established.
54
+ */
55
+ enqueuedMessages: Array<{
56
+ data: Uint8Array;
57
+ }>;
58
+ /**
59
+ * Whether the room is currently reconnecting.
60
+ */
61
+ isReconnecting: boolean;
62
+ }
63
+ export declare class Room<RoomType extends typeof ServerRoom = any, State = RoomType['prototype']['state']> {
64
+ #private;
65
+ roomId: string;
66
+ sessionId: string;
67
+ reconnectionToken: string;
68
+ name: string;
69
+ connection: Connection;
70
+ onStateChange: {
71
+ once: (cb: (state: State) => void) => void;
72
+ remove: (cb: (state: State) => void) => void;
73
+ invoke: (state: State) => void;
74
+ invokeAsync: (state: State) => Promise<any[]>;
75
+ clear: () => void;
76
+ } & ((this: any, cb: (state: State) => void) => import("./core/signal.ts").EventEmitter<(state: State) => void>);
77
+ onError: {
78
+ once: (cb: (code: number, message?: string) => void) => void;
79
+ remove: (cb: (code: number, message?: string) => void) => void;
80
+ invoke: (code: number, message?: string) => void;
81
+ invokeAsync: (code: number, message?: string) => Promise<any[]>;
82
+ clear: () => void;
83
+ } & ((this: any, cb: (code: number, message?: string) => void) => import("./core/signal.ts").EventEmitter<(code: number, message?: string) => void>);
84
+ onLeave: {
85
+ once: (cb: (code: number, reason?: string) => void) => void;
86
+ remove: (cb: (code: number, reason?: string) => void) => void;
87
+ invoke: (code: number, reason?: string) => void;
88
+ invokeAsync: (code: number, reason?: string) => Promise<any[]>;
89
+ clear: () => void;
90
+ } & ((this: any, cb: (code: number, reason?: string) => void) => import("./core/signal.ts").EventEmitter<(code: number, reason?: string) => void>);
91
+ onReconnect: {
92
+ once: (cb: () => void) => void;
93
+ remove: (cb: () => void) => void;
94
+ invoke: () => void;
95
+ invokeAsync: () => Promise<any[]>;
96
+ clear: () => void;
97
+ } & ((this: any, cb: () => void) => import("./core/signal.ts").EventEmitter<() => void>);
98
+ onDrop: {
99
+ once: (cb: (code: number, reason?: string) => void) => void;
100
+ remove: (cb: (code: number, reason?: string) => void) => void;
101
+ invoke: (code: number, reason?: string) => void;
102
+ invokeAsync: (code: number, reason?: string) => Promise<any[]>;
103
+ clear: () => void;
104
+ } & ((this: any, cb: (code: number, reason?: string) => void) => import("./core/signal.ts").EventEmitter<(code: number, reason?: string) => void>);
105
+ protected onJoin: {
106
+ once: (cb: (...args: any[]) => void | Promise<any>) => void;
107
+ remove: (cb: (...args: any[]) => void | Promise<any>) => void;
108
+ invoke: (...args: any[]) => void;
109
+ invokeAsync: (...args: any[]) => Promise<any[]>;
110
+ clear: () => void;
111
+ } & ((this: any, cb: (...args: any[]) => void | Promise<any>) => import("./core/signal.ts").EventEmitter<(...args: any[]) => void | Promise<any>>);
112
+ serializerId: string;
113
+ serializer: InferSerializer<State>;
114
+ reconnection: ReconnectionOptions;
115
+ protected joinedAtTime: number;
116
+ protected onMessageHandlers: {
117
+ emit(event: string, ...args: any[]): void;
118
+ events: {};
119
+ on(event: string, cb: (...args: any[]) => void): () => void;
120
+ };
121
+ protected packr: Packr;
122
+ constructor(name: string, rootSchema?: SchemaConstructor<State>);
123
+ connect(endpoint: string, options?: any, headers?: any): void;
124
+ leave(consented?: boolean): Promise<number>;
125
+ onMessage<MessageType extends keyof RoomType['prototype']['~client']['~messages']>(message: MessageType, callback: (payload: RoomType['prototype']['~client']['~messages'][MessageType]) => void): any;
126
+ onMessage<T = any>(type: "*", callback: (messageType: string | number, payload: T) => void): any;
127
+ onMessage<T = any>(type: string | number, callback: (payload: T) => void): any;
128
+ ping(callback: (ms: number) => void): void;
129
+ send<MessageType extends keyof RoomType['prototype']['messages']>(messageType: MessageType, payload?: ExtractMessageType<RoomType['prototype']['messages'][MessageType]>): any;
130
+ sendUnreliable<T = any>(type: string | number, message?: T): void;
131
+ sendBytes(type: string | number, bytes: Uint8Array): void;
132
+ get state(): State;
133
+ removeAllListeners(): void;
134
+ protected onMessageCallback(event: MessageEvent): void;
135
+ private dispatchMessage;
136
+ private destroy;
137
+ private getMessageHandlerKey;
138
+ private handleReconnection;
139
+ private retryReconnection;
140
+ }
@@ -0,0 +1,3 @@
1
+ export declare function setItem(key: string, value: string): void;
2
+ export declare function removeItem(key: string): void;
3
+ export declare function getItem(key: string, callback: Function): void;