openportal 0.1.1 → 0.1.3

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 (182) hide show
  1. package/README.md +113 -0
  2. package/package.json +1 -1
  3. package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_buildManifest.js +4 -9
  4. package/web/.next/static/chunks/{2e7bfb90c343ca96.js → 35cc9dbdc670c73c.js} +4 -4
  5. package/web/.next/static/chunks/4147ffc67a7b837c.css +1 -0
  6. package/web/.next/static/chunks/{21ab2574b84ad2d1.js → 52b90bc1740162c2.js} +2 -2
  7. package/web/.next/static/chunks/{9b265e2198b5525f.js → 8644d68bf325ff24.js} +3 -3
  8. package/web/.next/static/chunks/{03e1846335a31354.js → 9865709466b09f79.js} +3 -3
  9. package/web/.next/static/chunks/{c20ae04df8cc28be.js → 9ba9a5774c9421bd.js} +3 -3
  10. package/web/.next/static/chunks/{967a1e0002fe9ae6.js → b5caad256518cb33.js} +3 -3
  11. package/web/.next/static/chunks/{turbopack-27558c851386934e.js → turbopack-26af71e419c11487.js} +1 -1
  12. package/web/.next/static/chunks/{turbopack-f4c0881f9723f5a5.js → turbopack-4ad0df7330c00c8d.js} +1 -1
  13. package/web/.next/static/chunks/{turbopack-26688626142ac58f.js → turbopack-8e653f3ad3a8ed18.js} +1 -1
  14. package/web/.next/static/chunks/{turbopack-c40ec6674624f1d7.js → turbopack-d5098189d63fd7b8.js} +1 -1
  15. package/web/apps/web/.next/BUILD_ID +1 -1
  16. package/web/apps/web/.next/build-manifest.json +14 -24
  17. package/web/apps/web/.next/routes-manifest.json +0 -12
  18. package/web/apps/web/.next/server/chunks/[root-of-the-server]__f366ca98._.js +358 -0
  19. package/web/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__dfeaf8cf._.js → [root-of-the-server]__1a54ba1e._.js} +3 -3
  20. package/web/apps/web/.next/server/middleware-build-manifest.js +12 -22
  21. package/web/apps/web/.next/server/next-font-manifest.js +1 -1
  22. package/web/apps/web/.next/server/next-font-manifest.json +0 -4
  23. package/web/apps/web/.next/server/pages/404.html +1 -1
  24. package/web/apps/web/.next/server/pages/500.html +1 -1
  25. package/web/apps/web/.next/server/pages/_app/build-manifest.json +3 -3
  26. package/web/apps/web/.next/server/pages/_app/client-build-manifest.json +1 -1
  27. package/web/apps/web/.next/server/pages/api/[[...slugs]].js +1 -2
  28. package/web/apps/web/.next/server/pages/api/[[...slugs]].js.nft.json +1 -1
  29. package/web/apps/web/.next/server/pages/index/build-manifest.json +3 -3
  30. package/web/apps/web/.next/server/pages/index/client-build-manifest.json +1 -1
  31. package/web/apps/web/.next/server/pages/index.html +1 -1
  32. package/web/apps/web/.next/server/pages/index.js.nft.json +1 -1
  33. package/web/apps/web/.next/server/pages/session/[id]/build-manifest.json +4 -4
  34. package/web/apps/web/.next/server/pages/session/[id]/client-build-manifest.json +1 -1
  35. package/web/apps/web/.next/server/pages/session/[id].html +1 -1
  36. package/web/apps/web/.next/server/pages/session/[id].js.nft.json +1 -1
  37. package/web/apps/web/.next/server/pages/settings/build-manifest.json +3 -3
  38. package/web/apps/web/.next/server/pages/settings/client-build-manifest.json +1 -1
  39. package/web/apps/web/.next/server/pages/settings.html +1 -1
  40. package/web/apps/web/.next/server/pages/settings.js.nft.json +1 -1
  41. package/web/apps/web/.next/server/pages-manifest.json +0 -2
  42. package/web/apps/web/package.json +1 -9
  43. package/web/.next/static/chunks/04d4692d75696297.css +0 -1
  44. package/web/.next/static/chunks/553710f60e2f2b11.js +0 -1
  45. package/web/.next/static/chunks/58acbbb4090e3362.js +0 -3
  46. package/web/.next/static/chunks/6ce1e2f08f961db5.js +0 -2
  47. package/web/.next/static/chunks/d316d63225992c76.js +0 -10
  48. package/web/.next/static/chunks/e0c97552ba7a9e3d.js +0 -1
  49. package/web/.next/static/chunks/fc9c4f2dabfb4e0e.css +0 -1
  50. package/web/.next/static/chunks/turbopack-1837909a677d116b.js +0 -3
  51. package/web/apps/web/.next/server/chunks/[root-of-the-server]__0f75905d._.js +0 -3
  52. package/web/apps/web/.next/server/chunks/[root-of-the-server]__89e85365._.js +0 -358
  53. package/web/apps/web/.next/server/chunks/[root-of-the-server]__ae1361d0._.js +0 -3
  54. package/web/apps/web/.next/server/pages/api/terminal/ws/pages-manifest.json +0 -3
  55. package/web/apps/web/.next/server/pages/api/terminal/ws.js +0 -5
  56. package/web/apps/web/.next/server/pages/api/terminal/ws.js.map +0 -5
  57. package/web/apps/web/.next/server/pages/api/terminal/ws.js.nft.json +0 -1
  58. package/web/apps/web/.next/server/pages/terminal/build-manifest.json +0 -20
  59. package/web/apps/web/.next/server/pages/terminal/client-build-manifest.json +0 -5
  60. package/web/apps/web/.next/server/pages/terminal/next-font-manifest.json +0 -11
  61. package/web/apps/web/.next/server/pages/terminal/pages-manifest.json +0 -3
  62. package/web/apps/web/.next/server/pages/terminal/react-loadable-manifest.json +0 -1
  63. package/web/apps/web/.next/server/pages/terminal.html +0 -1
  64. package/web/apps/web/.next/server/pages/terminal.js.map +0 -5
  65. package/web/apps/web/.next/server/pages/terminal.js.nft.json +0 -1
  66. package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/cjs/index.js +0 -176
  67. package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/cjs/package.json +0 -4
  68. package/web/node_modules/.bun/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/package.json +0 -28
  69. package/web/node_modules/.bun/accepts@1.3.8/node_modules/accepts/index.js +0 -238
  70. package/web/node_modules/.bun/accepts@1.3.8/node_modules/accepts/package.json +0 -47
  71. package/web/node_modules/.bun/base64id@2.0.0/node_modules/base64id/lib/base64id.js +0 -103
  72. package/web/node_modules/.bun/base64id@2.0.0/node_modules/base64id/package.json +0 -13
  73. package/web/node_modules/.bun/cookie@0.7.2/node_modules/cookie/index.js +0 -335
  74. package/web/node_modules/.bun/cookie@0.7.2/node_modules/cookie/package.json +0 -44
  75. package/web/node_modules/.bun/cookie@1.1.1/node_modules/cookie/package.json +0 -47
  76. package/web/node_modules/.bun/cors@2.8.5/node_modules/cors/lib/index.js +0 -238
  77. package/web/node_modules/.bun/cors@2.8.5/node_modules/cors/package.json +0 -41
  78. package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/package.json +0 -60
  79. package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/browser.js +0 -271
  80. package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/common.js +0 -274
  81. package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/index.js +0 -10
  82. package/web/node_modules/.bun/debug@4.3.7/node_modules/debug/src/node.js +0 -263
  83. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/commons.js +0 -19
  84. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/decodePacket.js +0 -59
  85. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/encodePacket.js +0 -38
  86. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/index.js +0 -164
  87. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/package.json +0 -8
  88. package/web/node_modules/.bun/engine.io-parser@5.2.3/node_modules/engine.io-parser/package.json +0 -46
  89. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/engine.io.js +0 -54
  90. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/parser-v3/index.js +0 -424
  91. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/parser-v3/utf8.js +0 -187
  92. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/server.js +0 -786
  93. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/socket.js +0 -460
  94. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transport.js +0 -117
  95. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/index.js +0 -23
  96. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/polling-jsonp.js +0 -41
  97. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/polling.js +0 -332
  98. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/websocket.js +0 -94
  99. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports/webtransport.js +0 -63
  100. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/index.js +0 -8
  101. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/polling.js +0 -364
  102. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/transports-uws/websocket.js +0 -73
  103. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/build/userver.js +0 -279
  104. package/web/node_modules/.bun/engine.io@6.6.4/node_modules/engine.io/package.json +0 -70
  105. package/web/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/index.js +0 -8
  106. package/web/node_modules/.bun/has-flag@4.0.0/node_modules/has-flag/package.json +0 -46
  107. package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/db.json +0 -8519
  108. package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/index.js +0 -12
  109. package/web/node_modules/.bun/mime-db@1.52.0/node_modules/mime-db/package.json +0 -60
  110. package/web/node_modules/.bun/mime-types@2.1.35/node_modules/mime-types/index.js +0 -188
  111. package/web/node_modules/.bun/mime-types@2.1.35/node_modules/mime-types/package.json +0 -44
  112. package/web/node_modules/.bun/ms@2.1.3/node_modules/ms/index.js +0 -162
  113. package/web/node_modules/.bun/ms@2.1.3/node_modules/ms/package.json +0 -38
  114. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/index.js +0 -82
  115. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/charset.js +0 -169
  116. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/encoding.js +0 -184
  117. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/language.js +0 -179
  118. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/lib/mediaType.js +0 -294
  119. package/web/node_modules/.bun/negotiator@0.6.3/node_modules/negotiator/package.json +0 -42
  120. package/web/node_modules/.bun/object-assign@4.1.1/node_modules/object-assign/index.js +0 -90
  121. package/web/node_modules/.bun/object-assign@4.1.1/node_modules/object-assign/package.json +0 -42
  122. package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/cluster-adapter.js +0 -674
  123. package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/contrib/yeast.js +0 -55
  124. package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/in-memory-adapter.js +0 -394
  125. package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/dist/index.js +0 -10
  126. package/web/node_modules/.bun/socket.io-adapter@2.5.5/node_modules/socket.io-adapter/package.json +0 -39
  127. package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/binary.js +0 -88
  128. package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/index.js +0 -321
  129. package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/is-binary.js +0 -55
  130. package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/build/cjs/package.json +0 -3
  131. package/web/node_modules/.bun/socket.io-parser@4.2.4/node_modules/socket.io-parser/package.json +0 -58
  132. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.esm.min.js +0 -7
  133. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.js +0 -4908
  134. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.min.js +0 -7
  135. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/client-dist/socket.io.msgpack.min.js +0 -7
  136. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/broadcast-operator.js +0 -436
  137. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/client.js +0 -268
  138. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/index.js +0 -804
  139. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/namespace.js +0 -581
  140. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/parent-namespace.js +0 -88
  141. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/socket-types.js +0 -11
  142. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/socket.js +0 -977
  143. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/typed-events.js +0 -81
  144. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/dist/uws.js +0 -136
  145. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/package.json +0 -85
  146. package/web/node_modules/.bun/socket.io@4.8.1/node_modules/socket.io/wrapper.mjs +0 -3
  147. package/web/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/index.js +0 -135
  148. package/web/node_modules/.bun/supports-color@7.2.0/node_modules/supports-color/package.json +0 -53
  149. package/web/node_modules/.bun/vary@1.1.2/node_modules/vary/index.js +0 -149
  150. package/web/node_modules/.bun/vary@1.1.2/node_modules/vary/package.json +0 -43
  151. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/index.js +0 -13
  152. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/buffer-util.js +0 -131
  153. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/constants.js +0 -12
  154. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/event-target.js +0 -292
  155. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/extension.js +0 -203
  156. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/limiter.js +0 -55
  157. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/permessage-deflate.js +0 -514
  158. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/receiver.js +0 -704
  159. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/sender.js +0 -497
  160. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/stream.js +0 -159
  161. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/subprotocol.js +0 -62
  162. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/validation.js +0 -130
  163. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/websocket-server.js +0 -540
  164. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/lib/websocket.js +0 -1338
  165. package/web/node_modules/.bun/ws@8.17.1/node_modules/ws/package.json +0 -69
  166. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/buffer-util.js +0 -131
  167. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/constants.js +0 -18
  168. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/event-target.js +0 -292
  169. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/extension.js +0 -203
  170. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/limiter.js +0 -55
  171. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/permessage-deflate.js +0 -528
  172. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/receiver.js +0 -706
  173. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/sender.js +0 -602
  174. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/stream.js +0 -161
  175. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/subprotocol.js +0 -62
  176. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/validation.js +0 -152
  177. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/websocket-server.js +0 -550
  178. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/lib/websocket.js +0 -1388
  179. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/package.json +0 -69
  180. package/web/node_modules/.bun/ws@8.18.3/node_modules/ws/wrapper.mjs +0 -8
  181. /package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_clientMiddlewareManifest.json +0 -0
  182. /package/web/.next/static/{A7pW-dtFIbPCSkvE8uenX → Im7EdK1Q3oOmTznohTOr5}/_ssgManifest.js +0 -0
