@colyseus/sdk 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +27 -0
  3. package/build/cjs/3rd_party/discord.js +56 -0
  4. package/build/cjs/3rd_party/discord.js.map +1 -0
  5. package/build/cjs/Auth.js +156 -0
  6. package/build/cjs/Auth.js.map +1 -0
  7. package/build/cjs/Client.js +282 -0
  8. package/build/cjs/Client.js.map +1 -0
  9. package/build/cjs/Connection.js +48 -0
  10. package/build/cjs/Connection.js.map +1 -0
  11. package/build/cjs/HTTP.js +156 -0
  12. package/build/cjs/HTTP.js.map +1 -0
  13. package/build/cjs/Protocol.js +34 -0
  14. package/build/cjs/Protocol.js.map +1 -0
  15. package/build/cjs/Room.js +357 -0
  16. package/build/cjs/Room.js.map +1 -0
  17. package/build/cjs/Storage.js +98 -0
  18. package/build/cjs/Storage.js.map +1 -0
  19. package/build/cjs/core/nanoevents.js +50 -0
  20. package/build/cjs/core/nanoevents.js.map +1 -0
  21. package/build/cjs/core/signal.js +53 -0
  22. package/build/cjs/core/signal.js.map +1 -0
  23. package/build/cjs/core/utils.js +14 -0
  24. package/build/cjs/core/utils.js.map +1 -0
  25. package/build/cjs/errors/Errors.js +29 -0
  26. package/build/cjs/errors/Errors.js.map +1 -0
  27. package/build/cjs/index.js +43 -0
  28. package/build/cjs/index.js.map +1 -0
  29. package/build/cjs/legacy.js +34 -0
  30. package/build/cjs/legacy.js.map +1 -0
  31. package/build/cjs/serializer/NoneSerializer.js +18 -0
  32. package/build/cjs/serializer/NoneSerializer.js.map +1 -0
  33. package/build/cjs/serializer/SchemaSerializer.js +61 -0
  34. package/build/cjs/serializer/SchemaSerializer.js.map +1 -0
  35. package/build/cjs/serializer/Serializer.js +23 -0
  36. package/build/cjs/serializer/Serializer.js.map +1 -0
  37. package/build/cjs/transport/H3Transport.js +171 -0
  38. package/build/cjs/transport/H3Transport.js.map +1 -0
  39. package/build/cjs/transport/WebSocketTransport.js +50 -0
  40. package/build/cjs/transport/WebSocketTransport.js.map +1 -0
  41. package/build/esm/3rd_party/discord.mjs +53 -0
  42. package/build/esm/3rd_party/discord.mjs.map +1 -0
  43. package/build/esm/Auth.mjs +137 -0
  44. package/build/esm/Auth.mjs.map +1 -0
  45. package/build/esm/Client.mjs +272 -0
  46. package/build/esm/Client.mjs.map +1 -0
  47. package/build/esm/Connection.mjs +49 -0
  48. package/build/esm/Connection.mjs.map +1 -0
  49. package/build/esm/HTTP.mjs +159 -0
  50. package/build/esm/HTTP.mjs.map +1 -0
  51. package/build/esm/Protocol.mjs +34 -0
  52. package/build/esm/Protocol.mjs.map +1 -0
  53. package/build/esm/Room.mjs +355 -0
  54. package/build/esm/Room.mjs.map +1 -0
  55. package/build/esm/Storage.mjs +86 -0
  56. package/build/esm/Storage.mjs.map +1 -0
  57. package/build/esm/core/nanoevents.mjs +46 -0
  58. package/build/esm/core/nanoevents.mjs.map +1 -0
  59. package/build/esm/core/signal.mjs +48 -0
  60. package/build/esm/core/signal.mjs.map +1 -0
  61. package/build/esm/core/utils.mjs +12 -0
  62. package/build/esm/core/utils.mjs.map +1 -0
  63. package/build/esm/errors/Errors.mjs +28 -0
  64. package/build/esm/errors/Errors.mjs.map +1 -0
  65. package/build/esm/index.mjs +22 -0
  66. package/build/esm/index.mjs.map +1 -0
  67. package/build/esm/legacy.mjs +32 -0
  68. package/build/esm/legacy.mjs.map +1 -0
  69. package/build/esm/serializer/NoneSerializer.mjs +16 -0
  70. package/build/esm/serializer/NoneSerializer.mjs.map +1 -0
  71. package/build/esm/serializer/SchemaSerializer.mjs +60 -0
  72. package/build/esm/serializer/SchemaSerializer.mjs.map +1 -0
  73. package/build/esm/serializer/Serializer.mjs +20 -0
  74. package/build/esm/serializer/Serializer.mjs.map +1 -0
  75. package/build/esm/transport/H3Transport.mjs +170 -0
  76. package/build/esm/transport/H3Transport.mjs.map +1 -0
  77. package/build/esm/transport/WebSocketTransport.mjs +51 -0
  78. package/build/esm/transport/WebSocketTransport.mjs.map +1 -0
  79. package/dist/colyseus-cocos-creator.js +9538 -0
  80. package/dist/colyseus-cocos-creator.js.map +1 -0
  81. package/dist/colyseus.js +9537 -0
  82. package/dist/colyseus.js.map +1 -0
  83. package/dist/debug.js +2460 -0
  84. package/dist/debug.js.map +1 -0
  85. package/lib/3rd_party/discord.d.ts +33 -0
  86. package/lib/Auth.d.ts +31 -0
  87. package/lib/Client.d.ts +92 -0
  88. package/lib/Connection.d.ts +17 -0
  89. package/lib/HTTP.d.ts +113 -0
  90. package/lib/HTTP_bkp.d.ts +18 -0
  91. package/lib/Protocol.d.ts +21 -0
  92. package/lib/Room.d.ts +140 -0
  93. package/lib/Storage.d.ts +3 -0
  94. package/lib/core/http_bkp.d.ts +319 -0
  95. package/lib/core/nanoevents.d.ts +27 -0
  96. package/lib/core/signal.d.ts +17 -0
  97. package/lib/core/utils.d.ts +1 -0
  98. package/lib/debug.d.ts +1 -0
  99. package/lib/errors/Errors.d.ts +17 -0
  100. package/lib/index.d.ts +9 -0
  101. package/lib/legacy.d.ts +0 -0
  102. package/lib/serializer/FossilDeltaSerializer.d.ts +0 -0
  103. package/lib/serializer/NoneSerializer.d.ts +8 -0
  104. package/lib/serializer/SchemaSerializer.d.ts +14 -0
  105. package/lib/serializer/Serializer.d.ts +10 -0
  106. package/lib/src/3rd_party/discord.d.ts +33 -0
  107. package/lib/src/Auth.d.ts +31 -0
  108. package/lib/src/Client.d.ts +62 -0
  109. package/lib/src/Connection.d.ts +17 -0
  110. package/lib/src/HTTP.d.ts +113 -0
  111. package/lib/src/HTTP_bkp.d.ts +18 -0
  112. package/lib/src/Protocol.d.ts +28 -0
  113. package/lib/src/Room.d.ts +132 -0
  114. package/lib/src/Storage.d.ts +3 -0
  115. package/lib/src/core/http_bkp.d.ts +319 -0
  116. package/lib/src/core/nanoevents.d.ts +27 -0
  117. package/lib/src/core/signal.d.ts +17 -0
  118. package/lib/src/debug.d.ts +1 -0
  119. package/lib/src/errors/Errors.d.ts +15 -0
  120. package/lib/src/index.d.ts +9 -0
  121. package/lib/src/legacy.d.ts +0 -0
  122. package/lib/src/serializer/FossilDeltaSerializer.d.ts +0 -0
  123. package/lib/src/serializer/NoneSerializer.d.ts +8 -0
  124. package/lib/src/serializer/SchemaSerializer.d.ts +14 -0
  125. package/lib/src/serializer/Serializer.d.ts +11 -0
  126. package/lib/src/transport/H3Transport.d.ts +20 -0
  127. package/lib/src/transport/ITransport.d.ts +16 -0
  128. package/lib/src/transport/WebSocketTransport.d.ts +17 -0
  129. package/lib/transport/H3Transport.d.ts +20 -0
  130. package/lib/transport/ITransport.d.ts +16 -0
  131. package/lib/transport/WebSocketTransport.d.ts +17 -0
  132. package/lib/tsconfig.tsbuildinfo +1 -0
  133. package/package.json +108 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.js","sources":["../../../src/core/signal.ts"],"sourcesContent":["type FunctionParameters<T extends (...args: any[]) => any> =\n T extends (...args: infer P) => any\n ? P\n : never;\n\nexport class EventEmitter<CallbackSignature extends (...args: any[]) => any> {\n handlers: Array<CallbackSignature> = [];\n\n register(cb: CallbackSignature, once: boolean = false) {\n this.handlers.push(cb);\n return this;\n }\n\n invoke(...args: FunctionParameters<CallbackSignature>) {\n this.handlers.forEach((handler) => handler.apply(this, args));\n }\n\n invokeAsync(...args: FunctionParameters<CallbackSignature>) {\n return Promise.all(this.handlers.map((handler) => handler.apply(this, args)));\n }\n\n remove (cb: CallbackSignature) {\n const index = this.handlers.indexOf(cb);\n this.handlers[index] = this.handlers[this.handlers.length - 1];\n this.handlers.pop();\n }\n\n clear() {\n this.handlers = [];\n }\n}\n\nexport function createSignal<CallbackSignature extends (...args: any[]) => void | Promise<any>>()\n :\n {\n once: (cb: CallbackSignature) => void;\n remove: (cb: CallbackSignature) => void,\n invoke: (...args: FunctionParameters<CallbackSignature>) => void,\n invokeAsync: (...args: FunctionParameters<CallbackSignature>) => Promise<any[]>,\n clear: () => void,\n } & ((this: any, cb: CallbackSignature) => EventEmitter<CallbackSignature> )\n {\n const emitter = new EventEmitter<CallbackSignature>();\n\n function register(this: any, cb: CallbackSignature): EventEmitter<CallbackSignature> {\n return emitter.register(cb, this === null);\n };\n\n register.once = (cb: CallbackSignature) => {\n const callback: any = function (...args: any[]) {\n cb.apply(this, args);\n emitter.remove(callback);\n }\n emitter.register(callback);\n }\n register.remove = (cb: CallbackSignature) => emitter.remove(cb)\n register.invoke = (...args: FunctionParameters<CallbackSignature>) => emitter.invoke(...args);\n register.invokeAsync = (...args: FunctionParameters<CallbackSignature>) => emitter.invokeAsync(...args);\n register.clear = () => emitter.clear();\n\n return register;\n}"],"names":[],"mappings":";;;;;;;;MAKa,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACE,IAAA,CAAA,QAAQ,GAA6B,EAAE;IAwBzC;AAtBE,IAAA,QAAQ,CAAC,EAAqB,EAAE,IAAA,GAAgB,KAAK,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,CAAC,GAAG,IAA2C,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D;IAEA,WAAW,CAAC,GAAG,IAA2C,EAAA;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E;AAEA,IAAA,MAAM,CAAE,EAAqB,EAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;IACrB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACD;SAEe,YAAY,GAAA;AAU1B,IAAA,MAAM,OAAO,GAAG,IAAI,YAAY,EAAqB;IAErD,SAAS,QAAQ,CAAY,EAAqB,EAAA;QAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5C;AAEA,IAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAqB,KAAI;AACxC,QAAA,MAAM,QAAQ,GAAQ,UAAU,GAAG,IAAW,EAAA;AAC5C,YAAA,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACpB,YAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,QAAA,CAAC;AACD,QAAA,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5B,IAAA,CAAC;AACD,IAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAqB,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,IAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAA2C,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC7F,IAAA,QAAQ,CAAC,WAAW,GAAG,CAAC,GAAG,IAA2C,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACvG,QAAQ,CAAC,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE;AAEtC,IAAA,OAAO,QAAQ;AACjB;;;;;"}
