@colyseus/core 0.16.0-preview.29 → 0.16.0-preview.30

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 (118) hide show
  1. package/build/Debug.js +2 -2
  2. package/build/Debug.js.map +1 -1
  3. package/build/Debug.mjs +11 -10
  4. package/build/Debug.mjs.map +2 -2
  5. package/build/IPC.d.ts +1 -1
  6. package/build/IPC.js +3 -3
  7. package/build/IPC.js.map +1 -1
  8. package/build/IPC.mjs +4 -3
  9. package/build/IPC.mjs.map +2 -2
  10. package/build/Logger.mjs +4 -3
  11. package/build/Logger.mjs.map +1 -1
  12. package/build/MatchMaker.d.ts +11 -11
  13. package/build/MatchMaker.js +16 -16
  14. package/build/MatchMaker.js.map +1 -1
  15. package/build/MatchMaker.mjs +28 -27
  16. package/build/MatchMaker.mjs.map +2 -2
  17. package/build/Protocol.mjs +3 -2
  18. package/build/Protocol.mjs.map +1 -1
  19. package/build/Room.d.ts +6 -6
  20. package/build/Room.js +10 -10
  21. package/build/Room.js.map +1 -1
  22. package/build/Room.mjs +18 -17
  23. package/build/Room.mjs.map +2 -2
  24. package/build/Server.d.ts +6 -6
  25. package/build/Server.js +9 -9
  26. package/build/Server.js.map +1 -1
  27. package/build/Server.mjs +14 -13
  28. package/build/Server.mjs.map +3 -3
  29. package/build/Stats.js +1 -1
  30. package/build/Stats.js.map +1 -1
  31. package/build/Stats.mjs +6 -5
  32. package/build/Stats.mjs.map +2 -2
  33. package/build/Transport.js +1 -1
  34. package/build/Transport.js.map +1 -1
  35. package/build/Transport.mjs +6 -5
  36. package/build/Transport.mjs.map +2 -2
  37. package/build/discovery/index.d.ts +1 -1
  38. package/build/discovery/index.js.map +1 -1
  39. package/build/discovery/index.mjs +3 -2
  40. package/build/discovery/index.mjs.map +2 -2
  41. package/build/errors/SeatReservationError.mjs +3 -2
  42. package/build/errors/SeatReservationError.mjs.map +1 -1
  43. package/build/errors/ServerError.js +1 -1
  44. package/build/errors/ServerError.js.map +1 -1
  45. package/build/errors/ServerError.mjs +5 -4
  46. package/build/errors/ServerError.mjs.map +2 -2
  47. package/build/index.d.ts +20 -19
  48. package/build/index.js +23 -18
  49. package/build/index.js.map +2 -2
  50. package/build/index.mjs +21 -17
  51. package/build/index.mjs.map +2 -2
  52. package/build/matchmaker/Lobby.d.ts +2 -2
  53. package/build/matchmaker/Lobby.js +1 -1
  54. package/build/matchmaker/Lobby.js.map +1 -1
  55. package/build/matchmaker/Lobby.mjs +3 -2
  56. package/build/matchmaker/Lobby.mjs.map +2 -2
  57. package/build/matchmaker/RegisteredHandler.d.ts +3 -3
  58. package/build/matchmaker/RegisteredHandler.js +2 -7
  59. package/build/matchmaker/RegisteredHandler.js.map +2 -2
  60. package/build/matchmaker/RegisteredHandler.mjs +6 -10
  61. package/build/matchmaker/RegisteredHandler.mjs.map +2 -2
  62. package/build/matchmaker/controller.d.ts +3 -3
  63. package/build/matchmaker/controller.js +3 -3
  64. package/build/matchmaker/controller.js.map +1 -1
  65. package/build/matchmaker/controller.mjs +4 -3
  66. package/build/matchmaker/controller.mjs.map +2 -2
  67. package/build/matchmaker/driver/api.mjs +1 -0
  68. package/build/matchmaker/driver/api.mjs.map +1 -1
  69. package/build/matchmaker/driver/local/LocalDriver.d.ts +2 -2
  70. package/build/matchmaker/driver/local/LocalDriver.js +3 -3
  71. package/build/matchmaker/driver/local/LocalDriver.js.map +1 -1
  72. package/build/matchmaker/driver/local/LocalDriver.mjs +6 -5
  73. package/build/matchmaker/driver/local/LocalDriver.mjs.map +2 -2
  74. package/build/matchmaker/driver/local/Query.d.ts +1 -1
  75. package/build/matchmaker/driver/local/Query.js.map +1 -1
  76. package/build/matchmaker/driver/local/Query.mjs +3 -2
  77. package/build/matchmaker/driver/local/Query.mjs.map +2 -2
  78. package/build/matchmaker/driver/local/RoomData.d.ts +1 -1
  79. package/build/matchmaker/driver/local/RoomData.js +1 -1
  80. package/build/matchmaker/driver/local/RoomData.js.map +1 -1
  81. package/build/matchmaker/driver/local/RoomData.mjs +4 -3
  82. package/build/matchmaker/driver/local/RoomData.mjs.map +2 -2
  83. package/build/presence/LocalPresence.d.ts +1 -1
  84. package/build/presence/LocalPresence.js +2 -2
  85. package/build/presence/LocalPresence.js.map +1 -1
  86. package/build/presence/LocalPresence.mjs +6 -5
  87. package/build/presence/LocalPresence.mjs.map +2 -2
  88. package/build/rooms/LobbyRoom.d.ts +3 -3
  89. package/build/rooms/LobbyRoom.js +3 -3
  90. package/build/rooms/LobbyRoom.js.map +1 -1
  91. package/build/rooms/LobbyRoom.mjs +6 -5
  92. package/build/rooms/LobbyRoom.mjs.map +2 -2
  93. package/build/rooms/RelayRoom.d.ts +2 -2
  94. package/build/rooms/RelayRoom.js +1 -1
  95. package/build/rooms/RelayRoom.js.map +1 -1
  96. package/build/rooms/RelayRoom.mjs +8 -7
  97. package/build/rooms/RelayRoom.mjs.map +2 -2
  98. package/build/serializer/NoneSerializer.d.ts +2 -2
  99. package/build/serializer/NoneSerializer.js.map +1 -1
  100. package/build/serializer/NoneSerializer.mjs +3 -2
  101. package/build/serializer/NoneSerializer.mjs.map +2 -2
  102. package/build/serializer/SchemaSerializer.d.ts +2 -2
  103. package/build/serializer/SchemaSerializer.js +3 -3
  104. package/build/serializer/SchemaSerializer.js.map +1 -1
  105. package/build/serializer/SchemaSerializer.mjs +7 -6
  106. package/build/serializer/SchemaSerializer.mjs.map +2 -2
  107. package/build/serializer/Serializer.d.ts +1 -1
  108. package/build/serializer/Serializer.js.map +1 -1
  109. package/build/utils/DevMode.d.ts +2 -2
  110. package/build/utils/DevMode.js +3 -3
  111. package/build/utils/DevMode.js.map +1 -1
  112. package/build/utils/DevMode.mjs +6 -5
  113. package/build/utils/DevMode.mjs.map +2 -2
  114. package/build/utils/Utils.js +1 -1
  115. package/build/utils/Utils.js.map +2 -2
  116. package/build/utils/Utils.mjs +11 -10
  117. package/build/utils/Utils.mjs.map +2 -2
  118. package/package.json +8 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Stats.ts"],
