@scpxl/nodejs-framework 1.0.22 → 1.0.24

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 (278) hide show
  1. package/README.md +199 -9
  2. package/dist/api-requester/api-requester.d.ts +32 -0
  3. package/dist/api-requester/api-requester.d.ts.map +1 -0
  4. package/dist/api-requester/index.d.ts +3 -0
  5. package/dist/api-requester/index.d.ts.map +1 -0
  6. package/dist/application/base-application.d.ts +106 -0
  7. package/dist/application/base-application.d.ts.map +1 -0
  8. package/dist/application/base-application.interface.d.ts +162 -0
  9. package/dist/application/base-application.interface.d.ts.map +1 -0
  10. package/dist/application/base-application.js +3 -0
  11. package/dist/application/base-application.js.map +2 -2
  12. package/dist/application/command-application.d.ts +18 -0
  13. package/dist/application/command-application.d.ts.map +1 -0
  14. package/dist/application/command-application.interface.d.ts +26 -0
  15. package/dist/application/command-application.interface.d.ts.map +1 -0
  16. package/dist/application/index.d.ts +5 -0
  17. package/dist/application/index.d.ts.map +1 -0
  18. package/dist/application/web-application.d.ts +43 -0
  19. package/dist/application/web-application.d.ts.map +1 -0
  20. package/dist/application/web-application.interface.d.ts +21 -0
  21. package/dist/application/web-application.interface.d.ts.map +1 -0
  22. package/dist/application/web-application.js +1 -0
  23. package/dist/application/web-application.js.map +2 -2
  24. package/dist/auth/index.d.ts +2 -0
  25. package/dist/auth/index.d.ts.map +1 -0
  26. package/dist/auth/jwt.d.ts +25 -0
  27. package/dist/auth/jwt.d.ts.map +1 -0
  28. package/dist/cache/index.d.ts +2 -0
  29. package/dist/cache/index.d.ts.map +1 -0
  30. package/dist/cache/manager.d.ts +107 -0
  31. package/dist/cache/manager.d.ts.map +1 -0
  32. package/dist/cli/index.d.ts +2 -0
  33. package/dist/cli/index.d.ts.map +1 -0
  34. package/dist/cli/index.js +5655 -0
  35. package/dist/cli/index.js.map +7 -0
  36. package/dist/cluster/cluster-manager.d.ts +15 -0
  37. package/dist/cluster/cluster-manager.d.ts.map +1 -0
  38. package/dist/cluster/cluster-manager.interface.d.ts +23 -0
  39. package/dist/cluster/cluster-manager.interface.d.ts.map +1 -0
  40. package/dist/cluster/index.d.ts +2 -0
  41. package/dist/cluster/index.d.ts.map +1 -0
  42. package/dist/command/command-manager.d.ts +19 -0
  43. package/dist/command/command-manager.d.ts.map +1 -0
  44. package/dist/command/command.d.ts +27 -0
  45. package/dist/command/command.d.ts.map +1 -0
  46. package/dist/command/command.interface.d.ts +11 -0
  47. package/dist/command/command.interface.d.ts.map +1 -0
  48. package/dist/command/index.d.ts +3 -0
  49. package/dist/command/index.d.ts.map +1 -0
  50. package/dist/config/env.d.ts +11 -0
  51. package/dist/config/env.d.ts.map +1 -0
  52. package/dist/config/index.d.ts +3 -0
  53. package/dist/config/index.d.ts.map +1 -0
  54. package/dist/config/schema.d.ts +432 -0
  55. package/dist/config/schema.d.ts.map +1 -0
  56. package/dist/database/dynamic-entity-form-decorators.d.ts +31 -0
  57. package/dist/database/dynamic-entity-form-decorators.d.ts.map +1 -0
  58. package/dist/database/dynamic-entity.d.ts +15 -0
  59. package/dist/database/dynamic-entity.d.ts.map +1 -0
  60. package/dist/database/index.d.ts +5 -0
  61. package/dist/database/index.d.ts.map +1 -0
  62. package/dist/database/instance.d.ts +36 -0
  63. package/dist/database/instance.d.ts.map +1 -0
  64. package/dist/database/instance.interface.d.ts +5 -0
  65. package/dist/database/instance.interface.d.ts.map +1 -0
  66. package/dist/database/manager.d.ts +27 -0
  67. package/dist/database/manager.d.ts.map +1 -0
  68. package/dist/database/manager.interface.d.ts +18 -0
  69. package/dist/database/manager.interface.d.ts.map +1 -0
  70. package/dist/error/error-reporter.d.ts +96 -0
  71. package/dist/error/error-reporter.d.ts.map +1 -0
  72. package/dist/error/error.interface.d.ts +126 -0
  73. package/dist/error/error.interface.d.ts.map +1 -0
  74. package/dist/error/framework-errors.d.ts +113 -0
  75. package/dist/error/framework-errors.d.ts.map +1 -0
  76. package/dist/error/index.d.ts +6 -0
  77. package/dist/error/index.d.ts.map +1 -0
  78. package/dist/event/controller/base.d.ts +23 -0
  79. package/dist/event/controller/base.d.ts.map +1 -0
  80. package/dist/event/controller/base.interface.d.ts +11 -0
  81. package/dist/event/controller/base.interface.d.ts.map +1 -0
  82. package/dist/event/index.d.ts +5 -0
  83. package/dist/event/index.d.ts.map +1 -0
  84. package/dist/event/manager.d.ts +21 -0
  85. package/dist/event/manager.d.ts.map +1 -0
  86. package/dist/event/manager.interface.d.ts +137 -0
  87. package/dist/event/manager.interface.d.ts.map +1 -0
  88. package/dist/index.d.ts +22 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/lifecycle/exit.d.ts +11 -0
  91. package/dist/lifecycle/exit.d.ts.map +1 -0
  92. package/dist/lifecycle/index.d.ts +7 -0
  93. package/dist/lifecycle/index.d.ts.map +1 -0
  94. package/dist/lifecycle/lifecycle-manager.d.ts +66 -0
  95. package/dist/lifecycle/lifecycle-manager.d.ts.map +1 -0
  96. package/dist/lifecycle/lifecycle-manager.js +6 -11
  97. package/dist/lifecycle/lifecycle-manager.js.map +2 -2
  98. package/dist/lifecycle/shutdown-controller.d.ts +15 -0
  99. package/dist/lifecycle/shutdown-controller.d.ts.map +1 -0
  100. package/dist/lifecycle/types.d.ts +28 -0
  101. package/dist/lifecycle/types.d.ts.map +1 -0
  102. package/dist/logger/index.d.ts +2 -0
  103. package/dist/logger/index.d.ts.map +1 -0
  104. package/dist/logger/logger.d.ts +59 -0
  105. package/dist/logger/logger.d.ts.map +1 -0
  106. package/dist/logger/logger.interface.d.ts +2 -0
  107. package/dist/logger/logger.interface.d.ts.map +1 -0
  108. package/dist/logger/logger.js +8 -1
  109. package/dist/logger/logger.js.map +2 -2
  110. package/dist/performance/cache-performance.d.ts +64 -0
  111. package/dist/performance/cache-performance.d.ts.map +1 -0
  112. package/dist/performance/database-performance.d.ts +40 -0
  113. package/dist/performance/database-performance.d.ts.map +1 -0
  114. package/dist/performance/index.d.ts +8 -0
  115. package/dist/performance/index.d.ts.map +1 -0
  116. package/dist/performance/performance-monitor.d.ts +68 -0
  117. package/dist/performance/performance-monitor.d.ts.map +1 -0
  118. package/dist/performance/performance-monitor.plugin.d.ts +24 -0
  119. package/dist/performance/performance-monitor.plugin.d.ts.map +1 -0
  120. package/dist/performance/queue-performance.d.ts +46 -0
  121. package/dist/performance/queue-performance.d.ts.map +1 -0
  122. package/dist/performance/webserver-performance.d.ts +69 -0
  123. package/dist/performance/webserver-performance.d.ts.map +1 -0
  124. package/dist/performance/websocket-performance.d.ts +44 -0
  125. package/dist/performance/websocket-performance.d.ts.map +1 -0
  126. package/dist/queue/index.d.ts +6 -0
  127. package/dist/queue/index.d.ts.map +1 -0
  128. package/dist/queue/index.interface.d.ts +10 -0
  129. package/dist/queue/index.interface.d.ts.map +1 -0
  130. package/dist/queue/job.interface.d.ts +43 -0
  131. package/dist/queue/job.interface.d.ts.map +1 -0
  132. package/dist/queue/manager.d.ts +44 -0
  133. package/dist/queue/manager.d.ts.map +1 -0
  134. package/dist/queue/manager.interface.d.ts +18 -0
  135. package/dist/queue/manager.interface.d.ts.map +1 -0
  136. package/dist/queue/processor/base.d.ts +29 -0
  137. package/dist/queue/processor/base.d.ts.map +1 -0
  138. package/dist/queue/processor/processor.interface.d.ts +16 -0
  139. package/dist/queue/processor/processor.interface.d.ts.map +1 -0
  140. package/dist/queue/worker.d.ts +14 -0
  141. package/dist/queue/worker.d.ts.map +1 -0
  142. package/dist/queue/worker.interface.d.ts +13 -0
  143. package/dist/queue/worker.interface.d.ts.map +1 -0
  144. package/dist/redis/index.d.ts +3 -0
  145. package/dist/redis/index.d.ts.map +1 -0
  146. package/dist/redis/instance.d.ts +32 -0
  147. package/dist/redis/instance.d.ts.map +1 -0
  148. package/dist/redis/instance.interface.d.ts +9 -0
  149. package/dist/redis/instance.interface.d.ts.map +1 -0
  150. package/dist/redis/manager.d.ts +15 -0
  151. package/dist/redis/manager.d.ts.map +1 -0
  152. package/dist/redis/manager.interface.d.ts +8 -0
  153. package/dist/redis/manager.interface.d.ts.map +1 -0
  154. package/dist/redis/manager.js +13 -14
  155. package/dist/redis/manager.js.map +2 -2
  156. package/dist/request-context/index.d.ts +3 -0
  157. package/dist/request-context/index.d.ts.map +1 -0
  158. package/dist/request-context/request-context.d.ts +108 -0
  159. package/dist/request-context/request-context.d.ts.map +1 -0
  160. package/dist/request-context/request-context.interface.d.ts +46 -0
  161. package/dist/request-context/request-context.interface.d.ts.map +1 -0
  162. package/dist/services/aws/index.d.ts +2 -0
  163. package/dist/services/aws/index.d.ts.map +1 -0
  164. package/dist/services/aws/s3.d.ts +54 -0
  165. package/dist/services/aws/s3.d.ts.map +1 -0
  166. package/dist/services/aws/s3.interface.d.ts +14 -0
  167. package/dist/services/aws/s3.interface.d.ts.map +1 -0
  168. package/dist/services/index.d.ts +2 -0
  169. package/dist/services/index.d.ts.map +1 -0
  170. package/dist/util/file.d.ts +58 -0
  171. package/dist/util/file.d.ts.map +1 -0
  172. package/dist/util/helper.d.ts +51 -0
  173. package/dist/util/helper.d.ts.map +1 -0
  174. package/dist/util/helper.js +72 -10
  175. package/dist/util/helper.js.map +2 -2
  176. package/dist/util/image.d.ts +12 -0
  177. package/dist/util/image.d.ts.map +1 -0
  178. package/dist/util/index.d.ts +11 -0
  179. package/dist/util/index.d.ts.map +1 -0
  180. package/dist/util/loader.d.ts +21 -0
  181. package/dist/util/loader.d.ts.map +1 -0
  182. package/dist/util/loader.js +5 -2
  183. package/dist/util/loader.js.map +2 -2
  184. package/dist/util/num.d.ts +13 -0
  185. package/dist/util/num.d.ts.map +1 -0
  186. package/dist/util/os.d.ts +6 -0
  187. package/dist/util/os.d.ts.map +1 -0
  188. package/dist/util/str.d.ts +39 -0
  189. package/dist/util/str.d.ts.map +1 -0
  190. package/dist/util/time.d.ts +19 -0
  191. package/dist/util/time.d.ts.map +1 -0
  192. package/dist/util/time.interface.d.ts +12 -0
  193. package/dist/util/time.interface.d.ts.map +1 -0
  194. package/dist/util/timing.d.ts +36 -0
  195. package/dist/util/timing.d.ts.map +1 -0
  196. package/dist/util/timing.interface.d.ts +47 -0
  197. package/dist/util/timing.interface.d.ts.map +1 -0
  198. package/dist/util/url.d.ts +7 -0
  199. package/dist/util/url.d.ts.map +1 -0
  200. package/dist/webserver/controller/auth-middleware.d.ts +21 -0
  201. package/dist/webserver/controller/auth-middleware.d.ts.map +1 -0
  202. package/dist/webserver/controller/base.d.ts +41 -0
  203. package/dist/webserver/controller/base.d.ts.map +1 -0
  204. package/dist/webserver/controller/base.interface.d.ts +50 -0
  205. package/dist/webserver/controller/base.interface.d.ts.map +1 -0
  206. package/dist/webserver/controller/entity.d.ts +94 -0
  207. package/dist/webserver/controller/entity.d.ts.map +1 -0
  208. package/dist/webserver/controller/example-auth.d.ts +12 -0
  209. package/dist/webserver/controller/example-auth.d.ts.map +1 -0
  210. package/dist/webserver/controller/health.d.ts +15 -0
  211. package/dist/webserver/controller/health.d.ts.map +1 -0
  212. package/dist/webserver/define-action.d.ts +26 -0
  213. package/dist/webserver/define-action.d.ts.map +1 -0
  214. package/dist/webserver/define-action.js +16 -0
  215. package/dist/webserver/define-action.js.map +7 -0
  216. package/dist/webserver/define-route.d.ts +53 -0
  217. package/dist/webserver/define-route.d.ts.map +1 -0
  218. package/dist/webserver/define-route.js +11 -6
  219. package/dist/webserver/define-route.js.map +2 -2
  220. package/dist/webserver/index.d.ts +14 -0
  221. package/dist/webserver/index.d.ts.map +1 -0
  222. package/dist/webserver/index.js +2 -0
  223. package/dist/webserver/index.js.map +2 -2
  224. package/dist/webserver/util.d.ts +10 -0
  225. package/dist/webserver/util.d.ts.map +1 -0
  226. package/dist/webserver/util.js +5 -2
  227. package/dist/webserver/util.js.map +2 -2
  228. package/dist/webserver/webserver.d.ts +93 -0
  229. package/dist/webserver/webserver.d.ts.map +1 -0
  230. package/dist/webserver/webserver.interface.d.ts +181 -0
  231. package/dist/webserver/webserver.interface.d.ts.map +1 -0
  232. package/dist/webserver/webserver.interface.js.map +1 -1
  233. package/dist/webserver/webserver.js +28 -31
  234. package/dist/webserver/webserver.js.map +2 -2
  235. package/dist/websocket/controller/client/base.d.ts +12 -0
  236. package/dist/websocket/controller/client/base.d.ts.map +1 -0
  237. package/dist/websocket/controller/client/base.interface.d.ts +12 -0
  238. package/dist/websocket/controller/client/base.interface.d.ts.map +1 -0
  239. package/dist/websocket/controller/server/base.d.ts +13 -0
  240. package/dist/websocket/controller/server/base.d.ts.map +1 -0
  241. package/dist/websocket/controller/server/base.interface.d.ts +13 -0
  242. package/dist/websocket/controller/server/base.interface.d.ts.map +1 -0
  243. package/dist/websocket/controllers/client/system.d.ts +6 -0
  244. package/dist/websocket/controllers/client/system.d.ts.map +1 -0
  245. package/dist/websocket/controllers/server/system.d.ts +7 -0
  246. package/dist/websocket/controllers/server/system.d.ts.map +1 -0
  247. package/dist/websocket/index.d.ts +7 -0
  248. package/dist/websocket/index.d.ts.map +1 -0
  249. package/dist/websocket/routes/client/system.d.ts +3 -0
  250. package/dist/websocket/routes/client/system.d.ts.map +1 -0
  251. package/dist/websocket/routes/server/system.d.ts +3 -0
  252. package/dist/websocket/routes/server/system.d.ts.map +1 -0
  253. package/dist/websocket/utils.d.ts +9 -0
  254. package/dist/websocket/utils.d.ts.map +1 -0
  255. package/dist/websocket/websocket-base.d.ts +19 -0
  256. package/dist/websocket/websocket-base.d.ts.map +1 -0
  257. package/dist/websocket/websocket-client-manager.d.ts +53 -0
  258. package/dist/websocket/websocket-client-manager.d.ts.map +1 -0
  259. package/dist/websocket/websocket-client-manager.interface.d.ts +8 -0
  260. package/dist/websocket/websocket-client-manager.interface.d.ts.map +1 -0
  261. package/dist/websocket/websocket-client.d.ts +35 -0
  262. package/dist/websocket/websocket-client.d.ts.map +1 -0
  263. package/dist/websocket/websocket-client.interface.d.ts +14 -0
  264. package/dist/websocket/websocket-client.interface.d.ts.map +1 -0
  265. package/dist/websocket/websocket-room-manager.d.ts +32 -0
  266. package/dist/websocket/websocket-room-manager.d.ts.map +1 -0
  267. package/dist/websocket/websocket-server.d.ts +92 -0
  268. package/dist/websocket/websocket-server.d.ts.map +1 -0
  269. package/dist/websocket/websocket-server.interface.d.ts +16 -0
  270. package/dist/websocket/websocket-server.interface.d.ts.map +1 -0
  271. package/dist/websocket/websocket-server.js +33 -9
  272. package/dist/websocket/websocket-server.js.map +2 -2
  273. package/dist/websocket/websocket-service.d.ts +44 -0
  274. package/dist/websocket/websocket-service.d.ts.map +1 -0
  275. package/dist/websocket/websocket.interface.d.ts +124 -0
  276. package/dist/websocket/websocket.interface.d.ts.map +1 -0
  277. package/package.json +13 -13
  278. package/pxl.js +0 -4
