@colyseus/sdk 0.17.2 → 0.17.4

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 (80) hide show
  1. package/build/cjs/3rd_party/{discord.js → discord.cjs} +2 -2
  2. package/build/cjs/3rd_party/discord.cjs.map +1 -0
  3. package/build/cjs/{Auth.js → Auth.cjs} +4 -4
  4. package/build/cjs/Auth.cjs.map +1 -0
  5. package/build/cjs/{Client.js → Client.cjs} +9 -9
  6. package/build/cjs/Client.cjs.map +1 -0
  7. package/build/cjs/{Connection.js → Connection.cjs} +4 -4
  8. package/build/cjs/Connection.cjs.map +1 -0
  9. package/build/cjs/{HTTP.js → HTTP.cjs} +2 -2
  10. package/build/cjs/HTTP.cjs.map +1 -0
  11. package/build/cjs/{Protocol.js → Protocol.cjs} +2 -2
  12. package/build/cjs/Protocol.cjs.map +1 -0
  13. package/build/cjs/{Room.js → Room.cjs} +10 -10
  14. package/build/cjs/Room.cjs.map +1 -0
  15. package/build/cjs/{Storage.js → Storage.cjs} +2 -2
  16. package/build/cjs/Storage.cjs.map +1 -0
  17. package/build/cjs/core/{nanoevents.js → nanoevents.cjs} +2 -2
  18. package/build/cjs/core/nanoevents.cjs.map +1 -0
  19. package/build/cjs/core/{signal.js → signal.cjs} +2 -2
  20. package/build/cjs/core/signal.cjs.map +1 -0
  21. package/build/cjs/core/{utils.js → utils.cjs} +2 -2
  22. package/build/cjs/core/utils.cjs.map +1 -0
  23. package/build/cjs/errors/{Errors.js → Errors.cjs} +2 -2
  24. package/build/cjs/errors/Errors.cjs.map +1 -0
  25. package/build/cjs/{index.js → index.cjs} +11 -11
  26. package/build/cjs/index.cjs.map +1 -0
  27. package/build/cjs/{legacy.js → legacy.cjs} +2 -2
  28. package/build/cjs/legacy.cjs.map +1 -0
  29. package/build/cjs/serializer/{NoneSerializer.js → NoneSerializer.cjs} +2 -2
  30. package/build/cjs/serializer/NoneSerializer.cjs.map +1 -0
  31. package/build/cjs/serializer/{SchemaSerializer.js → SchemaSerializer.cjs} +2 -2
  32. package/build/cjs/serializer/SchemaSerializer.cjs.map +1 -0
  33. package/build/cjs/serializer/{Serializer.js → Serializer.cjs} +2 -2
  34. package/build/cjs/serializer/Serializer.cjs.map +1 -0
  35. package/build/cjs/transport/{H3Transport.js → H3Transport.cjs} +2 -2
  36. package/build/cjs/transport/H3Transport.cjs.map +1 -0
  37. package/build/cjs/transport/{WebSocketTransport.js → WebSocketTransport.cjs} +2 -2
  38. package/build/cjs/transport/WebSocketTransport.cjs.map +1 -0
  39. package/build/esm/3rd_party/discord.mjs +1 -1
  40. package/build/esm/Auth.mjs +1 -1
  41. package/build/esm/Client.mjs +1 -1
  42. package/build/esm/Connection.mjs +1 -1
  43. package/build/esm/HTTP.mjs +1 -1
  44. package/build/esm/Protocol.mjs +1 -1
  45. package/build/esm/Room.mjs +1 -1
  46. package/build/esm/Storage.mjs +1 -1
  47. package/build/esm/core/nanoevents.mjs +1 -1
  48. package/build/esm/core/signal.mjs +1 -1
  49. package/build/esm/core/utils.mjs +1 -1
  50. package/build/esm/errors/Errors.mjs +1 -1
  51. package/build/esm/index.mjs +1 -1
  52. package/build/esm/legacy.mjs +1 -1
  53. package/build/esm/serializer/NoneSerializer.mjs +1 -1
  54. package/build/esm/serializer/SchemaSerializer.mjs +1 -1
  55. package/build/esm/serializer/Serializer.mjs +1 -1
  56. package/build/esm/transport/H3Transport.mjs +1 -1
  57. package/build/esm/transport/WebSocketTransport.mjs +1 -1
  58. package/dist/colyseus-cocos-creator.js +1 -1
  59. package/dist/colyseus.js +1 -1
  60. package/dist/debug.js +1 -1
  61. package/package.json +6 -6
  62. package/build/cjs/3rd_party/discord.js.map +0 -1
  63. package/build/cjs/Auth.js.map +0 -1
  64. package/build/cjs/Client.js.map +0 -1
  65. package/build/cjs/Connection.js.map +0 -1
  66. package/build/cjs/HTTP.js.map +0 -1
  67. package/build/cjs/Protocol.js.map +0 -1
  68. package/build/cjs/Room.js.map +0 -1
  69. package/build/cjs/Storage.js.map +0 -1
  70. package/build/cjs/core/nanoevents.js.map +0 -1
  71. package/build/cjs/core/signal.js.map +0 -1
  72. package/build/cjs/core/utils.js.map +0 -1
  73. package/build/cjs/errors/Errors.js.map +0 -1
  74. package/build/cjs/index.js.map +0 -1
  75. package/build/cjs/legacy.js.map +0 -1
  76. package/build/cjs/serializer/NoneSerializer.js.map +0 -1
  77. package/build/cjs/serializer/SchemaSerializer.js.map +0 -1
  78. package/build/cjs/serializer/Serializer.js.map +0 -1
  79. package/build/cjs/transport/H3Transport.js.map +0 -1
  80. package/build/cjs/transport/WebSocketTransport.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  //
@@ -31,4 +31,4 @@ if (typeof (FormData) === "undefined") {
31
31
  globalThis['FormData'] = class {
32
32
  };
33
33
  }
34
- //# sourceMappingURL=legacy.js.map
34
+ //# sourceMappingURL=legacy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.cjs","sources":["../../src/legacy.ts"],"sourcesContent":["//\n// Polyfills for legacy environments\n//\n\n/*\n * Support Android 4.4.x\n */\nif (!ArrayBuffer.isView) {\n ArrayBuffer.isView = (a: any): a is ArrayBufferView => {\n return a !== null && typeof (a) === 'object' && a.buffer instanceof ArrayBuffer;\n };\n}\n\n// Define globalThis if not available.\n// https://github.com/colyseus/colyseus.js/issues/86\nif (\n typeof (globalThis) === \"undefined\" &&\n typeof (window) !== \"undefined\"\n) {\n // @ts-ignore\n window['globalThis'] = window;\n}\n\n// Cocos Creator does not provide \"FormData\"\n// Define a dummy implementation so it doesn't crash\nif (typeof(FormData) === \"undefined\") {\n // @ts-ignore\n globalThis['FormData'] = class {};\n}"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AACA;AAEA;;AAEG;AACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACrB,IAAA,WAAW,CAAC,MAAM,GAAG,CAAC,CAAM,KAA0B;AAClD,QAAA,OAAO,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW;AACnF,IAAA,CAAC;AACL;AAEA;AACA;AACA,IACI,QAAQ,UAAU,CAAC,KAAK,WAAW;AACnC,IAAA,QAAQ,MAAM,CAAC,KAAK,WAAW,EACjC;;AAEE,IAAA,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM;AACjC;AAEA;AACA;AACA,IAAI,QAAO,QAAQ,CAAC,KAAK,WAAW,EAAE;;IAElC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAA;KAAQ;AACrC;;"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  class NoneSerializer {
@@ -15,4 +15,4 @@ class NoneSerializer {
15
15
  }