4
- "sourcesContent": ["import { presence, processId } from \"./MatchMaker\";\n\nexport type Stats = {\n roomCount: number;\n ccu: number;\n}\n\nexport let local: Stats = {\n roomCount: 0,\n ccu: 0,\n};\n\nexport async function fetchAll() {\n // TODO: cache this value to avoid querying too often\n const allStats: Array<Stats & { processId: string }> = [];\n const allProcesses = await presence.hgetall(getRoomCountKey());\n for (let remoteProcessId in allProcesses) {\n if (remoteProcessId === processId) {\n allStats.push({ processId, roomCount: local.roomCount, ccu: local.ccu, });\n\n } else {\n const [roomCount, ccu] = allProcesses[remoteProcessId].split(',').map(Number);\n allStats.push({ processId: remoteProcessId, roomCount, ccu });\n }\n }\n return allStats;\n}\n\nlet lastPersisted = 0;\nlet persistTimeout = undefined;\nconst persistInterval = 1000;\n\nexport function persist(forceNow: boolean = false) {\n /**\n * Avoid persisting too often.\n */\n const now = Date.now();\n\n if (forceNow || (now - lastPersisted > persistInterval)) {\n lastPersisted = now;\n return presence.hset(getRoomCountKey(), processId, `${local.roomCount},${local.ccu}`);\n\n } else {\n clearTimeout(persistTimeout);\n persistTimeout = setTimeout(persist, persistInterval);\n }\n}\n\nexport function reset(_persist: boolean = true) {\n local.roomCount = 0;\n local.ccu = 0;\n\n if (_persist) {\n lastPersisted = 0;\n clearTimeout(persistTimeout);\n persist();\n }\n}\n\nexport function excludeProcess(_processId: string) {\n return presence.hdel(getRoomCountKey(), _processId);\n}\n\nexport async function getGlobalCCU() {\n const allStats = await fetchAll();\n return allStats.reduce((prev, next) => prev + next.ccu, 0);\n}\n\nfunction getRoomCountKey() {\n return 'roomcount';\n}"],
5
- "mappings": "AAAA,SAAS,UAAU,iBAAiB;AAO7B,IAAI,QAAe;AAAA,EACxB,WAAW;AAAA,EACX,KAAK;AACP;AAEA,eAAsB,WAAW;AAE/B,QAAM,WAAiD,CAAC;AACxD,QAAM,eAAe,MAAM,SAAS,QAAQ,gBAAgB,CAAC;AAC7D,WAAS,mBAAmB,cAAc;AACxC,QAAI,oBAAoB,WAAW;AACjC,eAAS,KAAK,EAAE,WAAW,WAAW,MAAM,WAAW,KAAK,MAAM,IAAK,CAAC;AAAA,IAE1E,OAAO;AACL,YAAM,CAAC,WAAW,GAAG,IAAI,aAAa,eAAe,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5E,eAAS,KAAK,EAAE,WAAW,iBAAiB,WAAW,IAAI,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,MAAM,kBAAkB;AAEjB,SAAS,QAAQ,WAAoB,OAAO;AAIjD,QAAM,MAAM,KAAK,IAAI;AAErB,MAAI,YAAa,MAAM,gBAAgB,iBAAkB;AACvD,oBAAgB;AAChB,WAAO,SAAS,KAAK,gBAAgB,GAAG,WAAW,GAAG,MAAM,SAAS,IAAI,MAAM,GAAG,EAAE;AAAA,EAEtF,OAAO;AACL,iBAAa,cAAc;AAC3B,qBAAiB,WAAW,SAAS,eAAe;AAAA,EACtD;AACF;AAEO,SAAS,MAAM,WAAoB,MAAM;AAC9C,QAAM,YAAY;AAClB,QAAM,MAAM;AAEZ,MAAI,UAAU;AACZ,oBAAgB;AAChB,iBAAa,cAAc;AAC3B,YAAQ;AAAA,EACV;AACF;AAEO,SAAS,eAAe,YAAoB;AACjD,SAAO,SAAS,KAAK,gBAAgB,GAAG,UAAU;AACpD;AAEA,eAAsB,eAAe;AACnC,QAAM,WAAW,MAAM,SAAS;AAChC,SAAO,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,KAAK,KAAK,CAAC;AAC3D;AAEA,SAAS,kBAAkB;AACzB,SAAO;AACT;",
4
+ "sourcesContent": ["import { presence, processId } from './MatchMaker.js';\n\nexport type Stats = {\n roomCount: number;\n ccu: number;\n}\n\nexport let local: Stats = {\n roomCount: 0,\n ccu: 0,\n};\n\nexport async function fetchAll() {\n // TODO: cache this value to avoid querying too often\n const allStats: Array<Stats & { processId: string }> = [];\n const allProcesses = await presence.hgetall(getRoomCountKey());\n for (let remoteProcessId in allProcesses) {\n if (remoteProcessId === processId) {\n allStats.push({ processId, roomCount: local.roomCount, ccu: local.ccu, });\n\n } else {\n const [roomCount, ccu] = allProcesses[remoteProcessId].split(',').map(Number);\n allStats.push({ processId: remoteProcessId, roomCount, ccu });\n }\n }\n return allStats;\n}\n\nlet lastPersisted = 0;\nlet persistTimeout = undefined;\nconst persistInterval = 1000;\n\nexport function persist(forceNow: boolean = false) {\n /**\n * Avoid persisting too often.\n */\n const now = Date.now();\n\n if (forceNow || (now - lastPersisted > persistInterval)) {\n lastPersisted = now;\n return presence.hset(getRoomCountKey(), processId, `${local.roomCount},${local.ccu}`);\n\n } else {\n clearTimeout(persistTimeout);\n persistTimeout = setTimeout(persist, persistInterval);\n }\n}\n\nexport function reset(_persist: boolean = true) {\n local.roomCount = 0;\n local.ccu = 0;\n\n if (_persist) {\n lastPersisted = 0;\n clearTimeout(persistTimeout);\n persist();\n }\n}\n\nexport function excludeProcess(_processId: string) {\n return presence.hdel(getRoomCountKey(), _processId);\n}\n\nexport async function getGlobalCCU() {\n const allStats = await fetchAll();\n return allStats.reduce((prev, next) => prev + next.ccu, 0);\n}\n\nfunction getRoomCountKey() {\n return 'roomcount';\n}"],
5
+ "mappings": ";AAAA,SAAS,UAAU,iBAAiB;AAO7B,IAAI,QAAe;AAAA,EACxB,WAAW;AAAA,EACX,KAAK;AACP;AAEA,eAAsB,WAAW;AAE/B,QAAM,WAAiD,CAAC;AACxD,QAAM,eAAe,MAAM,SAAS,QAAQ,gBAAgB,CAAC;AAC7D,WAAS,mBAAmB,cAAc;AACxC,QAAI,oBAAoB,WAAW;AACjC,eAAS,KAAK,EAAE,WAAW,WAAW,MAAM,WAAW,KAAK,MAAM,IAAK,CAAC;AAAA,IAE1E,OAAO;AACL,YAAM,CAAC,WAAW,GAAG,IAAI,aAAa,eAAe,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5E,eAAS,KAAK,EAAE,WAAW,iBAAiB,WAAW,IAAI,CAAC;AAAA,IAC9D;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAM,kBAAkB;AAEjB,SAAS,QAAQ,WAAoB,OAAO;AAIjD,QAAM,MAAM,KAAK,IAAI;AAErB,MAAI,YAAa,MAAM,gBAAgB,iBAAkB;AACvD,oBAAgB;AAChB,WAAO,SAAS,KAAK,gBAAgB,GAAG,WAAW,GAAG,MAAM,SAAS,IAAI,MAAM,GAAG,EAAE;AAAA,EAEtF,OAAO;AACL,iBAAa,cAAc;AAC3B,qBAAiB,WAAW,SAAS,eAAe;AAAA,EACtD;AACF;AAEO,SAAS,MAAM,WAAoB,MAAM;AAC9C,QAAM,YAAY;AAClB,QAAM,MAAM;AAEZ,MAAI,UAAU;AACZ,oBAAgB;AAChB,iBAAa,cAAc;AAC3B,YAAQ;AAAA,EACV;AACF;AAEO,SAAS,eAAe,YAAoB;AACjD,SAAO,SAAS,KAAK,gBAAgB,GAAG,UAAU;AACpD;AAEA,eAAsB,eAAe;AACnC,QAAM,WAAW,MAAM,SAAS;AAChC,SAAO,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,KAAK,KAAK,CAAC;AAC3D;AAEA,SAAS,kBAAkB;AACzB,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,7 @@ __export(Transport_exports, {
22
22
  Transport: () => Transport
23
23
  });
24
24
  module.exports = __toCommonJS(Transport_exports);
25
- var import_Utils = require("./utils/Utils");
25
+ var import_Utils = require("./utils/Utils.js");
26
26
  class Transport {
27
27
  }