@@ -0,0 +1,6 @@
1
+ import type { WebSocket } from 'ws';
2
+ import { WebSocketClientBaseController } from '../../index.js';
3
+ export default class SystemController extends WebSocketClientBaseController {
4
+ clientList: (_clientWebSocket: WebSocket, _webSocketClientId: string, _data: any) => any;
5
+ }
6
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controllers/client/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,6BAA6B;IAClE,UAAU,GAAI,kBAAkB,SAAS,EAAE,oBAAoB,MAAM,EAAE,OAAO,GAAG,KAAG,GAAG,CAE5F;CACH"}
@@ -0,0 +1,7 @@
1
+ import type { WebSocket } from 'ws';
2
+ import WebSocketServerBaseController from '../../controller/server/base.js';
3
+ export default class SystemController extends WebSocketServerBaseController {
4
+ joinRoom: (clientWebSocket: WebSocket, webSocketClientId: string, data: any) => any;
5
+ leaveRoom: (clientWebSocket: WebSocket, webSocketClientId: string, data: any) => any;
6
+ }
7
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controllers/server/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAG5E,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,6BAA6B;IAClE,QAAQ,GAAI,iBAAiB,SAAS,EAAE,mBAAmB,MAAM,EAAE,MAAM,GAAG,KAAG,GAAG,CA6CvF;IAEK,SAAS,GAAI,iBAAiB,SAAS,EAAE,mBAAmB,MAAM,EAAE,MAAM,GAAG,KAAG,GAAG,CAqCxF;CACH"}
@@ -0,0 +1,7 @@
1
+ export type { WebSocketRoute } from './websocket.interface.js';
2
+ export { WebSocketRedisSubscriberEvent } from './websocket.interface.js';
3
+ export { default as WebSocketServerBaseController } from './controller/server/base.js';
4
+ export { default as WebSocketClientBaseController } from './controller/client/base.js';
5
+ export { WebSocketService } from './websocket-service.js';
6
+ export type { WebSocketMessage, WebSocketServiceOptions } from './websocket-service.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/websocket/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { WebSocketRoute } from '../../websocket.interface.js';
2
+ export declare const webSocketSystemClientRoutes: WebSocketRoute[];
3
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/routes/client/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAMvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { WebSocketRoute } from '../../websocket.interface.js';
2
+ export declare const webSocketSystemClientRoutes: WebSocketRoute[];
3
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/routes/server/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAWvD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type WebSocket from 'ws';
2
+ export interface LogOptions {
3
+ muteWorker?: boolean;
4
+ }
5
+ export declare function generateClientId(): string;
6
+ export declare function log(message: string, meta?: Record<string, unknown>, options?: LogOptions): void;
7
+ export declare function parseServerMessage(message: WebSocket.Data): Record<string, unknown>;
8
+ export declare function getRouteKey(type: string, action: string): string;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/websocket/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAE/F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,19 @@
1
+ import type { WebSocketMessageHandler, WebSocketRoute, WebSocketType } from './websocket.interface.js';
2
+ import type WebSocket from 'ws';
3
+ export default abstract class WebSocketBase {
4
+ protected routes: WebSocketRoute[];
5
+ protected routeHandlers: Map<string, WebSocketMessageHandler>;
6
+ protected defaultRoutes: WebSocketRoute[];
7
+ abstract get type(): WebSocketType;
8
+ protected abstract getControllerDependencies(): Record<string, unknown>;
9
+ protected abstract shouldPrintRoutes(): boolean;
10
+ protected abstract handleMessageError(clientId: string, error: string): void;
11
+ protected configureRoutes(routes: WebSocketRoute[], controllersDirectory: string): Promise<void>;
12
+ protected handleServerMessage(ws: WebSocket, message: WebSocket.Data, clientId: string): Promise<{
13
+ type: unknown;
14
+ action: unknown;
15
+ response: unknown;
16
+ } | void>;
17
+ protected printRoutes(): void;
18
+ }
19
+ //# sourceMappingURL=websocket-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-base.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIvG,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IACzC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,CAAM;IACxC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAa;IAE1E,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAAM;IAE/C,aAAoB,IAAI,IAAI,aAAa,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO;IAC/C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;cAE5D,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAwEtF,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,SAAS,CAAC,IAAI,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAuDxE,SAAS,CAAC,WAAW,IAAI,IAAI;CAiB9B"}
@@ -0,0 +1,53 @@
1
+ import WebSocket from 'ws';
2
+ import type { WebSocketClientData } from './websocket-client-manager.interface.js';
3
+ export default class WebSocketClientManager {
4
+ private clients;
5
+ addClient({ clientId, ws, lastActivity, user, }: {
6
+ clientId: string;
7
+ ws: WebSocket | null;
8
+ lastActivity: number;
9
+ user?: {
10
+ userId: number;
11
+ payload: any;
12
+ } | null;
13
+ }): void;
14
+ getClientId({ ws }: {
15
+ ws: WebSocket;
16
+ }): string | undefined;
17
+ getClient({ clientId, requireWs, }: {
18
+ clientId: string;
19
+ requireWs?: boolean;
20
+ }): WebSocketClientData | undefined;
21
+ updateClient({ clientId, key, data, broadcastClientList, }: {
22
+ clientId: string;
23
+ key: string;
24
+ data: any;
25
+ broadcastClientList?: boolean;
26
+ }): void;
27
+ removeClient(clientId: string): void;
28
+ getClientList(): {
29
+ [key: string]: any;
30
+ clientId: string;
31
+ }[];
32
+ getClientByKey({ key, value, requireWs, userType, }: {
33
+ key: string;
34
+ value: string;
35
+ requireWs?: boolean;
36
+ userType?: string;
37
+ }): {
38
+ ws: WebSocket | null;
39
+ lastActivity: number;
40
+ roomName?: string;
41
+ clientId: string;
42
+ } | undefined;
43
+ getClients({ userType }?: {
44
+ userType?: string;
45
+ }): WebSocketClientData[];
46
+ disconnectClient({ clientId }: {
47
+ clientId: string;
48
+ }): void;
49
+ printClients(): void;
50
+ broadcastClientList(type: string): void;
51
+ cleanup(): void;
52
+ }
53
+ //# sourceMappingURL=websocket-client-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client-manager.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAInF,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC,OAAO,CAAC,OAAO,CAA+C;IAEvD,SAAS,CAAC,EACf,QAAQ,EACR,EAAE,EACF,YAAY,EACZ,IAAI,GACL,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,GAAG,CAAA;SAAE,GAAG,IAAI,CAAC;KAChD;IAiBM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS;IAI1D,SAAS,CAAC,EACf,QAAQ,EACR,SAAS,GACV,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,mBAAmB,GAAG,SAAS;IAU5B,YAAY,CAAC,EAClB,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,mBAAmB,GACpB,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B;IA2CM,YAAY,CAAC,QAAQ,EAAE,MAAM;IAsB7B,aAAa;;kBAEN,MAAM;;IAcb,cAAc,CAAC,EACpB,GAAG,EACH,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;IA6BM,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAgBnD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;IAwBnD,YAAY;IAwBZ,mBAAmB,CAAC,IAAI,EAAE,MAAM;IA0BhC,OAAO,IAAI,IAAI;CAsBvB"}
@@ -0,0 +1,8 @@
1
+ import type WebSocket from 'ws';
2
+ export interface WebSocketClientData {
3
+ ws: WebSocket | null;
4
+ lastActivity: number;
5
+ roomName?: string;
6
+ [key: string]: any;
7
+ }
8
+ //# sourceMappingURL=websocket-client-manager.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client-manager.interface.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client-manager.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,35 @@
1
+ import type { WebSocketRoute, WebSocketType } from './websocket.interface.js';
2
+ import type RedisInstance from '../redis/instance.js';
3
+ import type QueueManager from '../queue/manager.js';
4
+ import type DatabaseInstance from '../database/instance.js';
5
+ import type { WebSocketClientProps } from './websocket-client.interface.js';
6
+ import WebSocketBase from './websocket-base.js';
7
+ export default class WebSocketClient extends WebSocketBase {
8
+ protected defaultRoutes: WebSocketRoute[];
9
+ private applicationConfig;
10
+ private options;
11
+ private redisInstance;
12
+ private queueManager;
13
+ private databaseInstance;
14
+ private ws?;
15
+ private clientId?;
16
+ private isConnected;
17
+ constructor(props: WebSocketClientProps);
18
+ get type(): WebSocketType;
19
+ load(): Promise<void>;
20
+ connectToServer(): Promise<void>;
21
+ protected getControllerDependencies(): {
22
+ sendMessage: (data: unknown) => void;
23
+ redisInstance: RedisInstance;
24
+ queueManager: QueueManager;
25
+ databaseInstance: DatabaseInstance;
26
+ };
27
+ protected shouldPrintRoutes(): boolean;
28
+ private handleIncomingMessage;
29
+ protected handleMessageError(clientId: string, error: string): void;
30
+ sendClientMessage: (data: unknown, binary?: boolean) => void;
31
+ sendMessage: (data: unknown) => void;
32
+ disconnect(): void;
33
+ isClientConnected(): boolean;
34
+ }
35
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAKhD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,aAAa;IACxD,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAMvC;IAEF,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAkB;gBAEzB,KAAK,EAAE,oBAAoB;IAWvC,IAAW,IAAI,IAAI,aAAa,CAE/B;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA0E7C,SAAS,CAAC,yBAAyB,IAAI;QACrC,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,aAAa,EAAE,aAAa,CAAC;QAC7B,YAAY,EAAE,YAAY,CAAC;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC;KACpC;IAQD,SAAS,CAAC,iBAAiB,IAAI,OAAO;IAItC,OAAO,CAAC,qBAAqB,CAqB3B;IAEF,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5D,iBAAiB,GAAI,MAAM,OAAO,EAAE,SAAQ,OAAe,KAAG,IAAI,CAYvE;IAEK,WAAW,GAAI,MAAM,OAAO,KAAG,IAAI,CAExC;IAEK,UAAU,IAAI,IAAI;IAWlB,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -0,0 +1,14 @@
1
+ import type { ApplicationConfig } from '../application/base-application.interface.js';
2
+ import type DatabaseInstance from '../database/instance.js';
3
+ import type QueueManager from '../queue/manager.js';
4
+ import type { RedisInstance } from '../redis/index.js';
5
+ import type { WebSocketOptions, WebSocketRoute } from './websocket.interface.js';
6
+ export interface WebSocketClientProps {
7
+ applicationConfig: ApplicationConfig;
8
+ options: WebSocketOptions;
9
+ redisInstance: RedisInstance;
10
+ queueManager: QueueManager;
11
+ databaseInstance: DatabaseInstance;
12
+ routes: WebSocketRoute[];
13
+ }
14
+ //# sourceMappingURL=websocket-client.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.interface.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B"}
@@ -0,0 +1,32 @@
1
+ import type WebSocketClientManager from './websocket-client-manager.js';
2
+ export default class WebSocketRoomManager {
3
+ private clientManager;
4
+ rooms: Map<string, Set<string>>;
5
+ constructor({ clientManager }: {
6
+ clientManager: WebSocketClientManager;
7
+ });
8
+ addClientToRoom({ clientId, user, roomName, broadcast, }: {
9
+ clientId: string;
10
+ user: any;
11
+ roomName: string;
12
+ broadcast?: boolean;
13
+ }): void;
14
+ removeClientFromRoom({ roomName, clientId, broadcast, }: {
15
+ roomName: string;
16
+ clientId: string;
17
+ broadcast?: boolean;
18
+ }): void;
19
+ removeClientFromAllRooms({ clientId }: {
20
+ clientId: string;
21
+ }): void;
22
+ isClientInRoom({ clientId, roomName }: {
23
+ clientId: string;
24
+ roomName: string;
25
+ }): boolean;
26
+ printRooms(): void;
27
+ getRoomClients({ roomName }: {
28
+ roomName: string;
29
+ }): string[];
30
+ cleanup(): void;
31
+ }
32
+ //# sourceMappingURL=websocket-room-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-room-manager.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-room-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,sBAAsB,MAAM,+BAA+B,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAEvC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAa;gBAEvC,EAAE,aAAa,EAAE,EAAE;QAAE,aAAa,EAAE,sBAAsB,CAAA;KAAE;IAIjE,eAAe,CAAC,EACrB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IAwCM,oBAAoB,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IA0CM,wBAAwB,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;IAc3D,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAY7E,UAAU;IAqCV,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE;IAK5D,OAAO,IAAI,IAAI;CAKvB"}
@@ -0,0 +1,92 @@
1
+ import { WebSocketServer as WS, WebSocket } from 'ws';
2
+ import { type WebSocketRoute, type WebSocketType } from './websocket.interface.js';
3
+ import type RedisInstance from '../redis/instance.js';
4
+ import type QueueManager from '../queue/manager.js';
5
+ import type DatabaseInstance from '../database/instance.js';
6
+ import type { WebSocketServerProps } from './websocket-server.interface.js';
7
+ import WebSocketClientManager from './websocket-client-manager.js';
8
+ import WebSocketBase from './websocket-base.js';
9
+ import type { FastifyInstance } from 'fastify';
10
+ export default class WebSocketServer extends WebSocketBase {
11
+ protected defaultRoutes: WebSocketRoute[];
12
+ private server?;
13
+ private abortController;
14
+ private workerId;
15
+ private uniqueInstanceId;
16
+ private applicationConfig;
17
+ private options;
18
+ clientManager: WebSocketClientManager;
19
+ private roomManager;
20
+ get rooms(): Map<string, Set<string>>;
21
+ private redisInstance;
22
+ private queueManager;
23
+ private databaseInstance;
24
+ /** Redis subscriber events */
25
+ private redisSubscriberEvents;
26
+ constructor(props: WebSocketServerProps);
27
+ get type(): WebSocketType;
28
+ private validateWebSocketAuth;
29
+ load(): Promise<void>;
30
+ start({ fastifyServer }: {
31
+ fastifyServer: FastifyInstance;
32
+ }): Promise<{
33
+ server: WS;
34
+ }>;
35
+ stop(): Promise<void>;
36
+ protected getControllerDependencies(): {
37
+ webSocketServer: WebSocketServer;
38
+ redisInstance: RedisInstance;
39
+ queueManager: QueueManager;
40
+ databaseInstance: DatabaseInstance;
41
+ };
42
+ protected shouldPrintRoutes(): boolean;
43
+ private handleServerStart;
44
+ /**
45
+ * Handle subscriber message.
46
+ */
47
+ private handleSubscriberMessage;
48
+ private handleServerError;
49
+ private handleServerClientConnection;
50
+ leaveRoom({ ws, roomName }: {
51
+ ws: WebSocket;
52
+ roomName: string;
53
+ }): void;
54
+ private onClientConnect;
55
+ private onClientDisconnect;
56
+ private handleServerClientDisconnection;
57
+ private handleClientMessage;
58
+ protected handleMessageError(clientId: string, error: string): void;
59
+ private checkInactiveClients;
60
+ broadcastToAllClients({ data, excludeClientId, }: {
61
+ data: {
62
+ [key: string]: any;
63
+ };
64
+ excludeClientId?: string;
65
+ }): void;
66
+ sendMessageError({ webSocketClientId, error }: {
67
+ webSocketClientId: string;
68
+ error: string;
69
+ }): void;
70
+ private onJoinRoom;
71
+ joinRoom({ ws, userId, userType, username, roomName, }: {
72
+ ws: WebSocket;
73
+ userId?: number;
74
+ userType?: string;
75
+ username?: string;
76
+ roomName: string;
77
+ }): Promise<true | undefined>;
78
+ sendClientMessage: (ws: WebSocket, data: unknown, binary?: boolean) => void;
79
+ sendMessage: ({ data }: {
80
+ data: unknown;
81
+ }) => void;
82
+ sendMessageToAll: ({ data }: {
83
+ data: unknown;
84
+ }) => void;
85
+ sendCustomMessage: ({ data }: {
86
+ data: unknown;
87
+ }) => void;
88
+ getClients({ userType }: {
89
+ userType?: string;
90
+ }): any[];
91
+ }
92
+ //# sourceMappingURL=websocket-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ApplicationConfig } from '../application/base-application.interface.js';
2
+ import type DatabaseInstance from '../database/instance.js';
3
+ import type QueueManager from '../queue/manager.js';
4
+ import type { RedisInstance } from '../redis/index.js';
5
+ import type { WebSocketOptions, WebSocketRoute } from './websocket.interface.js';
6
+ export interface WebSocketServerProps {
7
+ uniqueInstanceId: string;
8
+ applicationConfig: ApplicationConfig;
9
+ options: WebSocketOptions;
10
+ redisInstance: RedisInstance;
11
+ queueManager: QueueManager;
12
+ databaseInstance: DatabaseInstance;
13
+ routes: WebSocketRoute[];
14
+ workerId: number | null;
15
+ }
16
+ //# sourceMappingURL=websocket-server.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-server.interface.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-server.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -288,7 +288,10 @@ class WebSocketServer extends WebSocketBase {
288
288
  break;
