@colyseus/core 0.16.23 → 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 (224) hide show
  1. package/build/Debug.js +16 -4
  2. package/build/Debug.js.map +2 -2
  3. package/build/Debug.mjs +11 -1
  4. package/build/Debug.mjs.map +2 -2
  5. package/build/IPC.js +5 -3
  6. package/build/IPC.js.map +2 -2
  7. package/build/IPC.mjs +1 -0
  8. package/build/IPC.mjs.map +2 -2
  9. package/build/Logger.js +1 -0
  10. package/build/Logger.js.map +1 -1
  11. package/build/MatchMaker.js +148 -84
  12. package/build/MatchMaker.js.map +3 -3
  13. package/build/MatchMaker.mjs +130 -70
  14. package/build/MatchMaker.mjs.map +3 -3
  15. package/build/Protocol.js +54 -41
  16. package/build/Protocol.js.map +3 -3
  17. package/build/Protocol.mjs +52 -41
  18. package/build/Protocol.mjs.map +3 -3
  19. package/build/Room.js +430 -195
  20. package/build/Room.js.map +3 -3
  21. package/build/Room.mjs +417 -175
  22. package/build/Room.mjs.map +3 -3
  23. package/build/Server.js +48 -108
  24. package/build/Server.js.map +3 -3
  25. package/build/Server.mjs +39 -102
  26. package/build/Server.mjs.map +3 -3
  27. package/build/Stats.js +2 -1
  28. package/build/Stats.js.map +2 -2
  29. package/build/Stats.mjs.map +1 -1
  30. package/build/Transport.js +29 -11
  31. package/build/Transport.js.map +3 -3
  32. package/build/Transport.mjs +15 -9
  33. package/build/Transport.mjs.map +3 -3
  34. package/build/errors/RoomExceptions.js +9 -5
  35. package/build/errors/RoomExceptions.js.map +2 -2
  36. package/build/errors/RoomExceptions.mjs +8 -5
  37. package/build/errors/RoomExceptions.mjs.map +2 -2
  38. package/build/errors/SeatReservationError.js +1 -0
  39. package/build/errors/SeatReservationError.js.map +1 -1
  40. package/build/errors/ServerError.js +2 -1
  41. package/build/errors/ServerError.js.map +2 -2
  42. package/build/errors/ServerError.mjs.map +1 -1
  43. package/build/index.js +60 -26
  44. package/build/index.js.map +2 -2
  45. package/build/index.mjs +33 -7
  46. package/build/index.mjs.map +2 -2
  47. package/build/matchmaker/Lobby.js +13 -3
  48. package/build/matchmaker/Lobby.js.map +2 -2
  49. package/build/matchmaker/Lobby.mjs +11 -2
  50. package/build/matchmaker/Lobby.mjs.map +2 -2
  51. package/build/matchmaker/LocalDriver/LocalDriver.js +94 -0
  52. package/build/matchmaker/LocalDriver/LocalDriver.js.map +7 -0
  53. package/build/matchmaker/LocalDriver/LocalDriver.mjs +71 -0
  54. package/build/matchmaker/LocalDriver/LocalDriver.mjs.map +7 -0
  55. package/build/matchmaker/LocalDriver/Query.js +111 -0
  56. package/build/matchmaker/LocalDriver/Query.js.map +7 -0
  57. package/build/matchmaker/LocalDriver/Query.mjs +88 -0
  58. package/build/matchmaker/LocalDriver/Query.mjs.map +7 -0
  59. package/build/matchmaker/RegisteredHandler.js +57 -7
  60. package/build/matchmaker/RegisteredHandler.js.map +2 -2
  61. package/build/matchmaker/RegisteredHandler.mjs +54 -5
  62. package/build/matchmaker/RegisteredHandler.mjs.map +2 -2
  63. package/build/matchmaker/controller.js +8 -8
  64. package/build/matchmaker/controller.js.map +2 -2
  65. package/build/matchmaker/controller.mjs +4 -5
  66. package/build/matchmaker/controller.mjs.map +2 -2
  67. package/build/matchmaker/driver/api.js +21 -2
  68. package/build/matchmaker/driver/api.js.map +2 -2
  69. package/build/matchmaker/driver/api.mjs +18 -1
  70. package/build/matchmaker/driver/api.mjs.map +2 -2
  71. package/build/matchmaker/driver/local/LocalDriver.js +36 -7
  72. package/build/matchmaker/driver/local/LocalDriver.js.map +2 -2
  73. package/build/matchmaker/driver/local/LocalDriver.mjs +33 -5
  74. package/build/matchmaker/driver/local/LocalDriver.mjs.map +2 -2
  75. package/build/matchmaker/driver/local/Query.js +51 -18
  76. package/build/matchmaker/driver/local/Query.js.map +2 -2
  77. package/build/matchmaker/driver/local/Query.mjs +50 -18
  78. package/build/matchmaker/driver/local/Query.mjs.map +2 -2
  79. package/build/matchmaker/driver.js +44 -0
  80. package/build/matchmaker/driver.js.map +7 -0
  81. package/build/matchmaker/driver.mjs +20 -0
  82. package/build/matchmaker/driver.mjs.map +7 -0
  83. package/build/matchmaker/routes.js +79 -0
  84. package/build/matchmaker/routes.js.map +7 -0
  85. package/build/matchmaker/routes.mjs +45 -0
  86. package/build/matchmaker/routes.mjs.map +7 -0
  87. package/build/presence/LocalPresence.js +13 -27
  88. package/build/presence/LocalPresence.js.map +3 -3
  89. package/build/presence/LocalPresence.mjs +11 -16
  90. package/build/presence/LocalPresence.mjs.map +2 -2
  91. package/build/presence/Presence.js +37 -0
  92. package/build/presence/Presence.js.map +2 -2
  93. package/build/presence/Presence.mjs +29 -0
  94. package/build/presence/Presence.mjs.map +3 -3
  95. package/build/rooms/LobbyRoom.js +5 -5
  96. package/build/rooms/LobbyRoom.js.map +2 -2
  97. package/build/rooms/LobbyRoom.mjs +1 -2
  98. package/build/rooms/LobbyRoom.mjs.map +2 -2
  99. package/build/rooms/RankedQueueRoom.js +224 -0
  100. package/build/rooms/RankedQueueRoom.js.map +7 -0
  101. package/build/rooms/RankedQueueRoom.mjs +201 -0
  102. package/build/rooms/RankedQueueRoom.mjs.map +7 -0
  103. package/build/rooms/RelayRoom.js +6 -6
  104. package/build/rooms/RelayRoom.js.map +2 -2
  105. package/build/rooms/RelayRoom.mjs +4 -5
  106. package/build/rooms/RelayRoom.mjs.map +2 -2
  107. package/build/rooms/createRoom.js +51 -0
  108. package/build/rooms/createRoom.js.map +7 -0
  109. package/build/rooms/createRoom.mjs +28 -0
  110. package/build/rooms/createRoom.mjs.map +7 -0
  111. package/build/router/default_routes.js +79 -0
  112. package/build/router/default_routes.js.map +7 -0
  113. package/build/router/default_routes.mjs +45 -0
  114. package/build/router/default_routes.mjs.map +7 -0
  115. package/build/router/index.js +55 -0
  116. package/build/router/index.js.map +7 -0
  117. package/build/router/index.mjs +30 -0
  118. package/build/router/index.mjs.map +7 -0
  119. package/build/serializer/NoneSerializer.js +1 -0
  120. package/build/serializer/NoneSerializer.js.map +2 -2
  121. package/build/serializer/NoneSerializer.mjs.map +2 -2
  122. package/build/serializer/SchemaSerializer.js +6 -7
  123. package/build/serializer/SchemaSerializer.js.map +2 -2
  124. package/build/serializer/SchemaSerializer.mjs +3 -5
  125. package/build/serializer/SchemaSerializer.mjs.map +2 -2
  126. package/build/serializer/SchemaSerializerDebug.js +29 -0
  127. package/build/serializer/SchemaSerializerDebug.js.map +3 -3
  128. package/build/serializer/SchemaSerializerDebug.mjs +7 -0
  129. package/build/serializer/SchemaSerializerDebug.mjs.map +3 -3
  130. package/build/serializer/Serializer.js +1 -0
  131. package/build/serializer/Serializer.js.map +2 -2
  132. package/build/{Debug.d.ts → src/Debug.d.ts} +2 -1
  133. package/build/{IPC.d.ts → src/IPC.d.ts} +2 -2
  134. package/build/{MatchMaker.d.ts → src/MatchMaker.d.ts} +58 -33
  135. package/build/src/Protocol.d.ts +53 -0
  136. package/build/src/Room.d.ts +497 -0
  137. package/build/{Server.d.ts → src/Server.d.ts} +23 -25
  138. package/build/{Transport.d.ts → src/Transport.d.ts} +65 -22
  139. package/build/{errors → src/errors}/RoomExceptions.d.ts +8 -7
  140. package/build/src/index.d.ts +27 -0
  141. package/build/src/matchmaker/Lobby.d.ts +4 -0
  142. package/build/src/matchmaker/LocalDriver/LocalDriver.d.ts +17 -0
  143. package/build/src/matchmaker/LocalDriver/Query.d.ts +12 -0
  144. package/build/src/matchmaker/RegisteredHandler.d.ts +81 -0
  145. package/build/{matchmaker → src/matchmaker}/controller.d.ts +5 -6
  146. package/build/src/matchmaker/driver/api.d.ts +145 -0
  147. package/build/src/matchmaker/driver/local/LocalDriver.d.ts +17 -0
  148. package/build/src/matchmaker/driver/local/Query.d.ts +12 -0
  149. package/build/src/matchmaker/driver.d.ts +145 -0
  150. package/build/src/matchmaker/routes.d.ts +92 -0
  151. package/build/{presence → src/presence}/LocalPresence.d.ts +1 -1
  152. package/build/{presence → src/presence}/Presence.d.ts +2 -0
  153. package/build/{rooms → src/rooms}/LobbyRoom.d.ts +4 -4
  154. package/build/src/rooms/RankedQueueRoom.d.ts +125 -0
  155. package/build/{rooms → src/rooms}/RelayRoom.d.ts +5 -4
  156. package/build/src/rooms/createRoom.d.ts +65 -0
  157. package/build/src/router/default_routes.d.ts +103 -0
  158. package/build/src/router/index.d.ts +68 -0
  159. package/build/{serializer → src/serializer}/NoneSerializer.d.ts +2 -2
  160. package/build/{serializer → src/serializer}/SchemaSerializer.d.ts +9 -9
  161. package/build/{serializer → src/serializer}/Serializer.d.ts +3 -3
  162. package/build/{utils → src/utils}/DevMode.d.ts +5 -4
  163. package/build/{utils → src/utils}/StandardSchema.d.ts +1 -1
  164. package/build/{utils → src/utils}/Utils.d.ts +15 -4
  165. package/build/utils/DevMode.js +54 -26
  166. package/build/utils/DevMode.js.map +3 -3
  167. package/build/utils/DevMode.mjs +44 -19
  168. package/build/utils/DevMode.mjs.map +2 -2
  169. package/build/utils/StandardSchema.js.map +1 -1
  170. package/build/utils/StandardSchema.mjs.map +1 -1
  171. package/build/utils/Utils.js +8 -15
  172. package/build/utils/Utils.js.map +3 -3
  173. package/build/utils/Utils.mjs +6 -4
  174. package/build/utils/Utils.mjs.map +2 -2
  175. package/package.json +20 -14
  176. package/build/Protocol.d.ts +0 -37
  177. package/build/Room.d.ts +0 -265
  178. package/build/discovery/index.d.ts +0 -8
  179. package/build/discovery/index.js +0 -50
  180. package/build/discovery/index.js.map +0 -7
  181. package/build/discovery/index.mjs +0 -26
  182. package/build/discovery/index.mjs.map +0 -7
  183. package/build/index.d.ts +0 -24
  184. package/build/matchmaker/Lobby.d.ts +0 -4
  185. package/build/matchmaker/RegisteredHandler.d.ts +0 -19
  186. package/build/matchmaker/driver/Query.d.ts +0 -8
  187. package/build/matchmaker/driver/Query.js +0 -68
  188. package/build/matchmaker/driver/Query.js.map +0 -7
  189. package/build/matchmaker/driver/Query.mjs +0 -45
  190. package/build/matchmaker/driver/Query.mjs.map +0 -7
  191. package/build/matchmaker/driver/RoomData.d.ts +0 -19
  192. package/build/matchmaker/driver/RoomData.js +0 -79
  193. package/build/matchmaker/driver/RoomData.js.map +0 -7
  194. package/build/matchmaker/driver/RoomData.mjs +0 -56
  195. package/build/matchmaker/driver/RoomData.mjs.map +0 -7
  196. package/build/matchmaker/driver/api.d.ts +0 -104
  197. package/build/matchmaker/driver/index.d.ts +0 -13
  198. package/build/matchmaker/driver/index.js +0 -64
  199. package/build/matchmaker/driver/index.js.map +0 -7
  200. package/build/matchmaker/driver/index.mjs +0 -42
  201. package/build/matchmaker/driver/index.mjs.map +0 -7
  202. package/build/matchmaker/driver/interfaces.d.ts +0 -73
  203. package/build/matchmaker/driver/interfaces.js +0 -15
  204. package/build/matchmaker/driver/interfaces.js.map +0 -7
  205. package/build/matchmaker/driver/interfaces.mjs +0 -0
  206. package/build/matchmaker/driver/interfaces.mjs.map +0 -7
  207. package/build/matchmaker/driver/local/LocalDriver.d.ts +0 -13
  208. package/build/matchmaker/driver/local/Query.d.ts +0 -9
  209. package/build/matchmaker/driver/local/RoomData.d.ts +0 -19
  210. package/build/matchmaker/driver/local/RoomData.js +0 -79
  211. package/build/matchmaker/driver/local/RoomData.js.map +0 -7
  212. package/build/matchmaker/driver/local/RoomData.mjs +0 -57
  213. package/build/matchmaker/driver/local/RoomData.mjs.map +0 -7
  214. package/build/utils/types.d.ts +0 -1
  215. package/build/utils/types.js +0 -15
  216. package/build/utils/types.js.map +0 -7
  217. package/build/utils/types.mjs +0 -0
  218. package/build/utils/types.mjs.map +0 -7
  219. /package/build/{Logger.d.ts → src/Logger.d.ts} +0 -0
  220. /package/build/{Stats.d.ts → src/Stats.d.ts} +0 -0
  221. /package/build/{errors → src/errors}/SeatReservationError.d.ts +0 -0
  222. /package/build/{errors → src/errors}/ServerError.d.ts +0 -0
  223. /package/build/{serializer → src/serializer}/SchemaSerializerDebug.d.ts +0 -0
  224. /package/build/{utils → src/utils}/nanoevents.d.ts +0 -0