16
16
 
17
17
  exports.NoneSerializer = NoneSerializer;
18
- //# sourceMappingURL=NoneSerializer.js.map
18
+ //# sourceMappingURL=NoneSerializer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoneSerializer.cjs","sources":["../../../src/serializer/NoneSerializer.ts"],"sourcesContent":["import type { Serializer } from \"./Serializer.ts\";\n\nexport class NoneSerializer<T = any> implements Serializer<T> {\n setState(rawState: any): void {}\n getState() { return null; }\n patch(patches) {}\n teardown() { }\n handshake(bytes: Uint8Array) {}\n}\n"],"names":[],"mappings":";;;;;;;;MAEa,cAAc,CAAA;IACvB,QAAQ,CAAC,QAAa,EAAA,EAAS;AAC/B,IAAA,QAAQ,GAAA,EAAK,OAAO,IAAI,CAAC,CAAC;IAC1B,KAAK,CAAC,OAAO,EAAA,EAAG;AAChB,IAAA,QAAQ,KAAK;IACb,SAAS,CAAC,KAAiB,EAAA,EAAG;AACjC;;;;"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  var schema = require('@colyseus/schema');
@@ -58,4 +58,4 @@ class SchemaSerializer {
58
58
 
59
59
  exports.SchemaSerializer = SchemaSerializer;
60
60
  exports.getStateCallbacks = getStateCallbacks;
61
- //# sourceMappingURL=SchemaSerializer.js.map
61
+ //# sourceMappingURL=SchemaSerializer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaSerializer.cjs","sources":["../../../src/serializer/SchemaSerializer.ts"],"sourcesContent":["import { Schema, Decoder, Reflection, Iterator, getDecoderStateCallbacks } from \"@colyseus/schema\";\nimport type { Serializer } from \"./Serializer.ts\";\nimport type { Room } from \"../Room.ts\";\n\nexport type SchemaConstructor<T = Schema> = new (...args: any[]) => T;\n\n//\n// TODO: use a schema interface, which even having duplicate definitions, it could be used to get the callback proxy.\n//\n// ```ts\n// export type SchemaCallbackProxy<RoomState> = (<T extends ISchema>(instance: T) => CallbackProxy<T>);\n// export function getStateCallbacks<T extends ISchema>(room: Room<T>) {\n// ```\n//\nexport function getStateCallbacks<T>(room: Room<any, T>) {\n try {\n // SchemaSerializer\n // @ts-ignore\n return getDecoderStateCallbacks<T>((room['serializer'] as unknown as SchemaSerializer<T>).decoder);\n } catch (e) {\n // NoneSerializer\n return undefined;\n }\n}\n\nexport class SchemaSerializer<T extends Schema = any> implements Serializer<T> {\n state: T;\n decoder: Decoder<T>;\n\n setState(encodedState: Uint8Array, it?: Iterator) {\n this.decoder.decode(encodedState, it);\n }\n\n getState() {\n return this.state;\n }\n\n patch(patches: Uint8Array, it?: Iterator) {\n return this.decoder.decode(patches, it);\n }\n\n teardown() {\n this.decoder.root.clearRefs();\n }\n\n handshake(bytes: Uint8Array, it?: Iterator) {\n if (this.state) {\n //\n // TODO: validate definitions against concreate this.state instance\n //\n Reflection.decode(bytes, it); // no-op\n\n this.decoder = new Decoder(this.state);\n\n } else {\n // initialize reflected state from server\n this.decoder = Reflection.decode(bytes, it);\n this.state = this.decoder.state;\n }\n }\n}\n"],"names":["getDecoderStateCallbacks","Reflection","Decoder"],"mappings":";;;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACM,SAAU,iBAAiB,CAAI,IAAkB,EAAA;AACnD,IAAA,IAAI;;;QAGA,OAAOA,+BAAwB,CAAK,IAAI,CAAC,YAAY,CAAoC,CAAC,OAAO,CAAC;IACtG;IAAE,OAAO,CAAC,EAAE;;AAER,QAAA,OAAO,SAAS;IACpB;AACJ;MAEa,gBAAgB,CAAA;IAIzB,QAAQ,CAAC,YAAwB,EAAE,EAAa,EAAA;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;IACzC;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,KAAK,CAAC,OAAmB,EAAE,EAAa,EAAA;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAC3C;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;IACjC;IAEA,SAAS,CAAC,KAAiB,EAAE,EAAa,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;;;YAIZC,iBAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAE7B,IAAI,CAAC,OAAO,GAAG,IAAIC,cAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAE1C;aAAO;;YAEH,IAAI,CAAC,OAAO,GAAGD,iBAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QACnC;IACJ;AACH;;;;;"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  const serializers = {};
@@ -20,4 +20,4 @@ function getSerializer(id) {
20
20
 
21
21
  exports.getSerializer = getSerializer;
22
22
  exports.registerSerializer = registerSerializer;
23
- //# sourceMappingURL=Serializer.js.map
23
+ //# sourceMappingURL=Serializer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serializer.cjs","sources":["../../../src/serializer/Serializer.ts"],"sourcesContent":["import type { Iterator } from \"@colyseus/schema\";\n\nexport interface Serializer<State> {\n setState(data: Uint8Array, it?: Iterator): void;\n getState(): State;\n\n patch(data: Uint8Array, it?: Iterator): void;\n teardown(): void;\n\n handshake?(bytes: Uint8Array, it?: any): void;\n}\n\nconst serializers: { [id: string]: any } = {};\n\nexport function registerSerializer (id: string, serializer: any) {\n serializers[id] = serializer;\n}\n\nexport function getSerializer (id: string) {\n const serializer = serializers[id];\n if (!serializer) { throw new Error(\"missing serializer: \" + id); }\n return serializer;\n}"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,WAAW,GAA0B,EAAE;AAEvC,SAAU,kBAAkB,CAAE,EAAU,EAAE,UAAe,EAAA;AAC3D,IAAA,WAAW,CAAC,EAAE,CAAC,GAAG,UAAU;AAChC;AAEM,SAAU,aAAa,CAAE,EAAU,EAAA;AACrC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC;IAAE;AACjE,IAAA,OAAO,UAAU;AACrB;;;;;"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
@@ -168,4 +168,4 @@ class H3TransportTransport {
168
168
  }
169
169
 
170
170
  exports.H3TransportTransport = H3TransportTransport;
171
- //# sourceMappingURL=H3Transport.js.map
171
+ //# sourceMappingURL=H3Transport.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"H3Transport.cjs","sources":["../../../src/transport/H3Transport.ts"],"sourcesContent":["import { encode, decode, type Iterator } from '@colyseus/schema';\nimport type { ITransport, ITransportEventMap } from \"./ITransport.ts\";\n\nexport class H3TransportTransport implements ITransport {\n wt: WebTransport;\n isOpen: boolean = false;\n events: ITransportEventMap;\n\n reader: ReadableStreamDefaultReader;\n writer: WritableStreamDefaultWriter;\n\n unreliableReader: ReadableStreamDefaultReader<Uint8Array>;\n unreliableWriter: WritableStreamDefaultWriter<Uint8Array>;\n\n private lengthPrefixBuffer = new Uint8Array(9); // 9 bytes is the maximum length of a length prefix\n\n constructor(events: ITransportEventMap) {\n this.events = events;\n }\n\n public connect(url: string, options: any = {}) {\n const wtOpts: WebTransportOptions = options.fingerprint && ({\n // requireUnreliable: true,\n // congestionControl: \"default\", // \"low-latency\" || \"throughput\"\n\n serverCertificateHashes: [{\n algorithm: 'sha-256',\n value: new Uint8Array(options.fingerprint).buffer\n }]\n }) || undefined;\n\n this.wt = new WebTransport(url, wtOpts);\n\n this.wt.ready.then((e) => {\n console.log(\"WebTransport ready!\", e)\n this.isOpen = true;\n\n this.unreliableReader = this.wt.datagrams.readable.getReader();\n this.unreliableWriter = this.wt.datagrams.writable.getWriter();\n\n const incomingBidi = this.wt.incomingBidirectionalStreams.getReader();\n incomingBidi.read().then((stream) => {\n this.reader = stream.value.readable.getReader();\n this.writer = stream.value.writable.getWriter();\n\n // immediately write room/sessionId for establishing the room connection\n this.sendSeatReservation(options.roomId, options.sessionId, options.reconnectionToken, options.skipHandshake);\n\n // start reading incoming data\n this.readIncomingData();\n this.readIncomingUnreliableData();\n\n }).catch((e) => {\n console.error(\"failed to read incoming stream\", e);\n console.error(\"TODO: close the connection\");\n });\n\n // this.events.onopen(e);\n }).catch((e: WebTransportCloseInfo) => {\n // this.events.onerror(e);\n // this.events.onclose({ code: e.closeCode, reason: e.reason });\n console.log(\"WebTransport not ready!\", e)\n this._close();\n });\n\n this.wt.closed.then((e: WebTransportCloseInfo) => {\n console.log(\"WebTransport closed w/ success\", e)\n this.events.onclose({ code: e.closeCode, reason: e.reason });\n\n }).catch((e: WebTransportCloseInfo) => {\n console.log(\"WebTransport closed w/ error\", e)\n this.events.onerror(e);\n this.events.onclose({ code: e.closeCode, reason: e.reason });\n }).finally(() => {\n this._close();\n });\n }\n\n public send(data: Buffer | Uint8Array): void {\n const prefixLength = encode.number(this.lengthPrefixBuffer as any, data.length, { offset: 0 });\n const dataWithPrefixedLength = new Uint8Array(prefixLength + data.length);\n dataWithPrefixedLength.set(this.lengthPrefixBuffer.subarray(0, prefixLength), 0);\n dataWithPrefixedLength.set(data, prefixLength);\n this.writer.write(dataWithPrefixedLength);\n }\n\n public sendUnreliable(data: Buffer | Uint8Array): void {\n const prefixLength = encode.number(this.lengthPrefixBuffer as any, data.length, { offset: 0 });\n const dataWithPrefixedLength = new Uint8Array(prefixLength + data.length);\n dataWithPrefixedLength.set(this.lengthPrefixBuffer.subarray(0, prefixLength), 0);\n dataWithPrefixedLength.set(data, prefixLength);\n this.unreliableWriter.write(dataWithPrefixedLength);\n }\n\n public close(code?: number, reason?: string) {\n try {\n this.wt.close({ closeCode: code, reason: reason });\n } catch (e) {\n console.error(e);\n }\n }\n\n protected async readIncomingData() {\n let result: ReadableStreamReadResult<Uint8Array>;\n\n while (this.isOpen) {\n try {\n result = await this.reader.read();\n\n //\n // a single read may contain multiple messages\n // each message is prefixed with its length\n //\n\n const messages = result.value;\n const it: Iterator = { offset: 0 };\n do {\n //\n // QUESTION: should we buffer the message in case it's not fully read?\n //\n\n const length = decode.number(messages as any, it);\n this.events.onmessage({ data: messages.subarray(it.offset, it.offset + length) });\n it.offset += length;\n } while (it.offset < messages.length);\n\n } catch (e) {\n if (e.message.indexOf(\"session is closed\") === -1) {\n console.error(\"H3Transport: failed to read incoming data\", e);\n }\n break;\n }\n\n if (result.done) {\n break;\n }\n }\n }\n\n protected async readIncomingUnreliableData() {\n let result: ReadableStreamReadResult<Uint8Array>;\n\n while (this.isOpen) {\n try {\n result = await this.unreliableReader.read();\n\n //\n // a single read may contain multiple messages\n // each message is prefixed with its length\n //\n\n const messages = result.value;\n const it: Iterator = { offset: 0 };\n do {\n //\n // QUESTION: should we buffer the message in case it's not fully read?\n //\n\n const length = decode.number(messages as any, it);\n this.events.onmessage({ data: messages.subarray(it.offset, it.offset + length) });\n it.offset += length;\n } while (it.offset < messages.length);\n\n } catch (e) {\n if (e.message.indexOf(\"session is closed\") === -1) {\n console.error(\"H3Transport: failed to read incoming data\", e);\n }\n break;\n }\n\n if (result.done) {\n break;\n }\n }\n }\n\n protected sendSeatReservation (roomId: string, sessionId: string, reconnectionToken?: string, skipHandshake?: boolean) {\n const it: Iterator = { offset: 0 };\n const bytes: number[] = [];\n\n encode.string(bytes, roomId, it);\n encode.string(bytes, sessionId, it);\n\n if (reconnectionToken) {\n encode.string(bytes, reconnectionToken, it);\n }\n\n if (skipHandshake) {\n encode.boolean(bytes, 1, it);\n }\n\n this.writer.write(new Uint8Array(bytes).buffer);\n }\n\n protected _close() {\n this.isOpen = false;\n }\n\n}\n"],"names":["encode","decode"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  'use strict';
8
8
 
9
9
  var NodeWebSocket = require('ws');
@@ -47,4 +47,4 @@ class WebSocketTransport {
47
47
  }
48
48
 
49
49
  exports.WebSocketTransport = WebSocketTransport;
50
- //# sourceMappingURL=WebSocketTransport.js.map
50
+ //# sourceMappingURL=WebSocketTransport.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketTransport.cjs","sources":["../../../src/transport/WebSocketTransport.ts"],"sourcesContent":["import NodeWebSocket from \"ws\";\nimport type { ITransport, ITransportEventMap } from \"./ITransport.ts\";\n\nconst WebSocket = globalThis.WebSocket || NodeWebSocket;\n\nexport class WebSocketTransport implements ITransport {\n ws: WebSocket | NodeWebSocket;\n protocols?: string | string[];\n\n events: ITransportEventMap;\n\n constructor(events: ITransportEventMap) {\n this.events = events;\n }\n\n public send(data: Buffer | Uint8Array): void {\n this.ws.send(data);\n }\n\n public sendUnreliable(data: Uint8Array): void {\n console.warn(\"colyseus.js: The WebSocket transport does not support unreliable messages\");\n }\n\n /**\n * @param url URL to connect to\n * @param headers custom headers to send with the connection (only supported in Node.js. Web Browsers do not allow setting custom headers)\n */\n public connect(url: string, headers?: any): void {\n try {\n // Node or Bun environments (supports custom headers)\n this.ws = new WebSocket(url, { headers, protocols: this.protocols });\n\n } catch (e) {\n // browser environment (custom headers not supported)\n this.ws = new WebSocket(url, this.protocols);\n }\n\n this.ws.binaryType = 'arraybuffer';\n this.ws.onopen = this.events.onopen;\n this.ws.onmessage = this.events.onmessage;\n this.ws.onclose = this.events.onclose;\n this.ws.onerror = this.events.onerror;\n }\n\n public close(code?: number, reason?: string) {\n this.ws.close(code, reason);\n }\n\n get isOpen() {\n return this.ws.readyState === WebSocket.OPEN;\n }\n\n}\n"],"names":[],"mappings":";;;;;;;;;;AAGA,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,aAAa;MAE1C,kBAAkB,CAAA;AAM3B,IAAA,WAAA,CAAY,MAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB;AAEO,IAAA,IAAI,CAAC,IAAyB,EAAA;AACjC,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACtB;AAEO,IAAA,cAAc,CAAC,IAAgB,EAAA;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;IAC7F;AAEA;;;AAGG;IACI,OAAO,CAAC,GAAW,EAAE,OAAa,EAAA;AACrC,QAAA,IAAI;;AAEA,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAExE;QAAE,OAAO,CAAC,EAAE;;AAER,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;QAChD;AAEA,QAAA,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa;QAClC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QACnC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;QACzC,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;QACrC,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;IACzC;IAEO,KAAK,CAAC,IAAa,EAAE,MAAe,EAAA;QACvC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B;AAEA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;IAChD;AAEH;;;;"}
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  /**
8
8
  * Discord Embedded App SDK
9
9
  * https://github.com/colyseus/colyseus/issues/707
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { getItem, removeItem, setItem } from './Storage.mjs';
8
8
  import { createNanoEvents } from './core/nanoevents.mjs';
9
9
 
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { ServerError, CloseCode } from './errors/Errors.mjs';
8
8
  import { Room } from './Room.mjs';
9
9
  import { HTTP } from './HTTP.mjs';
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { H3TransportTransport } from './transport/H3Transport.mjs';
8
8
  import { WebSocketTransport } from './transport/WebSocketTransport.mjs';
9
9
 
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  function isJSONSerializable(value) {
8
8
  if (value === undefined) {
9
9
  return false;
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  // Use codes between 0~127 for lesser throughput (1 byte)
8
8
  var Protocol;
9
9
  (function (Protocol) {
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { encode, decode } from '@colyseus/schema';
8
8
  import { Packr, unpack } from '@colyseus/msgpackr';
9
9
  import { Connection } from './Connection.mjs';
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  /// <reference path="../typings/cocos-creator.d.ts" />
8
8
  /**
9
9
  * We do not assign 'storage' to window.localStorage immediatelly for React
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  /**
8
8
  * The MIT License (MIT)
9
9
  *
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  class EventEmitter {
8
8
  handlers = [];
9
9
  register(cb, once = false) {
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  function now() {
8
8
  return typeof (performance) !== 'undefined' ? performance.now() : Date.now();
9
9
  }
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  var CloseCode;
8
8
  (function (CloseCode) {
9
9
  CloseCode[CloseCode["NORMAL_CLOSURE"] = 1000] = "NORMAL_CLOSURE";
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import './legacy.mjs';
8
8
  export { Client, ColyseusSDK, MatchMakeError } from './Client.mjs';
9
9
  export { ErrorCode, Protocol } from './Protocol.mjs';
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  //
8
8
  // Polyfills for legacy environments
9
9
  //
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  class NoneSerializer {
8
8
  setState(rawState) { }
9
9
  getState() { return null; }
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { Reflection, Decoder, getDecoderStateCallbacks } from '@colyseus/schema';
8
8
 
9
9
  //
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  const serializers = {};
8
8
  function registerSerializer(id, serializer) {
9
9
  serializers[id] = serializer;
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import { encode, decode } from '@colyseus/schema';
8
8
 
9
9
  class H3TransportTransport {
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  import NodeWebSocket from 'ws';
8
8
 
9
9
  const WebSocket = globalThis.WebSocket || NodeWebSocket;
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2 - @colyseus/schema 4.0.1
6
+ // colyseus.js@0.17.4 - @colyseus/schema 4.0.1
7
7
  // THIS VERSION USES "XMLHttpRequest" INSTEAD OF "fetch" FOR COMPATIBILITY WITH COCOS CREATOR
8
8
  (function (global, factory) {
9
9
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
package/dist/colyseus.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2 - @colyseus/schema 4.0.1
6
+ // colyseus.js@0.17.4 - @colyseus/schema 4.0.1
7
7
  (function (global, factory) {
8
8
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
9
9
  typeof define === 'function' && define.amd ? define('@colyseus/sdk', ['exports'], factory) :
package/dist/debug.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // This software is released under the MIT License.
4
4
  // https://opensource.org/license/MIT
5
5
  //
6
- // colyseus.js@0.17.2
6
+ // colyseus.js@0.17.4
7
7
  (function (Client) {
8
8
  'use strict';
9
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colyseus/sdk",
3
- "version": "0.17.2",
3
+ "version": "0.17.4",
4
4
  "description": "Colyseus Multiplayer SDK for JavaScript/TypeScript",
5
5
  "author": "Endel Dreyer",
6
6
  "license": "MIT",
@@ -13,22 +13,22 @@
13
13
  "lib"
14
14
  ],
15
15
  "browser": "dist/colyseus.js",
16
- "main": "build/cjs/index.js",
16
+ "main": "build/cjs/index.cjs",
17
17
  "module": "build/esm/index.mjs",
18
18
  "typings": "lib/index.d.ts",
19
19
  "exports": {
20
20
  ".": {
21
21
  "@source": "./src/index.ts",
22
- "browser": "./build/cjs/index.js",
22
+ "browser": "./build/cjs/index.cjs",
23
23
  "import": "./build/esm/index.mjs",
24
- "require": "./build/cjs/index.js",
24
+ "require": "./build/cjs/index.cjs",
25
25
  "types": "./lib/index.d.ts"
26
26
  },
27
27
  "./*": {
28
28
  "@source": "./src/*.ts",
29
29
  "types": "./lib/*.d.ts",
30
30
  "import": "./build/esm/*.mjs",
31
- "require": "./build/cjs/*.js"
31
+ "require": "./build/cjs/*.cjs"
32
32
  },
33
33
  "./package.json": "./package.json"
34
34
  },
@@ -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.2"
85
+ "@colyseus/core": "^0.17.4"
86
86
  },
87
87
  "peerDependencies": {
88
88
  "@colyseus/core": "0.17.x",
@@ -1 +0,0 @@
1
- {"version":3,"file":"discord.js","sources":["../../../src/3rd_party/discord.ts"],"sourcesContent":["/**\n * Discord Embedded App SDK\n * https://github.com/colyseus/colyseus/issues/707\n *\n * All URLs must go through the local proxy from\n * https://<app_id>.discordsays.com/.proxy/<mapped_url>/...\n *\n * URL Mapping Examples:\n *\n * 1. Using Colyseus Cloud:\n * - /colyseus/{subdomain} -> {subdomain}.colyseus.cloud\n *\n * Example:\n * const client = new Client(\"https://xxxx.colyseus.cloud\");\n *\n * -------------------------------------------------------------\n *\n * 2. Using `cloudflared` tunnel:\n * - /colyseus/ -> <your-cloudflared-url>.trycloudflare.com\n *\n * Example:\n * const client = new Client(\"https://<your-cloudflared-url>.trycloudflare.com\");\n *\n * -------------------------------------------------------------\n *\n * 3. Providing a manual /.proxy/your-mapping:\n * - /your-mapping/ -> your-endpoint.com\n *\n * Example:\n * const client = new Client(\"/.proxy/your-mapping\");\n *\n */\nexport function discordURLBuilder (url: URL): string {\n const localHostname = window?.location?.hostname || \"localhost\";\n\n const remoteHostnameSplitted = url.hostname.split('.');\n const subdomain = (\n !url.hostname.includes(\"trycloudflare.com\") && // ignore cloudflared subdomains\n !url.hostname.includes(\"discordsays.com\") && // ignore discordsays.com subdomains\n remoteHostnameSplitted.length > 2\n )\n ? `/${remoteHostnameSplitted[0]}`\n : '';\n\n return (url.pathname.startsWith(\"/.proxy\"))\n ? `${url.protocol}//${localHostname}${subdomain}${url.pathname}${url.search}`\n : `${url.protocol}//${localHostname}/.proxy/colyseus${subdomain}${url.pathname}${url.search}`;\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACG,SAAU,iBAAiB,CAAE,GAAQ,EAAA;;AACvC,IAAA,MAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,KAAI,WAAW;IAE/D,MAAM,sBAAsB,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,IAAA,MAAM,SAAS,GAAG,CACd,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC3C,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACzC,QAAA,sBAAsB,CAAC,MAAM,GAAG,CAAC;AAEjC,UAAE,CAAA,CAAA,EAAI,sBAAsB,CAAC,CAAC,CAAC,CAAA;UAC7B,EAAE;IAER,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;AACtC,UAAE,CAAA,EAAG,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAA;AAC3E,UAAE,CAAA,EAAG,GAAG,CAAC,QAAQ,CAAA,EAAA,EAAK,aAAa,CAAA,gBAAA,EAAmB,SAAS,CAAA,EAAG,GAAG,CAAC,QAAQ,CAAA,EAAG,GAAG,CAAC,MAAM,EAAE;AACrG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Auth.js","sources":["../../src/Auth.ts"],"sourcesContent":["import { HTTP } from \"./HTTP.ts\";\nimport { getItem, removeItem, setItem } from \"./Storage.ts\";\nimport { createNanoEvents } from './core/nanoevents.ts';\n\nexport interface AuthSettings {\n path: string;\n key: string;\n}\n\nexport interface PopupSettings {\n prefix: string;\n width: number;\n height: number;\n}\n\nexport interface AuthData {\n user: any;\n token: string;\n}\n\nexport class Auth {\n settings: AuthSettings = {\n path: \"/auth\",\n key: \"colyseus-auth-token\",\n };\n\n #_initialized = false;\n #_signInWindow: WindowProxy | null = null;\n #_events = createNanoEvents();\n\n protected http: HTTP<any>;\n\n constructor(http: HTTP<any>) {\n this.http = http;\n getItem(this.settings.key, (token: string) => this.token = token);\n }\n\n public set token(token: string) {\n this.http.authToken = token;\n }\n\n public get token(): string | undefined {\n return this.http.authToken;\n }\n\n public onChange(callback: (response: AuthData) => void) {\n const unbindChange = this.#_events.on(\"change\", callback);\n if (!this.#_initialized) {\n this.getUserData().then((userData: any) => {\n this.emitChange({ ...userData, token: this.token });\n\n }).catch((e) => {\n // user is not logged in, or service is down\n this.emitChange({ user: null, token: undefined });\n });\n }\n this.#_initialized = true;\n return unbindChange;\n }\n\n public async getUserData() {\n if (this.token) {\n return (await this.http.get(`${this.settings.path}/userdata`)).data;\n } else {\n throw new Error(\"missing auth.token\");\n }\n }\n\n public async registerWithEmailAndPassword(email: string, password: string, options?: any) {\n const data = (await this.http.post(`${this.settings.path}/register`, {\n body: { email, password, options, },\n })).data;\n\n this.emitChange(data as any);\n\n return data;\n }\n\n public async signInWithEmailAndPassword(email: string, password: string) {\n const data = (await this.http.post(`${this.settings.path}/login`, {\n body: { email, password, },\n })).data;\n\n this.emitChange(data as any);\n\n return data;\n }\n\n public async signInAnonymously(options?: any) {\n const data = (await this.http.post(`${this.settings.path}/anonymous`, {\n body: { options, }\n })).data;\n\n this.emitChange(data as any);\n\n return data;\n }\n\n public async sendPasswordResetEmail(email: string) {\n return (await this.http.post(`${this.settings.path}/forgot-password`, {\n body: { email, }\n })).data;\n }\n\n public async signInWithProvider(providerName: string, settings: Partial<PopupSettings> = {}) {\n return new Promise((resolve, reject) => {\n const w = settings.width || 480;\n const h = settings.height || 768;\n\n // forward existing token for upgrading\n const upgradingToken = this.token ? `?token=${this.token}` : \"\";\n\n // Capitalize first letter of providerName\n const title = `Login with ${(providerName[0].toUpperCase() + providerName.substring(1))}`;\n const url = this.http['sdk']['getHttpEndpoint'](`${(settings.prefix || `${this.settings.path}/provider`)}/${providerName}${upgradingToken}`);\n\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n\n this.#_signInWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);\n\n const onMessage = (event: MessageEvent) => {\n // TODO: it is a good idea to check if event.origin can be trusted!\n // if (event.origin.indexOf(window.location.hostname) === -1) { return; }\n\n // require 'user' and 'token' inside received data.\n if (event.data.user === undefined && event.data.token === undefined) { return; }\n\n clearInterval(rejectionChecker);\n this.#_signInWindow?.close();\n this.#_signInWindow = null;\n\n window.removeEventListener(\"message\", onMessage);\n\n if (event.data.error !== undefined) {\n reject(event.data.error);\n\n } else {\n resolve(event.data);\n this.emitChange(event.data);\n }\n }\n\n const rejectionChecker = setInterval(() => {\n if (!this.#_signInWindow || this.#_signInWindow.closed) {\n this.#_signInWindow = null;\n reject(\"cancelled\");\n window.removeEventListener(\"message\", onMessage);\n }\n }, 200);\n\n window.addEventListener(\"message\", onMessage);\n });\n }\n\n public async signOut() {\n // @ts-ignore\n this.emitChange({ user: null, token: null });\n }\n\n private emitChange(authData: Partial<AuthData>) {\n if (authData.token !== undefined) {\n this.token = authData.token;\n\n if (authData.token === null) {\n removeItem(this.settings.key);\n\n } else {\n // store key in localStorage\n setItem(this.settings.key, authData.token);\n }\n }\n\n this.#_events.emit(\"change\", authData);\n }\n\n}\n"],"names":["createNanoEvents","getItem","__classPrivateFieldGet","__classPrivateFieldSet","removeItem","setItem"],"mappings":";;;;;;;;;;;;;MAoBa,IAAI,CAAA;AAYb,IAAA,WAAA,CAAY,IAAe,EAAA;AAX3B,QAAA,IAAA,CAAA,QAAQ,GAAiB;AACrB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,qBAAqB;SAC7B;AAED,QAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAgB,KAAK,CAAA;AACrB,QAAA,mBAAA,CAAA,GAAA,CAAA,IAAA,EAAqC,IAAI,CAAA;QACzC,aAAA,CAAA,GAAA,CAAA,IAAA,EAAWA,2BAAgB,EAAE,CAAA;AAKzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAAC,eAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAa,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrE;IAEA,IAAW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK;IAC/B;AAEA,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;IAC9B;AAEO,IAAA,QAAQ,CAAC,QAAsC,EAAA;AAClD,QAAA,MAAM,YAAY,GAAGC,4BAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACzD,QAAA,IAAI,CAACA,4BAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,CAAc,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,QAAa,KAAI;gBACtC,IAAI,CAAC,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,QAAQ,CAAA,EAAA,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAA,CAAA,CAAG;AAEvD,YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI;;AAEX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACrD,YAAA,CAAC,CAAC;QACN;AACA,QAAAC,4BAAA,CAAA,IAAI,EAAA,kBAAA,EAAiB,IAAI,EAAA,GAAA,CAAA;AACzB,QAAA,OAAO,YAAY;IACvB;IAEa,WAAW,GAAA;;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA,SAAA,CAAW,CAAC,EAAE,IAAI;YACvE;iBAAO;AACH,gBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;YACzC;QACJ,CAAC,CAAA;AAAA,IAAA;AAEY,IAAA,4BAA4B,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAa,EAAA;;AACpF,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE;AACjE,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG;aACtC,CAAC,EAAE,IAAI;AAER,YAAA,IAAI,CAAC,UAAU,CAAC,IAAW,CAAC;AAE5B,YAAA,OAAO,IAAI;QACf,CAAC,CAAA;AAAA,IAAA;IAEY,0BAA0B,CAAC,KAAa,EAAE,QAAgB,EAAA;;AACnE,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE;AAC9D,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG;aAC7B,CAAC,EAAE,IAAI;AAER,YAAA,IAAI,CAAC,UAAU,CAAC,IAAW,CAAC;AAE5B,YAAA,OAAO,IAAI;QACf,CAAC,CAAA;AAAA,IAAA;AAEY,IAAA,iBAAiB,CAAC,OAAa,EAAA;;AACxC,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE;gBAClE,IAAI,EAAE,EAAE,OAAO;aAClB,CAAC,EAAE,IAAI;AAER,YAAA,IAAI,CAAC,UAAU,CAAC,IAAW,CAAC;AAE5B,YAAA,OAAO,IAAI;QACf,CAAC,CAAA;AAAA,IAAA;AAEY,IAAA,sBAAsB,CAAC,KAAa,EAAA;;AAC7C,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE;gBAClE,IAAI,EAAE,EAAE,KAAK;aAChB,CAAC,EAAE,IAAI;QACZ,CAAC,CAAA;AAAA,IAAA;IAEY,kBAAkB,CAAA,cAAA,EAAA;mEAAC,YAAoB,EAAE,WAAmC,EAAE,EAAA;YACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,gBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,GAAG;AAC/B,gBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG;;AAGhC,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;;gBAG/D,MAAM,KAAK,GAAG,CAAA,WAAA,GAAe,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACzF,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA,GAAI,QAAQ,CAAC,MAAM,IAAI,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA,SAAA,CAAW,EAAC,CAAA,EAAI,YAAY,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC;AAE5I,gBAAA,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEzCA,4BAAA,CAAA,IAAI,EAAA,mBAAA,EAAkB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,qHAAqH,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,EAAA,GAAA,CAAA;AAE9N,gBAAA,MAAM,SAAS,GAAG,CAAC,KAAmB,KAAI;;;;;AAKtC,oBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;wBAAE;oBAAQ;oBAE/E,aAAa,CAAC,gBAAgB,CAAC;AAC/B,oBAAA,CAAA,EAAA,GAAAD,6BAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAe,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;AAC5B,oBAAAC,4BAAA,CAAA,IAAI,EAAA,mBAAA,EAAkB,IAAI,EAAA,GAAA,CAAA;AAE1B,oBAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;oBAEhD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAChC,wBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;oBAE5B;yBAAO;AACH,wBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC/B;AACJ,gBAAA,CAAC;AAED,gBAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAK;oBACtC,IAAI,CAACD,4BAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAe,IAAIA,4BAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAe,CAAC,MAAM,EAAE;AACpD,wBAAAC,4BAAA,CAAA,IAAI,EAAA,mBAAA,EAAkB,IAAI,EAAA,GAAA,CAAA;wBAC1B,MAAM,CAAC,WAAW,CAAC;AACnB,wBAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;oBACpD;gBACJ,CAAC,EAAE,GAAG,CAAC;AAEP,gBAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjD,YAAA,CAAC,CAAC;QACN,CAAC,CAAA;AAAA,IAAA;IAEY,OAAO,GAAA;;;AAEhB,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC,CAAA;AAAA,IAAA;AAEO,IAAA,UAAU,CAAC,QAA2B,EAAA;AAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAE3B,YAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,EAAE;AACzB,gBAAAC,kBAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAEjC;iBAAO;;gBAEHC,eAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC9C;QACJ;QAEAH,4BAAA,CAAA,IAAI,qBAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1C;AAEH;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Client.js","sources":["../../src/Client.ts"],"sourcesContent":["import type { matchMaker, SDKTypes, Room as ServerRoom } from '@colyseus/core';\n\nimport { CloseCode, ServerError } from './errors/Errors.ts';\nimport { Room } from './Room.ts';\nimport { SchemaConstructor } from './serializer/SchemaSerializer.ts';\nimport { HTTP } from './HTTP.ts';\nimport { Auth } from './Auth.ts';\nimport { Protocol } from './Protocol.ts';\nimport { Connection } from './Connection.ts';\nimport { discordURLBuilder } from './3rd_party/discord.ts';\n\nexport type JoinOptions = any;\nexport type ISeatReservation = matchMaker.ISeatReservation;\n\nexport class MatchMakeError extends Error {\n code: number;\n constructor(message: string, code: number) {\n super(message);\n this.code = code;\n this.name = \"MatchMakeError\";\n Object.setPrototypeOf(this, MatchMakeError.prototype);\n }\n}\n\n// - React Native does not provide `window.location`\n// - Cocos Creator (Native) does not provide `window.location.hostname`\nconst DEFAULT_ENDPOINT = (typeof (window) !== \"undefined\" && typeof (window?.location?.hostname) !== \"undefined\")\n ? `${window.location.protocol.replace(\"http\", \"ws\")}//${window.location.hostname}${(window.location.port && `:${window.location.port}`)}`\n : \"ws://127.0.0.1:2567\";\n\nexport interface EndpointSettings {\n hostname: string,\n secure: boolean,\n port?: number,\n pathname?: string,\n searchParams?: string,\n protocol?: \"ws\" | \"h3\";\n}\n\nexport interface ClientOptions {\n headers?: { [id: string]: string };\n urlBuilder?: (url: URL) => string;\n protocol?: \"ws\" | \"h3\";\n}\n\nexport interface LatencyOptions {\n /** \"ws\" for WebSocket, \"h3\" for WebTransport (default: \"ws\") */\n protocol?: \"ws\" | \"h3\";\n /** Number of pings to send (default: 1). Returns the average latency when > 1. */\n pingCount?: number;\n}\n\nexport class ColyseusSDK<ServerType extends SDKTypes = any> {\n static VERSION = \"0.17\";\n\n /**\n * The HTTP client to make requests to the server.\n */\n public http: HTTP<ServerType['~routes']>;\n\n /**\n * The authentication module to authenticate into requests and rooms.\n */\n public auth: Auth;\n\n /**\n * The settings used to connect to the server.\n */\n public settings: EndpointSettings;\n\n protected urlBuilder: (url: URL) => string;\n\n constructor(\n settings: string | EndpointSettings = DEFAULT_ENDPOINT,\n options?: ClientOptions,\n ) {\n if (typeof (settings) === \"string\") {\n\n //\n // endpoint by url\n //\n const url = (settings.startsWith(\"/\"))\n ? new URL(settings, DEFAULT_ENDPOINT)\n : new URL(settings);\n\n const secure = (url.protocol === \"https:\" || url.protocol === \"wss:\");\n const port = Number(url.port || (secure ? 443 : 80));\n\n this.settings = {\n hostname: url.hostname,\n pathname: url.pathname,\n port,\n secure,\n searchParams: url.searchParams.toString() || undefined,\n };\n\n } else {\n //\n // endpoint by settings\n //\n if (settings.port === undefined) {\n settings.port = (settings.secure) ? 443 : 80;\n }\n if (settings.pathname === undefined) {\n settings.pathname = \"\";\n }\n this.settings = settings;\n }\n\n // make sure pathname does not end with \"/\"\n if (this.settings.pathname.endsWith(\"/\")) {\n this.settings.pathname = this.settings.pathname.slice(0, -1);\n }\n\n // specify room connection protocol if provided\n if (options?.protocol) {\n this.settings.protocol = options.protocol;\n }\n\n this.http = new HTTP(this, {\n headers: options?.headers || {},\n });\n this.auth = new Auth(this.http);\n\n this.urlBuilder = options?.urlBuilder;\n\n //\n // Discord Embedded SDK requires a custom URL builder\n //\n if (\n !this.urlBuilder &&\n typeof (window) !== \"undefined\" &&\n window?.location?.hostname?.includes(\"discordsays.com\")\n ) {\n this.urlBuilder = discordURLBuilder;\n console.log(\"Colyseus SDK: Discord Embedded SDK detected. Using custom URL builder.\");\n }\n }\n\n /**\n * Select the endpoint with the lowest latency.\n * @param endpoints Array of endpoints to select from.\n * @param options Client options.\n * @param latencyOptions Latency measurement options (protocol, pingCount).\n * @returns The client with the lowest latency.\n */\n static async selectByLatency<ServerType extends SDKTypes = any>(\n endpoints: Array<string | EndpointSettings>,\n options?: ClientOptions,\n latencyOptions: LatencyOptions = {}\n ) {\n const clients = endpoints.map(endpoint => new ColyseusSDK<ServerType>(endpoint, options));\n\n const latencies = (await Promise.allSettled(clients.map((client, index) => client.getLatency(latencyOptions).then(latency => {\n const settings = clients[index].settings;\n console.log(`🛜 Endpoint Latency: ${latency}ms - ${settings.hostname}:${settings.port}${settings.pathname}`);\n return [index, latency]\n }))))\n .filter((result) => result.status === 'fulfilled')\n .map(result => result.value);\n\n if (latencies.length === 0) {\n throw new Error('All endpoints failed to respond');\n }\n\n return clients[latencies.sort((a, b) => a[1] - b[1])[0][0]];\n }\n\n // Overload: Use room name from ServerType to infer room type\n public async joinOrCreate<R extends keyof ServerType['~rooms']>(\n roomName: R,\n options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<ServerType>\n ): Promise<Room<ServerType['~rooms'][R]['~room']>>\n // Overload: Pass RoomType directly to extract state\n public async joinOrCreate<RoomType extends typeof ServerRoom>(\n roomName: string,\n options?: Parameters<RoomType['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<RoomType['prototype']['state']>\n ): Promise<Room<RoomType>>\n // Overload: Pass State type directly\n public async joinOrCreate<State = any>(\n roomName: string,\n options?: JoinOptions,\n rootSchema?: SchemaConstructor<State>\n ): Promise<Room<any, State>>\n // Implementation\n public async joinOrCreate<T = any>(roomName: string, options: JoinOptions = {}, rootSchema?: SchemaConstructor<T>) {\n return await this.createMatchMakeRequest<T>('joinOrCreate', roomName, options, rootSchema);\n }\n\n // Overload: Use room name from ServerType to infer room type\n public async create<R extends keyof ServerType['~rooms']>(\n roomName: R,\n options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<ServerType>\n ): Promise<Room<ServerType['~rooms'][R]['~room']>>\n // Overload: Pass RoomType directly to extract state\n public async create<RoomType extends typeof ServerRoom>(\n roomName: string,\n options?: Parameters<RoomType['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<RoomType['prototype']['state']>\n ): Promise<Room<RoomType>>\n // Overload: Pass State type directly\n public async create<State = any>(\n roomName: string,\n options?: JoinOptions,\n rootSchema?: SchemaConstructor<State>\n ): Promise<Room<any, State>>\n // Implementation\n public async create<T = any>(roomName: string, options: JoinOptions = {}, rootSchema?: SchemaConstructor<T>) {\n return await this.createMatchMakeRequest<T>('create', roomName, options, rootSchema);\n }\n\n // Overload: Use room name from ServerType to infer room type\n public async join<R extends keyof ServerType['~rooms']>(\n roomName: R,\n options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<ServerType>\n ): Promise<Room<ServerType['~rooms'][R]['~room']>>\n // Overload: Pass RoomType directly to extract state\n public async join<RoomType extends typeof ServerRoom>(\n roomName: string,\n options?: Parameters<RoomType['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<RoomType['prototype']['state']>\n ): Promise<Room<RoomType>>\n // Overload: Pass State type directly\n public async join<State = any>(\n roomName: string,\n options?: JoinOptions,\n rootSchema?: SchemaConstructor<State>\n ): Promise<Room<any, State>>\n // Implementation\n public async join<T = any>(roomName: string, options: JoinOptions = {}, rootSchema?: SchemaConstructor<T>) {\n return await this.createMatchMakeRequest<T>('join', roomName, options, rootSchema);\n }\n\n // Overload: Use room name from ServerType to infer room type\n public async joinById<R extends keyof ServerType['~rooms']>(\n roomName: R,\n options?: Parameters<ServerType['~rooms'][R]['~room']['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<ServerType>\n ): Promise<Room<ServerType['~rooms'][R]['~room']>>\n // Overload: Pass RoomType directly to extract state\n public async joinById<RoomType extends typeof ServerRoom>(\n roomId: string,\n options?: Parameters<RoomType['prototype']['onJoin']>[1],\n rootSchema?: SchemaConstructor<RoomType['prototype']['state']>\n ): Promise<Room<RoomType>>\n // Overload: Pass State type directly\n public async joinById<State = any>(\n roomId: string,\n options?: JoinOptions,\n rootSchema?: SchemaConstructor<State>\n ): Promise<Room<any, State>>\n // Implementation\n public async joinById<T = any>(roomId: string, options: JoinOptions = {}, rootSchema?: SchemaConstructor<T>) {\n return await this.createMatchMakeRequest<T>('joinById', roomId, options, rootSchema);\n }\n\n /**\n * Re-establish connection with a room this client was previously connected to.\n *\n * @param reconnectionToken The `room.reconnectionToken` from previously connected room.\n * @param rootSchema (optional) Concrete root schema definition\n * @returns Promise<Room>\n */\n // Overload: Use room name from ServerType to infer room type\n public async reconnect<R extends keyof ServerType['~rooms']>(reconnectionToken: string, roomName?: R): Promise<Room<ServerType['~rooms'][R]['~room']>>\n // Overload: Pass RoomType directly to extract state\n public async reconnect<RoomType extends typeof ServerRoom>(\n reconnectionToken: string,\n rootSchema?: SchemaConstructor<RoomType['prototype']['state']>\n ): Promise<Room<RoomType>>\n // Overload: Pass State type directly\n public async reconnect<State = any>(\n reconnectionToken: string,\n rootSchema?: SchemaConstructor<State>\n ): Promise<Room<any, State>>\n // Implementation\n public async reconnect<T = any>(reconnectionToken: string, rootSchema?: SchemaConstructor<T>) {\n if (typeof (reconnectionToken) === \"string\" && typeof (rootSchema) === \"string\") {\n throw new Error(\"DEPRECATED: .reconnect() now only accepts 'reconnectionToken' as argument.\\nYou can get this token from previously connected `room.reconnectionToken`\");\n }\n const [roomId, token] = reconnectionToken.split(\":\");\n\t\tif (!roomId || !token) {\n\t\t\tthrow new Error(\"Invalid reconnection token format.\\nThe format should be roomId:reconnectionToken\");\n\t\t}\n return await this.createMatchMakeRequest<T>('reconnect', roomId, { reconnectionToken: token }, rootSchema);\n }\n\n public async consumeSeatReservation<T>(\n response: ISeatReservation,\n rootSchema?: SchemaConstructor<T>\n ): Promise<Room<any, T>> {\n const room = this.createRoom<T>(response.name, rootSchema);\n room.roomId = response.roomId;\n room.sessionId = response.sessionId;\n\n const options: any = { sessionId: room.sessionId };\n\n // forward \"reconnection token\" in case of reconnection.\n if (response.reconnectionToken) {\n options.reconnectionToken = response.reconnectionToken;\n }\n\n room.connect(\n this.buildEndpoint(response, options),\n response,\n this.http.options.headers\n );\n\n return new Promise((resolve, reject) => {\n const onError = (code, message) => reject(new ServerError(code, message));\n room.onError.once(onError);\n\n room['onJoin'].once(() => {\n room.onError.remove(onError);\n resolve(room);\n });\n });\n }\n\n /**\n * Create a new connection with the server, and measure the latency.\n * @param options Latency measurement options (protocol, pingCount).\n */\n public getLatency(options: LatencyOptions = {}): Promise<number> {\n const protocol = options.protocol ?? \"ws\";\n const pingCount = options.pingCount ?? 1;\n\n return new Promise<number>((resolve, reject) => {\n const conn = new Connection(protocol);\n const latencies: number[] = [];\n let pingStart = 0;\n\n conn.events.onopen = () => {\n pingStart = Date.now();\n conn.send(new Uint8Array([Protocol.PING]));\n };\n\n conn.events.onmessage = (_: MessageEvent) => {\n latencies.push(Date.now() - pingStart);\n\n if (latencies.length < pingCount) {\n // Send another ping\n pingStart = Date.now();\n conn.send(new Uint8Array([Protocol.PING]));\n } else {\n // Done, calculate average and close\n conn.close();\n const average = latencies.reduce((sum, l) => sum + l, 0) / latencies.length;\n resolve(average);\n }\n };\n\n conn.events.onerror = (event: ErrorEvent) => {\n reject(new ServerError(CloseCode.ABNORMAL_CLOSURE, `Failed to get latency: ${event.message}`));\n };\n\n conn.connect(this.getHttpEndpoint());\n });\n }\n\n protected async createMatchMakeRequest<T>(\n method: string,\n roomName: string,\n options: JoinOptions = {},\n rootSchema?: SchemaConstructor<T>,\n ) {\n const httpResponse = await (this.http as HTTP<any>).post(`/matchmake/${method}/${roomName}`, {\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: options\n });\n\n // Handle HTTP error responses\n if (!httpResponse.ok) {\n // @ts-ignore\n throw new MatchMakeError(httpResponse.error.message || httpResponse.error, httpResponse.error.code || httpResponse.status);\n }\n\n const response = httpResponse.data as unknown as ISeatReservation;\n\n // forward reconnection token during \"reconnect\" methods.\n if (method === \"reconnect\") {\n response.reconnectionToken = options.reconnectionToken;\n }\n\n return await this.consumeSeatReservation<T>(response, rootSchema);\n }\n\n protected createRoom<T>(roomName: string, rootSchema?: SchemaConstructor<T>) {\n return new Room<any, T>(roomName, rootSchema);\n }\n\n protected buildEndpoint(seatReservation: ISeatReservation, options: any = {}) {\n let protocol: string = this.settings.protocol || \"ws\";\n let searchParams = this.settings.searchParams || \"\";\n\n // forward authentication token\n if (this.http.authToken) {\n options['_authToken'] = this.http.authToken;\n }\n\n // append provided options\n for (const name in options) {\n if (!options.hasOwnProperty(name)) {\n continue;\n }\n searchParams += (searchParams ? '&' : '') + `${name}=${options[name]}`;\n }\n\n if (protocol === \"h3\") {\n protocol = \"http\";\n }\n\n let endpoint = (this.settings.secure)\n ? `${protocol}s://`\n : `${protocol}://`;\n\n if (seatReservation.publicAddress) {\n endpoint += `${seatReservation.publicAddress}`;\n\n } else {\n endpoint += `${this.settings.hostname}${this.getEndpointPort()}${this.settings.pathname}`;\n }\n\n const endpointURL = `${endpoint}/${seatReservation.processId}/${seatReservation.roomId}?${searchParams}`;\n return (this.urlBuilder)\n ? this.urlBuilder(new URL(endpointURL))\n : endpointURL;\n }\n\n protected getHttpEndpoint(segments: string = '') {\n const path = segments.startsWith(\"/\") ? segments : `/${segments}`;\n\n let endpointURL = `${(this.settings.secure) ? \"https\" : \"http\"}://${this.settings.hostname}${this.getEndpointPort()}${this.settings.pathname}${path}`;\n\n if (this.settings.searchParams) {\n endpointURL += `?${this.settings.searchParams}`;\n }\n\n return (this.urlBuilder)\n ? this.urlBuilder(new URL(endpointURL))\n : endpointURL;\n }\n\n protected getEndpointPort() {\n return (this.settings.port !== 80 && this.settings.port !== 443)\n ? `:${this.settings.port}`\n : \"\";\n }\n}\n\nexport const Client = ColyseusSDK;\nexport type Client = InstanceType<typeof ColyseusSDK>;"],"names":["HTTP","Auth","discordURLBuilder","__awaiter","ServerError","Connection","Protocol","CloseCode","Room"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Connection.js","sources":["../../src/Connection.ts"],"sourcesContent":["import type { ITransport, ITransportEventMap } from \"./transport/ITransport.ts\";\nimport { H3TransportTransport } from \"./transport/H3Transport.ts\";\nimport { WebSocketTransport } from \"./transport/WebSocketTransport.ts\";\n\nexport class Connection implements ITransport {\n transport: ITransport;\n events: ITransportEventMap = {};\n\n url?: string;\n options?: any;\n\n constructor(protocol?: string) {\n switch (protocol) {\n case \"h3\":\n this.transport = new H3TransportTransport(this.events);\n break;\n\n default:\n this.transport = new WebSocketTransport(this.events);\n break;\n }\n }\n\n connect(url: string, options?: any): void {\n this.url = url;\n this.options = options;\n this.transport.connect(url, options);\n }\n\n send(data: Buffer | Uint8Array): void {\n this.transport.send(data);\n }\n\n sendUnreliable(data: Buffer | Uint8Array): void {\n this.transport.sendUnreliable(data);\n }\n\n reconnect(queryParams: { reconnectionToken: string, skipHandshake?: boolean }): void {\n const queryString = new URLSearchParams(queryParams as unknown as Record<string, string>).toString();\n this.transport.connect(`${this.url}&${queryString}`, this.options);\n }\n\n close(code?: number, reason?: string): void {\n this.transport.close(code, reason);\n }\n\n get isOpen() {\n return this.transport.isOpen;\n }\n\n}\n"],"names":["H3TransportTransport","WebSocketTransport"],"mappings":";;;;;;;;;;;MAIa,UAAU,CAAA;AAOnB,IAAA,WAAA,CAAY,QAAiB,EAAA;QAL7B,IAAA,CAAA,MAAM,GAAuB,EAAE;QAM3B,QAAQ,QAAQ;AACZ,YAAA,KAAK,IAAI;gBACL,IAAI,CAAC,SAAS,GAAG,IAAIA,gCAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtD;AAEJ,YAAA;gBACI,IAAI,CAAC,SAAS,GAAG,IAAIC,qCAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACpD;;IAEZ;IAEA,OAAO,CAAC,GAAW,EAAE,OAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;IACxC;AAEA,IAAA,IAAI,CAAC,IAAyB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,cAAc,CAAC,IAAyB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,WAAmE,EAAA;QACzE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,WAAgD,CAAC,CAAC,QAAQ,EAAE;AACpG,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,CAAC;IACtE;IAEA,KAAK,CAAC,IAAa,EAAE,MAAe,EAAA;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;IACtC;AAEA,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;IAChC;AAEH;;;;"}