@colyseus/sdk 0.17.19 → 0.17.21

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 (53) hide show
  1. package/build/3rd_party/discord.cjs +1 -1
  2. package/build/3rd_party/discord.mjs +1 -1
  3. package/build/Auth.cjs +1 -1
  4. package/build/Auth.mjs +1 -1
  5. package/build/Client.cjs +1 -1
  6. package/build/Client.cjs.map +1 -1
  7. package/build/Client.d.ts +9 -9
  8. package/build/Client.mjs +1 -1
  9. package/build/Client.mjs.map +1 -1
  10. package/build/Connection.cjs +1 -1
  11. package/build/Connection.mjs +1 -1
  12. package/build/HTTP.cjs +1 -1
  13. package/build/HTTP.mjs +1 -1
  14. package/build/Room.cjs +2 -2
  15. package/build/Room.cjs.map +1 -1
  16. package/build/Room.d.ts +2 -2
  17. package/build/Room.mjs +2 -2
  18. package/build/Room.mjs.map +1 -1
  19. package/build/Storage.cjs +1 -1
  20. package/build/Storage.mjs +1 -1
  21. package/build/core/nanoevents.cjs +1 -1
  22. package/build/core/nanoevents.mjs +1 -1
  23. package/build/core/signal.cjs +1 -1
  24. package/build/core/signal.mjs +1 -1
  25. package/build/core/utils.cjs +1 -1
  26. package/build/core/utils.mjs +1 -1
  27. package/build/debug.cjs +1 -1
  28. package/build/debug.mjs +1 -1
  29. package/build/errors/Errors.cjs +1 -1
  30. package/build/errors/Errors.mjs +1 -1
  31. package/build/index.cjs +1 -1
  32. package/build/index.mjs +1 -1
  33. package/build/legacy.cjs +1 -1
  34. package/build/legacy.mjs +1 -1
  35. package/build/serializer/NoneSerializer.cjs +1 -1
  36. package/build/serializer/NoneSerializer.mjs +1 -1
  37. package/build/serializer/SchemaSerializer.cjs +1 -1
  38. package/build/serializer/SchemaSerializer.mjs +1 -1
  39. package/build/serializer/Serializer.cjs +1 -1
  40. package/build/serializer/Serializer.mjs +1 -1
  41. package/build/transport/H3Transport.cjs +1 -1
  42. package/build/transport/H3Transport.mjs +1 -1
  43. package/build/transport/WebSocketTransport.cjs +1 -1
  44. package/build/transport/WebSocketTransport.mjs +1 -1
  45. package/dist/colyseus-cocos-creator.js +15 -6
  46. package/dist/colyseus-cocos-creator.js.map +1 -1
  47. package/dist/colyseus.js +15 -6
  48. package/dist/colyseus.js.map +1 -1
  49. package/dist/debug.js +2 -2
  50. package/dist/debug.js.map +1 -1
  51. package/package.json +3 -3
  52. package/src/Client.ts +21 -21
  53. package/src/Room.ts +11 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colyseus/sdk",
3
- "version": "0.17.19",
3
+ "version": "0.17.21",
4
4
  "description": "Colyseus Multiplayer SDK for JavaScript/TypeScript",
5
5
  "author": "Endel Dreyer",
6
6
  "license": "MIT",
@@ -55,7 +55,7 @@
55
55
  "@colyseus/schema": "^4.0.4",
56
56
  "tslib": "^2.1.0",
57
57
  "ws": "^8.13.0",
58
- "@colyseus/shared-types": "^0.17.2",
58
+ "@colyseus/shared-types": "^0.17.3",
59
59
  "@colyseus/better-call": "^1.2.0"
60
60
  },
61
61
  "devDependencies": {
@@ -82,7 +82,7 @@
82
82
  "typescript": "^5.9.3",
83
83
  "vite": "^5.0.11",
84
84
  "vitest": "^2.1.1",
85
- "@colyseus/core": "^0.17.17"
85
+ "@colyseus/core": "^0.17.21"
86
86
  },