289
289
  }
290
290
  case WebSocketRedisSubscriberEvent.QueueJobError: {
291
- parsedMessage.data = parsedMessage.error;
291
+ parsedMessage.data = {
292
+ ...parsedMessage.data ?? {},
293
+ error: parsedMessage.error
294
+ };
292
295
  break;
293
296
  }
294
297
  case WebSocketRedisSubscriberEvent.Custom: {
@@ -462,9 +465,30 @@ class WebSocketServer extends WebSocketBase {
462
465
  );
463
466
  }
464
467
  checkInactiveClients() {
468
+ const now = Date.now();
465
469
  if (this.options.disconnectInactiveClients?.enabled && this.options.disconnectInactiveClients.log) {
466
470
  log("Checking inactive clients...");
467
471
  }
472
+ if (!this.options.disconnectInactiveClients?.enabled) {
473
+ return;
474
+ }
475
+ const maxInactiveTime = this.options.disconnectInactiveClients.inactiveTime;
476
+ if (!maxInactiveTime) {
477
+ return;
478
+ }
479
+ const clients = this.clientManager.getClients();
480
+ clients.forEach((client) => {
481
+ const inactiveTime = now - client.lastActivity;
482
+ if (inactiveTime > maxInactiveTime) {
483
+ this.clientManager.disconnectClient(client.clientId);
484
+ if (this.options.disconnectInactiveClients?.log) {
485
+ log("Disconnected inactive client", {
486
+ "Client ID": client.clientId,
487
+ "Inactive Time": `${inactiveTime}ms`
488
+ });
489
+ }
490
+ }
491
+ });
468
492
  }
469
493
  broadcastToAllClients({
470
494
  data,
@@ -532,14 +556,14 @@ class WebSocketServer extends WebSocketBase {
532
556
  });
533
557
  return;
534
558
  }
535
- const clientCanJoinMultipleRooms = false;
536
- if (clientCanJoinMultipleRooms !== true) {
537
- if (client.roomName) {
538
- this.roomManager.removeClientFromRoom({
539
- roomName: client.roomName,
540
- clientId
541
- });
542
- }
559
+ const canJoinMultipleRooms = this.options.rooms?.clientCanJoinMultipleRooms ?? true;
560
+ if (!canJoinMultipleRooms && client.roomName) {
561
+ this.roomManager.removeClientFromRoom({
562
+ roomName: client.roomName,
563
+ clientId,
564
+ broadcast: false
565
+ // Don't broadcast here, will broadcast after adding to new room
566
+ });
543
567
  }
544
568
  this.clientManager.updateClient({
545
569
  clientId,