@colyseus/sdk 0.17.24 → 0.17.25

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 (48) hide show
  1. package/build/3rd_party/discord.cjs +1 -1
  2. package/build/3rd_party/discord.mjs +1 -1
  3. package/build/Auth.cjs +1 -1
  4. package/build/Auth.mjs +1 -1
  5. package/build/Client.cjs +1 -1
  6. package/build/Client.mjs +1 -1
  7. package/build/Connection.cjs +7 -3
  8. package/build/Connection.cjs.map +1 -1
  9. package/build/Connection.mjs +7 -3
  10. package/build/Connection.mjs.map +1 -1
  11. package/build/HTTP.cjs +1 -1
  12. package/build/HTTP.mjs +1 -1
  13. package/build/Room.cjs +1 -1
  14. package/build/Room.mjs +1 -1
  15. package/build/Storage.cjs +1 -1
  16. package/build/Storage.mjs +1 -1
  17. package/build/core/nanoevents.cjs +1 -1
  18. package/build/core/nanoevents.mjs +1 -1
  19. package/build/core/signal.cjs +1 -1
  20. package/build/core/signal.mjs +1 -1
  21. package/build/core/utils.cjs +1 -1
  22. package/build/core/utils.mjs +1 -1
  23. package/build/debug.cjs +1 -1
  24. package/build/debug.mjs +1 -1
  25. package/build/errors/Errors.cjs +1 -1
  26. package/build/errors/Errors.mjs +1 -1
  27. package/build/index.cjs +1 -1
  28. package/build/index.mjs +1 -1
  29. package/build/legacy.cjs +1 -1
  30. package/build/legacy.mjs +1 -1
  31. package/build/serializer/NoneSerializer.cjs +1 -1
  32. package/build/serializer/NoneSerializer.mjs +1 -1
  33. package/build/serializer/SchemaSerializer.cjs +1 -1
  34. package/build/serializer/SchemaSerializer.mjs +1 -1
  35. package/build/serializer/Serializer.cjs +1 -1
  36. package/build/serializer/Serializer.mjs +1 -1
  37. package/build/transport/H3Transport.cjs +1 -1
  38. package/build/transport/H3Transport.mjs +1 -1
  39. package/build/transport/WebSocketTransport.cjs +1 -1
  40. package/build/transport/WebSocketTransport.mjs +1 -1
  41. package/dist/colyseus-cocos-creator.js +45 -8
  42. package/dist/colyseus-cocos-creator.js.map +1 -1
  43. package/dist/colyseus.js +45 -8
  44. package/dist/colyseus.js.map +1 -1
  45. package/dist/debug.js +7 -3
  46. package/dist/debug.js.map +1 -1
  47. package/package.json +3 -3
  48. package/src/Connection.ts +8 -2