@@ -1,674 +0,0 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.ClusterAdapterWithHeartbeat = exports.ClusterAdapter = exports.MessageType = void 0;
15
- const in_memory_adapter_1 = require("./in-memory-adapter");
16
- const debug_1 = require("debug");
17
- const crypto_1 = require("crypto");
18
- const debug = (0, debug_1.debug)("socket.io-adapter");
19
- const EMITTER_UID = "emitter";
20
- const DEFAULT_TIMEOUT = 5000;
21
- function randomId() {
22
- return (0, crypto_1.randomBytes)(8).toString("hex");
23
- }
24
- var MessageType;
25
- (function (MessageType) {
26
- MessageType[MessageType["INITIAL_HEARTBEAT"] = 1] = "INITIAL_HEARTBEAT";
27
- MessageType[MessageType["HEARTBEAT"] = 2] = "HEARTBEAT";
28
- MessageType[MessageType["BROADCAST"] = 3] = "BROADCAST";
29
- MessageType[MessageType["SOCKETS_JOIN"] = 4] = "SOCKETS_JOIN";
30
- MessageType[MessageType["SOCKETS_LEAVE"] = 5] = "SOCKETS_LEAVE";
31
- MessageType[MessageType["DISCONNECT_SOCKETS"] = 6] = "DISCONNECT_SOCKETS";
32
- MessageType[MessageType["FETCH_SOCKETS"] = 7] = "FETCH_SOCKETS";
33
- MessageType[MessageType["FETCH_SOCKETS_RESPONSE"] = 8] = "FETCH_SOCKETS_RESPONSE";
34
- MessageType[MessageType["SERVER_SIDE_EMIT"] = 9] = "SERVER_SIDE_EMIT";
35
- MessageType[MessageType["SERVER_SIDE_EMIT_RESPONSE"] = 10] = "SERVER_SIDE_EMIT_RESPONSE";
36
- MessageType[MessageType["BROADCAST_CLIENT_COUNT"] = 11] = "BROADCAST_CLIENT_COUNT";
37
- MessageType[MessageType["BROADCAST_ACK"] = 12] = "BROADCAST_ACK";
38
- MessageType[MessageType["ADAPTER_CLOSE"] = 13] = "ADAPTER_CLOSE";
39
- })(MessageType = exports.MessageType || (exports.MessageType = {}));
40
- function encodeOptions(opts) {
41
- return {
42
- rooms: [...opts.rooms],
43
- except: [...opts.except],
44
- flags: opts.flags,
45
- };
46
- }
47
- function decodeOptions(opts) {
48
- return {
49
- rooms: new Set(opts.rooms),
50
- except: new Set(opts.except),
51
- flags: opts.flags,
52
- };
53
- }
54
- /**
55
- * A cluster-ready adapter. Any extending class must:
56
- *
57
- * - implement {@link ClusterAdapter#doPublish} and {@link ClusterAdapter#doPublishResponse}
58
- * - call {@link ClusterAdapter#onMessage} and {@link ClusterAdapter#onResponse}
59
- */
60
- class ClusterAdapter extends in_memory_adapter_1.Adapter {
61
- constructor(nsp) {
62
- super(nsp);
63
- this.requests = new Map();
64
- this.ackRequests = new Map();
65
- this.uid = randomId();
66
- }
67
- /**
68
- * Called when receiving a message from another member of the cluster.
69
- *
70
- * @param message
71
- * @param offset
72
- * @protected
73
- */
74
- onMessage(message, offset) {
75
- if (message.uid === this.uid) {
76
- return debug("[%s] ignore message from self", this.uid);
77
- }
78
- debug("[%s] new event of type %d from %s", this.uid, message.type, message.uid);
79
- switch (message.type) {
80
- case MessageType.BROADCAST: {
81
- const withAck = message.data.requestId !== undefined;
82
- if (withAck) {
83
- super.broadcastWithAck(message.data.packet, decodeOptions(message.data.opts), (clientCount) => {
84
- debug("[%s] waiting for %d client acknowledgements", this.uid, clientCount);
85
- this.publishResponse(message.uid, {
86
- type: MessageType.BROADCAST_CLIENT_COUNT,
87
- data: {
88
- requestId: message.data.requestId,
89
- clientCount,
90
- },
91
- });
92
- }, (arg) => {
93
- debug("[%s] received acknowledgement with value %j", this.uid, arg);
94
- this.publishResponse(message.uid, {
95
- type: MessageType.BROADCAST_ACK,
96
- data: {
97
- requestId: message.data.requestId,
98
- packet: arg,
99
- },
100
- });
101
- });
102
- }
103
- else {
104
- const packet = message.data.packet;
105
- const opts = decodeOptions(message.data.opts);
106
- this.addOffsetIfNecessary(packet, opts, offset);
107
- super.broadcast(packet, opts);
108
- }
109
- break;
110
- }
111
- case MessageType.SOCKETS_JOIN:
112
- super.addSockets(decodeOptions(message.data.opts), message.data.rooms);
113
- break;
114
- case MessageType.SOCKETS_LEAVE:
115
- super.delSockets(decodeOptions(message.data.opts), message.data.rooms);
116
- break;
117
- case MessageType.DISCONNECT_SOCKETS:
118
- super.disconnectSockets(decodeOptions(message.data.opts), message.data.close);
119
- break;
120
- case MessageType.FETCH_SOCKETS: {
121
- debug("[%s] calling fetchSockets with opts %j", this.uid, message.data.opts);
122
- super
123
- .fetchSockets(decodeOptions(message.data.opts))
124
- .then((localSockets) => {
125
- this.publishResponse(message.uid, {
126
- type: MessageType.FETCH_SOCKETS_RESPONSE,
127
- data: {
128
- requestId: message.data.requestId,
129
- sockets: localSockets.map((socket) => {
130
- // remove sessionStore from handshake, as it may contain circular references
131
- const _a = socket.handshake, { sessionStore } = _a, handshake = __rest(_a, ["sessionStore"]);
132
- return {
133
- id: socket.id,
134
- handshake,
135
- rooms: [...socket.rooms],
136
- data: socket.data,
137
- };
138
- }),
139
- },
140
- });
141
- });
142
- break;
143
- }
144
- case MessageType.SERVER_SIDE_EMIT: {
145
- const packet = message.data.packet;
146
- const withAck = message.data.requestId !== undefined;
147
- if (!withAck) {
148
- this.nsp._onServerSideEmit(packet);
149
- return;
150
- }
151
- let called = false;
152
- const callback = (arg) => {
153
- // only one argument is expected
154
- if (called) {
155
- return;
156
- }
157
- called = true;
158
- debug("[%s] calling acknowledgement with %j", this.uid, arg);
159
- this.publishResponse(message.uid, {
160
- type: MessageType.SERVER_SIDE_EMIT_RESPONSE,
161
- data: {
162
- requestId: message.data.requestId,
163
- packet: arg,
164
- },
165
- });
166
- };
167
- this.nsp._onServerSideEmit([...packet, callback]);
168
- break;
169
- }
170
- // @ts-ignore
171
- case MessageType.BROADCAST_CLIENT_COUNT:
172
- // @ts-ignore
173
- case MessageType.BROADCAST_ACK:
174
- // @ts-ignore
175
- case MessageType.FETCH_SOCKETS_RESPONSE:
176
- // @ts-ignore
177
- case MessageType.SERVER_SIDE_EMIT_RESPONSE:
178
- // extending classes may not make a distinction between a ClusterMessage and a ClusterResponse payload and may
179
- // always call the onMessage() method
180
- this.onResponse(message);
181
- break;
182
- default:
183
- debug("[%s] unknown message type: %s", this.uid, message.type);
184
- }
185
- }
186
- /**
187
- * Called when receiving a response from another member of the cluster.
188
- *
189
- * @param response
190
- * @protected
191
- */
192
- onResponse(response) {
193
- var _a, _b;
194
- const requestId = response.data.requestId;
195
- debug("[%s] received response %s to request %s", this.uid, response.type, requestId);
196
- switch (response.type) {
197
- case MessageType.BROADCAST_CLIENT_COUNT: {
198
- (_a = this.ackRequests
199
- .get(requestId)) === null || _a === void 0 ? void 0 : _a.clientCountCallback(response.data.clientCount);
200
- break;
201
- }
202
- case MessageType.BROADCAST_ACK: {
203
- (_b = this.ackRequests.get(requestId)) === null || _b === void 0 ? void 0 : _b.ack(response.data.packet);
204
- break;
205
- }
206
- case MessageType.FETCH_SOCKETS_RESPONSE: {
207
- const request = this.requests.get(requestId);
208
- if (!request) {
209
- return;
210
- }
211
- request.current++;
212
- response.data.sockets.forEach((socket) => request.responses.push(socket));
213
- if (request.current === request.expected) {
214
- clearTimeout(request.timeout);
215
- request.resolve(request.responses);
216
- this.requests.delete(requestId);
217
- }
218
- break;
219
- }
220
- case MessageType.SERVER_SIDE_EMIT_RESPONSE: {
221
- const request = this.requests.get(requestId);
222
- if (!request) {
223
- return;
224
- }
225
- request.current++;
226
- request.responses.push(response.data.packet);
227
- if (request.current === request.expected) {
228
- clearTimeout(request.timeout);
229
- request.resolve(null, request.responses);
230
- this.requests.delete(requestId);
231
- }
232
- break;
233
- }
234
- default:
235
- // @ts-ignore
236
- debug("[%s] unknown response type: %s", this.uid, response.type);
237
- }
238
- }
239
- async broadcast(packet, opts) {
240
- var _a;
241
- const onlyLocal = (_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local;
242
- if (!onlyLocal) {
243
- try {
244
- const offset = await this.publishAndReturnOffset({
245
- type: MessageType.BROADCAST,
246
- data: {
247
- packet,
248
- opts: encodeOptions(opts),
249
- },
250
- });
251
- this.addOffsetIfNecessary(packet, opts, offset);
252
- }
253
- catch (e) {
254
- return debug("[%s] error while broadcasting message: %s", this.uid, e.message);
255
- }
256
- }
257
- super.broadcast(packet, opts);
258
- }
259
- /**
260
- * Adds an offset at the end of the data array in order to allow the client to receive any missed packets when it
261
- * reconnects after a temporary disconnection.
262
- *
263
- * @param packet
264
- * @param opts
265
- * @param offset
266
- * @private
267
- */
268
- addOffsetIfNecessary(packet, opts, offset) {
269
- var _a;
270
- if (!this.nsp.server.opts.connectionStateRecovery) {
271
- return;
272
- }
273
- const isEventPacket = packet.type === 2;
274
- // packets with acknowledgement are not stored because the acknowledgement function cannot be serialized and
275
- // restored on another server upon reconnection
276
- const withoutAcknowledgement = packet.id === undefined;
277
- const notVolatile = ((_a = opts.flags) === null || _a === void 0 ? void 0 : _a.volatile) === undefined;
278
- if (isEventPacket && withoutAcknowledgement && notVolatile) {
279
- packet.data.push(offset);
280
- }
281
- }
282
- broadcastWithAck(packet, opts, clientCountCallback, ack) {
283
- var _a;
284
- const onlyLocal = (_a = opts === null || opts === void 0 ? void 0 : opts.flags) === null || _a === void 0 ? void 0 : _a.local;
285
- if (!onlyLocal) {
286
- const requestId = randomId();
287
- this.ackRequests.set(requestId, {
288
- clientCountCallback,
289
- ack,
290
- });
291
- this.publish({
292
- type: MessageType.BROADCAST,
293
- data: {
294
- packet,
295
- requestId,
296
- opts: encodeOptions(opts),
297
- },
298
- });
299
- // we have no way to know at this level whether the server has received an acknowledgement from each client, so we
300
- // will simply clean up the ackRequests map after the given delay
301
- setTimeout(() => {
302
- this.ackRequests.delete(requestId);
303
- }, opts.flags.timeout);
304
- }
305
- super.broadcastWithAck(packet, opts, clientCountCallback, ack);
306
- }
307
- async addSockets(opts, rooms) {
308
- var _a;
309
- const onlyLocal = (_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local;
310
- if (!onlyLocal) {
311
- try {
312
- await this.publishAndReturnOffset({
313
- type: MessageType.SOCKETS_JOIN,
314
- data: {
315
- opts: encodeOptions(opts),
316
- rooms,
317
- },
318
- });
319
- }
320
- catch (e) {
321
- debug("[%s] error while publishing message: %s", this.uid, e.message);
322
- }
323
- }
324
- super.addSockets(opts, rooms);
325
- }
326
- async delSockets(opts, rooms) {
327
- var _a;
328
- const onlyLocal = (_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local;
329
- if (!onlyLocal) {
330
- try {
331
- await this.publishAndReturnOffset({
332
- type: MessageType.SOCKETS_LEAVE,
333
- data: {
334
- opts: encodeOptions(opts),
335
- rooms,
336
- },
337
- });
338
- }
339
- catch (e) {
340
- debug("[%s] error while publishing message: %s", this.uid, e.message);
341
- }
342
- }
343
- super.delSockets(opts, rooms);
344
- }
345
- async disconnectSockets(opts, close) {
346
- var _a;
347
- const onlyLocal = (_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local;
348
- if (!onlyLocal) {
349
- try {
350
- await this.publishAndReturnOffset({
351
- type: MessageType.DISCONNECT_SOCKETS,
352
- data: {
353
- opts: encodeOptions(opts),
354
- close,
355
- },
356
- });
357
- }
358
- catch (e) {
359
- debug("[%s] error while publishing message: %s", this.uid, e.message);
360
- }
361
- }
362
- super.disconnectSockets(opts, close);
363
- }
364
- async fetchSockets(opts) {
365
- var _a;
366
- const [localSockets, serverCount] = await Promise.all([
367
- super.fetchSockets(opts),
368
- this.serverCount(),
369
- ]);
370
- const expectedResponseCount = serverCount - 1;
371
- if (((_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local) || expectedResponseCount <= 0) {
372
- return localSockets;
373
- }
374
- const requestId = randomId();
375
- return new Promise((resolve, reject) => {
376
- const timeout = setTimeout(() => {
377
- const storedRequest = this.requests.get(requestId);
378
- if (storedRequest) {
379
- reject(new Error(`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`));
380
- this.requests.delete(requestId);
381
- }
382
- }, opts.flags.timeout || DEFAULT_TIMEOUT);
383
- const storedRequest = {
384
- type: MessageType.FETCH_SOCKETS,
385
- resolve,
386
- timeout,
387
- current: 0,
388
- expected: expectedResponseCount,
389
- responses: localSockets,
390
- };
391
- this.requests.set(requestId, storedRequest);
392
- this.publish({
393
- type: MessageType.FETCH_SOCKETS,
394
- data: {
395
- opts: encodeOptions(opts),
396
- requestId,
397
- },
398
- });
399
- });
400
- }
401
- async serverSideEmit(packet) {
402
- const withAck = typeof packet[packet.length - 1] === "function";
403
- if (!withAck) {
404
- return this.publish({
405
- type: MessageType.SERVER_SIDE_EMIT,
406
- data: {
407
- packet,
408
- },
409
- });
410
- }
411
- const ack = packet.pop();
412
- const expectedResponseCount = (await this.serverCount()) - 1;
413
- debug('[%s] waiting for %d responses to "serverSideEmit" request', this.uid, expectedResponseCount);
414
- if (expectedResponseCount <= 0) {
415
- return ack(null, []);
416
- }
417
- const requestId = randomId();
418
- const timeout = setTimeout(() => {
419
- const storedRequest = this.requests.get(requestId);
420
- if (storedRequest) {
421
- ack(new Error(`timeout reached: only ${storedRequest.current} responses received out of ${storedRequest.expected}`), storedRequest.responses);
422
- this.requests.delete(requestId);
423
- }
424
- }, DEFAULT_TIMEOUT);
425
- const storedRequest = {
426
- type: MessageType.SERVER_SIDE_EMIT,
427
- resolve: ack,
428
- timeout,
429
- current: 0,
430
- expected: expectedResponseCount,
431
- responses: [],
432
- };
433
- this.requests.set(requestId, storedRequest);
434
- this.publish({
435
- type: MessageType.SERVER_SIDE_EMIT,
436
- data: {
437
- requestId,
438
- packet,
439
- },
440
- });
441
- }
442
- publish(message) {
443
- this.publishAndReturnOffset(message).catch((err) => {
444
- debug("[%s] error while publishing message: %s", this.uid, err);
445
- });
446
- }
447
- publishAndReturnOffset(message) {
448
- message.uid = this.uid;
449
- message.nsp = this.nsp.name;
450
- return this.doPublish(message);
451
- }
452
- publishResponse(requesterUid, response) {
453
- response.uid = this.uid;
454
- response.nsp = this.nsp.name;
455
- this.doPublishResponse(requesterUid, response).catch((err) => {
456
- debug("[%s] error while publishing response: %s", this.uid, err);
457
- });
458
- }
459
- }
460
- exports.ClusterAdapter = ClusterAdapter;
461
- class ClusterAdapterWithHeartbeat extends ClusterAdapter {
462
- constructor(nsp, opts) {
463
- super(nsp);
464
- this.nodesMap = new Map(); // uid => timestamp of last message
465
- this.customRequests = new Map();
466
- this._opts = Object.assign({
467
- heartbeatInterval: 5000,
468
- heartbeatTimeout: 10000,
469
- }, opts);
470
- this.cleanupTimer = setInterval(() => {
471
- const now = Date.now();
472
- this.nodesMap.forEach((lastSeen, uid) => {
473
- const nodeSeemsDown = now - lastSeen > this._opts.heartbeatTimeout;
474
- if (nodeSeemsDown) {
475
- debug("[%s] node %s seems down", this.uid, uid);
476
- this.removeNode(uid);
477
- }
478
- });
479
- }, 1000);
480
- }
481
- init() {
482
- this.publish({
483
- type: MessageType.INITIAL_HEARTBEAT,
484
- });
485
- }
486
- scheduleHeartbeat() {
487
- if (this.heartbeatTimer) {
488
- this.heartbeatTimer.refresh();
489
- }
490
- else {
491
- this.heartbeatTimer = setTimeout(() => {
492
- this.publish({
493
- type: MessageType.HEARTBEAT,
494
- });
495
- }, this._opts.heartbeatInterval);
496
- }
497
- }
498
- close() {
499
- this.publish({
500
- type: MessageType.ADAPTER_CLOSE,
501
- });
502
- clearTimeout(this.heartbeatTimer);
503
- if (this.cleanupTimer) {
504
- clearInterval(this.cleanupTimer);
505
- }
506
- }
507
- onMessage(message, offset) {
508
- if (message.uid === this.uid) {
509
- return debug("[%s] ignore message from self", this.uid);
510
- }
511
- if (message.uid && message.uid !== EMITTER_UID) {
512
- // we track the UID of each sender, in order to know how many servers there are in the cluster
513
- this.nodesMap.set(message.uid, Date.now());
514
- }
515
- debug("[%s] new event of type %d from %s", this.uid, message.type, message.uid);
516
- switch (message.type) {
517
- case MessageType.INITIAL_HEARTBEAT:
518
- this.publish({
519
- type: MessageType.HEARTBEAT,
520
- });
521
- break;
522
- case MessageType.HEARTBEAT:
523
- // nothing to do
524
- break;
525
- case MessageType.ADAPTER_CLOSE:
526
- this.removeNode(message.uid);
527
- break;
528
- default:
529
- super.onMessage(message, offset);
530
- }
531
- }
532
- serverCount() {
533
- return Promise.resolve(1 + this.nodesMap.size);
534
- }
535
- publish(message) {
536
- this.scheduleHeartbeat();
537
- return super.publish(message);
538
- }
539
- async serverSideEmit(packet) {
540
- const withAck = typeof packet[packet.length - 1] === "function";
541
- if (!withAck) {
542
- return this.publish({
543
- type: MessageType.SERVER_SIDE_EMIT,
544
- data: {
545
- packet,
546
- },
547
- });
548
- }
549
- const ack = packet.pop();
550
- const expectedResponseCount = this.nodesMap.size;
551
- debug('[%s] waiting for %d responses to "serverSideEmit" request', this.uid, expectedResponseCount);
552
- if (expectedResponseCount <= 0) {
553
- return ack(null, []);
554
- }
555
- const requestId = randomId();
556
- const timeout = setTimeout(() => {
557
- const storedRequest = this.customRequests.get(requestId);
558
- if (storedRequest) {
559
- ack(new Error(`timeout reached: missing ${storedRequest.missingUids.size} responses`), storedRequest.responses);
560
- this.customRequests.delete(requestId);
561
- }
562
- }, DEFAULT_TIMEOUT);
563
- const storedRequest = {
564
- type: MessageType.SERVER_SIDE_EMIT,
565
- resolve: ack,
566
- timeout,
567
- missingUids: new Set([...this.nodesMap.keys()]),
568
- responses: [],
569
- };
570
- this.customRequests.set(requestId, storedRequest);
571
- this.publish({
572
- type: MessageType.SERVER_SIDE_EMIT,
573
- data: {
574
- requestId,
575
- packet,
576
- },
577
- });
578
- }
579
- async fetchSockets(opts) {
580
- var _a;
581
- const [localSockets, serverCount] = await Promise.all([
582
- super.fetchSockets({
583
- rooms: opts.rooms,
584
- except: opts.except,
585
- flags: {
586
- local: true,
587
- },
588
- }),
589
- this.serverCount(),
590
- ]);
591
- const expectedResponseCount = serverCount - 1;
592
- if (((_a = opts.flags) === null || _a === void 0 ? void 0 : _a.local) || expectedResponseCount <= 0) {
593
- return localSockets;
594
- }
595
- const requestId = randomId();
596
- return new Promise((resolve, reject) => {
597
- const timeout = setTimeout(() => {
598
- const storedRequest = this.customRequests.get(requestId);
599
- if (storedRequest) {
600
- reject(new Error(`timeout reached: missing ${storedRequest.missingUids.size} responses`));
601
- this.customRequests.delete(requestId);
602
- }
603
- }, opts.flags.timeout || DEFAULT_TIMEOUT);
604
- const storedRequest = {
605
- type: MessageType.FETCH_SOCKETS,
606
- resolve,
607
- timeout,
608
- missingUids: new Set([...this.nodesMap.keys()]),
609
- responses: localSockets,
610
- };
611
- this.customRequests.set(requestId, storedRequest);
612
- this.publish({
613
- type: MessageType.FETCH_SOCKETS,
614
- data: {
615
- opts: encodeOptions(opts),
616
- requestId,
617
- },
618
- });
619
- });
620
- }
621
- onResponse(response) {
622
- const requestId = response.data.requestId;
623
- debug("[%s] received response %s to request %s", this.uid, response.type, requestId);
624
- switch (response.type) {
625
- case MessageType.FETCH_SOCKETS_RESPONSE: {
626
- const request = this.customRequests.get(requestId);
627
- if (!request) {
628
- return;
629
- }
630
- response.data.sockets.forEach((socket) => request.responses.push(socket));
631
- request.missingUids.delete(response.uid);
632
- if (request.missingUids.size === 0) {
633
- clearTimeout(request.timeout);
634
- request.resolve(request.responses);
635
- this.customRequests.delete(requestId);
636
- }
637
- break;
638
- }
639
- case MessageType.SERVER_SIDE_EMIT_RESPONSE: {
640
- const request = this.customRequests.get(requestId);
641
- if (!request) {
642
- return;
643
- }
644
- request.responses.push(response.data.packet);
645
- request.missingUids.delete(response.uid);
646
- if (request.missingUids.size === 0) {
647
- clearTimeout(request.timeout);
648
- request.resolve(null, request.responses);
649
- this.customRequests.delete(requestId);
650
- }
651
- break;
652
- }
653
- default:
654
- super.onResponse(response);
655
- }
656
- }
657
- removeNode(uid) {
658
- this.customRequests.forEach((request, requestId) => {
659
- request.missingUids.delete(uid);
660
- if (request.missingUids.size === 0) {
661
- clearTimeout(request.timeout);
662
- if (request.type === MessageType.FETCH_SOCKETS) {
663
- request.resolve(request.responses);
664
- }
665
- else if (request.type === MessageType.SERVER_SIDE_EMIT) {
666
- request.resolve(null, request.responses);
667
- }
668
- this.customRequests.delete(requestId);
669
- }
670
- });
671
- this.nodesMap.delete(uid);
672
- }
673
- }
674
- exports.ClusterAdapterWithHeartbeat = ClusterAdapterWithHeartbeat;