28
28
  var ClientState = /* @__PURE__ */ ((ClientState2) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Transport.ts"],
4
- "sourcesContent": ["import * as http from 'http';\nimport * as https from 'https';\nimport * as net from 'net';\n\nimport { Schema, StateView } from '@colyseus/schema';\nimport { EventEmitter } from 'events';\nimport { spliceOne } from './utils/Utils';\n\nexport abstract class Transport {\n public protocol?: string;\n public server?: net.Server | http.Server | https.Server;\n\n public abstract listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n public abstract shutdown(): void;\n\n public abstract simulateLatency(milliseconds: number): void;\n}\n\nexport interface ISendOptions {\n afterNextPatch?: boolean;\n}\n\nexport enum ClientState { JOINING, JOINED, RECONNECTED, LEAVING }\n\n/**\n * The client instance from the server-side is responsible for the transport layer between the server and the client.\n * It should not be confused with the Client from the client-side SDK, as they have completely different purposes!\n * You operate on client instances from `this.clients`, `Room#onJoin()`, `Room#onLeave()` and `Room#onMessage()`.\n *\n * - This is the raw WebSocket connection coming from the `ws` package. There are more methods available which aren't\n * encouraged to use along with Colyseus.\n */\nexport interface Client<UserData=any, AuthData=any> {\n ref: EventEmitter;\n\n /**\n * @deprecated use `sessionId` instead.\n */\n id: string;\n\n /**\n * Unique id per session.\n */\n sessionId: string; // TODO: remove sessionId on version 1.0.0\n\n /**\n * Connection state\n */\n state: ClientState;\n\n /**\n * Optional: when using `@view()` decorator in your state properties, this will be the view instance for this client.\n */\n view?: StateView;\n\n /**\n * User-defined data can be attached to the Client instance through this variable.\n * - Can be used to store custom data about the client's connection. userData is not synchronized with the client,\n * and should be used only to keep player-specific with its connection.\n */\n userData?: UserData;\n\n /**\n * auth data provided by your `onAuth`\n */\n auth?: AuthData;\n\n /**\n * Reconnection token used to re-join the room after onLeave + allowReconnection().\n *\n * IMPORTANT:\n * This is not the full reconnection token the client provides for the server.\n * The format provided by .reconnect() from the client-side must follow: \"${roomId}:${reconnectionToken}\"\n */\n reconnectionToken: string;\n\n raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void): void;\n enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions): void;\n\n /**\n * Send a type of message to the client. Messages are encoded with MsgPack and can hold any\n * JSON-serializable data structure.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param message Message payload. (automatically encoded with msgpack.)\n * @param options\n */\n send(type: string | number, message?: any, options?: ISendOptions): void;\n send(message: Schema, options?: ISendOptions): void;\n\n /**\n * Send raw bytes to this specific client.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param bytes Raw byte array payload\n * @param options\n */\n sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions): void;\n\n /**\n * Disconnect this client from the room.\n *\n * @param code Custom close code. Default value is 1000.\n * @param data\n * @see {@link https://docs.colyseus.io/colyseus/server/room/#leavecode-number}\n */\n leave(code?: number, data?: string): void;\n\n /**\n * @deprecated Use .leave() instead.\n */\n close(code?: number, data?: string): void;\n\n /**\n * Triggers `onError` with specified code to the client-side.\n *\n * @param code\n * @param message\n */\n error(code: number, message?: string): void;\n}\n\n/**\n * Private properties of the Client instance.\n * Only accessible internally by the framework, should not be encouraged/auto-completed for the user.\n *\n * TODO: refactor this.\n * @private\n */\nexport interface ClientPrivate {\n readyState: number; // TODO: remove readyState on version 1.0.0. Use only \"state\" instead.\n _enqueuedMessages?: any[];\n _afterNextPatchQueue: Array<[string | Client, IArguments]>;\n _joinedAt: number; // \"elapsedTime\" when the client joined the room.\n}\n\nexport class ClientArray<UserData = any, AuthData = any> extends Array<Client<UserData, AuthData>> {\n public getById(sessionId: string): Client<UserData, AuthData> | undefined {\n return this.find((client) => client.sessionId === sessionId);\n }\n\n public delete(client: Client<UserData, AuthData>): boolean {\n return spliceOne(this, this.indexOf(client));\n }\n}"],
4
+ "sourcesContent": ["import * as http from 'http';\nimport * as https from 'https';\nimport * as net from 'net';\n\nimport { Schema, StateView } from '@colyseus/schema';\nimport { EventEmitter } from 'events';\nimport { spliceOne } from './utils/Utils.js';\n\nexport abstract class Transport {\n public protocol?: string;\n public server?: net.Server | http.Server | https.Server;\n\n public abstract listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n public abstract shutdown(): void;\n\n public abstract simulateLatency(milliseconds: number): void;\n}\n\nexport interface ISendOptions {\n afterNextPatch?: boolean;\n}\n\nexport enum ClientState { JOINING, JOINED, RECONNECTED, LEAVING }\n\n/**\n * The client instance from the server-side is responsible for the transport layer between the server and the client.\n * It should not be confused with the Client from the client-side SDK, as they have completely different purposes!\n * You operate on client instances from `this.clients`, `Room#onJoin()`, `Room#onLeave()` and `Room#onMessage()`.\n *\n * - This is the raw WebSocket connection coming from the `ws` package. There are more methods available which aren't\n * encouraged to use along with Colyseus.\n */\nexport interface Client<UserData=any, AuthData=any> {\n ref: EventEmitter;\n\n /**\n * @deprecated use `sessionId` instead.\n */\n id: string;\n\n /**\n * Unique id per session.\n */\n sessionId: string; // TODO: remove sessionId on version 1.0.0\n\n /**\n * Connection state\n */\n state: ClientState;\n\n /**\n * Optional: when using `@view()` decorator in your state properties, this will be the view instance for this client.\n */\n view?: StateView;\n\n /**\n * User-defined data can be attached to the Client instance through this variable.\n * - Can be used to store custom data about the client's connection. userData is not synchronized with the client,\n * and should be used only to keep player-specific with its connection.\n */\n userData?: UserData;\n\n /**\n * auth data provided by your `onAuth`\n */\n auth?: AuthData;\n\n /**\n * Reconnection token used to re-join the room after onLeave + allowReconnection().\n *\n * IMPORTANT:\n * This is not the full reconnection token the client provides for the server.\n * The format provided by .reconnect() from the client-side must follow: \"${roomId}:${reconnectionToken}\"\n */\n reconnectionToken: string;\n\n raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void): void;\n enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions): void;\n\n /**\n * Send a type of message to the client. Messages are encoded with MsgPack and can hold any\n * JSON-serializable data structure.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param message Message payload. (automatically encoded with msgpack.)\n * @param options\n */\n send(type: string | number, message?: any, options?: ISendOptions): void;\n send(message: Schema, options?: ISendOptions): void;\n\n /**\n * Send raw bytes to this specific client.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param bytes Raw byte array payload\n * @param options\n */\n sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions): void;\n\n /**\n * Disconnect this client from the room.\n *\n * @param code Custom close code. Default value is 1000.\n * @param data\n * @see {@link https://docs.colyseus.io/colyseus/server/room/#leavecode-number}\n */\n leave(code?: number, data?: string): void;\n\n /**\n * @deprecated Use .leave() instead.\n */\n close(code?: number, data?: string): void;\n\n /**\n * Triggers `onError` with specified code to the client-side.\n *\n * @param code\n * @param message\n */\n error(code: number, message?: string): void;\n}\n\n/**\n * Private properties of the Client instance.\n * Only accessible internally by the framework, should not be encouraged/auto-completed for the user.\n *\n * TODO: refactor this.\n * @private\n */\nexport interface ClientPrivate {\n readyState: number; // TODO: remove readyState on version 1.0.0. Use only \"state\" instead.\n _enqueuedMessages?: any[];\n _afterNextPatchQueue: Array<[string | Client, IArguments]>;\n _joinedAt: number; // \"elapsedTime\" when the client joined the room.\n}\n\nexport class ClientArray<UserData = any, AuthData = any> extends Array<Client<UserData, AuthData>> {\n public getById(sessionId: string): Client<UserData, AuthData> | undefined {\n return this.find((client) => client.sessionId === sessionId);\n }\n\n public delete(client: Client<UserData, AuthData>): boolean {\n return spliceOne(this, this.indexOf(client));\n }\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,mBAA0B;AAEnB,MAAe,UAAU;AAQhC;AAMO,IAAK,cAAL,kBAAKA,iBAAL;AAAmB,EAAAA,0BAAA;AAAS,EAAAA,0BAAA;AAAQ,EAAAA,0BAAA;AAAa,EAAAA,0BAAA;AAA5C,SAAAA;AAAA,GAAA;AAkHL,MAAM,oBAAoD,MAAkC;AAAA,EAC1F,QAAQ,WAA2D;AACxE,WAAO,KAAK,KAAK,CAAC,WAAW,OAAO,cAAc,SAAS;AAAA,EAC7D;AAAA,EAEO,OAAO,QAA6C;AACzD,eAAO,wBAAU,MAAM,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC7C;AACF;",
6
6
  "names": ["ClientState"]
7
7
  }
@@ -1,6 +1,7 @@
1
- import { spliceOne } from "./utils/Utils";
2
- class Transport {
3
- }
1
+ // packages/core/src/Transport.ts
2
+ import { spliceOne } from "./utils/Utils.mjs";
3
+ var Transport = class {
4
+ };
4
5
  var ClientState = /* @__PURE__ */ ((ClientState2) => {
5
6
  ClientState2[ClientState2["JOINING"] = 0] = "JOINING";
6
7
  ClientState2[ClientState2["JOINED"] = 1] = "JOINED";
@@ -8,14 +9,14 @@ var ClientState = /* @__PURE__ */ ((ClientState2) => {
8
9
  ClientState2[ClientState2["LEAVING"] = 3] = "LEAVING";
9
10
  return ClientState2;
10
11
  })(ClientState || {});
11
- class ClientArray extends Array {
12
+ var ClientArray = class extends Array {
12
13
  getById(sessionId) {
13
14
  return this.find((client) => client.sessionId === sessionId);
14
15
  }
15
16
  delete(client) {
16
17
  return spliceOne(this, this.indexOf(client));
17
18
  }
18
- }
19
+ };
19
20
  export {
20
21
  ClientArray,
21
22
  ClientState,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Transport.ts"],
4
- "sourcesContent": ["import * as http from 'http';\nimport * as https from 'https';\nimport * as net from 'net';\n\nimport { Schema, StateView } from '@colyseus/schema';\nimport { EventEmitter } from 'events';\nimport { spliceOne } from './utils/Utils';\n\nexport abstract class Transport {\n public protocol?: string;\n public server?: net.Server | http.Server | https.Server;\n\n public abstract listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n public abstract shutdown(): void;\n\n public abstract simulateLatency(milliseconds: number): void;\n}\n\nexport interface ISendOptions {\n afterNextPatch?: boolean;\n}\n\nexport enum ClientState { JOINING, JOINED, RECONNECTED, LEAVING }\n\n/**\n * The client instance from the server-side is responsible for the transport layer between the server and the client.\n * It should not be confused with the Client from the client-side SDK, as they have completely different purposes!\n * You operate on client instances from `this.clients`, `Room#onJoin()`, `Room#onLeave()` and `Room#onMessage()`.\n *\n * - This is the raw WebSocket connection coming from the `ws` package. There are more methods available which aren't\n * encouraged to use along with Colyseus.\n */\nexport interface Client<UserData=any, AuthData=any> {\n ref: EventEmitter;\n\n /**\n * @deprecated use `sessionId` instead.\n */\n id: string;\n\n /**\n * Unique id per session.\n */\n sessionId: string; // TODO: remove sessionId on version 1.0.0\n\n /**\n * Connection state\n */\n state: ClientState;\n\n /**\n * Optional: when using `@view()` decorator in your state properties, this will be the view instance for this client.\n */\n view?: StateView;\n\n /**\n * User-defined data can be attached to the Client instance through this variable.\n * - Can be used to store custom data about the client's connection. userData is not synchronized with the client,\n * and should be used only to keep player-specific with its connection.\n */\n userData?: UserData;\n\n /**\n * auth data provided by your `onAuth`\n */\n auth?: AuthData;\n\n /**\n * Reconnection token used to re-join the room after onLeave + allowReconnection().\n *\n * IMPORTANT:\n * This is not the full reconnection token the client provides for the server.\n * The format provided by .reconnect() from the client-side must follow: \"${roomId}:${reconnectionToken}\"\n */\n reconnectionToken: string;\n\n raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void): void;\n enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions): void;\n\n /**\n * Send a type of message to the client. Messages are encoded with MsgPack and can hold any\n * JSON-serializable data structure.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param message Message payload. (automatically encoded with msgpack.)\n * @param options\n */\n send(type: string | number, message?: any, options?: ISendOptions): void;\n send(message: Schema, options?: ISendOptions): void;\n\n /**\n * Send raw bytes to this specific client.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param bytes Raw byte array payload\n * @param options\n */\n sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions): void;\n\n /**\n * Disconnect this client from the room.\n *\n * @param code Custom close code. Default value is 1000.\n * @param data\n * @see {@link https://docs.colyseus.io/colyseus/server/room/#leavecode-number}\n */\n leave(code?: number, data?: string): void;\n\n /**\n * @deprecated Use .leave() instead.\n */\n close(code?: number, data?: string): void;\n\n /**\n * Triggers `onError` with specified code to the client-side.\n *\n * @param code\n * @param message\n */\n error(code: number, message?: string): void;\n}\n\n/**\n * Private properties of the Client instance.\n * Only accessible internally by the framework, should not be encouraged/auto-completed for the user.\n *\n * TODO: refactor this.\n * @private\n */\nexport interface ClientPrivate {\n readyState: number; // TODO: remove readyState on version 1.0.0. Use only \"state\" instead.\n _enqueuedMessages?: any[];\n _afterNextPatchQueue: Array<[string | Client, IArguments]>;\n _joinedAt: number; // \"elapsedTime\" when the client joined the room.\n}\n\nexport class ClientArray<UserData = any, AuthData = any> extends Array<Client<UserData, AuthData>> {\n public getById(sessionId: string): Client<UserData, AuthData> | undefined {\n return this.find((client) => client.sessionId === sessionId);\n }\n\n public delete(client: Client<UserData, AuthData>): boolean {\n return spliceOne(this, this.indexOf(client));\n }\n}"],
5
- "mappings": "AAMA,SAAS,iBAAiB;AAEnB,MAAe,UAAU;AAQhC;AAMO,IAAK,cAAL,kBAAKA,iBAAL;AAAmB,EAAAA,0BAAA;AAAS,EAAAA,0BAAA;AAAQ,EAAAA,0BAAA;AAAa,EAAAA,0BAAA;AAA5C,SAAAA;AAAA,GAAA;AAkHL,MAAM,oBAAoD,MAAkC;AAAA,EAC1F,QAAQ,WAA2D;AACxE,WAAO,KAAK,KAAK,CAAC,WAAW,OAAO,cAAc,SAAS;AAAA,EAC7D;AAAA,EAEO,OAAO,QAA6C;AACzD,WAAO,UAAU,MAAM,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC7C;AACF;",
4
+ "sourcesContent": ["import * as http from 'http';\nimport * as https from 'https';\nimport * as net from 'net';\n\nimport { Schema, StateView } from '@colyseus/schema';\nimport { EventEmitter } from 'events';\nimport { spliceOne } from './utils/Utils.js';\n\nexport abstract class Transport {\n public protocol?: string;\n public server?: net.Server | http.Server | https.Server;\n\n public abstract listen(port?: number, hostname?: string, backlog?: number, listeningListener?: Function): this;\n public abstract shutdown(): void;\n\n public abstract simulateLatency(milliseconds: number): void;\n}\n\nexport interface ISendOptions {\n afterNextPatch?: boolean;\n}\n\nexport enum ClientState { JOINING, JOINED, RECONNECTED, LEAVING }\n\n/**\n * The client instance from the server-side is responsible for the transport layer between the server and the client.\n * It should not be confused with the Client from the client-side SDK, as they have completely different purposes!\n * You operate on client instances from `this.clients`, `Room#onJoin()`, `Room#onLeave()` and `Room#onMessage()`.\n *\n * - This is the raw WebSocket connection coming from the `ws` package. There are more methods available which aren't\n * encouraged to use along with Colyseus.\n */\nexport interface Client<UserData=any, AuthData=any> {\n ref: EventEmitter;\n\n /**\n * @deprecated use `sessionId` instead.\n */\n id: string;\n\n /**\n * Unique id per session.\n */\n sessionId: string; // TODO: remove sessionId on version 1.0.0\n\n /**\n * Connection state\n */\n state: ClientState;\n\n /**\n * Optional: when using `@view()` decorator in your state properties, this will be the view instance for this client.\n */\n view?: StateView;\n\n /**\n * User-defined data can be attached to the Client instance through this variable.\n * - Can be used to store custom data about the client's connection. userData is not synchronized with the client,\n * and should be used only to keep player-specific with its connection.\n */\n userData?: UserData;\n\n /**\n * auth data provided by your `onAuth`\n */\n auth?: AuthData;\n\n /**\n * Reconnection token used to re-join the room after onLeave + allowReconnection().\n *\n * IMPORTANT:\n * This is not the full reconnection token the client provides for the server.\n * The format provided by .reconnect() from the client-side must follow: \"${roomId}:${reconnectionToken}\"\n */\n reconnectionToken: string;\n\n raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void): void;\n enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions): void;\n\n /**\n * Send a type of message to the client. Messages are encoded with MsgPack and can hold any\n * JSON-serializable data structure.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param message Message payload. (automatically encoded with msgpack.)\n * @param options\n */\n send(type: string | number, message?: any, options?: ISendOptions): void;\n send(message: Schema, options?: ISendOptions): void;\n\n /**\n * Send raw bytes to this specific client.\n *\n * @param type String or Number identifier the client SDK will use to receive this message\n * @param bytes Raw byte array payload\n * @param options\n */\n sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions): void;\n\n /**\n * Disconnect this client from the room.\n *\n * @param code Custom close code. Default value is 1000.\n * @param data\n * @see {@link https://docs.colyseus.io/colyseus/server/room/#leavecode-number}\n */\n leave(code?: number, data?: string): void;\n\n /**\n * @deprecated Use .leave() instead.\n */\n close(code?: number, data?: string): void;\n\n /**\n * Triggers `onError` with specified code to the client-side.\n *\n * @param code\n * @param message\n */\n error(code: number, message?: string): void;\n}\n\n/**\n * Private properties of the Client instance.\n * Only accessible internally by the framework, should not be encouraged/auto-completed for the user.\n *\n * TODO: refactor this.\n * @private\n */\nexport interface ClientPrivate {\n readyState: number; // TODO: remove readyState on version 1.0.0. Use only \"state\" instead.\n _enqueuedMessages?: any[];\n _afterNextPatchQueue: Array<[string | Client, IArguments]>;\n _joinedAt: number; // \"elapsedTime\" when the client joined the room.\n}\n\nexport class ClientArray<UserData = any, AuthData = any> extends Array<Client<UserData, AuthData>> {\n public getById(sessionId: string): Client<UserData, AuthData> | undefined {\n return this.find((client) => client.sessionId === sessionId);\n }\n\n public delete(client: Client<UserData, AuthData>): boolean {\n return spliceOne(this, this.indexOf(client));\n }\n}"],
5
+ "mappings": ";AAMA,SAAS,iBAAiB;AAEnB,IAAe,YAAf,MAAyB;AAQhC;AAMO,IAAK,cAAL,kBAAKA,iBAAL;AAAmB,EAAAA,0BAAA;AAAS,EAAAA,0BAAA;AAAQ,EAAAA,0BAAA;AAAa,EAAAA,0BAAA;AAA5C,SAAAA;AAAA,GAAA;AAkHL,IAAM,cAAN,cAA0D,MAAkC;AAAA,EAC1F,QAAQ,WAA2D;AACxE,WAAO,KAAK,KAAK,CAAC,WAAW,OAAO,cAAc,SAAS;AAAA,EAC7D;AAAA,EAEO,OAAO,QAA6C;AACzD,WAAO,UAAU,MAAM,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC7C;AACF;",
6
6
  "names": ["ClientState"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import { Presence } from '../presence/Presence';
1
+ import { Presence } from '../presence/Presence.js';
2
2
  export interface Node {
3
3
  port: number;
4
4
  processId: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/discovery/index.ts"],
4
- "sourcesContent": ["import { Presence } from '../presence/Presence';\n\nconst NODES_SET = 'colyseus:nodes';\nconst DISCOVERY_CHANNEL = 'colyseus:nodes:discovery';\n\nexport interface Node {\n port: number;\n processId: string;\n}\n\nexport async function getHostname() {\n return process.env.SELF_HOSTNAME;\n}\n\nasync function getNodeAddress(node: Node) {\n const host = await getHostname();\n const port = process.env.SELF_PORT ?? node.port;\n return (port)\n ? `${node.processId}/${host}:${port}`\n : `${node.processId}/${host}`;\n}\n\nexport async function registerNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.sadd(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `add,${nodeAddress}`);\n}\n\nexport async function unregisterNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.srem(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `remove,${nodeAddress}`);\n}\n"],
4
+ "sourcesContent": ["import { Presence } from '../presence/Presence.js';\n\nconst NODES_SET = 'colyseus:nodes';\nconst DISCOVERY_CHANNEL = 'colyseus:nodes:discovery';\n\nexport interface Node {\n port: number;\n processId: string;\n}\n\nexport async function getHostname() {\n return process.env.SELF_HOSTNAME;\n}\n\nasync function getNodeAddress(node: Node) {\n const host = await getHostname();\n const port = process.env.SELF_PORT ?? node.port;\n return (port)\n ? `${node.processId}/${host}:${port}`\n : `${node.processId}/${host}`;\n}\n\nexport async function registerNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.sadd(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `add,${nodeAddress}`);\n}\n\nexport async function unregisterNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.srem(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `remove,${nodeAddress}`);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,YAAY;AAClB,MAAM,oBAAoB;AAO1B,eAAsB,cAAc;AAClC,SAAO,QAAQ,IAAI;AACrB;AAEA,eAAe,eAAe,MAAY;AACxC,QAAM,OAAO,MAAM,YAAY;AAC/B,QAAM,OAAO,QAAQ,IAAI,aAAa,KAAK;AAC3C,SAAQ,OACJ,GAAG,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,KACjC,GAAG,KAAK,SAAS,IAAI,IAAI;AAC/B;AAEA,eAAsB,aAAa,UAAoB,MAAY;AACjE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,OAAO,WAAW,EAAE;AAChE;AAEA,eAAsB,eAAe,UAAoB,MAAY;AACnE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,UAAU,WAAW,EAAE;AACnE;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
- const NODES_SET = "colyseus:nodes";
2
- const DISCOVERY_CHANNEL = "colyseus:nodes:discovery";
1
+ // packages/core/src/discovery/index.ts
2
+ var NODES_SET = "colyseus:nodes";
3
+ var DISCOVERY_CHANNEL = "colyseus:nodes:discovery";
3
4
  async function getHostname() {
4
5
  return process.env.SELF_HOSTNAME;
5
6
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/discovery/index.ts"],
4
- "sourcesContent": ["import { Presence } from '../presence/Presence';\n\nconst NODES_SET = 'colyseus:nodes';\nconst DISCOVERY_CHANNEL = 'colyseus:nodes:discovery';\n\nexport interface Node {\n port: number;\n processId: string;\n}\n\nexport async function getHostname() {\n return process.env.SELF_HOSTNAME;\n}\n\nasync function getNodeAddress(node: Node) {\n const host = await getHostname();\n const port = process.env.SELF_PORT ?? node.port;\n return (port)\n ? `${node.processId}/${host}:${port}`\n : `${node.processId}/${host}`;\n}\n\nexport async function registerNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.sadd(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `add,${nodeAddress}`);\n}\n\nexport async function unregisterNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.srem(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `remove,${nodeAddress}`);\n}\n"],
5
- "mappings": "AAEA,MAAM,YAAY;AAClB,MAAM,oBAAoB;AAO1B,eAAsB,cAAc;AAClC,SAAO,QAAQ,IAAI;AACrB;AAEA,eAAe,eAAe,MAAY;AACxC,QAAM,OAAO,MAAM,YAAY;AAC/B,QAAM,OAAO,QAAQ,IAAI,aAAa,KAAK;AAC3C,SAAQ,OACJ,GAAG,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,KACjC,GAAG,KAAK,SAAS,IAAI,IAAI;AAC/B;AAEA,eAAsB,aAAa,UAAoB,MAAY;AACjE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,OAAO,WAAW,EAAE;AAChE;AAEA,eAAsB,eAAe,UAAoB,MAAY;AACnE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,UAAU,WAAW,EAAE;AACnE;",
4
+ "sourcesContent": ["import { Presence } from '../presence/Presence.js';\n\nconst NODES_SET = 'colyseus:nodes';\nconst DISCOVERY_CHANNEL = 'colyseus:nodes:discovery';\n\nexport interface Node {\n port: number;\n processId: string;\n}\n\nexport async function getHostname() {\n return process.env.SELF_HOSTNAME;\n}\n\nasync function getNodeAddress(node: Node) {\n const host = await getHostname();\n const port = process.env.SELF_PORT ?? node.port;\n return (port)\n ? `${node.processId}/${host}:${port}`\n : `${node.processId}/${host}`;\n}\n\nexport async function registerNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.sadd(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `add,${nodeAddress}`);\n}\n\nexport async function unregisterNode(presence: Presence, node: Node) {\n const nodeAddress = await getNodeAddress(node);\n await presence.srem(NODES_SET, nodeAddress);\n await presence.publish(DISCOVERY_CHANNEL, `remove,${nodeAddress}`);\n}\n"],
5
+ "mappings": ";AAEA,IAAM,YAAY;AAClB,IAAM,oBAAoB;AAO1B,eAAsB,cAAc;AAClC,SAAO,QAAQ,IAAI;AACrB;AAEA,eAAe,eAAe,MAAY;AACxC,QAAM,OAAO,MAAM,YAAY;AAC/B,QAAM,OAAO,QAAQ,IAAI,aAAa,KAAK;AAC3C,SAAQ,OACJ,GAAG,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,KACjC,GAAG,KAAK,SAAS,IAAI,IAAI;AAC/B;AAEA,eAAsB,aAAa,UAAoB,MAAY;AACjE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,OAAO,WAAW,EAAE;AAChE;AAEA,eAAsB,eAAe,UAAoB,MAAY;AACnE,QAAM,cAAc,MAAM,eAAe,IAAI;AAC7C,QAAM,SAAS,KAAK,WAAW,WAAW;AAC1C,QAAM,SAAS,QAAQ,mBAAmB,UAAU,WAAW,EAAE;AACnE;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,9 @@
1
- class SeatReservationError extends Error {
1
+ // packages/core/src/errors/SeatReservationError.ts
2
+ var SeatReservationError = class extends Error {
2
3
  constructor(message) {
3
4
  super(message);
4
5
  }
5
- }
6
+ };
6
7
  export {
7
8
  SeatReservationError
8
9
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/errors/SeatReservationError.ts"],
4
4
  "sourcesContent": ["export class SeatReservationError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n"],
5
- "mappings": "AAAO,MAAM,6BAA6B,MAAM;AAAA,EAC9C,YAAY,SAAiB;AAC3B,UAAM,OAAO;AAAA,EACf;AACF;",
5
+ "mappings": ";AAAO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAC9C,YAAY,SAAiB;AAC3B,UAAM,OAAO;AAAA,EACf;AACF;",
6
6
  "names": []
7
7
  }
@@ -20,7 +20,7 @@ __export(ServerError_exports, {
20
20
  ServerError: () => ServerError
21
21
  });
22
22
  module.exports = __toCommonJS(ServerError_exports);
23
- var import_Protocol = require("../Protocol");
23
+ var import_Protocol = require("../Protocol.js");
24
24
  class ServerError extends Error {
25
25
  constructor(code = import_Protocol.ErrorCode.MATCHMAKE_UNHANDLED, message) {
26
26
  super(message);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/errors/ServerError.ts"],
4
- "sourcesContent": ["import { ErrorCode } from '../Protocol';\n\nexport class ServerError extends Error {\n public code: number;\n\n constructor(code: number = ErrorCode.MATCHMAKE_UNHANDLED, message?: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ServerError);\n }\n\n this.name = 'ServerError';\n this.code = code;\n }\n}\n"],
4
+ "sourcesContent": ["import { ErrorCode } from '../Protocol.js';\n\nexport class ServerError extends Error {\n public code: number;\n\n constructor(code: number = ErrorCode.MATCHMAKE_UNHANDLED, message?: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ServerError);\n }\n\n this.name = 'ServerError';\n this.code = code;\n }\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA0B;AAEnB,MAAM,oBAAoB,MAAM;AAAA,EAGrC,YAAY,OAAe,0BAAU,qBAAqB,SAAkB;AAC1E,UAAM,OAAO;AAGb,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,WAAW;AAAA,IAC3C;AAEA,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,14 +1,15 @@
1
- import { ErrorCode } from "../Protocol";
2
- class ServerError extends Error {
1
+ // packages/core/src/errors/ServerError.ts
2
+ import { ErrorCode } from "../Protocol.mjs";
3
+ var ServerError = class _ServerError extends Error {
3
4
  constructor(code = ErrorCode.MATCHMAKE_UNHANDLED, message) {
4
5
  super(message);
5
6
  if (Error.captureStackTrace) {
6
- Error.captureStackTrace(this, ServerError);
7
+ Error.captureStackTrace(this, _ServerError);
7
8
  }
8
9
  this.name = "ServerError";
9
10
  this.code = code;
10
11
  }
11
- }
12
+ };
12
13
  export {
13
14
  ServerError
14
15
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/errors/ServerError.ts"],
4
- "sourcesContent": ["import { ErrorCode } from '../Protocol';\n\nexport class ServerError extends Error {\n public code: number;\n\n constructor(code: number = ErrorCode.MATCHMAKE_UNHANDLED, message?: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ServerError);\n }\n\n this.name = 'ServerError';\n this.code = code;\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAEnB,MAAM,oBAAoB,MAAM;AAAA,EAGrC,YAAY,OAAe,UAAU,qBAAqB,SAAkB;AAC1E,UAAM,OAAO;AAGb,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,WAAW;AAAA,IAC3C;AAEA,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;",
4
+ "sourcesContent": ["import { ErrorCode } from '../Protocol.js';\n\nexport class ServerError extends Error {\n public code: number;\n\n constructor(code: number = ErrorCode.MATCHMAKE_UNHANDLED, message?: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ServerError);\n }\n\n this.name = 'ServerError';\n this.code = code;\n }\n}\n"],
5
+ "mappings": ";AAAA,SAAS,iBAAiB;AAEnB,IAAM,cAAN,MAAM,qBAAoB,MAAM;AAAA,EAGrC,YAAY,OAAe,UAAU,qBAAqB,SAAkB;AAC1E,UAAM,OAAO;AAGb,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,YAAW;AAAA,IAC3C;AAEA,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;",
6
6
  "names": []
7
7
  }
package/build/index.d.ts CHANGED
@@ -1,22 +1,23 @@
1
- import Clock, { Delayed } from '@gamestdio/timer';
2
- export { Server, type ServerOptions } from './Server';
3
- export { Room, RoomInternalState } from './Room';
4
- export { Protocol, ErrorCode, getMessageBytes } from './Protocol';
5
- export { RegisteredHandler } from './matchmaker/RegisteredHandler';
6
- export { ServerError } from './errors/ServerError';
7
- import * as matchMaker from './MatchMaker';
1
+ import Clock, { Delayed } from '@colyseus/timer';
2
+ export { Server, type ServerOptions } from './Server.js';
3
+ export { Room, RoomInternalState } from './Room.js';
4
+ export { Protocol, ErrorCode, getMessageBytes } from './Protocol.js';
5
+ export { RegisteredHandler } from './matchmaker/RegisteredHandler.js';
6
+ export { ServerError } from './errors/ServerError.js';
7
+ import * as matchMaker from './MatchMaker.js';
8
8
  export { matchMaker };
9
- export { updateLobby, subscribeLobby } from './matchmaker/Lobby';
10
- export * from './matchmaker/driver/local/LocalDriver';
11
- export { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport';
12
- export { type Presence } from './presence/Presence';
13
- export { LocalPresence } from './presence/LocalPresence';
14
- export { type Serializer } from './serializer/Serializer';
15
- export { SchemaSerializer } from './serializer/SchemaSerializer';
9
+ export { updateLobby, subscribeLobby } from './matchmaker/Lobby.js';
10
+ export * from './matchmaker/driver/local/LocalDriver.js';
11
+ export { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport.js';
12
+ export { type Presence } from './presence/Presence.js';
13
+ export { LocalPresence } from './presence/LocalPresence.js';
14
+ export { type Serializer } from './serializer/Serializer.js';
15
+ export { SchemaSerializer } from './serializer/SchemaSerializer.js';
16
16
  export { Clock, Delayed };
17
- export { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils';
18
- export { isDevMode } from './utils/DevMode';
17
+ export { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils.js';
18
+ export { isDevMode } from './utils/DevMode.js';
19
+ export { subscribeIPC, requestFromIPC } from './IPC.js';
19
20
  export { debugMatchMaking, debugMessage, debugPatch, debugError, debugConnection, debugDriver, debugPresence, debugAndPrintError, } from './Debug';
20
- export { LobbyRoom } from './rooms/LobbyRoom';
21
- export { RelayRoom } from './rooms/RelayRoom';
22
- export { logger } from './Logger';
21
+ export { LobbyRoom } from './rooms/LobbyRoom.js';
22
+ export { RelayRoom } from './rooms/RelayRoom.js';
23
+ export { logger } from './Logger.js';
package/build/index.js CHANGED
@@ -60,29 +60,32 @@ __export(src_exports, {
60
60
  isDevMode: () => import_DevMode.isDevMode,
61
61
  logger: () => import_Logger.logger,
62
62
  matchMaker: () => matchMaker,
63
+ requestFromIPC: () => import_IPC.requestFromIPC,
63
64
  spliceOne: () => import_Utils.spliceOne,
65
+ subscribeIPC: () => import_IPC.subscribeIPC,
64
66
  subscribeLobby: () => import_Lobby.subscribeLobby,
65
67
  updateLobby: () => import_Lobby.updateLobby
66
68
  });
67
69
  module.exports = __toCommonJS(src_exports);
68
- var import_timer = __toESM(require("@gamestdio/timer"));
69
- var import_Server = require("./Server");
70
- var import_Room = require("./Room");
71
- var import_Protocol = require("./Protocol");
72
- var import_RegisteredHandler = require("./matchmaker/RegisteredHandler");
73
- var import_ServerError = require("./errors/ServerError");
74
- var matchMaker = __toESM(require("./MatchMaker"));
75
- var import_Lobby = require("./matchmaker/Lobby");
76
- __reExport(src_exports, require("./matchmaker/driver/local/LocalDriver"), module.exports);
77
- var import_Transport = require("./Transport");
78
- var import_LocalPresence = require("./presence/LocalPresence");
79
- var import_SchemaSerializer = require("./serializer/SchemaSerializer");
80
- var import_Utils = require("./utils/Utils");
81
- var import_DevMode = require("./utils/DevMode");
70
+ var import_timer = __toESM(require("@colyseus/timer"));
71
+ var import_Server = require("./Server.js");
72
+ var import_Room = require("./Room.js");
73
+ var import_Protocol = require("./Protocol.js");
74
+ var import_RegisteredHandler = require("./matchmaker/RegisteredHandler.js");
75
+ var import_ServerError = require("./errors/ServerError.js");
76
+ var matchMaker = __toESM(require("./MatchMaker.js"));
77
+ var import_Lobby = require("./matchmaker/Lobby.js");
78
+ __reExport(src_exports, require("./matchmaker/driver/local/LocalDriver.js"), module.exports);
79
+ var import_Transport = require("./Transport.js");
80
+ var import_LocalPresence = require("./presence/LocalPresence.js");
81
+ var import_SchemaSerializer = require("./serializer/SchemaSerializer.js");
82
+ var import_Utils = require("./utils/Utils.js");
83
+ var import_DevMode = require("./utils/DevMode.js");
84
+ var import_IPC = require("./IPC.js");
82
85
  var import_Debug = require("./Debug");
83
- var import_LobbyRoom = require("./rooms/LobbyRoom");
84
- var import_RelayRoom = require("./rooms/RelayRoom");
85
- var import_Logger = require("./Logger");
86
+ var import_LobbyRoom = require("./rooms/LobbyRoom.js");
87
+ var import_RelayRoom = require("./rooms/RelayRoom.js");
88
+ var import_Logger = require("./Logger.js");
86
89
  // Annotate the CommonJS export names for ESM import in node:
87
90
  0 && (module.exports = {
88
91
  ClientArray,
@@ -117,8 +120,10 @@ var import_Logger = require("./Logger");
117
120
  isDevMode,
118
121
  logger,
119
122
  matchMaker,
123
+ requestFromIPC,
120
124
  spliceOne,
125
+ subscribeIPC,
121
126
  subscribeLobby,
122
127
  updateLobby,
123
- ...require("./matchmaker/driver/local/LocalDriver")
128
+ ...require("./matchmaker/driver/local/LocalDriver.js")
124
129
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import Clock, { Delayed } from '@gamestdio/timer';\n\n// Core classes\nexport { Server, type ServerOptions } from './Server';\nexport { Room, RoomInternalState } from './Room';\nexport { Protocol, ErrorCode, getMessageBytes } from './Protocol';\nexport { RegisteredHandler } from './matchmaker/RegisteredHandler';\nexport { ServerError } from './errors/ServerError';\n\n// MatchMaker\nimport * as matchMaker from './MatchMaker';\nexport { matchMaker };\nexport { updateLobby, subscribeLobby } from './matchmaker/Lobby';\n\n// Driver\nexport * from './matchmaker/driver/local/LocalDriver';\n\n// Transport\nexport { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport';\n\n// Presence\nexport { type Presence } from './presence/Presence';\nexport { LocalPresence } from './presence/LocalPresence';\n\n// Serializers\nexport { type Serializer } from './serializer/Serializer';\nexport { SchemaSerializer } from './serializer/SchemaSerializer';\n\n// Utilities\nexport { Clock, Delayed };\nexport { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils';\nexport { isDevMode } from './utils/DevMode';\n\n// Debug\nexport {\n debugMatchMaking,\n debugMessage,\n debugPatch,\n debugError,\n debugConnection,\n debugDriver,\n debugPresence,\n debugAndPrintError,\n} from './Debug';\n\n// Default rooms\nexport { LobbyRoom } from './rooms/LobbyRoom';\nexport { RelayRoom } from './rooms/RelayRoom';\n\n// Abstract logging support\nexport { logger } from './Logger'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAG/B,oBAA2C;AAC3C,kBAAwC;AACxC,sBAAqD;AACrD,+BAAkC;AAClC,yBAA4B;AAG5B,iBAA4B;AAE5B,mBAA4C;AAG5C,wBAAc,kDAfd;AAkBA,uBAAwG;AAIxG,2BAA8B;AAI9B,8BAAiC;AAIjC,mBAAgF;AAChF,qBAA0B;AAG1B,mBASO;AAGP,uBAA0B;AAC1B,uBAA0B;AAG1B,oBAAuB;",
4
+ "sourcesContent": ["import Clock, { Delayed } from '@colyseus/timer';\n\n// Core classes\nexport { Server, type ServerOptions } from './Server.js';\nexport { Room, RoomInternalState } from './Room.js';\nexport { Protocol, ErrorCode, getMessageBytes } from './Protocol.js';\nexport { RegisteredHandler } from './matchmaker/RegisteredHandler.js';\nexport { ServerError } from './errors/ServerError.js';\n\n// MatchMaker\nimport * as matchMaker from './MatchMaker.js';\nexport { matchMaker };\nexport { updateLobby, subscribeLobby } from './matchmaker/Lobby.js';\n\n// Driver\nexport * from './matchmaker/driver/local/LocalDriver.js';\n\n// Transport\nexport { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport.js';\n\n// Presence\nexport { type Presence } from './presence/Presence.js';\nexport { LocalPresence } from './presence/LocalPresence.js';\n\n// Serializers\nexport { type Serializer } from './serializer/Serializer.js';\nexport { SchemaSerializer } from './serializer/SchemaSerializer.js';\n\n// Utilities\nexport { Clock, Delayed };\nexport { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils.js';\nexport { isDevMode } from './utils/DevMode.js';\n\n// IPC\nexport { subscribeIPC, requestFromIPC } from './IPC.js';\n\n// Debug\nexport {\n debugMatchMaking,\n debugMessage,\n debugPatch,\n debugError,\n debugConnection,\n debugDriver,\n debugPresence,\n debugAndPrintError,\n} from './Debug';\n\n// Default rooms\nexport { LobbyRoom } from './rooms/LobbyRoom.js';\nexport { RelayRoom } from './rooms/RelayRoom.js';\n\n// Abstract logging support\nexport { logger } from './Logger.js';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAG/B,oBAA2C;AAC3C,kBAAwC;AACxC,sBAAqD;AACrD,+BAAkC;AAClC,yBAA4B;AAG5B,iBAA4B;AAE5B,mBAA4C;AAG5C,wBAAc,qDAfd;AAkBA,uBAAwG;AAIxG,2BAA8B;AAI9B,8BAAiC;AAIjC,mBAAgF;AAChF,qBAA0B;AAG1B,iBAA6C;AAG7C,mBASO;AAGP,uBAA0B;AAC1B,uBAA0B;AAG1B,oBAAuB;",
6
6
  "names": ["Clock"]
7
7
  }
package/build/index.mjs CHANGED
@@ -1,17 +1,19 @@
1
- import Clock, { Delayed } from "@gamestdio/timer";
2
- import { Server } from "./Server";
3
- import { Room, RoomInternalState } from "./Room";
4
- import { Protocol, ErrorCode, getMessageBytes } from "./Protocol";
5
- import { RegisteredHandler } from "./matchmaker/RegisteredHandler";
6
- import { ServerError } from "./errors/ServerError";
7
- import * as matchMaker from "./MatchMaker";
8
- import { updateLobby, subscribeLobby } from "./matchmaker/Lobby";
9
- export * from "./matchmaker/driver/local/LocalDriver";
10
- import { ClientState, ClientArray, Transport } from "./Transport";
11
- import { LocalPresence } from "./presence/LocalPresence";
12
- import { SchemaSerializer } from "./serializer/SchemaSerializer";
13
- import { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from "./utils/Utils";
14
- import { isDevMode } from "./utils/DevMode";
1
+ // packages/core/src/index.ts
2
+ import Clock, { Delayed } from "@colyseus/timer";
3
+ import { Server } from "./Server.mjs";
4
+ import { Room, RoomInternalState } from "./Room.mjs";
5
+ import { Protocol, ErrorCode, getMessageBytes } from "./Protocol.mjs";
6
+ import { RegisteredHandler } from "./matchmaker/RegisteredHandler.mjs";
7
+ import { ServerError } from "./errors/ServerError.mjs";
8
+ import * as matchMaker from "./MatchMaker.mjs";
9
+ import { updateLobby, subscribeLobby } from "./matchmaker/Lobby.mjs";
10
+ export * from "./matchmaker/driver/local/LocalDriver.mjs";
11
+ import { ClientState, ClientArray, Transport } from "./Transport.mjs";
12
+ import { LocalPresence } from "./presence/LocalPresence.mjs";
13
+ import { SchemaSerializer } from "./serializer/SchemaSerializer.mjs";
14
+ import { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from "./utils/Utils.mjs";
15
+ import { isDevMode } from "./utils/DevMode.mjs";
16
+ import { subscribeIPC, requestFromIPC } from "./IPC.mjs";
15
17
  import {
16
18
  debugMatchMaking,
17
19
  debugMessage,
@@ -22,9 +24,9 @@ import {
22
24
  debugPresence,
23
25
  debugAndPrintError
24
26
  } from "./Debug";
25
- import { LobbyRoom } from "./rooms/LobbyRoom";
26
- import { RelayRoom } from "./rooms/RelayRoom";
27
- import { logger } from "./Logger";
27
+ import { LobbyRoom } from "./rooms/LobbyRoom.mjs";
28
+ import { RelayRoom } from "./rooms/RelayRoom.mjs";
29
+ import { logger } from "./Logger.mjs";
28
30
  export {
29
31
  ClientArray,
30
32
  ClientState,
@@ -58,7 +60,9 @@ export {
58
60
  isDevMode,
59
61
  logger,
60
62
  matchMaker,
63
+ requestFromIPC,
61
64
  spliceOne,
65
+ subscribeIPC,
62
66
  subscribeLobby,
63
67
  updateLobby
64
68
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import Clock, { Delayed } from '@gamestdio/timer';\n\n// Core classes\nexport { Server, type ServerOptions } from './Server';\nexport { Room, RoomInternalState } from './Room';\nexport { Protocol, ErrorCode, getMessageBytes } from './Protocol';\nexport { RegisteredHandler } from './matchmaker/RegisteredHandler';\nexport { ServerError } from './errors/ServerError';\n\n// MatchMaker\nimport * as matchMaker from './MatchMaker';\nexport { matchMaker };\nexport { updateLobby, subscribeLobby } from './matchmaker/Lobby';\n\n// Driver\nexport * from './matchmaker/driver/local/LocalDriver';\n\n// Transport\nexport { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport';\n\n// Presence\nexport { type Presence } from './presence/Presence';\nexport { LocalPresence } from './presence/LocalPresence';\n\n// Serializers\nexport { type Serializer } from './serializer/Serializer';\nexport { SchemaSerializer } from './serializer/SchemaSerializer';\n\n// Utilities\nexport { Clock, Delayed };\nexport { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils';\nexport { isDevMode } from './utils/DevMode';\n\n// Debug\nexport {\n debugMatchMaking,\n debugMessage,\n debugPatch,\n debugError,\n debugConnection,\n debugDriver,\n debugPresence,\n debugAndPrintError,\n} from './Debug';\n\n// Default rooms\nexport { LobbyRoom } from './rooms/LobbyRoom';\nexport { RelayRoom } from './rooms/RelayRoom';\n\n// Abstract logging support\nexport { logger } from './Logger'\n"],
5
- "mappings": "AAAA,OAAO,SAAS,eAAe;AAG/B,SAAS,cAAkC;AAC3C,SAAS,MAAM,yBAAyB;AACxC,SAAS,UAAU,WAAW,uBAAuB;AACrD,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAG5B,YAAY,gBAAgB;AAE5B,SAAS,aAAa,sBAAsB;AAG5C,cAAc;AAGd,SAA0C,aAAa,aAAa,iBAAoC;AAIxG,SAAS,qBAAqB;AAI9B,SAAS,wBAAwB;AAIjC,SAAS,YAAY,UAAU,gBAAgB,WAAW,sBAAsB;AAChF,SAAS,iBAAiB;AAG1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAG1B,SAAS,cAAc;",
4
+ "sourcesContent": ["import Clock, { Delayed } from '@colyseus/timer';\n\n// Core classes\nexport { Server, type ServerOptions } from './Server.js';\nexport { Room, RoomInternalState } from './Room.js';\nexport { Protocol, ErrorCode, getMessageBytes } from './Protocol.js';\nexport { RegisteredHandler } from './matchmaker/RegisteredHandler.js';\nexport { ServerError } from './errors/ServerError.js';\n\n// MatchMaker\nimport * as matchMaker from './MatchMaker.js';\nexport { matchMaker };\nexport { updateLobby, subscribeLobby } from './matchmaker/Lobby.js';\n\n// Driver\nexport * from './matchmaker/driver/local/LocalDriver.js';\n\n// Transport\nexport { type Client, type ClientPrivate, ClientState, ClientArray, Transport, type ISendOptions } from './Transport.js';\n\n// Presence\nexport { type Presence } from './presence/Presence.js';\nexport { LocalPresence } from './presence/LocalPresence.js';\n\n// Serializers\nexport { type Serializer } from './serializer/Serializer.js';\nexport { SchemaSerializer } from './serializer/SchemaSerializer.js';\n\n// Utilities\nexport { Clock, Delayed };\nexport { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils.js';\nexport { isDevMode } from './utils/DevMode.js';\n\n// IPC\nexport { subscribeIPC, requestFromIPC } from './IPC.js';\n\n// Debug\nexport {\n debugMatchMaking,\n debugMessage,\n debugPatch,\n debugError,\n debugConnection,\n debugDriver,\n debugPresence,\n debugAndPrintError,\n} from './Debug';\n\n// Default rooms\nexport { LobbyRoom } from './rooms/LobbyRoom.js';\nexport { RelayRoom } from './rooms/RelayRoom.js';\n\n// Abstract logging support\nexport { logger } from './Logger.js';\n"],
5
+ "mappings": ";AAAA,OAAO,SAAS,eAAe;AAG/B,SAAS,cAAkC;AAC3C,SAAS,MAAM,yBAAyB;AACxC,SAAS,UAAU,WAAW,uBAAuB;AACrD,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAG5B,YAAY,gBAAgB;AAE5B,SAAS,aAAa,sBAAsB;AAG5C,cAAc;AAGd,SAA0C,aAAa,aAAa,iBAAoC;AAIxG,SAAS,qBAAqB;AAI9B,SAAS,wBAAwB;AAIjC,SAAS,YAAY,UAAU,gBAAgB,WAAW,sBAAsB;AAChF,SAAS,iBAAiB;AAG1B,SAAS,cAAc,sBAAsB;AAG7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAG1B,SAAS,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { Room } from '../Room';
2
- import { IRoomCache } from './driver/api';
1
+ import type { Room } from '../Room.js';
2
+ import { IRoomCache } from './driver/api.js';
3
3
  export declare function updateLobby(room: Room, removed?: boolean): void;
4
4
  export declare function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void): Promise<() => any>;
@@ -31,7 +31,7 @@ __export(Lobby_exports, {
31
31
  updateLobby: () => updateLobby
32
32
  });
33
33
  module.exports = __toCommonJS(Lobby_exports);
34
- var matchMaker = __toESM(require("../MatchMaker"));
34
+ var matchMaker = __toESM(require("../MatchMaker.js"));
35
35
  const LOBBY_CHANNEL = "$lobby";
36
36
  function updateLobby(room, removed = false) {
37
37
  const listing = room.listing;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/matchmaker/Lobby.ts"],
4
- "sourcesContent": ["import * as matchMaker from '../MatchMaker';\n\nimport type { Room } from '../Room';\nimport { IRoomCache } from './driver/api';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
4
+ "sourcesContent": ["import * as matchMaker from '../MatchMaker.js';\n\nimport type { Room } from '../Room.js';\nimport { IRoomCache } from './driver/api.js';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA4B;AAK5B,MAAM,gBAAgB;AAaf,SAAS,YAAY,MAAY,UAAmB,OAAO;AAChE,QAAM,UAAU,KAAK;AAErB,MAAI,QAAQ,SAAU;AAEtB,MAAI,SAAS;AACX,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE,WAAW,CAAC,QAAQ,SAAS;AAC3B,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE;AACF;AAEA,eAAsB,eAAe,UAA6D;AAChG,QAAM,KAAK,OAAO,YAAY;AAC5B,UAAM,CAAC,QAAQ,QAAQ,IAAI,QAAQ,MAAM,GAAG;AAE5C,QAAI,aAAa,KAAK;AACpB,eAAS,QAAQ,IAAI;AAAA,IAEvB,OAAO;AACL,YAAM,QAAQ,MAAM,WAAW,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;AACnD,eAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,UAAU,eAAe,EAAE;AAErD,SAAO,MAAM,WAAW,SAAS,YAAY,eAAe,EAAE;AAChE;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
- import * as matchMaker from "../MatchMaker";
2
- const LOBBY_CHANNEL = "$lobby";
1
+ // packages/core/src/matchmaker/Lobby.ts
2
+ import * as matchMaker from "../MatchMaker.mjs";
3
+ var LOBBY_CHANNEL = "$lobby";
3
4
  function updateLobby(room, removed = false) {
4
5
  const listing = room.listing;
5
6
  if (listing.unlisted) return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/matchmaker/Lobby.ts"],
4
- "sourcesContent": ["import * as matchMaker from '../MatchMaker';\n\nimport type { Room } from '../Room';\nimport { IRoomCache } from './driver/api';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
5
- "mappings": "AAAA,YAAY,gBAAgB;AAK5B,MAAM,gBAAgB;AAaf,SAAS,YAAY,MAAY,UAAmB,OAAO;AAChE,QAAM,UAAU,KAAK;AAErB,MAAI,QAAQ,SAAU;AAEtB,MAAI,SAAS;AACX,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE,WAAW,CAAC,QAAQ,SAAS;AAC3B,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE;AACF;AAEA,eAAsB,eAAe,UAA6D;AAChG,QAAM,KAAK,OAAO,YAAY;AAC5B,UAAM,CAAC,QAAQ,QAAQ,IAAI,QAAQ,MAAM,GAAG;AAE5C,QAAI,aAAa,KAAK;AACpB,eAAS,QAAQ,IAAI;AAAA,IAEvB,OAAO;AACL,YAAM,QAAQ,MAAM,WAAW,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;AACnD,eAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,UAAU,eAAe,EAAE;AAErD,SAAO,MAAM,WAAW,SAAS,YAAY,eAAe,EAAE;AAChE;",
4
+ "sourcesContent": ["import * as matchMaker from '../MatchMaker.js';\n\nimport type { Room } from '../Room.js';\nimport { IRoomCache } from './driver/api.js';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
5
+ "mappings": ";AAAA,YAAY,gBAAgB;AAK5B,IAAM,gBAAgB;AAaf,SAAS,YAAY,MAAY,UAAmB,OAAO;AAChE,QAAM,UAAU,KAAK;AAErB,MAAI,QAAQ,SAAU;AAEtB,MAAI,SAAS;AACX,IAAW,oBAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE,WAAW,CAAC,QAAQ,SAAS;AAC3B,IAAW,oBAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE;AACF;AAEA,eAAsB,eAAe,UAA6D;AAChG,QAAM,KAAK,OAAO,YAAY;AAC5B,UAAM,CAAC,QAAQ,QAAQ,IAAI,QAAQ,MAAM,GAAG;AAE5C,QAAI,aAAa,KAAK;AACpB,eAAS,QAAQ,IAAI;AAAA,IAEvB,OAAO;AACL,YAAM,QAAQ,MAAiB,iBAAM,EAAE,OAAO,CAAC,GAAG,CAAC;AACnD,eAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAiB,oBAAS,UAAU,eAAe,EAAE;AAErD,SAAO,MAAiB,oBAAS,YAAY,eAAe,EAAE;AAChE;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,8 @@
1
1
  import { IncomingMessage } from 'http';
2
2
  import { EventEmitter } from 'events';
3
- import { RoomCache, SortOptions } from './driver/api';
4
- import { Room } from './../Room';
5
- import { Type } from '../utils/types';
3
+ import { RoomCache, SortOptions } from './driver/api.js';
4
+ import { Room } from './../Room.js';
5
+ import { Type } from '../utils/types.js';
6
6
  export declare const INVALID_OPTION_KEYS: Array<keyof RoomCache>;
7
7
  export type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;
8
8
  export declare class RegisteredHandler extends EventEmitter {
@@ -22,13 +22,8 @@ __export(RegisteredHandler_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(RegisteredHandler_exports);
24
24
  var import_events = require("events");
25
- var import_Logger = require("../Logger");
26
- var import_Lobby = require("./Lobby");
27
- let ColyseusAuth = void 0;
28
- try {
29
- ColyseusAuth = require("@colyseus/auth");
30
- } catch (e) {
31
- }
25
+ var import_Logger = require("../Logger.js");
26
+ var import_Lobby = require("./Lobby.js");
32
27
  const INVALID_OPTION_KEYS = [
33
28
  "clients",
34
29
  "locked",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/matchmaker/RegisteredHandler.ts"],
4
- "sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger';\nimport { RoomCache, SortOptions } from './driver/api';\n\nimport { Room } from './../Room';\nimport { updateLobby } from './Lobby';\nimport { Type } from '../utils/types';\n\nlet ColyseusAuth: any = undefined;\ntry { ColyseusAuth = require('@colyseus/auth'); } catch (e) {}\n\nexport const INVALID_OPTION_KEYS: Array<keyof RoomCache> = [\n 'clients',\n 'locked',\n 'private',\n // 'maxClients', - maxClients can be useful as filter options\n 'metadata',\n 'name',\n 'processId',\n 'roomId',\n];\n\nexport type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;\n\nexport class RegisteredHandler extends EventEmitter {\n public filterOptions: string[] = [];\n public sortOptions?: SortOptions;\n\n constructor(\n public name: string,\n public klass: Type<Room>,\n public options: any\n ) {\n super();\n\n if (typeof(klass) !== 'function') {\n logger.debug('You are likely not importing your room class correctly.');\n throw new Error(`class is expected but ${typeof(klass)} was provided.`);\n }\n }\n\n public enableRealtimeListing() {\n this.on('create', (room) => updateLobby(room));\n this.on('lock', (room) => updateLobby(room));\n this.on('unlock', (room) => updateLobby(room));\n this.on('join', (room) => updateLobby(room));\n this.on('leave', (room, _, willDispose) => {\n if (!willDispose) {\n updateLobby(room);\n }\n });\n this.on('dispose', (room) => updateLobby(room, false));\n this.on('visibility-change', (room, isVisible) => updateLobby(room, isVisible));\n\n return this;\n }\n\n public filterBy(options: string[]) {\n this.filterOptions = options;\n return this;\n }\n\n public sortBy(options: SortOptions) {\n this.sortOptions = options;\n return this;\n }\n\n public getFilterOptions(options: any) {\n return this.filterOptions.reduce((prev, curr, i, arr) => {\n const field = arr[i];\n if (options.hasOwnProperty(field)) {\n if (INVALID_OPTION_KEYS.indexOf(field as any) !== -1) {\n logger.warn(`option \"${field}\" has internal usage and is going to be ignored.`);\n\n } else {\n prev[field] = options[field];\n }\n }\n return prev;\n }, {});\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA6B;AAC7B,oBAAuB;AAIvB,mBAA4B;AAG5B,IAAI,eAAoB;AACxB,IAAI;AAAE,iBAAe,QAAQ,gBAAgB;AAAG,SAAS,GAAG;AAAC;AAEtD,MAAM,sBAA8C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,0BAA0B,2BAAa;AAAA,EAIlD,YACS,MACA,OACA,SACP;AACA,UAAM;AAJC;AACA;AACA;AANT,SAAO,gBAA0B,CAAC;AAUhC,QAAI,OAAO,UAAW,YAAY;AAChC,2BAAO,MAAM,yDAAyD;AACtE,YAAM,IAAI,MAAM,yBAAyB,OAAO,KAAM,gBAAgB;AAAA,IACxE;AAAA,EACF;AAAA,EAEO,wBAAwB;AAC7B,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,SAAS,CAAC,MAAM,GAAG,gBAAgB;AACzC,UAAI,CAAC,aAAa;AAChB,sCAAY,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AACD,SAAK,GAAG,WAAW,CAAC,aAAS,0BAAY,MAAM,KAAK,CAAC;AACrD,SAAK,GAAG,qBAAqB,CAAC,MAAM,kBAAc,0BAAY,MAAM,SAAS,CAAC;AAE9E,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,SAAmB;AACjC,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEO,OAAO,SAAsB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,SAAc;AACpC,WAAO,KAAK,cAAc,OAAO,CAAC,MAAM,MAAM,GAAG,QAAQ;AACvD,YAAM,QAAQ,IAAI,CAAC;AACnB,UAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,YAAI,oBAAoB,QAAQ,KAAY,MAAM,IAAI;AACpD,+BAAO,KAAK,WAAW,KAAK,kDAAkD;AAAA,QAEhF,OAAO;AACL,eAAK,KAAK,IAAI,QAAQ,KAAK;AAAA,QAC7B;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;",
4
+ "sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger.js';\nimport { RoomCache, SortOptions } from './driver/api.js';\n\nimport { Room } from './../Room.js';\nimport { updateLobby } from './Lobby.js';\nimport { Type } from '../utils/types.js';\n\nexport const INVALID_OPTION_KEYS: Array<keyof RoomCache> = [\n 'clients',\n 'locked',\n 'private',\n // 'maxClients', - maxClients can be useful as filter options\n 'metadata',\n 'name',\n 'processId',\n 'roomId',\n];\n\nexport type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;\n\nexport class RegisteredHandler extends EventEmitter {\n public filterOptions: string[] = [];\n public sortOptions?: SortOptions;\n\n constructor(\n public name: string,\n public klass: Type<Room>,\n public options: any\n ) {\n super();\n\n if (typeof(klass) !== 'function') {\n logger.debug('You are likely not importing your room class correctly.');\n throw new Error(`class is expected but ${typeof(klass)} was provided.`);\n }\n }\n\n public enableRealtimeListing() {\n this.on('create', (room) => updateLobby(room));\n this.on('lock', (room) => updateLobby(room));\n this.on('unlock', (room) => updateLobby(room));\n this.on('join', (room) => updateLobby(room));\n this.on('leave', (room, _, willDispose) => {\n if (!willDispose) {\n updateLobby(room);\n }\n });\n this.on('dispose', (room) => updateLobby(room, false));\n this.on('visibility-change', (room, isVisible) => updateLobby(room, isVisible));\n\n return this;\n }\n\n public filterBy(options: string[]) {\n this.filterOptions = options;\n return this;\n }\n\n public sortBy(options: SortOptions) {\n this.sortOptions = options;\n return this;\n }\n\n public getFilterOptions(options: any) {\n return this.filterOptions.reduce((prev, curr, i, arr) => {\n const field = arr[i];\n if (options.hasOwnProperty(field)) {\n if (INVALID_OPTION_KEYS.indexOf(field as any) !== -1) {\n logger.warn(`option \"${field}\" has internal usage and is going to be ignored.`);\n\n } else {\n prev[field] = options[field];\n }\n }\n return prev;\n }, {});\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA6B;AAC7B,oBAAuB;AAIvB,mBAA4B;AAGrB,MAAM,sBAA8C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,0BAA0B,2BAAa;AAAA,EAIlD,YACS,MACA,OACA,SACP;AACA,UAAM;AAJC;AACA;AACA;AANT,SAAO,gBAA0B,CAAC;AAUhC,QAAI,OAAO,UAAW,YAAY;AAChC,2BAAO,MAAM,yDAAyD;AACtE,YAAM,IAAI,MAAM,yBAAyB,OAAO,KAAM,gBAAgB;AAAA,IACxE;AAAA,EACF;AAAA,EAEO,wBAAwB;AAC7B,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,SAAS,CAAC,MAAM,GAAG,gBAAgB;AACzC,UAAI,CAAC,aAAa;AAChB,sCAAY,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AACD,SAAK,GAAG,WAAW,CAAC,aAAS,0BAAY,MAAM,KAAK,CAAC;AACrD,SAAK,GAAG,qBAAqB,CAAC,MAAM,kBAAc,0BAAY,MAAM,SAAS,CAAC;AAE9E,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,SAAmB;AACjC,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEO,OAAO,SAAsB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,SAAc;AACpC,WAAO,KAAK,cAAc,OAAO,CAAC,MAAM,MAAM,GAAG,QAAQ;AACvD,YAAM,QAAQ,IAAI,CAAC;AACnB,UAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,YAAI,oBAAoB,QAAQ,KAAY,MAAM,IAAI;AACpD,+BAAO,KAAK,WAAW,KAAK,kDAAkD;AAAA,QAEhF,OAAO;AACL,eAAK,KAAK,IAAI,QAAQ,KAAK;AAAA,QAC7B;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;",
6
6
  "names": []
7
7
  }