@@ -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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
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.24
6
+ // colyseus.js@0.17.25
7
7
  /**
8
8
  * Discord Embedded App SDK
9
9
  * https://github.com/colyseus/colyseus/issues/707
package/build/Auth.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/Auth.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import { getItem, removeItem, setItem } from './Storage.mjs';
8
8
  import { createNanoEvents } from './core/nanoevents.mjs';
9
9
 
package/build/Client.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/Client.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import { Protocol, CloseCode } from '@colyseus/shared-types';
8
8
  import { ServerError, MatchMakeError } from './errors/Errors.mjs';
9
9
  import { Room } from './Room.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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
@@ -61,8 +61,12 @@ class Connection {
61
61
  this.transport.sendUnreliable(data);
62
62
  }
63
63
  reconnect(queryParams) {
64
- const queryString = new URLSearchParams(queryParams).toString();
65
- this.transport.connect(`${this.url}&${queryString}`, this.options);
64
+ const url = new URL(this.url);
65
+ // override query params
66
+ for (const key in queryParams) {
67
+ url.searchParams.set(key, queryParams[key]);
68
+ }
69
+ this.transport.connect(url.toString(), this.options);
66
70
  }
67
71
  close(code, reason) {
68
72
  this.transport.close(code, reason);
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.cjs","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\";\nimport { CloseCode } from \"@colyseus/shared-types\";\n\nconst onOfflineListeners: (() => void)[] = [];\nconst hasGlobalEventListeners = typeof (addEventListener) === \"function\" && typeof (removeEventListener) === \"function\";\nif (hasGlobalEventListeners) {\n /**\n * Detects when the network is offline and closes all connections.\n * (When switching wifi networks, etc.)\n */\n addEventListener(\"offline\", () => {\n console.warn(`@colyseus/sdk: 🛑 Network offline. Closing ${onOfflineListeners.length} connection(s)`);\n onOfflineListeners.forEach((listener) => listener());\n }, false);\n}\n\nexport class Connection implements ITransport {\n transport: ITransport;\n events: ITransportEventMap = {};\n\n url?: string;\n options?: any;\n\n #_offlineListener = (hasGlobalEventListeners) ? () => this.close(CloseCode.MAY_TRY_RECONNECT) : null;\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 if (hasGlobalEventListeners) {\n const onOpen = this.events.onopen;\n this.events.onopen = (ev: any) => {\n onOfflineListeners.push(this.#_offlineListener);\n onOpen?.(ev);\n };\n\n const onClose = this.events.onclose;\n this.events.onclose = (ev: any) => {\n onOfflineListeners.splice(onOfflineListeners.indexOf(this.#_offlineListener), 1);\n onClose?.(ev);\n };\n }\n\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":["CloseCode","H3TransportTransport","WebSocketTransport","__classPrivateFieldGet"],"mappings":";;;;;;;;;;;;;;AAKA,MAAM,kBAAkB,GAAmB,EAAE;AAC7C,MAAM,uBAAuB,GAAG,QAAQ,gBAAgB,CAAC,KAAK,UAAU,IAAI,QAAQ,mBAAmB,CAAC,KAAK,UAAU;AACvH,IAAI,uBAAuB,EAAE;AACzB;;;AAGG;AACH,IAAA,gBAAgB,CAAC,SAAS,EAAE,MAAK;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAA,2CAAA,EAA8C,kBAAkB,CAAC,MAAM,CAAA,cAAA,CAAgB,CAAC;QACrG,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;IACxD,CAAC,EAAE,KAAK,CAAC;AACb;MAEa,UAAU,CAAA;AASnB,IAAA,WAAA,CAAY,QAAiB,EAAA;QAP7B,IAAA,CAAA,MAAM,GAAuB,EAAE;QAK/B,4BAAA,CAAA,GAAA,CAAA,IAAA,EAAoB,CAAC,uBAAuB,IAAI,MAAM,IAAI,CAAC,KAAK,CAACA,qBAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;QAGhG,QAAQ,QAAQ;AACZ,YAAA,KAAK,IAAI;gBACL,IAAI,CAAC,SAAS,GAAG,IAAIC,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;QAC9B,IAAI,uBAAuB,EAAE;AACzB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAO,KAAI;AAC7B,gBAAA,kBAAkB,CAAC,IAAI,CAACC,6BAAA,IAAI,EAAA,4BAAA,EAAA,GAAA,CAAkB,CAAC;AAC/C,gBAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,EAAE,CAAC;AAChB,YAAA,CAAC;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAO,KAAI;AAC9B,gBAAA,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAACA,4BAAA,CAAA,IAAI,EAAA,4BAAA,EAAA,GAAA,CAAkB,CAAC,EAAE,CAAC,CAAC;AAChF,gBAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAG,EAAE,CAAC;AACjB,YAAA,CAAC;QACL;AAEA,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;;;;;"}
1
+ {"version":3,"file":"Connection.cjs","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\";\nimport { CloseCode } from \"@colyseus/shared-types\";\n\nconst onOfflineListeners: (() => void)[] = [];\nconst hasGlobalEventListeners = typeof (addEventListener) === \"function\" && typeof (removeEventListener) === \"function\";\nif (hasGlobalEventListeners) {\n /**\n * Detects when the network is offline and closes all connections.\n * (When switching wifi networks, etc.)\n */\n addEventListener(\"offline\", () => {\n console.warn(`@colyseus/sdk: 🛑 Network offline. Closing ${onOfflineListeners.length} connection(s)`);\n onOfflineListeners.forEach((listener) => listener());\n }, false);\n}\n\nexport class Connection implements ITransport {\n transport: ITransport;\n events: ITransportEventMap = {};\n\n url?: string;\n options?: any;\n\n #_offlineListener = (hasGlobalEventListeners) ? () => this.close(CloseCode.MAY_TRY_RECONNECT) : null;\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 if (hasGlobalEventListeners) {\n const onOpen = this.events.onopen;\n this.events.onopen = (ev: any) => {\n onOfflineListeners.push(this.#_offlineListener);\n onOpen?.(ev);\n };\n\n const onClose = this.events.onclose;\n this.events.onclose = (ev: any) => {\n onOfflineListeners.splice(onOfflineListeners.indexOf(this.#_offlineListener), 1);\n onClose?.(ev);\n };\n }\n\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 url = new URL(this.url);\n\n // override query params\n for (const key in queryParams) {\n url.searchParams.set(key, queryParams[key]);\n }\n\n this.transport.connect(url.toString(), 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":["CloseCode","H3TransportTransport","WebSocketTransport","__classPrivateFieldGet"],"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.24
6
+ // colyseus.js@0.17.25
7
7
  import { H3TransportTransport } from './transport/H3Transport.mjs';
8
8
  import { WebSocketTransport } from './transport/WebSocketTransport.mjs';
9
9
  import { CloseCode } from '@colyseus/shared-types';
@@ -60,8 +60,12 @@ class Connection {
60
60
  this.transport.sendUnreliable(data);
61
61
  }
62
62
  reconnect(queryParams) {
63
- const queryString = new URLSearchParams(queryParams).toString();
64
- this.transport.connect(`${this.url}&${queryString}`, this.options);
63
+ const url = new URL(this.url);
64
+ // override query params
65
+ for (const key in queryParams) {
66
+ url.searchParams.set(key, queryParams[key]);
67
+ }
68
+ this.transport.connect(url.toString(), this.options);
65
69
  }
66
70
  close(code, reason) {
67
71
  this.transport.close(code, reason);
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.mjs","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\";\nimport { CloseCode } from \"@colyseus/shared-types\";\n\nconst onOfflineListeners: (() => void)[] = [];\nconst hasGlobalEventListeners = typeof (addEventListener) === \"function\" && typeof (removeEventListener) === \"function\";\nif (hasGlobalEventListeners) {\n /**\n * Detects when the network is offline and closes all connections.\n * (When switching wifi networks, etc.)\n */\n addEventListener(\"offline\", () => {\n console.warn(`@colyseus/sdk: 🛑 Network offline. Closing ${onOfflineListeners.length} connection(s)`);\n onOfflineListeners.forEach((listener) => listener());\n }, false);\n}\n\nexport class Connection implements ITransport {\n transport: ITransport;\n events: ITransportEventMap = {};\n\n url?: string;\n options?: any;\n\n #_offlineListener = (hasGlobalEventListeners) ? () => this.close(CloseCode.MAY_TRY_RECONNECT) : null;\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 if (hasGlobalEventListeners) {\n const onOpen = this.events.onopen;\n this.events.onopen = (ev: any) => {\n onOfflineListeners.push(this.#_offlineListener);\n onOpen?.(ev);\n };\n\n const onClose = this.events.onclose;\n this.events.onclose = (ev: any) => {\n onOfflineListeners.splice(onOfflineListeners.indexOf(this.#_offlineListener), 1);\n onClose?.(ev);\n };\n }\n\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":[],"mappings":";;;;;;;;;;AAKA,MAAM,kBAAkB,GAAmB,EAAE;AAC7C,MAAM,uBAAuB,GAAG,QAAQ,gBAAgB,CAAC,KAAK,UAAU,IAAI,QAAQ,mBAAmB,CAAC,KAAK,UAAU;AACvH,IAAI,uBAAuB,EAAE;AACzB;;;AAGG;AACH,IAAA,gBAAgB,CAAC,SAAS,EAAE,MAAK;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAA,2CAAA,EAA8C,kBAAkB,CAAC,MAAM,CAAA,cAAA,CAAgB,CAAC;QACrG,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;IACxD,CAAC,EAAE,KAAK,CAAC;AACb;MAEa,UAAU,CAAA;AACnB,IAAA,SAAS;IACT,MAAM,GAAuB,EAAE;AAE/B,IAAA,GAAG;AACH,IAAA,OAAO;IAEP,iBAAiB,GAAG,CAAC,uBAAuB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;AAEpG,IAAA,WAAA,CAAY,QAAiB,EAAA;QACzB,QAAQ,QAAQ;AACZ,YAAA,KAAK,IAAI;gBACL,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtD;AAEJ,YAAA;gBACI,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACpD;;IAEZ;IAEA,OAAO,CAAC,GAAW,EAAE,OAAa,EAAA;QAC9B,IAAI,uBAAuB,EAAE;AACzB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAO,KAAI;AAC7B,gBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/C,gBAAA,MAAM,GAAG,EAAE,CAAC;AAChB,YAAA,CAAC;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAO,KAAI;AAC9B,gBAAA,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAChF,gBAAA,OAAO,GAAG,EAAE,CAAC;AACjB,YAAA,CAAC;QACL;AAEA,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;;;;"}
1
+ {"version":3,"file":"Connection.mjs","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\";\nimport { CloseCode } from \"@colyseus/shared-types\";\n\nconst onOfflineListeners: (() => void)[] = [];\nconst hasGlobalEventListeners = typeof (addEventListener) === \"function\" && typeof (removeEventListener) === \"function\";\nif (hasGlobalEventListeners) {\n /**\n * Detects when the network is offline and closes all connections.\n * (When switching wifi networks, etc.)\n */\n addEventListener(\"offline\", () => {\n console.warn(`@colyseus/sdk: 🛑 Network offline. Closing ${onOfflineListeners.length} connection(s)`);\n onOfflineListeners.forEach((listener) => listener());\n }, false);\n}\n\nexport class Connection implements ITransport {\n transport: ITransport;\n events: ITransportEventMap = {};\n\n url?: string;\n options?: any;\n\n #_offlineListener = (hasGlobalEventListeners) ? () => this.close(CloseCode.MAY_TRY_RECONNECT) : null;\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 if (hasGlobalEventListeners) {\n const onOpen = this.events.onopen;\n this.events.onopen = (ev: any) => {\n onOfflineListeners.push(this.#_offlineListener);\n onOpen?.(ev);\n };\n\n const onClose = this.events.onclose;\n this.events.onclose = (ev: any) => {\n onOfflineListeners.splice(onOfflineListeners.indexOf(this.#_offlineListener), 1);\n onClose?.(ev);\n };\n }\n\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 url = new URL(this.url);\n\n // override query params\n for (const key in queryParams) {\n url.searchParams.set(key, queryParams[key]);\n }\n\n this.transport.connect(url.toString(), 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":[],"mappings":"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"}
package/build/HTTP.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/HTTP.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import { ServerError } from './errors/Errors.mjs';
8
8
 
9
9
  function isJSONSerializable(value) {
package/build/Room.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/Room.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import { CloseCode, Protocol } from '@colyseus/shared-types';
8
8
  import { Decoder, encode, decode } from '@colyseus/schema';
9
9
  import { Packr, unpack } from '@colyseus/msgpackr';
package/build/Storage.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
package/build/Storage.mjs 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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  class EventEmitter {
@@ -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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  function now() {
@@ -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.24
6
+ // colyseus.js@0.17.25
7
7
  function now() {
8
8
  return typeof (performance) !== 'undefined' ? performance.now() : Date.now();
9
9
  }
package/build/debug.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var Client = require('./Client.cjs');
package/build/debug.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import { Client } from './Client.mjs';
8
8
  import { CloseCode } from '@colyseus/shared-types';
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  class ServerError extends Error {
@@ -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.24
6
+ // colyseus.js@0.17.25
7
7
  class ServerError extends Error {
8
8
  code;
9
9
  headers;
package/build/index.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  require('./legacy.cjs');
package/build/index.mjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  import './legacy.mjs';
8
8
  export { Client, ColyseusSDK } from './Client.mjs';
9
9
  export { Room } from './Room.mjs';
package/build/legacy.cjs 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  //
package/build/legacy.mjs 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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  class NoneSerializer {
@@ -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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var schema = require('@colyseus/schema');
@@ -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.24
6
+ // colyseus.js@0.17.25
7
7
  import { getDecoderStateCallbacks, Reflection, Decoder } 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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  const serializers = {};
@@ -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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var tslib = require('tslib');
@@ -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.24
6
+ // colyseus.js@0.17.25
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.24
6
+ // colyseus.js@0.17.25
7
7
  'use strict';
8
8
 
9
9
  var NodeWebSocket = require('ws');
@@ -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.24
6
+ // colyseus.js@0.17.25
7
7
  import NodeWebSocket from 'ws';
8
8
  import { CloseCode } from '@colyseus/shared-types';
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.24 - @colyseus/schema 4.0.5
6
+ // colyseus.js@0.17.25 - @colyseus/schema 4.0.6
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) :
@@ -1093,7 +1093,11 @@
1093
1093
  });
1094
1094
  }
1095
1095
  }
1096
- constructor[Symbol.metadata] = metadata;
1096
+ Object.defineProperty(constructor, Symbol.metadata, {
1097
+ value: metadata,
1098
+ writable: false,
1099
+ configurable: true
1100
+ });
1097
1101
  return metadata;
1098
1102
  },
1099
1103
  isValidInstance(klass) {
@@ -3715,7 +3719,12 @@
3715
3719
  }
3716
3720
  else if (value['type'] !== undefined && Schema.is(value['type'])) {
3717
3721
  // Direct Schema type: Type → new Type()
3718
- defaultValues[fieldName] = new value['type']();
3722
+ if (!value['type'].prototype.initialize || value['type'].prototype.initialize.length === 0) {
3723
+ // only auto-initialize Schema instances if:
3724
+ // - they don't have an initialize method
3725
+ // - or initialize method doesn't accept any parameters
3726
+ defaultValues[fieldName] = new value['type']();
3727
+ }
3719
3728
  }
3720
3729
  }