package/build/Debug.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -29,6 +30,7 @@ var Debug_exports = {};
29
30
  __export(Debug_exports, {
30
31
  debugAndPrintError: () => debugAndPrintError,
31
32
  debugConnection: () => debugConnection,
33
+ debugDevMode: () => debugDevMode,
32
34
  debugDriver: () => debugDriver,
33
35
  debugError: () => debugError,
34
36
  debugMatchMaking: () => debugMatchMaking,
@@ -37,16 +39,25 @@ __export(Debug_exports, {
37
39
  debugPresence: () => debugPresence
38
40
  });
39
41
  module.exports = __toCommonJS(Debug_exports);
40
- var import_debug = __toESM(require("debug"));
41
- var import_Logger = require("./Logger.js");
42
- var import_ServerError = require("./errors/ServerError.js");
42
+ var import_debug = __toESM(require("debug"), 1);
43
+ var import_Logger = require("./Logger.ts");
44
+ var import_ServerError = require("./errors/ServerError.ts");
43
45
  const debugConnection = (0, import_debug.default)("colyseus:connection");
46
+ debugConnection.log = console.debug.bind(console);
44
47
  const debugDriver = (0, import_debug.default)("colyseus:driver");
45
- const debugError = (0, import_debug.default)("colyseus:errors");
48
+ debugDriver.log = console.debug.bind(console);
46
49
  const debugMatchMaking = (0, import_debug.default)("colyseus:matchmaking");
50
+ debugMatchMaking.log = console.debug.bind(console);
47
51
  const debugMessage = (0, import_debug.default)("colyseus:message");
52
+ debugMessage.log = console.debug.bind(console);
48
53
  const debugPatch = (0, import_debug.default)("colyseus:patch");
54
+ debugPatch.log = console.debug.bind(console);
49
55
  const debugPresence = (0, import_debug.default)("colyseus:presence");
56
+ debugPresence.log = console.debug.bind(console);
57
+ const debugError = (0, import_debug.default)("colyseus:errors");
58
+ debugError.log = console.error.bind(console);
59
+ const debugDevMode = (0, import_debug.default)("colyseus:devmode");
60
+ debugDevMode.log = console.debug.bind(console);
50
61
  const debugAndPrintError = (e) => {
51
62
  const message = e instanceof Error ? e.stack : e;
52
63
  if (!(e instanceof import_ServerError.ServerError)) {
@@ -58,6 +69,7 @@ const debugAndPrintError = (e) => {
58
69
  0 && (module.exports = {
59
70
  debugAndPrintError,
60
71
  debugConnection,
72
+ debugDevMode,
61
73
  debugDriver,
62
74
  debugError,
63
75
  debugMatchMaking,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Debug.ts"],
4
- "sourcesContent": ["import debug from 'debug';\nimport { logger } from './Logger.js';\nimport { ServerError } from './errors/ServerError.js';\n\nexport const debugConnection = debug('colyseus:connection');\nexport const debugDriver = debug('colyseus:driver');\nexport const debugError = debug('colyseus:errors');\nexport const debugMatchMaking = debug('colyseus:matchmaking');\nexport const debugMessage = debug('colyseus:message');\nexport const debugPatch = debug('colyseus:patch');\nexport const debugPresence = debug('colyseus:presence');\n\nexport const debugAndPrintError = (e: Error | string) => {\n const message = (e instanceof Error) ? e.stack : e;\n\n if (!(e instanceof ServerError)) {\n logger.error(message);\n }\n\n debugError.call(debugError, message);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,oBAAuB;AACvB,yBAA4B;AAErB,MAAM,sBAAkB,aAAAA,SAAM,qBAAqB;AACnD,MAAM,kBAAc,aAAAA,SAAM,iBAAiB;AAC3C,MAAM,iBAAa,aAAAA,SAAM,iBAAiB;AAC1C,MAAM,uBAAmB,aAAAA,SAAM,sBAAsB;AACrD,MAAM,mBAAe,aAAAA,SAAM,kBAAkB;AAC7C,MAAM,iBAAa,aAAAA,SAAM,gBAAgB;AACzC,MAAM,oBAAgB,aAAAA,SAAM,mBAAmB;AAE/C,MAAM,qBAAqB,CAAC,MAAsB;AACvD,QAAM,UAAW,aAAa,QAAS,EAAE,QAAQ;AAEjD,MAAI,EAAE,aAAa,iCAAc;AAC/B,yBAAO,MAAM,OAAO;AAAA,EACtB;AAEA,aAAW,KAAK,YAAY,OAAO;AACrC;",
4
+ "sourcesContent": ["import debug from 'debug';\nimport { logger } from './Logger.ts';\nimport { ServerError } from './errors/ServerError.ts';\n\nexport const debugConnection = debug('colyseus:connection');\ndebugConnection.log = console.debug.bind(console); // STDOUT\n\nexport const debugDriver = debug('colyseus:driver');\ndebugDriver.log = console.debug.bind(console); // STDOUT\n\nexport const debugMatchMaking = debug('colyseus:matchmaking');\ndebugMatchMaking.log = console.debug.bind(console); // STDOUT\n\nexport const debugMessage = debug('colyseus:message');\ndebugMessage.log = console.debug.bind(console); // STDOUT\n\nexport const debugPatch = debug('colyseus:patch');\ndebugPatch.log = console.debug.bind(console); // STDOUT\n\nexport const debugPresence = debug('colyseus:presence');\ndebugPresence.log = console.debug.bind(console); // STDOUT\n\nexport const debugError = debug('colyseus:errors');\ndebugError.log = console.error.bind(console); // STDERR\n\nexport const debugDevMode = debug('colyseus:devmode');\ndebugDevMode.log = console.debug.bind(console); // STDOUT\n\nexport const debugAndPrintError = (e: Error | string) => {\n const message = (e instanceof Error) ? e.stack : e;\n\n if (!(e instanceof ServerError)) {\n logger.error(message);\n }\n\n debugError.call(debugError, message);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,oBAAuB;AACvB,yBAA4B;AAErB,MAAM,sBAAkB,aAAAA,SAAM,qBAAqB;AAC1D,gBAAgB,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEzC,MAAM,kBAAc,aAAAA,SAAM,iBAAiB;AAClD,YAAY,MAAM,QAAQ,MAAM,KAAK,OAAO;AAErC,MAAM,uBAAmB,aAAAA,SAAM,sBAAsB;AAC5D,iBAAiB,MAAM,QAAQ,MAAM,KAAK,OAAO;AAE1C,MAAM,mBAAe,aAAAA,SAAM,kBAAkB;AACpD,aAAa,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEtC,MAAM,iBAAa,aAAAA,SAAM,gBAAgB;AAChD,WAAW,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEpC,MAAM,oBAAgB,aAAAA,SAAM,mBAAmB;AACtD,cAAc,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEvC,MAAM,iBAAa,aAAAA,SAAM,iBAAiB;AACjD,WAAW,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEpC,MAAM,mBAAe,aAAAA,SAAM,kBAAkB;AACpD,aAAa,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEtC,MAAM,qBAAqB,CAAC,MAAsB;AACvD,QAAM,UAAW,aAAa,QAAS,EAAE,QAAQ;AAEjD,MAAI,EAAE,aAAa,iCAAc;AAC/B,yBAAO,MAAM,OAAO;AAAA,EACtB;AAEA,aAAW,KAAK,YAAY,OAAO;AACrC;",
6
6
  "names": ["debug"]
7
7
  }
package/build/Debug.mjs CHANGED
@@ -3,12 +3,21 @@ import debug from "debug";
3
3
  import { logger } from "./Logger.mjs";
4
4
  import { ServerError } from "./errors/ServerError.mjs";
5
5
  var debugConnection = debug("colyseus:connection");
6
+ debugConnection.log = console.debug.bind(console);
6
7
  var debugDriver = debug("colyseus:driver");
7
- var debugError = debug("colyseus:errors");
8
+ debugDriver.log = console.debug.bind(console);
8
9
  var debugMatchMaking = debug("colyseus:matchmaking");
10
+ debugMatchMaking.log = console.debug.bind(console);
9
11
  var debugMessage = debug("colyseus:message");
12
+ debugMessage.log = console.debug.bind(console);
10
13
  var debugPatch = debug("colyseus:patch");
14
+ debugPatch.log = console.debug.bind(console);
11
15
  var debugPresence = debug("colyseus:presence");
16
+ debugPresence.log = console.debug.bind(console);
17
+ var debugError = debug("colyseus:errors");
18
+ debugError.log = console.error.bind(console);
19
+ var debugDevMode = debug("colyseus:devmode");
20
+ debugDevMode.log = console.debug.bind(console);
12
21
  var debugAndPrintError = (e) => {
13
22
  const message = e instanceof Error ? e.stack : e;
14
23
  if (!(e instanceof ServerError)) {
@@ -19,6 +28,7 @@ var debugAndPrintError = (e) => {
19
28
  export {
20
29
  debugAndPrintError,
21
30
  debugConnection,
31
+ debugDevMode,
22
32
  debugDriver,
23
33
  debugError,
24
34
  debugMatchMaking,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Debug.ts"],
4
- "sourcesContent": ["import debug from 'debug';\nimport { logger } from './Logger.js';\nimport { ServerError } from './errors/ServerError.js';\n\nexport const debugConnection = debug('colyseus:connection');\nexport const debugDriver = debug('colyseus:driver');\nexport const debugError = debug('colyseus:errors');\nexport const debugMatchMaking = debug('colyseus:matchmaking');\nexport const debugMessage = debug('colyseus:message');\nexport const debugPatch = debug('colyseus:patch');\nexport const debugPresence = debug('colyseus:presence');\n\nexport const debugAndPrintError = (e: Error | string) => {\n const message = (e instanceof Error) ? e.stack : e;\n\n if (!(e instanceof ServerError)) {\n logger.error(message);\n }\n\n debugError.call(debugError, message);\n};\n"],
5
- "mappings": ";AAAA,OAAO,WAAW;AAClB,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAErB,IAAM,kBAAkB,MAAM,qBAAqB;AACnD,IAAM,cAAc,MAAM,iBAAiB;AAC3C,IAAM,aAAa,MAAM,iBAAiB;AAC1C,IAAM,mBAAmB,MAAM,sBAAsB;AACrD,IAAM,eAAe,MAAM,kBAAkB;AAC7C,IAAM,aAAa,MAAM,gBAAgB;AACzC,IAAM,gBAAgB,MAAM,mBAAmB;AAE/C,IAAM,qBAAqB,CAAC,MAAsB;AACvD,QAAM,UAAW,aAAa,QAAS,EAAE,QAAQ;AAEjD,MAAI,EAAE,aAAa,cAAc;AAC/B,WAAO,MAAM,OAAO;AAAA,EACtB;AAEA,aAAW,KAAK,YAAY,OAAO;AACrC;",
4
+ "sourcesContent": ["import debug from 'debug';\nimport { logger } from './Logger.ts';\nimport { ServerError } from './errors/ServerError.ts';\n\nexport const debugConnection = debug('colyseus:connection');\ndebugConnection.log = console.debug.bind(console); // STDOUT\n\nexport const debugDriver = debug('colyseus:driver');\ndebugDriver.log = console.debug.bind(console); // STDOUT\n\nexport const debugMatchMaking = debug('colyseus:matchmaking');\ndebugMatchMaking.log = console.debug.bind(console); // STDOUT\n\nexport const debugMessage = debug('colyseus:message');\ndebugMessage.log = console.debug.bind(console); // STDOUT\n\nexport const debugPatch = debug('colyseus:patch');\ndebugPatch.log = console.debug.bind(console); // STDOUT\n\nexport const debugPresence = debug('colyseus:presence');\ndebugPresence.log = console.debug.bind(console); // STDOUT\n\nexport const debugError = debug('colyseus:errors');\ndebugError.log = console.error.bind(console); // STDERR\n\nexport const debugDevMode = debug('colyseus:devmode');\ndebugDevMode.log = console.debug.bind(console); // STDOUT\n\nexport const debugAndPrintError = (e: Error | string) => {\n const message = (e instanceof Error) ? e.stack : e;\n\n if (!(e instanceof ServerError)) {\n logger.error(message);\n }\n\n debugError.call(debugError, message);\n};\n"],
5
+ "mappings": ";AAAA,OAAO,WAAW;AAClB,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAErB,IAAM,kBAAkB,MAAM,qBAAqB;AAC1D,gBAAgB,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEzC,IAAM,cAAc,MAAM,iBAAiB;AAClD,YAAY,MAAM,QAAQ,MAAM,KAAK,OAAO;AAErC,IAAM,mBAAmB,MAAM,sBAAsB;AAC5D,iBAAiB,MAAM,QAAQ,MAAM,KAAK,OAAO;AAE1C,IAAM,eAAe,MAAM,kBAAkB;AACpD,aAAa,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEtC,IAAM,aAAa,MAAM,gBAAgB;AAChD,WAAW,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEpC,IAAM,gBAAgB,MAAM,mBAAmB;AACtD,cAAc,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEvC,IAAM,aAAa,MAAM,iBAAiB;AACjD,WAAW,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEpC,IAAM,eAAe,MAAM,kBAAkB;AACpD,aAAa,MAAM,QAAQ,MAAM,KAAK,OAAO;AAEtC,IAAM,qBAAqB,CAAC,MAAsB;AACvD,QAAM,UAAW,aAAa,QAAS,EAAE,QAAQ;AAEjD,MAAI,EAAE,aAAa,cAAc;AAC/B,WAAO,MAAM,OAAO;AAAA,EACtB;AAEA,aAAW,KAAK,YAAY,OAAO;AACrC;",
6
6
  "names": []
7
7
  }
package/build/IPC.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -22,9 +23,10 @@ __export(IPC_exports, {
22
23
  subscribeWithTimeout: () => subscribeWithTimeout
23
24
  });
24
25
  module.exports = __toCommonJS(IPC_exports);
25
- var import_Debug = require("./Debug.js");
26
- var import_Protocol = require("./Protocol.js");
27
- var import_Utils = require("./utils/Utils.js");
26
+ var import_Debug = require("./Debug.ts");
27
+ var import_Presence = require("./presence/Presence.ts");
28
+ var import_Protocol = require("./Protocol.ts");
29
+ var import_Utils = require("./utils/Utils.ts");
28
30
  async function requestFromIPC(presence, publishToChannel, method, args, rejectionTimeout = import_Utils.REMOTE_ROOM_SHORT_TIMEOUT) {
29
31
  return new Promise(async (resolve, reject) => {
30
32
  let unsubscribeTimeout;
package/build/IPC.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/IPC.ts"],
4
- "sourcesContent": ["import { debugAndPrintError } from './Debug.js';\nimport { Presence } from './presence/Presence.js';\nimport { IpcProtocol } from './Protocol.js';\nimport { generateId, REMOTE_ROOM_SHORT_TIMEOUT } from './utils/Utils.js';\n\nexport async function requestFromIPC<T>(\n presence: Presence,\n publishToChannel: string,\n method: string,\n args: any[],\n rejectionTimeout: number = REMOTE_ROOM_SHORT_TIMEOUT,\n): Promise<T> {\n return new Promise<T>(async (resolve, reject) => {\n let unsubscribeTimeout: NodeJS.Timeout;\n\n const requestId = generateId();\n const channel = `ipc:${requestId}`;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(unsubscribeTimeout);\n };\n\n await presence.subscribe(channel, (message: [IpcProtocol, any]) => {\n const [code, data] = message;\n if (code === IpcProtocol.SUCCESS) {\n resolve(data);\n\n } else if (code === IpcProtocol.ERROR) {\n let error: any = data;\n\n // parse error message + code\n try { error = JSON.parse(data) } catch (e) {}\n\n // turn string message into Error instance\n if (typeof(error) === \"string\") {\n error = new Error(error);\n }\n\n reject(error);\n }\n unsubscribe();\n });\n\n presence.publish(publishToChannel, [method, requestId, args]);\n\n unsubscribeTimeout = setTimeout(() => {\n unsubscribe();\n reject(new Error(\"ipc_timeout\"));\n }, rejectionTimeout);\n });\n}\n\nexport async function subscribeIPC(\n presence: Presence,\n channel: string,\n replyCallback: (method: string, args: any[]) => any,\n) {\n await presence.subscribe(channel, (message) => {\n const [method, requestId, args] = message;\n\n const reply = (code, data) => {\n presence.publish(`ipc:${requestId}`, [code, data]);\n };\n\n // reply with method result\n let response: any;\n try {\n response = replyCallback(method, args);\n\n } catch (e) {\n debugAndPrintError(e);\n const error = (typeof(e.code) !== \"undefined\")\n ? { code: e.code, message: e.message }\n : e.message;\n return reply(IpcProtocol.ERROR, JSON.stringify(error));\n }\n\n if (!(response instanceof Promise)) {\n return reply(IpcProtocol.SUCCESS, response);\n }\n\n response.\n then((result) => reply(IpcProtocol.SUCCESS, result)).\n catch((e) => {\n // user might have called `reject()` without arguments.\n const err = e && e.message || e;\n reply(IpcProtocol.ERROR, err);\n });\n });\n}\n\n/**\n * Wait for a room creation notification via presence publish/subscribe\n */\nexport function subscribeWithTimeout(\n presence: Presence,\n channel: string,\n timeout: number,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let timeoutHandle: NodeJS.Timeout;\n let resolved = false;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(timeoutHandle);\n };\n\n presence.subscribe(channel, (roomId: string) => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n resolve(roomId);\n });\n\n timeoutHandle = setTimeout(() => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n reject(new Error(\"timeout\"));\n }, timeout);\n });\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAmC;AAEnC,sBAA4B;AAC5B,mBAAsD;AAEtD,eAAsB,eACpB,UACA,kBACA,QACA,MACA,mBAA2B,wCACf;AACZ,SAAO,IAAI,QAAW,OAAO,SAAS,WAAW;AAC/C,QAAI;AAEJ,UAAM,gBAAY,yBAAW;AAC7B,UAAM,UAAU,OAAO,SAAS;AAEhC,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,kBAAkB;AAAA,IACjC;AAEA,UAAM,SAAS,UAAU,SAAS,CAAC,YAAgC;AACjE,YAAM,CAAC,MAAM,IAAI,IAAI;AACrB,UAAI,SAAS,4BAAY,SAAS;AAChC,gBAAQ,IAAI;AAAA,MAEd,WAAW,SAAS,4BAAY,OAAO;AACrC,YAAI,QAAa;AAGjB,YAAI;AAAE,kBAAQ,KAAK,MAAM,IAAI;AAAA,QAAE,SAAS,GAAG;AAAA,QAAC;AAG5C,YAAI,OAAO,UAAW,UAAU;AAC9B,kBAAQ,IAAI,MAAM,KAAK;AAAA,QACzB;AAEA,eAAO,KAAK;AAAA,MACd;AACA,kBAAY;AAAA,IACd,CAAC;AAED,aAAS,QAAQ,kBAAkB,CAAC,QAAQ,WAAW,IAAI,CAAC;AAE5D,yBAAqB,WAAW,MAAM;AACpC,kBAAY;AACZ,aAAO,IAAI,MAAM,aAAa,CAAC;AAAA,IACjC,GAAG,gBAAgB;AAAA,EACrB,CAAC;AACH;AAEA,eAAsB,aACpB,UACA,SACA,eACA;AACA,QAAM,SAAS,UAAU,SAAS,CAAC,YAAY;AAC7C,UAAM,CAAC,QAAQ,WAAW,IAAI,IAAI;AAElC,UAAM,QAAQ,CAAC,MAAM,SAAS;AAC5B,eAAS,QAAQ,OAAO,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,IACnD;AAGA,QAAI;AACJ,QAAI;AACF,iBAAW,cAAc,QAAQ,IAAI;AAAA,IAEvC,SAAS,GAAG;AACV,2CAAmB,CAAC;AACpB,YAAM,QAAS,OAAO,EAAE,SAAU,cAC9B,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,QAAQ,IACnC,EAAE;AACN,aAAO,MAAM,4BAAY,OAAO,KAAK,UAAU,KAAK,CAAC;AAAA,IACvD;AAEA,QAAI,EAAE,oBAAoB,UAAU;AAClC,aAAO,MAAM,4BAAY,SAAS,QAAQ;AAAA,IAC5C;AAEA,aACE,KAAK,CAAC,WAAW,MAAM,4BAAY,SAAS,MAAM,CAAC,EACnD,MAAM,CAAC,MAAM;AAEX,YAAM,MAAM,KAAK,EAAE,WAAW;AAC9B,YAAM,4BAAY,OAAO,GAAG;AAAA,IAC9B,CAAC;AAAA,EACL,CAAC;AACH;AAKO,SAAS,qBACd,UACA,SACA,SACiB;AACjB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACJ,QAAI,WAAW;AAEf,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,aAAa;AAAA,IAC5B;AAEA,aAAS,UAAU,SAAS,CAAC,WAAmB;AAC9C,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,cAAQ,MAAM;AAAA,IAChB,CAAC;AAED,oBAAgB,WAAW,MAAM;AAC/B,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,aAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IAC7B,GAAG,OAAO;AAAA,EACZ,CAAC;AACH;",
4
+ "sourcesContent": ["import { debugAndPrintError } from './Debug.ts';\nimport { type Presence } from './presence/Presence.ts';\nimport { IpcProtocol } from './Protocol.ts';\nimport { generateId, REMOTE_ROOM_SHORT_TIMEOUT } from './utils/Utils.ts';\n\nexport async function requestFromIPC<T>(\n presence: Presence,\n publishToChannel: string,\n method: string | undefined,\n args: any[],\n rejectionTimeout: number = REMOTE_ROOM_SHORT_TIMEOUT,\n): Promise<T> {\n return new Promise<T>(async (resolve, reject) => {\n let unsubscribeTimeout: NodeJS.Timeout;\n\n const requestId = generateId();\n const channel = `ipc:${requestId}`;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(unsubscribeTimeout);\n };\n\n await presence.subscribe(channel, (message: [IpcProtocol, any]) => {\n const [code, data] = message;\n if (code === IpcProtocol.SUCCESS) {\n resolve(data);\n\n } else if (code === IpcProtocol.ERROR) {\n let error: any = data;\n\n // parse error message + code\n try { error = JSON.parse(data) } catch (e) {}\n\n // turn string message into Error instance\n if (typeof(error) === \"string\") {\n error = new Error(error);\n }\n\n reject(error);\n }\n unsubscribe();\n });\n\n presence.publish(publishToChannel, [method, requestId, args]);\n\n unsubscribeTimeout = setTimeout(() => {\n unsubscribe();\n reject(new Error(\"ipc_timeout\"));\n }, rejectionTimeout);\n });\n}\n\nexport async function subscribeIPC(\n presence: Presence,\n channel: string,\n replyCallback: (method: string, args: any[]) => any,\n) {\n await presence.subscribe(channel, (message) => {\n const [method, requestId, args] = message;\n\n const reply = (code, data) => {\n presence.publish(`ipc:${requestId}`, [code, data]);\n };\n\n // reply with method result\n let response: any;\n try {\n response = replyCallback(method, args);\n\n } catch (e: any) {\n debugAndPrintError(e);\n const error = (typeof(e.code) !== \"undefined\")\n ? { code: e.code, message: e.message }\n : e.message;\n return reply(IpcProtocol.ERROR, JSON.stringify(error));\n }\n\n if (!(response instanceof Promise)) {\n return reply(IpcProtocol.SUCCESS, response);\n }\n\n response.\n then((result) => reply(IpcProtocol.SUCCESS, result)).\n catch((e) => {\n // user might have called `reject()` without arguments.\n const err = e && e.message || e;\n reply(IpcProtocol.ERROR, err);\n });\n });\n}\n\n/**\n * Wait for a room creation notification via presence publish/subscribe\n */\nexport function subscribeWithTimeout(\n presence: Presence,\n channel: string,\n timeout: number,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let timeoutHandle: NodeJS.Timeout;\n let resolved = false;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(timeoutHandle);\n };\n\n presence.subscribe(channel, (roomId: string) => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n resolve(roomId);\n });\n\n timeoutHandle = setTimeout(() => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n reject(new Error(\"timeout\"));\n }, timeout);\n });\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAmC;AACnC,sBAA8B;AAC9B,sBAA4B;AAC5B,mBAAsD;AAEtD,eAAsB,eACpB,UACA,kBACA,QACA,MACA,mBAA2B,wCACf;AACZ,SAAO,IAAI,QAAW,OAAO,SAAS,WAAW;AAC/C,QAAI;AAEJ,UAAM,gBAAY,yBAAW;AAC7B,UAAM,UAAU,OAAO,SAAS;AAEhC,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,kBAAkB;AAAA,IACjC;AAEA,UAAM,SAAS,UAAU,SAAS,CAAC,YAAgC;AACjE,YAAM,CAAC,MAAM,IAAI,IAAI;AACrB,UAAI,SAAS,4BAAY,SAAS;AAChC,gBAAQ,IAAI;AAAA,MAEd,WAAW,SAAS,4BAAY,OAAO;AACrC,YAAI,QAAa;AAGjB,YAAI;AAAE,kBAAQ,KAAK,MAAM,IAAI;AAAA,QAAE,SAAS,GAAG;AAAA,QAAC;AAG5C,YAAI,OAAO,UAAW,UAAU;AAC9B,kBAAQ,IAAI,MAAM,KAAK;AAAA,QACzB;AAEA,eAAO,KAAK;AAAA,MACd;AACA,kBAAY;AAAA,IACd,CAAC;AAED,aAAS,QAAQ,kBAAkB,CAAC,QAAQ,WAAW,IAAI,CAAC;AAE5D,yBAAqB,WAAW,MAAM;AACpC,kBAAY;AACZ,aAAO,IAAI,MAAM,aAAa,CAAC;AAAA,IACjC,GAAG,gBAAgB;AAAA,EACrB,CAAC;AACH;AAEA,eAAsB,aACpB,UACA,SACA,eACA;AACA,QAAM,SAAS,UAAU,SAAS,CAAC,YAAY;AAC7C,UAAM,CAAC,QAAQ,WAAW,IAAI,IAAI;AAElC,UAAM,QAAQ,CAAC,MAAM,SAAS;AAC5B,eAAS,QAAQ,OAAO,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,IACnD;AAGA,QAAI;AACJ,QAAI;AACF,iBAAW,cAAc,QAAQ,IAAI;AAAA,IAEvC,SAAS,GAAQ;AACf,2CAAmB,CAAC;AACpB,YAAM,QAAS,OAAO,EAAE,SAAU,cAC9B,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,QAAQ,IACnC,EAAE;AACN,aAAO,MAAM,4BAAY,OAAO,KAAK,UAAU,KAAK,CAAC;AAAA,IACvD;AAEA,QAAI,EAAE,oBAAoB,UAAU;AAClC,aAAO,MAAM,4BAAY,SAAS,QAAQ;AAAA,IAC5C;AAEA,aACE,KAAK,CAAC,WAAW,MAAM,4BAAY,SAAS,MAAM,CAAC,EACnD,MAAM,CAAC,MAAM;AAEX,YAAM,MAAM,KAAK,EAAE,WAAW;AAC9B,YAAM,4BAAY,OAAO,GAAG;AAAA,IAC9B,CAAC;AAAA,EACL,CAAC;AACH;AAKO,SAAS,qBACd,UACA,SACA,SACiB;AACjB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACJ,QAAI,WAAW;AAEf,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,aAAa;AAAA,IAC5B;AAEA,aAAS,UAAU,SAAS,CAAC,WAAmB;AAC9C,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,cAAQ,MAAM;AAAA,IAChB,CAAC;AAED,oBAAgB,WAAW,MAAM;AAC/B,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,aAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IAC7B,GAAG,OAAO;AAAA,EACZ,CAAC;AACH;",
6
6
  "names": []
7
7
  }
package/build/IPC.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  // packages/core/src/IPC.ts
2
2
  import { debugAndPrintError } from "./Debug.mjs";
3
+ import "./presence/Presence.mjs";
3
4
  import { IpcProtocol } from "./Protocol.mjs";
4
5
  import { generateId, REMOTE_ROOM_SHORT_TIMEOUT } from "./utils/Utils.mjs";
5
6
  async function requestFromIPC(presence, publishToChannel, method, args, rejectionTimeout = REMOTE_ROOM_SHORT_TIMEOUT) {
package/build/IPC.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/IPC.ts"],
4
- "sourcesContent": ["import { debugAndPrintError } from './Debug.js';\nimport { Presence } from './presence/Presence.js';\nimport { IpcProtocol } from './Protocol.js';\nimport { generateId, REMOTE_ROOM_SHORT_TIMEOUT } from './utils/Utils.js';\n\nexport async function requestFromIPC<T>(\n presence: Presence,\n publishToChannel: string,\n method: string,\n args: any[],\n rejectionTimeout: number = REMOTE_ROOM_SHORT_TIMEOUT,\n): Promise<T> {\n return new Promise<T>(async (resolve, reject) => {\n let unsubscribeTimeout: NodeJS.Timeout;\n\n const requestId = generateId();\n const channel = `ipc:${requestId}`;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(unsubscribeTimeout);\n };\n\n await presence.subscribe(channel, (message: [IpcProtocol, any]) => {\n const [code, data] = message;\n if (code === IpcProtocol.SUCCESS) {\n resolve(data);\n\n } else if (code === IpcProtocol.ERROR) {\n let error: any = data;\n\n // parse error message + code\n try { error = JSON.parse(data) } catch (e) {}\n\n // turn string message into Error instance\n if (typeof(error) === \"string\") {\n error = new Error(error);\n }\n\n reject(error);\n }\n unsubscribe();\n });\n\n presence.publish(publishToChannel, [method, requestId, args]);\n\n unsubscribeTimeout = setTimeout(() => {\n unsubscribe();\n reject(new Error(\"ipc_timeout\"));\n }, rejectionTimeout);\n });\n}\n\nexport async function subscribeIPC(\n presence: Presence,\n channel: string,\n replyCallback: (method: string, args: any[]) => any,\n) {\n await presence.subscribe(channel, (message) => {\n const [method, requestId, args] = message;\n\n const reply = (code, data) => {\n presence.publish(`ipc:${requestId}`, [code, data]);\n };\n\n // reply with method result\n let response: any;\n try {\n response = replyCallback(method, args);\n\n } catch (e) {\n debugAndPrintError(e);\n const error = (typeof(e.code) !== \"undefined\")\n ? { code: e.code, message: e.message }\n : e.message;\n return reply(IpcProtocol.ERROR, JSON.stringify(error));\n }\n\n if (!(response instanceof Promise)) {\n return reply(IpcProtocol.SUCCESS, response);\n }\n\n response.\n then((result) => reply(IpcProtocol.SUCCESS, result)).\n catch((e) => {\n // user might have called `reject()` without arguments.\n const err = e && e.message || e;\n reply(IpcProtocol.ERROR, err);\n });\n });\n}\n\n/**\n * Wait for a room creation notification via presence publish/subscribe\n */\nexport function subscribeWithTimeout(\n presence: Presence,\n channel: string,\n timeout: number,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let timeoutHandle: NodeJS.Timeout;\n let resolved = false;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(timeoutHandle);\n };\n\n presence.subscribe(channel, (roomId: string) => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n resolve(roomId);\n });\n\n timeoutHandle = setTimeout(() => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n reject(new Error(\"timeout\"));\n }, timeout);\n });\n}"],
5
- "mappings": ";AAAA,SAAS,0BAA0B;AAEnC,SAAS,mBAAmB;AAC5B,SAAS,YAAY,iCAAiC;AAEtD,eAAsB,eACpB,UACA,kBACA,QACA,MACA,mBAA2B,2BACf;AACZ,SAAO,IAAI,QAAW,OAAO,SAAS,WAAW;AAC/C,QAAI;AAEJ,UAAM,YAAY,WAAW;AAC7B,UAAM,UAAU,OAAO,SAAS;AAEhC,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,kBAAkB;AAAA,IACjC;AAEA,UAAM,SAAS,UAAU,SAAS,CAAC,YAAgC;AACjE,YAAM,CAAC,MAAM,IAAI,IAAI;AACrB,UAAI,SAAS,YAAY,SAAS;AAChC,gBAAQ,IAAI;AAAA,MAEd,WAAW,SAAS,YAAY,OAAO;AACrC,YAAI,QAAa;AAGjB,YAAI;AAAE,kBAAQ,KAAK,MAAM,IAAI;AAAA,QAAE,SAAS,GAAG;AAAA,QAAC;AAG5C,YAAI,OAAO,UAAW,UAAU;AAC9B,kBAAQ,IAAI,MAAM,KAAK;AAAA,QACzB;AAEA,eAAO,KAAK;AAAA,MACd;AACA,kBAAY;AAAA,IACd,CAAC;AAED,aAAS,QAAQ,kBAAkB,CAAC,QAAQ,WAAW,IAAI,CAAC;AAE5D,yBAAqB,WAAW,MAAM;AACpC,kBAAY;AACZ,aAAO,IAAI,MAAM,aAAa,CAAC;AAAA,IACjC,GAAG,gBAAgB;AAAA,EACrB,CAAC;AACH;AAEA,eAAsB,aACpB,UACA,SACA,eACA;AACA,QAAM,SAAS,UAAU,SAAS,CAAC,YAAY;AAC7C,UAAM,CAAC,QAAQ,WAAW,IAAI,IAAI;AAElC,UAAM,QAAQ,CAAC,MAAM,SAAS;AAC5B,eAAS,QAAQ,OAAO,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,IACnD;AAGA,QAAI;AACJ,QAAI;AACF,iBAAW,cAAc,QAAQ,IAAI;AAAA,IAEvC,SAAS,GAAG;AACV,yBAAmB,CAAC;AACpB,YAAM,QAAS,OAAO,EAAE,SAAU,cAC9B,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,QAAQ,IACnC,EAAE;AACN,aAAO,MAAM,YAAY,OAAO,KAAK,UAAU,KAAK,CAAC;AAAA,IACvD;AAEA,QAAI,EAAE,oBAAoB,UAAU;AAClC,aAAO,MAAM,YAAY,SAAS,QAAQ;AAAA,IAC5C;AAEA,aACE,KAAK,CAAC,WAAW,MAAM,YAAY,SAAS,MAAM,CAAC,EACnD,MAAM,CAAC,MAAM;AAEX,YAAM,MAAM,KAAK,EAAE,WAAW;AAC9B,YAAM,YAAY,OAAO,GAAG;AAAA,IAC9B,CAAC;AAAA,EACL,CAAC;AACH;AAKO,SAAS,qBACd,UACA,SACA,SACiB;AACjB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACJ,QAAI,WAAW;AAEf,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,aAAa;AAAA,IAC5B;AAEA,aAAS,UAAU,SAAS,CAAC,WAAmB;AAC9C,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,cAAQ,MAAM;AAAA,IAChB,CAAC;AAED,oBAAgB,WAAW,MAAM;AAC/B,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,aAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IAC7B,GAAG,OAAO;AAAA,EACZ,CAAC;AACH;",
4
+ "sourcesContent": ["import { debugAndPrintError } from './Debug.ts';\nimport { type Presence } from './presence/Presence.ts';\nimport { IpcProtocol } from './Protocol.ts';\nimport { generateId, REMOTE_ROOM_SHORT_TIMEOUT } from './utils/Utils.ts';\n\nexport async function requestFromIPC<T>(\n presence: Presence,\n publishToChannel: string,\n method: string | undefined,\n args: any[],\n rejectionTimeout: number = REMOTE_ROOM_SHORT_TIMEOUT,\n): Promise<T> {\n return new Promise<T>(async (resolve, reject) => {\n let unsubscribeTimeout: NodeJS.Timeout;\n\n const requestId = generateId();\n const channel = `ipc:${requestId}`;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(unsubscribeTimeout);\n };\n\n await presence.subscribe(channel, (message: [IpcProtocol, any]) => {\n const [code, data] = message;\n if (code === IpcProtocol.SUCCESS) {\n resolve(data);\n\n } else if (code === IpcProtocol.ERROR) {\n let error: any = data;\n\n // parse error message + code\n try { error = JSON.parse(data) } catch (e) {}\n\n // turn string message into Error instance\n if (typeof(error) === \"string\") {\n error = new Error(error);\n }\n\n reject(error);\n }\n unsubscribe();\n });\n\n presence.publish(publishToChannel, [method, requestId, args]);\n\n unsubscribeTimeout = setTimeout(() => {\n unsubscribe();\n reject(new Error(\"ipc_timeout\"));\n }, rejectionTimeout);\n });\n}\n\nexport async function subscribeIPC(\n presence: Presence,\n channel: string,\n replyCallback: (method: string, args: any[]) => any,\n) {\n await presence.subscribe(channel, (message) => {\n const [method, requestId, args] = message;\n\n const reply = (code, data) => {\n presence.publish(`ipc:${requestId}`, [code, data]);\n };\n\n // reply with method result\n let response: any;\n try {\n response = replyCallback(method, args);\n\n } catch (e: any) {\n debugAndPrintError(e);\n const error = (typeof(e.code) !== \"undefined\")\n ? { code: e.code, message: e.message }\n : e.message;\n return reply(IpcProtocol.ERROR, JSON.stringify(error));\n }\n\n if (!(response instanceof Promise)) {\n return reply(IpcProtocol.SUCCESS, response);\n }\n\n response.\n then((result) => reply(IpcProtocol.SUCCESS, result)).\n catch((e) => {\n // user might have called `reject()` without arguments.\n const err = e && e.message || e;\n reply(IpcProtocol.ERROR, err);\n });\n });\n}\n\n/**\n * Wait for a room creation notification via presence publish/subscribe\n */\nexport function subscribeWithTimeout(\n presence: Presence,\n channel: string,\n timeout: number,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let timeoutHandle: NodeJS.Timeout;\n let resolved = false;\n\n const unsubscribe = () => {\n presence.unsubscribe(channel);\n clearTimeout(timeoutHandle);\n };\n\n presence.subscribe(channel, (roomId: string) => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n resolve(roomId);\n });\n\n timeoutHandle = setTimeout(() => {\n if (resolved) return;\n resolved = true;\n unsubscribe();\n reject(new Error(\"timeout\"));\n }, timeout);\n });\n}"],
5
+ "mappings": ";AAAA,SAAS,0BAA0B;AACnC,OAA8B;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,YAAY,iCAAiC;AAEtD,eAAsB,eACpB,UACA,kBACA,QACA,MACA,mBAA2B,2BACf;AACZ,SAAO,IAAI,QAAW,OAAO,SAAS,WAAW;AAC/C,QAAI;AAEJ,UAAM,YAAY,WAAW;AAC7B,UAAM,UAAU,OAAO,SAAS;AAEhC,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,kBAAkB;AAAA,IACjC;AAEA,UAAM,SAAS,UAAU,SAAS,CAAC,YAAgC;AACjE,YAAM,CAAC,MAAM,IAAI,IAAI;AACrB,UAAI,SAAS,YAAY,SAAS;AAChC,gBAAQ,IAAI;AAAA,MAEd,WAAW,SAAS,YAAY,OAAO;AACrC,YAAI,QAAa;AAGjB,YAAI;AAAE,kBAAQ,KAAK,MAAM,IAAI;AAAA,QAAE,SAAS,GAAG;AAAA,QAAC;AAG5C,YAAI,OAAO,UAAW,UAAU;AAC9B,kBAAQ,IAAI,MAAM,KAAK;AAAA,QACzB;AAEA,eAAO,KAAK;AAAA,MACd;AACA,kBAAY;AAAA,IACd,CAAC;AAED,aAAS,QAAQ,kBAAkB,CAAC,QAAQ,WAAW,IAAI,CAAC;AAE5D,yBAAqB,WAAW,MAAM;AACpC,kBAAY;AACZ,aAAO,IAAI,MAAM,aAAa,CAAC;AAAA,IACjC,GAAG,gBAAgB;AAAA,EACrB,CAAC;AACH;AAEA,eAAsB,aACpB,UACA,SACA,eACA;AACA,QAAM,SAAS,UAAU,SAAS,CAAC,YAAY;AAC7C,UAAM,CAAC,QAAQ,WAAW,IAAI,IAAI;AAElC,UAAM,QAAQ,CAAC,MAAM,SAAS;AAC5B,eAAS,QAAQ,OAAO,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,IACnD;AAGA,QAAI;AACJ,QAAI;AACF,iBAAW,cAAc,QAAQ,IAAI;AAAA,IAEvC,SAAS,GAAQ;AACf,yBAAmB,CAAC;AACpB,YAAM,QAAS,OAAO,EAAE,SAAU,cAC9B,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,QAAQ,IACnC,EAAE;AACN,aAAO,MAAM,YAAY,OAAO,KAAK,UAAU,KAAK,CAAC;AAAA,IACvD;AAEA,QAAI,EAAE,oBAAoB,UAAU;AAClC,aAAO,MAAM,YAAY,SAAS,QAAQ;AAAA,IAC5C;AAEA,aACE,KAAK,CAAC,WAAW,MAAM,YAAY,SAAS,MAAM,CAAC,EACnD,MAAM,CAAC,MAAM;AAEX,YAAM,MAAM,KAAK,EAAE,WAAW;AAC9B,YAAM,YAAY,OAAO,GAAG;AAAA,IAC9B,CAAC;AAAA,EACL,CAAC;AACH;AAKO,SAAS,qBACd,UACA,SACA,SACiB;AACjB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI;AACJ,QAAI,WAAW;AAEf,UAAM,cAAc,MAAM;AACxB,eAAS,YAAY,OAAO;AAC5B,mBAAa,aAAa;AAAA,IAC5B;AAEA,aAAS,UAAU,SAAS,CAAC,WAAmB;AAC9C,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,cAAQ,MAAM;AAAA,IAChB,CAAC;AAED,oBAAgB,WAAW,MAAM;AAC/B,UAAI,SAAU;AACd,iBAAW;AACX,kBAAY;AACZ,aAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IAC7B,GAAG,OAAO;AAAA,EACZ,CAAC;AACH;",
6
6
  "names": []
7
7
  }
package/build/Logger.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/Logger.ts"],
4
4
  "sourcesContent": ["//\n// Abstract logging adaptor\n//\nexport class Logger {\n debug(...args) {\n logger.debug(...args);\n }\n\n error(...args) {\n logger.error(...args);\n }\n\n info(...args) {\n logger.info(...args);\n }\n\n trace(...args) {\n logger.trace(...args);\n }\n\n warn(...args) {\n logger.warn(...args);\n }\n}\n\nexport let logger: Logger = console;\n\nexport function setLogger(instance: Logger) {\n logger = instance;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,OAAO;AAAA,EAClB,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,GAAG,IAAI;AAAA,EACrB;AAAA,EAEA,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,GAAG,IAAI;AAAA,EACrB;AACF;AAEO,IAAI,SAAiB;AAErB,SAAS,UAAU,UAAkB;AAC1C,WAAS;AACX;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,OAAO;AAAA,EAClB,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,GAAG,IAAI;AAAA,EACrB;AAAA,EAEA,SAAS,MAAM;AACb,WAAO,MAAM,GAAG,IAAI;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,GAAG,IAAI;AAAA,EACrB;AACF;AAEO,IAAI,SAAiB;AAErB,SAAS,UAAU,UAAkB;AAC1C,WAAS;AACX;",
6
6
  "names": []
7
7
  }