@@ -0,0 +1,14 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ function now() {
10
+ return typeof (performance) !== 'undefined' ? performance.now() : Date.now();
11
+ }
12
+
13
+ exports.now = now;
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../src/core/utils.ts"],"sourcesContent":["export function now(): number {\n return typeof(performance) !== 'undefined' ? performance.now() : Date.now();\n}"],"names":[],"mappings":";;;;;;;;SAAgB,GAAG,GAAA;IACf,OAAO,QAAO,WAAW,CAAC,KAAK,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/E;;;;"}
@@ -0,0 +1,29 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ exports.CloseCode = void 0;
10
+ (function (CloseCode) {
11
+ CloseCode[CloseCode["NORMAL_CLOSURE"] = 1000] = "NORMAL_CLOSURE";
12
+ CloseCode[CloseCode["GOING_AWAY"] = 1001] = "GOING_AWAY";
13
+ CloseCode[CloseCode["NO_STATUS_RECEIVED"] = 1005] = "NO_STATUS_RECEIVED";
14
+ CloseCode[CloseCode["ABNORMAL_CLOSURE"] = 1006] = "ABNORMAL_CLOSURE";
15
+ CloseCode[CloseCode["CONSENTED"] = 4000] = "CONSENTED";
16
+ CloseCode[CloseCode["SERVER_SHUTDOWN"] = 4001] = "SERVER_SHUTDOWN";
17
+ CloseCode[CloseCode["WITH_ERROR"] = 4002] = "WITH_ERROR";
18
+ CloseCode[CloseCode["DEVMODE_RESTART"] = 4010] = "DEVMODE_RESTART";
19
+ })(exports.CloseCode || (exports.CloseCode = {}));
20
+ class ServerError extends Error {
21
+ constructor(code, message) {
22
+ super(message);
23
+ this.name = "ServerError";
24
+ this.code = code;
25
+ }
26
+ }
27
+
28
+ exports.ServerError = ServerError;
29
+ //# sourceMappingURL=Errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.js","sources":["../../../src/errors/Errors.ts"],"sourcesContent":["export enum CloseCode {\n NORMAL_CLOSURE = 1000,\n GOING_AWAY = 1001,\n NO_STATUS_RECEIVED = 1005,\n ABNORMAL_CLOSURE = 1006,\n\n CONSENTED = 4000,\n SERVER_SHUTDOWN = 4001,\n WITH_ERROR = 4002,\n DEVMODE_RESTART = 4010\n}\n\nexport class ServerError extends Error {\n public code: number;\n\n constructor(code: number, message: string) {\n super(message);\n\n this.name = \"ServerError\";\n this.code = code;\n }\n}\n\nexport class AbortError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n"],"names":["CloseCode"],"mappings":";;;;;;;;AAAYA;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAqB;AACrB,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAiB;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAyB;AACzB,IAAA,SAAA,CAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAuB;AAEvB,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAgB;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAsB;AACtB,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAiB;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAsB;AAC1B,CAAC,EAVWA,iBAAS,KAATA,iBAAS,GAAA,EAAA,CAAA,CAAA;AAYf,MAAO,WAAY,SAAQ,KAAK,CAAA;IAGpC,WAAA,CAAY,IAAY,EAAE,OAAe,EAAA;QACvC,KAAK,CAAC,OAAO,CAAC;AAEd,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AACD;;;;"}
@@ -0,0 +1,43 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ require('./legacy.js');
10
+ var Client = require('./Client.js');
11
+ var Protocol = require('./Protocol.js');
12
+ var Room = require('./Room.js');
13
+ var Auth = require('./Auth.js');
14
+ var Errors = require('./errors/Errors.js');
15
+ var SchemaSerializer = require('./serializer/SchemaSerializer.js');
16
+ var NoneSerializer = require('./serializer/NoneSerializer.js');
17
+ var Serializer = require('./serializer/Serializer.js');
18
+
19
+ Serializer.registerSerializer('schema', SchemaSerializer.SchemaSerializer);
20
+ Serializer.registerSerializer('none', NoneSerializer.NoneSerializer);
21
+
22
+ exports.Client = Client.Client;
23
+ exports.ColyseusSDK = Client.ColyseusSDK;
24
+ exports.MatchMakeError = Client.MatchMakeError;
25
+ Object.defineProperty(exports, "ErrorCode", {
26
+ enumerable: true,
27
+ get: function () { return Protocol.ErrorCode; }
28
+ });
29
+ Object.defineProperty(exports, "Protocol", {
30
+ enumerable: true,
31
+ get: function () { return Protocol.Protocol; }
32
+ });
33
+ exports.Room = Room.Room;
34
+ exports.Auth = Auth.Auth;
35
+ Object.defineProperty(exports, "CloseCode", {
36
+ enumerable: true,
37
+ get: function () { return Errors.CloseCode; }
38
+ });
39
+ exports.ServerError = Errors.ServerError;
40
+ exports.SchemaSerializer = SchemaSerializer.SchemaSerializer;
41
+ exports.getStateCallbacks = SchemaSerializer.getStateCallbacks;
42
+ exports.registerSerializer = Serializer.registerSerializer;
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import './legacy';\n\nexport { ColyseusSDK, Client, MatchMakeError, type JoinOptions, type EndpointSettings, type ClientOptions, type ISeatReservation as SeatReservation } from './Client.ts';\nexport { Protocol, ErrorCode } from './Protocol.ts';\nexport { Room, type RoomAvailable } from './Room.ts';\nexport { Auth, type AuthSettings, type PopupSettings } from \"./Auth.ts\";\nexport { ServerError, CloseCode } from './errors/Errors.ts';\n\n/*\n * Serializers\n */\nimport { SchemaSerializer, getStateCallbacks } from \"./serializer/SchemaSerializer.ts\";\nimport { NoneSerializer } from \"./serializer/NoneSerializer.ts\";\nimport { registerSerializer } from './serializer/Serializer.ts';\n\nexport { registerSerializer, SchemaSerializer, getStateCallbacks };\nregisterSerializer('schema', SchemaSerializer);\nregisterSerializer('none', NoneSerializer);\n"],"names":["registerSerializer","SchemaSerializer","NoneSerializer"],"mappings":";;;;;;;;;;;;;;;;;;AAgBAA,6BAAkB,CAAC,QAAQ,EAAEC,iCAAgB,CAAC;AAC9CD,6BAAkB,CAAC,MAAM,EAAEE,6BAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,34 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ //
10
+ // Polyfills for legacy environments
11
+ //
12
+ /*
13
+ * Support Android 4.4.x
14
+ */
15
+ if (!ArrayBuffer.isView) {
16
+ ArrayBuffer.isView = (a) => {
17
+ return a !== null && typeof (a) === 'object' && a.buffer instanceof ArrayBuffer;
18
+ };
19
+ }
20
+ // Define globalThis if not available.
21
+ // https://github.com/colyseus/colyseus.js/issues/86
22
+ if (typeof (globalThis) === "undefined" &&
23
+ typeof (window) !== "undefined") {
24
+ // @ts-ignore
25
+ window['globalThis'] = window;
26
+ }
27
+ // Cocos Creator does not provide "FormData"
28
+ // Define a dummy implementation so it doesn't crash
29
+ if (typeof (FormData) === "undefined") {
30
+ // @ts-ignore
31
+ globalThis['FormData'] = class {
32
+ };
33
+ }
34
+ //# sourceMappingURL=legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","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;;"}
@@ -0,0 +1,18 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ class NoneSerializer {
10
+ setState(rawState) { }
11
+ getState() { return null; }
12
+ patch(patches) { }
13
+ teardown() { }
14
+ handshake(bytes) { }
15
+ }
16
+
17
+ exports.NoneSerializer = NoneSerializer;
18
+ //# sourceMappingURL=NoneSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoneSerializer.js","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;;;;"}
@@ -0,0 +1,61 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ var schema = require('@colyseus/schema');
10
+
11
+ //
12
+ // TODO: use a schema interface, which even having duplicate definitions, it could be used to get the callback proxy.
13
+ //
14
+ // ```ts
15
+ // export type SchemaCallbackProxy<RoomState> = (<T extends ISchema>(instance: T) => CallbackProxy<T>);
16
+ // export function getStateCallbacks<T extends ISchema>(room: Room<T>) {
17
+ // ```
18
+ //
19
+ function getStateCallbacks(room) {
20
+ try {
21
+ // SchemaSerializer
22
+ // @ts-ignore
23
+ return schema.getDecoderStateCallbacks(room['serializer'].decoder);
24
+ }
25
+ catch (e) {
26
+ // NoneSerializer
27
+ return undefined;
28
+ }
29
+ }
30
+ class SchemaSerializer {
31
+ setState(encodedState, it) {
32
+ this.decoder.decode(encodedState, it);
33
+ }
34
+ getState() {
35
+ return this.state;
36
+ }
37
+ patch(patches, it) {
38
+ return this.decoder.decode(patches, it);
39
+ }
40
+ teardown() {
41
+ this.decoder.root.clearRefs();
42
+ }
43
+ handshake(bytes, it) {
44
+ if (this.state) {
45
+ //
46
+ // TODO: validate definitions against concreate this.state instance
47
+ //
48
+ schema.Reflection.decode(bytes, it); // no-op
49
+ this.decoder = new schema.Decoder(this.state);
50
+ }
51
+ else {
52
+ // initialize reflected state from server
53
+ this.decoder = schema.Reflection.decode(bytes, it);
54
+ this.state = this.decoder.state;
55
+ }
56
+ }
57
+ }
58
+
59
+ exports.SchemaSerializer = SchemaSerializer;
60
+ exports.getStateCallbacks = getStateCallbacks;
61
+ //# sourceMappingURL=SchemaSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaSerializer.js","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;;;;;"}
@@ -0,0 +1,23 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ const serializers = {};
10
+ function registerSerializer(id, serializer) {
11
+ serializers[id] = serializer;
12
+ }
13
+ function getSerializer(id) {
14
+ const serializer = serializers[id];
15
+ if (!serializer) {
16
+ throw new Error("missing serializer: " + id);
17
+ }
18
+ return serializer;
19
+ }
20
+
21
+ exports.getSerializer = getSerializer;
22
+ exports.registerSerializer = registerSerializer;
23
+ //# sourceMappingURL=Serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serializer.js","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;;;;;"}
@@ -0,0 +1,171 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ var tslib = require('tslib');
10
+ var schema = require('@colyseus/schema');
11
+
12
+ class H3TransportTransport {
13
+ constructor(events) {
14
+ this.isOpen = false;
15
+ this.lengthPrefixBuffer = new Uint8Array(9); // 9 bytes is the maximum length of a length prefix
16
+ this.events = events;
17
+ }
18
+ connect(url, options = {}) {
19
+ const wtOpts = options.fingerprint && ({
20
+ // requireUnreliable: true,
21
+ // congestionControl: "default", // "low-latency" || "throughput"
22
+ serverCertificateHashes: [{
23
+ algorithm: 'sha-256',
24
+ value: new Uint8Array(options.fingerprint).buffer
25
+ }]
26
+ }) || undefined;
27
+ this.wt = new WebTransport(url, wtOpts);
28
+ this.wt.ready.then((e) => {
29
+ console.log("WebTransport ready!", e);
30
+ this.isOpen = true;
31
+ this.unreliableReader = this.wt.datagrams.readable.getReader();
32
+ this.unreliableWriter = this.wt.datagrams.writable.getWriter();
33
+ const incomingBidi = this.wt.incomingBidirectionalStreams.getReader();
34
+ incomingBidi.read().then((stream) => {
35
+ this.reader = stream.value.readable.getReader();
36
+ this.writer = stream.value.writable.getWriter();
37
+ // immediately write room/sessionId for establishing the room connection
38
+ this.sendSeatReservation(options.roomId, options.sessionId, options.reconnectionToken, options.skipHandshake);
39
+ // start reading incoming data
40
+ this.readIncomingData();
41
+ this.readIncomingUnreliableData();
42
+ }).catch((e) => {
43
+ console.error("failed to read incoming stream", e);
44
+ console.error("TODO: close the connection");
45
+ });
46
+ // this.events.onopen(e);
47
+ }).catch((e) => {
48
+ // this.events.onerror(e);
49
+ // this.events.onclose({ code: e.closeCode, reason: e.reason });
50
+ console.log("WebTransport not ready!", e);
51
+ this._close();
52
+ });
53
+ this.wt.closed.then((e) => {
54
+ console.log("WebTransport closed w/ success", e);
55
+ this.events.onclose({ code: e.closeCode, reason: e.reason });
56
+ }).catch((e) => {
57
+ console.log("WebTransport closed w/ error", e);
58
+ this.events.onerror(e);
59
+ this.events.onclose({ code: e.closeCode, reason: e.reason });
60
+ }).finally(() => {
61
+ this._close();
62
+ });
63
+ }
64
+ send(data) {
65
+ const prefixLength = schema.encode.number(this.lengthPrefixBuffer, data.length, { offset: 0 });
66
+ const dataWithPrefixedLength = new Uint8Array(prefixLength + data.length);
67
+ dataWithPrefixedLength.set(this.lengthPrefixBuffer.subarray(0, prefixLength), 0);
68
+ dataWithPrefixedLength.set(data, prefixLength);
69
+ this.writer.write(dataWithPrefixedLength);
70
+ }
71
+ sendUnreliable(data) {
72
+ const prefixLength = schema.encode.number(this.lengthPrefixBuffer, data.length, { offset: 0 });
73
+ const dataWithPrefixedLength = new Uint8Array(prefixLength + data.length);
74
+ dataWithPrefixedLength.set(this.lengthPrefixBuffer.subarray(0, prefixLength), 0);
75
+ dataWithPrefixedLength.set(data, prefixLength);
76
+ this.unreliableWriter.write(dataWithPrefixedLength);
77
+ }
78
+ close(code, reason) {
79
+ try {
80
+ this.wt.close({ closeCode: code, reason: reason });
81
+ }
82
+ catch (e) {
83
+ console.error(e);
84
+ }
85
+ }
86
+ readIncomingData() {
87
+ return tslib.__awaiter(this, void 0, void 0, function* () {
88
+ let result;
89
+ while (this.isOpen) {
90
+ try {
91
+ result = yield this.reader.read();
92
+ //
93
+ // a single read may contain multiple messages
94
+ // each message is prefixed with its length
95
+ //
96
+ const messages = result.value;
97
+ const it = { offset: 0 };
98
+ do {
99
+ //
100
+ // QUESTION: should we buffer the message in case it's not fully read?
101
+ //
102
+ const length = schema.decode.number(messages, it);
103
+ this.events.onmessage({ data: messages.subarray(it.offset, it.offset + length) });
104
+ it.offset += length;
105
+ } while (it.offset < messages.length);
106
+ }
107
+ catch (e) {
108
+ if (e.message.indexOf("session is closed") === -1) {
109
+ console.error("H3Transport: failed to read incoming data", e);
110
+ }
111
+ break;
112
+ }
113
+ if (result.done) {
114
+ break;
115
+ }
116
+ }
117
+ });
118
+ }
119
+ readIncomingUnreliableData() {
120
+ return tslib.__awaiter(this, void 0, void 0, function* () {
121
+ let result;
122
+ while (this.isOpen) {
123
+ try {
124
+ result = yield this.unreliableReader.read();
125
+ //
126
+ // a single read may contain multiple messages
127
+ // each message is prefixed with its length
128
+ //
129
+ const messages = result.value;
130
+ const it = { offset: 0 };
131
+ do {
132
+ //
133
+ // QUESTION: should we buffer the message in case it's not fully read?
134
+ //
135
+ const length = schema.decode.number(messages, it);
136
+ this.events.onmessage({ data: messages.subarray(it.offset, it.offset + length) });
137
+ it.offset += length;
138
+ } while (it.offset < messages.length);
139
+ }
140
+ catch (e) {
141
+ if (e.message.indexOf("session is closed") === -1) {
142
+ console.error("H3Transport: failed to read incoming data", e);
143
+ }
144
+ break;
145
+ }
146
+ if (result.done) {
147
+ break;
148
+ }
149
+ }
150
+ });
151
+ }
152
+ sendSeatReservation(roomId, sessionId, reconnectionToken, skipHandshake) {
153
+ const it = { offset: 0 };
154
+ const bytes = [];
155
+ schema.encode.string(bytes, roomId, it);
156
+ schema.encode.string(bytes, sessionId, it);
157
+ if (reconnectionToken) {
158
+ schema.encode.string(bytes, reconnectionToken, it);
159
+ }
160
+ if (skipHandshake) {
161
+ schema.encode.boolean(bytes, 1, it);
162
+ }
163
+ this.writer.write(new Uint8Array(bytes).buffer);
164
+ }
165
+ _close() {
166
+ this.isOpen = false;
167
+ }
168
+ }
169
+
170
+ exports.H3TransportTransport = H3TransportTransport;
171
+ //# sourceMappingURL=H3Transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"H3Transport.js","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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"}
@@ -0,0 +1,50 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ 'use strict';
8
+
9
+ var NodeWebSocket = require('ws');
10
+
11
+ const WebSocket = globalThis.WebSocket || NodeWebSocket;
12
+ class WebSocketTransport {
13
+ constructor(events) {
14
+ this.events = events;
15
+ }
16
+ send(data) {
17
+ this.ws.send(data);
18
+ }
19
+ sendUnreliable(data) {
20
+ console.warn("colyseus.js: The WebSocket transport does not support unreliable messages");
21
+ }
22
+ /**
23
+ * @param url URL to connect to
24
+ * @param headers custom headers to send with the connection (only supported in Node.js. Web Browsers do not allow setting custom headers)
25
+ */
26
+ connect(url, headers) {
27
+ try {
28
+ // Node or Bun environments (supports custom headers)
29
+ this.ws = new WebSocket(url, { headers, protocols: this.protocols });
30
+ }
31
+ catch (e) {
32
+ // browser environment (custom headers not supported)
33
+ this.ws = new WebSocket(url, this.protocols);
34
+ }
35
+ this.ws.binaryType = 'arraybuffer';
36
+ this.ws.onopen = this.events.onopen;
37
+ this.ws.onmessage = this.events.onmessage;
38
+ this.ws.onclose = this.events.onclose;
39
+ this.ws.onerror = this.events.onerror;
40
+ }
41
+ close(code, reason) {
42
+ this.ws.close(code, reason);
43
+ }
44
+ get isOpen() {
45
+ return this.ws.readyState === WebSocket.OPEN;
46
+ }
47
+ }
48
+
49
+ exports.WebSocketTransport = WebSocketTransport;
50
+ //# sourceMappingURL=WebSocketTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketTransport.js","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;;;;"}
@@ -0,0 +1,53 @@
1
+ // Copyright (c) 2026 Endel Dreyer.
2
+ //
3
+ // This software is released under the MIT License.
4
+ // https://opensource.org/license/MIT
5
+ //
6
+ // colyseus.js@0.17.0
7
+ /**
8
+ * Discord Embedded App SDK
9
+ * https://github.com/colyseus/colyseus/issues/707
10
+ *
11
+ * All URLs must go through the local proxy from
12
+ * https://<app_id>.discordsays.com/.proxy/<mapped_url>/...
13
+ *
14
+ * URL Mapping Examples:
15
+ *
16
+ * 1. Using Colyseus Cloud:
17
+ * - /colyseus/{subdomain} -> {subdomain}.colyseus.cloud
18
+ *
19
+ * Example:
20
+ * const client = new Client("https://xxxx.colyseus.cloud");
21
+ *
22
+ * -------------------------------------------------------------
23
+ *
24
+ * 2. Using `cloudflared` tunnel:
25
+ * - /colyseus/ -> <your-cloudflared-url>.trycloudflare.com
26
+ *
27
+ * Example:
28
+ * const client = new Client("https://<your-cloudflared-url>.trycloudflare.com");
29
+ *
30
+ * -------------------------------------------------------------
31
+ *
32
+ * 3. Providing a manual /.proxy/your-mapping:
33
+ * - /your-mapping/ -> your-endpoint.com
34
+ *
35
+ * Example:
36
+ * const client = new Client("/.proxy/your-mapping");
37
+ *
38
+ */
39
+ function discordURLBuilder(url) {
40
+ const localHostname = window?.location?.hostname || "localhost";
41
+ const remoteHostnameSplitted = url.hostname.split('.');
42
+ const subdomain = (!url.hostname.includes("trycloudflare.com") && // ignore cloudflared subdomains
43
+ !url.hostname.includes("discordsays.com") && // ignore discordsays.com subdomains
44
+ remoteHostnameSplitted.length > 2)
45
+ ? `/${remoteHostnameSplitted[0]}`
46
+ : '';
47
+ return (url.pathname.startsWith("/.proxy"))
48
+ ? `${url.protocol}//${localHostname}${subdomain}${url.pathname}${url.search}`
49
+ : `${url.protocol}//${localHostname}/.proxy/colyseus${subdomain}${url.pathname}${url.search}`;
50
+ }
51
+
52
+ export { discordURLBuilder };
53
+ //# sourceMappingURL=discord.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord.mjs","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;IACvC,MAAM,aAAa,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAAI,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;;;;"}