3721
3730
  else {
@@ -3725,7 +3734,12 @@
3725
3734
  else if (typeof (value) === "function") {
3726
3735
  if (Schema.is(value)) {
3727
3736
  // Direct Schema type: Type → new Type()
3728
- defaultValues[fieldName] = new value();
3737
+ if (!value.prototype.initialize || value.prototype.initialize.length === 0) {
3738
+ // only auto-initialize Schema instances if:
3739
+ // - they don't have an initialize method
3740
+ // - or initialize method doesn't accept any parameters
3741
+ defaultValues[fieldName] = new value();
3742
+ }
3729
3743
  fields[fieldName] = getNormalizedType(value);
3730
3744
  }
3731
3745
  else {
@@ -3752,13 +3766,32 @@
3752
3766
  }
3753
3767
  return defaults;
3754
3768
  };
3769
+ const getParentProps = (props) => {
3770
+ const fieldNames = Object.keys(fields);
3771
+ const parentProps = {};
3772
+ for (const key in props) {
3773
+ if (!fieldNames.includes(key)) {
3774
+ parentProps[key] = props[key];
3775
+ }
3776
+ }
3777
+ return parentProps;
3778
+ };
3755
3779
  /** @codegen-ignore */
3756
3780
  const klass = Metadata.setFields(class extends inherits {
3757
3781
  constructor(...args) {
3758
- super(Object.assign({}, getDefaultValues(), args[0] || {}));
3759
3782
  // call initialize method
3760
3783
  if (methods.initialize && typeof methods.initialize === 'function') {
3761
- methods.initialize.apply(this, args);
3784
+ super(Object.assign({}, getDefaultValues(), getParentProps(args[0] || {})));
3785
+ /**
3786
+ * only call initialize() in the current class, not the parent ones.
3787
+ * see "should not call initialize automatically when creating an instance of inherited Schema"
3788
+ */
3789
+ if (new.target === klass) {
3790
+ methods.initialize.apply(this, args);
3791
+ }
3792
+ }
3793
+ else {
3794
+ super(Object.assign({}, getDefaultValues(), args[0] || {}));
3762
3795
  }
3763
3796
  }
3764
3797
  }, fields);
@@ -8384,8 +8417,12 @@
8384
8417
  this.transport.sendUnreliable(data);
8385
8418
  }
8386
8419
  reconnect(queryParams) {
8387
- const queryString = new URLSearchParams(queryParams).toString();
8388
- this.transport.connect(`${this.url}&${queryString}`, this.options);
8420
+ const url = new URL(this.url);
8421
+ // override query params
8422
+ for (const key in queryParams) {
8423
+ url.searchParams.set(key, queryParams[key]);
8424
+ }
8425
+ this.transport.connect(url.toString(), this.options);
8389
8426
  }
8390
8427
  close(code, reason) {
8391
8428
  this.transport.close(code, reason);