87
87
  "peerDependencies": {
88
88
  "@colyseus/core": "0.17.x"
package/src/Client.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CloseCode, Protocol, type SDKTypes, type ServerRoomLike, type ISeatReservation } from '@colyseus/shared-types';
1
+ import { CloseCode, Protocol, type InferState, type SDKTypes, type ServerRoomLike, type ISeatReservation } from '@colyseus/shared-types';
2
2
 
3
3
  import { MatchMakeError, ServerError } from './errors/Errors.ts';
4
4
  import { Room } from './Room.ts';
@@ -156,15 +156,15 @@ export class ColyseusSDK<ServerType extends SDKTypes = any, UserData = any> {
156
156
  }
157
157
 
158
158
  // Overload: Use room name from ServerType to infer room type
159
- public async joinOrCreate<R extends keyof ServerType['~rooms']>(
159
+ public async joinOrCreate<R extends keyof ServerType['~rooms'], State = InferState<ServerType['~rooms'][R]['~room'], never>>(
160
160
  roomName: R,
161
- options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],
162
- rootSchema?: SchemaConstructor<ServerType>
163
- ): Promise<Room<ServerType['~rooms'][R]['~room']>>
161
+ options?: Parameters<ServerType['~rooms'][R]['~room']['onJoin']>[1],
162
+ rootSchema?: SchemaConstructor<State>
163
+ ): Promise<Room<ServerType['~rooms'][R]['~room'], State>>
164
164
  // Overload: Pass RoomType directly to extract state
165
165
  public async joinOrCreate<RoomType extends ServerRoomLike>(
166
166
  roomName: string,
167
- options?: Parameters<RoomType['onJoin']>[1],
167
+ options?: Parameters<NonNullable<RoomType['onJoin']>>[1],
168
168
  rootSchema?: SchemaConstructor<RoomType['state']>
169
169
  ): Promise<Room<RoomType, RoomType['state']>>
170
170
  // Overload: Pass State type directly
@@ -179,15 +179,15 @@ export class ColyseusSDK<ServerType extends SDKTypes = any, UserData = any> {
179
179
  }
180
180
 
181
181
  // Overload: Use room name from ServerType to infer room type
182
- public async create<R extends keyof ServerType['~rooms']>(
182
+ public async create<R extends keyof ServerType['~rooms'], State = InferState<ServerType['~rooms'][R]['~room'], never>>(
183
183
  roomName: R,
184
- options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],
185
- rootSchema?: SchemaConstructor<ServerType>
186
- ): Promise<Room<ServerType['~rooms'][R]['~room']>>
184
+ options?: Parameters<ServerType['~rooms'][R]['~room']['onJoin']>[1],
185
+ rootSchema?: SchemaConstructor<State>
186
+ ): Promise<Room<ServerType['~rooms'][R]['~room'], State>>
187
187
  // Overload: Pass RoomType directly to extract state
188
188
  public async create<RoomType extends ServerRoomLike>(
189
189
  roomName: string,
190
- options?: Parameters<RoomType['onJoin']>[1],
190
+ options?: Parameters<NonNullable<RoomType['onJoin']>>[1],
191
191
  rootSchema?: SchemaConstructor<RoomType['state']>
192
192
  ): Promise<Room<RoomType, RoomType['state']>>
193
193
  // Overload: Pass State type directly
@@ -202,15 +202,15 @@ export class ColyseusSDK<ServerType extends SDKTypes = any, UserData = any> {
202
202
  }
203
203
 
204
204
  // Overload: Use room name from ServerType to infer room type
205
- public async join<R extends keyof ServerType['~rooms']>(
205
+ public async join<R extends keyof ServerType['~rooms'], State = InferState<ServerType['~rooms'][R]['~room'], never>>(
206
206
  roomName: R,
207
- options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],
208
- rootSchema?: SchemaConstructor<ServerType>
209
- ): Promise<Room<ServerType['~rooms'][R]['~room']>>
207
+ options?: Parameters<ServerType['~rooms'][R]['~room']['onJoin']>[1],
208
+ rootSchema?: SchemaConstructor<State>
209
+ ): Promise<Room<ServerType['~rooms'][R]['~room'], State>>
210
210
  // Overload: Pass RoomType directly to extract state
211
211
  public async join<RoomType extends ServerRoomLike>(
212
212
  roomName: string,
213
- options?: Parameters<RoomType['onJoin']>[1],
213
+ options?: Parameters<NonNullable<RoomType['onJoin']>>[1],
214
214
  rootSchema?: SchemaConstructor<RoomType['state']>
215
215
  ): Promise<Room<RoomType, RoomType['state']>>
216
216
  // Overload: Pass State type directly
@@ -225,15 +225,15 @@ export class ColyseusSDK<ServerType extends SDKTypes = any, UserData = any> {
225
225
  }
226
226
 
227
227
  // Overload: Use room name from ServerType to infer room type
228
- public async joinById<R extends keyof ServerType['~rooms']>(
228
+ public async joinById<R extends keyof ServerType['~rooms'], State = InferState<ServerType['~rooms'][R]['~room'], never>>(
229
229
  roomName: R,
230
- options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],
231
- rootSchema?: SchemaConstructor<ServerType>
232
- ): Promise<Room<ServerType['~rooms'][R]['~room']>>
230
+ options?: Parameters<ServerType['~rooms'][R]['~room']['onJoin']>[1],
231
+ rootSchema?: SchemaConstructor<State>
232
+ ): Promise<Room<ServerType['~rooms'][R]['~room'], State>>
233
233
  // Overload: Pass RoomType directly to extract state
234
234
  public async joinById<RoomType extends ServerRoomLike>(
235
235
  roomId: string,
236
- options?: Parameters<RoomType['onJoin']>[1],
236
+ options?: Parameters<NonNullable<RoomType['onJoin']>>[1],
237
237
  rootSchema?: SchemaConstructor<RoomType['state']>
238
238
  ): Promise<Room<RoomType, RoomType['state']>>
239
239
  // Overload: Pass State type directly
package/src/Room.ts CHANGED
@@ -129,7 +129,7 @@ export class Room<
129
129
  protected packr: Packr;
130
130
 
131
131
  #lastPingTime: number = 0;
132
- #pingCallback: (ms: number) => void;
132
+ #pingCallback?: (ms: number) => void = undefined;
133
133
 
134
134
  constructor(name: string, rootSchema?: SchemaConstructor<State>) {
135
135
  this.name = name;
@@ -221,7 +221,11 @@ export class Room<
221
221
  callback: (payload: ExtractRoomClientMessages<NormalizeRoomType<T>>[MessageType]) => void
222
222
  ): () => void
223
223
  public onMessage<Payload = any>(type: "*", callback: (messageType: string | number, payload: Payload) => void): () => void
224
- public onMessage<Payload = any>(type: string | number, callback: (payload: Payload) => void): () => void
224
+ // Fallback overload: only available when no typed client messages are defined
225
+ public onMessage<Payload = any>(
226
+ type: [keyof ExtractRoomClientMessages<NormalizeRoomType<T>>] extends [never] ? (string | number) : never,
227
+ callback: (payload: Payload) => void
228
+ ): () => void
225
229
  public onMessage(type: '*' | string | number, callback: (...args: any[]) => void) {
226
230
  return this.onMessageHandlers.on(this.getMessageHandlerKey(type), callback);
227
231
  }
@@ -242,7 +246,11 @@ export class Room<
242
246
  messageType: MessageType,
243
247
  payload?: ExtractMessageType<ExtractRoomMessages<NormalizeRoomType<T>>[MessageType]>
244
248
  ): void
245
- public send<Payload = any>(messageType: string | number, payload?: Payload): void
249
+ // Fallback overload: only available when no typed messages are defined
250
+ public send<Payload = any>(
251
+ messageType: [keyof ExtractRoomMessages<NormalizeRoomType<T>>] extends [never] ? (string | number) : never,
252
+ payload?: Payload
253
+ ): void
246
254
  public send(messageType: string | number, payload?: any): void {
247
255
  const it: Iterator = { offset: 1 };
248
256
  this.packr.buffer[0] = Protocol.ROOM_DATA;