@tsed/socketio 7.0.0-alpha.1 → 7.0.0-beta.10

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 (233) hide show
  1. package/.mocharc.js +2 -2
  2. package/.nycrc +1 -0
  3. package/lib/{SocketIOModule.js → cjs/SocketIOModule.js} +28 -24
  4. package/lib/cjs/SocketIOModule.js.map +1 -0
  5. package/lib/{class → cjs/class}/SocketHandlersBuilder.js +22 -14
  6. package/lib/cjs/class/SocketHandlersBuilder.js.map +1 -0
  7. package/lib/{class → cjs/class}/SocketProviderMetadata.js +0 -0
  8. package/lib/cjs/class/SocketProviderMetadata.js.map +1 -0
  9. package/lib/{constants/index.js → cjs/constants/constants.js} +1 -1
  10. package/lib/cjs/constants/constants.js.map +1 -0
  11. package/lib/{decorators → cjs/decorators}/args.js +1 -1
  12. package/lib/cjs/decorators/args.js.map +1 -0
  13. package/lib/{decorators → cjs/decorators}/broadcast.js +1 -1
  14. package/lib/cjs/decorators/broadcast.js.map +1 -0
  15. package/lib/{decorators → cjs/decorators}/broadcastOthers.js +1 -1
  16. package/lib/cjs/decorators/broadcastOthers.js.map +1 -0
  17. package/lib/{decorators → cjs/decorators}/emit.js +1 -1
  18. package/lib/cjs/decorators/emit.js.map +1 -0
  19. package/lib/{decorators → cjs/decorators}/input.js +0 -0
  20. package/lib/cjs/decorators/input.js.map +1 -0
  21. package/lib/{decorators → cjs/decorators}/inputAndBroadcast.js +2 -2
  22. package/lib/cjs/decorators/inputAndBroadcast.js.map +1 -0
  23. package/lib/{decorators → cjs/decorators}/inputAndBroadcastOthers.js +2 -2
  24. package/lib/cjs/decorators/inputAndBroadcastOthers.js.map +1 -0
  25. package/lib/{decorators → cjs/decorators}/inputAndEmit.js +2 -2
  26. package/lib/cjs/decorators/inputAndEmit.js.map +1 -0
  27. package/lib/cjs/decorators/io.js +13 -0
  28. package/lib/cjs/decorators/io.js.map +1 -0
  29. package/lib/{decorators → cjs/decorators}/nsp.js +2 -2
  30. package/lib/cjs/decorators/nsp.js.map +1 -0
  31. package/lib/{decorators → cjs/decorators}/socket.js +1 -1
  32. package/lib/cjs/decorators/socket.js.map +1 -0
  33. package/lib/{decorators → cjs/decorators}/socketErr.js +1 -1
  34. package/lib/cjs/decorators/socketErr.js.map +1 -0
  35. package/lib/{decorators → cjs/decorators}/socketEventName.js +1 -1
  36. package/lib/cjs/decorators/socketEventName.js.map +1 -0
  37. package/lib/{decorators → cjs/decorators}/socketFilter.js +0 -0
  38. package/lib/cjs/decorators/socketFilter.js.map +1 -0
  39. package/lib/{decorators → cjs/decorators}/socketMiddleware.js +4 -4
  40. package/lib/cjs/decorators/socketMiddleware.js.map +1 -0
  41. package/lib/{decorators → cjs/decorators}/socketMiddlewareError.js +2 -2
  42. package/lib/cjs/decorators/socketMiddlewareError.js.map +1 -0
  43. package/lib/{decorators → cjs/decorators}/socketReturns.js +0 -0
  44. package/lib/cjs/decorators/socketReturns.js.map +1 -0
  45. package/lib/{decorators → cjs/decorators}/socketService.js +2 -2
  46. package/lib/cjs/decorators/socketService.js.map +1 -0
  47. package/lib/{decorators → cjs/decorators}/socketSession.js +1 -1
  48. package/lib/cjs/decorators/socketSession.js.map +1 -0
  49. package/lib/{decorators → cjs/decorators}/socketUseAfter.js +0 -0
  50. package/lib/cjs/decorators/socketUseAfter.js.map +1 -0
  51. package/lib/{decorators → cjs/decorators}/socketUseBefore.js +0 -0
  52. package/lib/cjs/decorators/socketUseBefore.js.map +1 -0
  53. package/lib/{index.js → cjs/index.js} +21 -10
  54. package/lib/cjs/index.js.map +1 -0
  55. package/lib/{interfaces → cjs/interfaces}/OnNamespaceInit.js +0 -0
  56. package/lib/cjs/interfaces/OnNamespaceInit.js.map +1 -0
  57. package/lib/{interfaces → cjs/interfaces}/SocketFilters.js +0 -0
  58. package/lib/cjs/interfaces/SocketFilters.js.map +1 -0
  59. package/lib/{interfaces → cjs/interfaces}/SocketHandlerMetadata.js +0 -0
  60. package/lib/cjs/interfaces/SocketHandlerMetadata.js.map +1 -0
  61. package/lib/{interfaces → cjs/interfaces}/SocketInjectableNsp.js +0 -0
  62. package/lib/cjs/interfaces/SocketInjectableNsp.js.map +1 -0
  63. package/lib/{interfaces → cjs/interfaces}/SocketParamMetadata.js +0 -0
  64. package/lib/cjs/interfaces/SocketParamMetadata.js.map +1 -0
  65. package/lib/{interfaces → cjs/interfaces}/SocketProviderTypes.js +0 -0
  66. package/lib/cjs/interfaces/SocketProviderTypes.js.map +1 -0
  67. package/lib/{interfaces → cjs/interfaces}/SocketReturnsTypes.js +0 -0
  68. package/lib/cjs/interfaces/SocketReturnsTypes.js.map +1 -0
  69. package/lib/cjs/interfaces/interfaces.js +3 -0
  70. package/lib/cjs/interfaces/interfaces.js.map +1 -0
  71. package/lib/cjs/package.json +3 -0
  72. package/lib/{registries → cjs/registries}/NspSessionRegistry.js +0 -0
  73. package/lib/cjs/registries/NspSessionRegistry.js.map +1 -0
  74. package/lib/{services → cjs/services}/SocketIOServer.js +2 -2
  75. package/lib/cjs/services/SocketIOServer.js.map +1 -0
  76. package/lib/{services → cjs/services}/SocketIOService.js +4 -5
  77. package/lib/cjs/services/SocketIOService.js.map +1 -0
  78. package/lib/esm/SocketIOModule.js +109 -0
  79. package/lib/esm/SocketIOModule.js.map +1 -0
  80. package/lib/esm/class/SocketHandlersBuilder.js +207 -0
  81. package/lib/esm/class/SocketHandlersBuilder.js.map +1 -0
  82. package/lib/esm/class/SocketProviderMetadata.js +44 -0
  83. package/lib/esm/class/SocketProviderMetadata.js.map +1 -0
  84. package/lib/esm/constants/constants.js +2 -0
  85. package/lib/esm/constants/constants.js.map +1 -0
  86. package/lib/esm/decorators/args.js +57 -0
  87. package/lib/esm/decorators/args.js.map +1 -0
  88. package/lib/esm/decorators/broadcast.js +28 -0
  89. package/lib/esm/decorators/broadcast.js.map +1 -0
  90. package/lib/esm/decorators/broadcastOthers.js +28 -0
  91. package/lib/esm/decorators/broadcastOthers.js.map +1 -0
  92. package/lib/esm/decorators/emit.js +28 -0
  93. package/lib/esm/decorators/emit.js.map +1 -0
  94. package/lib/esm/decorators/input.js +33 -0
  95. package/lib/esm/decorators/input.js.map +1 -0
  96. package/lib/esm/decorators/inputAndBroadcast.js +28 -0
  97. package/lib/esm/decorators/inputAndBroadcast.js.map +1 -0
  98. package/lib/esm/decorators/inputAndBroadcastOthers.js +28 -0
  99. package/lib/esm/decorators/inputAndBroadcastOthers.js.map +1 -0
  100. package/lib/esm/decorators/inputAndEmit.js +28 -0
  101. package/lib/esm/decorators/inputAndEmit.js.map +1 -0
  102. package/lib/esm/decorators/io.js +9 -0
  103. package/lib/esm/decorators/io.js.map +1 -0
  104. package/lib/esm/decorators/nsp.js +83 -0
  105. package/lib/esm/decorators/nsp.js.map +1 -0
  106. package/lib/esm/decorators/socket.js +28 -0
  107. package/lib/esm/decorators/socket.js.map +1 -0
  108. package/lib/esm/decorators/socketErr.js +26 -0
  109. package/lib/esm/decorators/socketErr.js.map +1 -0
  110. package/lib/esm/decorators/socketEventName.js +26 -0
  111. package/lib/esm/decorators/socketEventName.js.map +1 -0
  112. package/lib/esm/decorators/socketFilter.js +25 -0
  113. package/lib/esm/decorators/socketFilter.js.map +1 -0
  114. package/lib/esm/decorators/socketMiddleware.js +70 -0
  115. package/lib/esm/decorators/socketMiddleware.js.map +1 -0
  116. package/lib/esm/decorators/socketMiddlewareError.js +67 -0
  117. package/lib/esm/decorators/socketMiddlewareError.js.map +1 -0
  118. package/lib/esm/decorators/socketReturns.js +23 -0
  119. package/lib/esm/decorators/socketReturns.js.map +1 -0
  120. package/lib/esm/decorators/socketService.js +20 -0
  121. package/lib/esm/decorators/socketService.js.map +1 -0
  122. package/lib/esm/decorators/socketSession.js +27 -0
  123. package/lib/esm/decorators/socketSession.js.map +1 -0
  124. package/lib/esm/decorators/socketUseAfter.js +70 -0
  125. package/lib/esm/decorators/socketUseAfter.js.map +1 -0
  126. package/lib/esm/decorators/socketUseBefore.js +74 -0
  127. package/lib/esm/decorators/socketUseBefore.js.map +1 -0
  128. package/lib/esm/index.js +40 -0
  129. package/lib/esm/index.js.map +1 -0
  130. package/lib/esm/interfaces/OnNamespaceInit.js +2 -0
  131. package/lib/esm/interfaces/OnNamespaceInit.js.map +1 -0
  132. package/lib/esm/interfaces/SocketFilters.js +13 -0
  133. package/lib/esm/interfaces/SocketFilters.js.map +1 -0
  134. package/lib/esm/interfaces/SocketHandlerMetadata.js +2 -0
  135. package/lib/esm/interfaces/SocketHandlerMetadata.js.map +1 -0
  136. package/lib/esm/interfaces/SocketInjectableNsp.js +2 -0
  137. package/lib/esm/interfaces/SocketInjectableNsp.js.map +1 -0
  138. package/lib/esm/interfaces/SocketParamMetadata.js +2 -0
  139. package/lib/esm/interfaces/SocketParamMetadata.js.map +1 -0
  140. package/lib/esm/interfaces/SocketProviderTypes.js +9 -0
  141. package/lib/esm/interfaces/SocketProviderTypes.js.map +1 -0
  142. package/lib/esm/interfaces/SocketReturnsTypes.js +10 -0
  143. package/lib/esm/interfaces/SocketReturnsTypes.js.map +1 -0
  144. package/lib/esm/interfaces/interfaces.js +2 -0
  145. package/lib/esm/interfaces/interfaces.js.map +1 -0
  146. package/lib/esm/package.json +3 -0
  147. package/lib/esm/registries/NspSessionRegistry.js +12 -0
  148. package/lib/esm/registries/NspSessionRegistry.js.map +1 -0
  149. package/lib/esm/services/SocketIOServer.js +12 -0
  150. package/lib/esm/services/SocketIOServer.js.map +1 -0
  151. package/lib/esm/services/SocketIOService.js +63 -0
  152. package/lib/esm/services/SocketIOService.js.map +1 -0
  153. package/lib/types/SocketIOModule.d.ts +28 -0
  154. package/lib/{class → types/class}/SocketHandlersBuilder.d.ts +2 -3
  155. package/lib/{class → types/class}/SocketProviderMetadata.d.ts +2 -1
  156. package/lib/{constants/index.d.ts → types/constants/constants.d.ts} +0 -0
  157. package/lib/{decorators → types/decorators}/args.d.ts +0 -0
  158. package/lib/{decorators → types/decorators}/broadcast.d.ts +0 -0
  159. package/lib/{decorators → types/decorators}/broadcastOthers.d.ts +0 -0
  160. package/lib/{decorators → types/decorators}/emit.d.ts +0 -0
  161. package/lib/{decorators → types/decorators}/input.d.ts +0 -0
  162. package/lib/{decorators → types/decorators}/inputAndBroadcast.d.ts +0 -0
  163. package/lib/{decorators → types/decorators}/inputAndBroadcastOthers.d.ts +0 -0
  164. package/lib/{decorators → types/decorators}/inputAndEmit.d.ts +0 -0
  165. package/lib/{decorators → types/decorators}/io.d.ts +1 -0
  166. package/lib/{decorators → types/decorators}/nsp.d.ts +0 -0
  167. package/lib/{decorators → types/decorators}/socket.d.ts +0 -0
  168. package/lib/{decorators → types/decorators}/socketErr.d.ts +0 -0
  169. package/lib/{decorators → types/decorators}/socketEventName.d.ts +0 -0
  170. package/lib/{decorators → types/decorators}/socketFilter.d.ts +0 -0
  171. package/lib/{decorators → types/decorators}/socketMiddleware.d.ts +0 -0
  172. package/lib/{decorators → types/decorators}/socketMiddlewareError.d.ts +0 -0
  173. package/lib/{decorators → types/decorators}/socketReturns.d.ts +0 -0
  174. package/lib/{decorators → types/decorators}/socketService.d.ts +0 -0
  175. package/lib/{decorators → types/decorators}/socketSession.d.ts +0 -0
  176. package/lib/{decorators → types/decorators}/socketUseAfter.d.ts +0 -0
  177. package/lib/{decorators → types/decorators}/socketUseBefore.d.ts +0 -0
  178. package/lib/{index.d.ts → types/index.d.ts} +21 -7
  179. package/lib/{interfaces → types/interfaces}/OnNamespaceInit.d.ts +0 -0
  180. package/lib/{interfaces → types/interfaces}/SocketFilters.d.ts +0 -0
  181. package/lib/{interfaces → types/interfaces}/SocketHandlerMetadata.d.ts +0 -0
  182. package/lib/{interfaces → types/interfaces}/SocketInjectableNsp.d.ts +0 -0
  183. package/lib/{interfaces → types/interfaces}/SocketParamMetadata.d.ts +0 -0
  184. package/lib/{interfaces → types/interfaces}/SocketProviderTypes.d.ts +0 -0
  185. package/lib/{interfaces → types/interfaces}/SocketReturnsTypes.d.ts +0 -0
  186. package/lib/types/interfaces/interfaces.d.ts +8 -0
  187. package/lib/{registries → types/registries}/NspSessionRegistry.d.ts +0 -0
  188. package/lib/{services → types/services}/SocketIOServer.d.ts +0 -0
  189. package/lib/{services → types/services}/SocketIOService.d.ts +2 -3
  190. package/package.json +45 -22
  191. package/readme.md +80 -96
  192. package/tsconfig.compile.esm.json +12 -0
  193. package/lib/SocketIOModule.d.ts +0 -29
  194. package/lib/SocketIOModule.js.map +0 -1
  195. package/lib/class/SocketHandlersBuilder.js.map +0 -1
  196. package/lib/class/SocketProviderMetadata.js.map +0 -1
  197. package/lib/constants/index.js.map +0 -1
  198. package/lib/decorators/args.js.map +0 -1
  199. package/lib/decorators/broadcast.js.map +0 -1
  200. package/lib/decorators/broadcastOthers.js.map +0 -1
  201. package/lib/decorators/emit.js.map +0 -1
  202. package/lib/decorators/input.js.map +0 -1
  203. package/lib/decorators/inputAndBroadcast.js.map +0 -1
  204. package/lib/decorators/inputAndBroadcastOthers.js.map +0 -1
  205. package/lib/decorators/inputAndEmit.js.map +0 -1
  206. package/lib/decorators/io.js +0 -27
  207. package/lib/decorators/io.js.map +0 -1
  208. package/lib/decorators/nsp.js.map +0 -1
  209. package/lib/decorators/socket.js.map +0 -1
  210. package/lib/decorators/socketErr.js.map +0 -1
  211. package/lib/decorators/socketEventName.js.map +0 -1
  212. package/lib/decorators/socketFilter.js.map +0 -1
  213. package/lib/decorators/socketMiddleware.js.map +0 -1
  214. package/lib/decorators/socketMiddlewareError.js.map +0 -1
  215. package/lib/decorators/socketReturns.js.map +0 -1
  216. package/lib/decorators/socketService.js.map +0 -1
  217. package/lib/decorators/socketSession.js.map +0 -1
  218. package/lib/decorators/socketUseAfter.js.map +0 -1
  219. package/lib/decorators/socketUseBefore.js.map +0 -1
  220. package/lib/index.js.map +0 -1
  221. package/lib/interfaces/OnNamespaceInit.js.map +0 -1
  222. package/lib/interfaces/SocketFilters.js.map +0 -1
  223. package/lib/interfaces/SocketHandlerMetadata.js.map +0 -1
  224. package/lib/interfaces/SocketInjectableNsp.js.map +0 -1
  225. package/lib/interfaces/SocketParamMetadata.js.map +0 -1
  226. package/lib/interfaces/SocketProviderTypes.js.map +0 -1
  227. package/lib/interfaces/SocketReturnsTypes.js.map +0 -1
  228. package/lib/interfaces/index.d.ts +0 -15
  229. package/lib/interfaces/index.js +0 -11
  230. package/lib/interfaces/index.js.map +0 -1
  231. package/lib/registries/NspSessionRegistry.js.map +0 -1
  232. package/lib/services/SocketIOServer.js.map +0 -1
  233. package/lib/services/SocketIOService.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketMiddlewareError.js","sourceRoot":"","sources":["../../../src/decorators/socketMiddlewareError.ts"],"names":[],"mappings":";;;AAAA,qEAAsD;AACtD,qCAAuC;AACvC,2EAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,SAAgB,qBAAqB;IACnC,OAAO,CAAC,MAAiB,EAAE,EAAE;QAC3B,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;YACnC,IAAI,EAAE,yCAAmB,CAAC,UAAU;YACpC,KAAK,EAAE,IAAI;YAEX,QAAQ,EAAE;gBACR,GAAG,EAAE;oBACH,eAAe,EAAE,KAAK;iBACvB;aACF;SACF,CAAC,CAAC;QAEH,OAAO,IAAA,iCAAU,GAAE,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC;AAfD,sDAeC","sourcesContent":["import {Middleware} from \"@tsed/platform-middlewares\";\nimport {Store, Type} from \"@tsed/core\";\nimport {SocketProviderTypes} from \"../interfaces/SocketProviderTypes\";\n\n/**\n * Declare a new SocketMiddlewareError.\n *\n * ### Example\n *\n * A middleware can be also used on a `SocketService` either on a class or on a method.\n *\n * Here an example of a middleware:\n *\n * ```typescript\n * import {SocketMiddlewareError, SocketErr, Socket, Args} from \"@tsed/socketio\";\n *\n * @SocketMiddlewareError()\n * export class ErrorHandlerSocketMiddleware {\n * async use(@SocketEventName, @SocketErr err: any, @Socket socket: SocketIO.Socket) {\n * console.error(err);\n * socket.emit(\"error\", {message: \"An error has occured\"})\n * }\n * }\n * ```\n *\n * Then:\n *\n * ```typescript\n * import {SocketService, SocketUseAfter, SocketUseBefore, Emit, Input, Args} from \"@tsed/socketio\";\n * import {ErrorHandlerSocketMiddleware} from \"../middlewares\";\n * import {User} from \"../models/User\";\n *\n * @SocketService(\"/my-namespace\")\n * @SocketUseAfter(ErrorHandlerSocketMiddleware) // global version\n * export class MySocketService {\n *\n * @Input(\"eventName\")\n * @Emit(\"responseEventName\") // or Broadcast or BroadcastOthers\n * @SocketUseAfter(ErrorHandlerSocketMiddleware)\n * async myMethod(@Args(0) userName: User) {\n *\n * console.log(user);\n * throw new Error(\"Error\");\n *\n * return user;\n * }\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @experimental\n */\nexport function SocketMiddlewareError(): Function {\n return (target: Type<any>) => {\n Store.from(target).merge(\"socketIO\", {\n type: SocketProviderTypes.MIDDLEWARE,\n error: true,\n\n handlers: {\n use: {\n methodClassName: \"use\"\n }\n }\n });\n\n return Middleware()(target);\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketReturns.js","sourceRoot":"","sources":["../../../src/decorators/socketReturns.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAGjC;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,SAAiB,EAAE,IAAwB;IACvE,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAE,EAAE;QAC1E,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;YACnC,QAAQ,EAAE;gBACR,CAAC,WAAW,CAAC,EAAE;oBACb,OAAO,EAAE;wBACP,SAAS;wBACT,IAAI;qBACL;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAbD,sCAaC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {SocketReturnsTypes} from \"../interfaces/SocketReturnsTypes\";\n\n/**\n *\n * @param {string} eventName\n * @param {SocketReturnsTypes} type\n * @returns {(target: any, propertyKey: string, descriptor: PropertyDescriptor) => void}\n * @decorator\n */\nexport function SocketReturns(eventName: string, type: SocketReturnsTypes) {\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n Store.from(target).merge(\"socketIO\", {\n handlers: {\n [propertyKey]: {\n returns: {\n eventName,\n type\n }\n }\n }\n });\n };\n}\n"]}
@@ -4,7 +4,7 @@ exports.SocketService = void 0;
4
4
  const core_1 = require("@tsed/core");
5
5
  const di_1 = require("@tsed/di");
6
6
  const SocketProviderTypes_1 = require("../interfaces/SocketProviderTypes");
7
- const constants_1 = require("../constants");
7
+ const constants_1 = require("../constants/constants");
8
8
  /**
9
9
  * The decorators `@SocketService()` declare a new socket service (and service) can be injected in other service or controller on there `constructor`.
10
10
  * All services annotated with `@SocketService()` are constructed one time.
@@ -16,7 +16,7 @@ const constants_1 = require("../constants");
16
16
  * @decorator
17
17
  */
18
18
  function SocketService(namespace = "/") {
19
- return core_1.useDecorators(core_1.StoreMerge("socketIO", { namespace, type: SocketProviderTypes_1.SocketProviderTypes.SERVICE }), di_1.Injectable({
19
+ return (0, core_1.useDecorators)((0, core_1.StoreMerge)("socketIO", { namespace, type: SocketProviderTypes_1.SocketProviderTypes.SERVICE }), (0, di_1.Injectable)({
20
20
  type: constants_1.PROVIDER_TYPE_SOCKET_SERVICE
21
21
  }));
22
22
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketService.js","sourceRoot":"","sources":["../../../src/decorators/socketService.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AACrD,iCAAoC;AACpC,2EAAsE;AACtE,sDAAoE;AAEpE;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAAC,SAAS,GAAG,GAAG;IAC3C,OAAO,IAAA,oBAAa,EAClB,IAAA,iBAAU,EAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,yCAAmB,CAAC,OAAO,EAAC,CAAC,EACtE,IAAA,eAAU,EAAC;QACT,IAAI,EAAE,wCAA4B;KACnC,CAAC,CACH,CAAC;AACJ,CAAC;AAPD,sCAOC","sourcesContent":["import {StoreMerge, useDecorators} from \"@tsed/core\";\nimport {Injectable} from \"@tsed/di\";\nimport {SocketProviderTypes} from \"../interfaces/SocketProviderTypes\";\nimport {PROVIDER_TYPE_SOCKET_SERVICE} from \"../constants/constants\";\n\n/**\n * The decorators `@SocketService()` declare a new socket service (and service) can be injected in other service or controller on there `constructor`.\n * All services annotated with `@SocketService()` are constructed one time.\n *\n * > `@SocketService()` use the `reflect-metadata` to collect and inject service on controllers or other services.\n *\n * @param {string} namespace\n * @returns {Function}\n * @decorator\n */\nexport function SocketService(namespace = \"/\") {\n return useDecorators(\n StoreMerge(\"socketIO\", {namespace, type: SocketProviderTypes.SERVICE}),\n Injectable({\n type: PROVIDER_TYPE_SOCKET_SERVICE\n })\n );\n}\n"]}
@@ -25,7 +25,7 @@ const socketFilter_1 = require("./socketFilter");
25
25
  * @decorator
26
26
  */
27
27
  function SocketSession(target, propertyKey, index) {
28
- return socketFilter_1.SocketFilter(SocketFilters_1.SocketFilters.SESSION)(target, propertyKey, index);
28
+ return (0, socketFilter_1.SocketFilter)(SocketFilters_1.SocketFilters.SESSION)(target, propertyKey, index);
29
29
  }
30
30
  exports.SocketSession = SocketSession;
31
31
  //# sourceMappingURL=socketSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketSession.js","sourceRoot":"","sources":["../../../src/decorators/socketSession.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,iDAA4C;AAI5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,aAAa,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;IAC3E,OAAO,IAAA,2BAAY,EAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AAFD,sCAEC","sourcesContent":["import {SocketFilters} from \"../interfaces/SocketFilters\";\nimport {SocketFilter} from \"./socketFilter\";\n\nexport type SocketSession = Map<string, any>;\n\n/**\n * Inject the Socket instance in the decorated parameter.\n *\n * ### Example\n *\n * ```typescript\n * @SocketService(\"/nsp\")\n * export class MyWS {\n *\n * @Input(\"event\")\n * myMethod(@SocketSession session: Map) {\n * console.log(session);\n * }\n * }\n * ```\n *\n * @param target\n * @param {string} propertyKey\n * @param {number} index\n * @decorator\n */\nexport function SocketSession(target: any, propertyKey: string, index: number): any {\n return SocketFilter(SocketFilters.SESSION)(target, propertyKey, index);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketUseAfter.js","sourceRoot":"","sources":["../../../src/decorators/socketUseAfter.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,SAAgB,cAAc,CAAC,GAAG,WAAwB;IACxD,OAAO,CAAC,MAAW,EAAE,WAAoB,EAAE,UAA+B,EAAE,EAAE;QAC5E,IAAI,WAAW,EAAE;YACf,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;gBACnC,QAAQ,EAAE;oBACR,CAAC,WAAW,CAAC,EAAE;wBACb,QAAQ,EAAE,WAAW;qBACtB;iBACF;aACF,CAAC,CAAC;SACJ;aAAM;YACL,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;gBACnC,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;AACJ,CAAC;AAhBD,wCAgBC","sourcesContent":["import {Store, Type} from \"@tsed/core\";\n\n/**\n * Attach a Socket Middleware to a method or a class.\n *\n * ### Example\n *\n * A middleware can be also used on a `SocketService` either on a class or on a method.\n *\n * Here an example of a middleware:\n *\n * ```typescript\n * import {SocketMiddlewareError, SocketErr, Socket, Args} from \"@tsed/socketio\";\n *\n * @SocketMiddlewareError()\n * export class ErrorHandlerSocketMiddleware {\n * async use(@SocketErr() err: any, @Socket socket: SocketIO.Socket) {\n * console.error(err);\n * socket.emit(\"error\", {message: \"An error has occured\"})\n * }\n * }\n * ```\n *\n * Then:\n *\n * ```typescript\n * import {SocketService, SocketUseAfter, SocketUseBefore, Emit, Input, Args} from \"@tsed/socketio\";\n * import {ErrorHandlerSocketMiddleware} from \"../middlewares\";\n * import {User} from \"../models/User\";\n *\n * @SocketService(\"/my-namespace\")\n * @SocketUseAfter(ErrorHandlerSocketMiddleware) // global version\n * export class MySocketService {\n *\n * @Input(\"eventName\")\n * @Emit(\"responseEventName\") // or Broadcast or BroadcastOthers\n * @SocketUseAfter(ErrorHandlerSocketMiddleware)\n * async myMethod(@Args(0) userName: User) {\n *\n * console.log(user);\n * throw new Error(\"Error\");\n *\n * return user;\n * }\n * }\n * ```\n *\n * @returns {(target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void}\n * @decorator\n * @experimental\n * @param middlewares\n */\nexport function SocketUseAfter(...middlewares: Type<any>[]) {\n return (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => {\n if (propertyKey) {\n Store.from(target).merge(\"socketIO\", {\n handlers: {\n [propertyKey]: {\n useAfter: middlewares\n }\n }\n });\n } else {\n Store.from(target).merge(\"socketIO\", {\n useAfter: middlewares\n });\n }\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketUseBefore.js","sourceRoot":"","sources":["../../../src/decorators/socketUseBefore.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,SAAgB,eAAe,CAAC,GAAG,WAAwB;IACzD,OAAO,CAAC,MAAW,EAAE,WAAoB,EAAE,UAA+B,EAAE,EAAE;QAC5E,IAAI,WAAW,EAAE;YACf,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;gBACnC,QAAQ,EAAE;oBACR,CAAC,WAAW,CAAC,EAAE;wBACb,SAAS,EAAE,WAAW;qBACvB;iBACF;aACF,CAAC,CAAC;SACJ;aAAM;YACL,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;gBACnC,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;AACJ,CAAC;AAhBD,0CAgBC","sourcesContent":["import {Store, Type} from \"@tsed/core\";\n\n/**\n * Attach a Socket Middleware to a method or a class.\n *\n * ### Example\n *\n * A middleware can be also used on a `SocketService` either on a class or on a method.\n *\n * Here an example of a middleware:\n *\n * ```typescript\n * @SocketMiddleware()\n * export class UserConverterSocketMiddleware {\n * constructor(private converterService: ConverterService) {\n * }\n * async use(@Args() args: any[]) {\n *\n * let [user] = args;\n * // update Arguments\n * user = ConverterService.deserialize(user, User);\n *\n * return [user];\n * }\n * }\n * ```\n * > The user instance will be forwarded to the next middleware and to your decorated method.\n *\n * Then:\n *\n * ```typescript\n * import {SocketService, SocketUseAfter, SocketUseBefore, Emit, Input, Args} from \"@tsed/socketio\";\n * import {UserConverterSocketMiddleware} from \"../middlewares\";\n * import {User} from \"../models/User\";\n *\n * @SocketService(\"/my-namespace\")\n * @SocketUseBefore(UserConverterSocketMiddleware) // global version\n * export class MySocketService {\n *\n * @Input(\"eventName\")\n * @Emit(\"responseEventName\") // or Broadcast or BroadcastOthers\n * @SocketUseBefore(UserConverterSocketMiddleware)\n * async myMethod(@Args(0) user: User) {\n *\n * console.log(user);\n *\n * return user;\n * }\n * }\n * ```\n *\n * @returns {(target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void}\n * @decorator\n * @experimental\n * @param middlewares\n */\nexport function SocketUseBefore(...middlewares: Type<any>[]) {\n return (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => {\n if (propertyKey) {\n Store.from(target).merge(\"socketIO\", {\n handlers: {\n [propertyKey]: {\n useBefore: middlewares\n }\n }\n });\n } else {\n Store.from(target).merge(\"socketIO\", {\n useBefore: middlewares\n });\n }\n };\n}\n"]}
@@ -1,32 +1,43 @@
1
1
  "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const tslib_1 = require("tslib");
4
7
  tslib_1.__exportStar(require("./SocketIOModule"), exports);
5
- // interfaces
6
- tslib_1.__exportStar(require("./interfaces"), exports);
8
+ tslib_1.__exportStar(require("./class/SocketHandlersBuilder"), exports);
7
9
  tslib_1.__exportStar(require("./class/SocketProviderMetadata"), exports);
8
- // decorators
9
- tslib_1.__exportStar(require("./decorators/input"), exports);
10
+ tslib_1.__exportStar(require("./constants/constants"), exports);
10
11
  tslib_1.__exportStar(require("./decorators/args"), exports);
11
- tslib_1.__exportStar(require("./decorators/io"), exports);
12
- tslib_1.__exportStar(require("./decorators/nsp"), exports);
13
- tslib_1.__exportStar(require("./decorators/emit"), exports);
14
12
  tslib_1.__exportStar(require("./decorators/broadcast"), exports);
15
13
  tslib_1.__exportStar(require("./decorators/broadcastOthers"), exports);
16
- tslib_1.__exportStar(require("./decorators/inputAndEmit"), exports);
14
+ tslib_1.__exportStar(require("./decorators/emit"), exports);
15
+ tslib_1.__exportStar(require("./decorators/input"), exports);
17
16
  tslib_1.__exportStar(require("./decorators/inputAndBroadcast"), exports);
18
17
  tslib_1.__exportStar(require("./decorators/inputAndBroadcastOthers"), exports);
18
+ tslib_1.__exportStar(require("./decorators/inputAndEmit"), exports);
19
+ tslib_1.__exportStar(require("./decorators/io"), exports);
20
+ tslib_1.__exportStar(require("./decorators/nsp"), exports);
19
21
  tslib_1.__exportStar(require("./decorators/socket"), exports);
20
22
  tslib_1.__exportStar(require("./decorators/socketErr"), exports);
23
+ tslib_1.__exportStar(require("./decorators/socketEventName"), exports);
21
24
  tslib_1.__exportStar(require("./decorators/socketFilter"), exports);
22
25
  tslib_1.__exportStar(require("./decorators/socketMiddleware"), exports);
23
26
  tslib_1.__exportStar(require("./decorators/socketMiddlewareError"), exports);
27
+ tslib_1.__exportStar(require("./decorators/socketReturns"), exports);
24
28
  tslib_1.__exportStar(require("./decorators/socketService"), exports);
25
29
  tslib_1.__exportStar(require("./decorators/socketSession"), exports);
26
30
  tslib_1.__exportStar(require("./decorators/socketUseAfter"), exports);
27
31
  tslib_1.__exportStar(require("./decorators/socketUseBefore"), exports);
28
- tslib_1.__exportStar(require("./decorators/socketEventName"), exports);
29
- // service
32
+ tslib_1.__exportStar(require("./interfaces/OnNamespaceInit"), exports);
33
+ tslib_1.__exportStar(require("./interfaces/SocketFilters"), exports);
34
+ tslib_1.__exportStar(require("./interfaces/SocketHandlerMetadata"), exports);
35
+ tslib_1.__exportStar(require("./interfaces/SocketInjectableNsp"), exports);
36
+ tslib_1.__exportStar(require("./interfaces/SocketParamMetadata"), exports);
37
+ tslib_1.__exportStar(require("./interfaces/SocketProviderTypes"), exports);
38
+ tslib_1.__exportStar(require("./interfaces/SocketReturnsTypes"), exports);
39
+ tslib_1.__exportStar(require("./interfaces/interfaces"), exports);
40
+ tslib_1.__exportStar(require("./registries/NspSessionRegistry"), exports);
30
41
  tslib_1.__exportStar(require("./services/SocketIOServer"), exports);
31
42
  tslib_1.__exportStar(require("./services/SocketIOService"), exports);
32
43
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2DAAiC;AACjC,wEAA8C;AAC9C,yEAA+C;AAC/C,gEAAsC;AACtC,4DAAkC;AAClC,iEAAuC;AACvC,uEAA6C;AAC7C,4DAAkC;AAClC,6DAAmC;AACnC,yEAA+C;AAC/C,+EAAqD;AACrD,oEAA0C;AAC1C,0DAAgC;AAChC,2DAAiC;AACjC,8DAAoC;AACpC,iEAAuC;AACvC,uEAA6C;AAC7C,oEAA0C;AAC1C,wEAA8C;AAC9C,6EAAmD;AACnD,qEAA2C;AAC3C,qEAA2C;AAC3C,qEAA2C;AAC3C,sEAA4C;AAC5C,uEAA6C;AAC7C,uEAA6C;AAC7C,qEAA2C;AAC3C,6EAAmD;AACnD,2EAAiD;AACjD,2EAAiD;AACjD,2EAAiD;AACjD,0EAAgD;AAChD,kEAAwC;AACxC,0EAAgD;AAChD,oEAA0C;AAC1C,qEAA2C","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./SocketIOModule\";\nexport * from \"./class/SocketHandlersBuilder\";\nexport * from \"./class/SocketProviderMetadata\";\nexport * from \"./constants/constants\";\nexport * from \"./decorators/args\";\nexport * from \"./decorators/broadcast\";\nexport * from \"./decorators/broadcastOthers\";\nexport * from \"./decorators/emit\";\nexport * from \"./decorators/input\";\nexport * from \"./decorators/inputAndBroadcast\";\nexport * from \"./decorators/inputAndBroadcastOthers\";\nexport * from \"./decorators/inputAndEmit\";\nexport * from \"./decorators/io\";\nexport * from \"./decorators/nsp\";\nexport * from \"./decorators/socket\";\nexport * from \"./decorators/socketErr\";\nexport * from \"./decorators/socketEventName\";\nexport * from \"./decorators/socketFilter\";\nexport * from \"./decorators/socketMiddleware\";\nexport * from \"./decorators/socketMiddlewareError\";\nexport * from \"./decorators/socketReturns\";\nexport * from \"./decorators/socketService\";\nexport * from \"./decorators/socketSession\";\nexport * from \"./decorators/socketUseAfter\";\nexport * from \"./decorators/socketUseBefore\";\nexport * from \"./interfaces/OnNamespaceInit\";\nexport * from \"./interfaces/SocketFilters\";\nexport * from \"./interfaces/SocketHandlerMetadata\";\nexport * from \"./interfaces/SocketInjectableNsp\";\nexport * from \"./interfaces/SocketParamMetadata\";\nexport * from \"./interfaces/SocketProviderTypes\";\nexport * from \"./interfaces/SocketReturnsTypes\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./registries/NspSessionRegistry\";\nexport * from \"./services/SocketIOServer\";\nexport * from \"./services/SocketIOService\";\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnNamespaceInit.js","sourceRoot":"","sources":["../../../src/interfaces/OnNamespaceInit.ts"],"names":[],"mappings":"","sourcesContent":["import {Namespace} from \"socket.io\";\n\n/**\n *\n */\nexport interface OnNamespaceInit {\n $onNamespaceInit(nsp: Namespace): void;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketFilters.js","sourceRoot":"","sources":["../../../src/interfaces/SocketFilters.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,yCAAwB,CAAA;IACxB,4BAAW,CAAA;IACX,oCAAmB,CAAA;IACnB,8BAAa,CAAA;AACf,CAAC,EAPW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAOxB","sourcesContent":["/**\n * @ignore\n */\nexport enum SocketFilters {\n ARGS = \"args\",\n SOCKET = \"socket\",\n EVENT_NAME = \"eventName\",\n NSP = \"nsp\",\n SESSION = \"session\",\n ERR = \"error\"\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketHandlerMetadata.js","sourceRoot":"","sources":["../../../src/interfaces/SocketHandlerMetadata.ts"],"names":[],"mappings":"","sourcesContent":["import {SocketParamMetadata} from \"./SocketParamMetadata\";\nimport {SocketReturnsTypes} from \"./SocketReturnsTypes\";\n\n/**\n *\n */\nexport interface SocketHandlerMetadata {\n eventName?: string;\n methodClassName: string;\n useBefore?: any[];\n useAfter?: any[];\n parameters?: {[key: number]: SocketParamMetadata};\n returns?: {\n type: SocketReturnsTypes;\n eventName: string;\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketInjectableNsp.js","sourceRoot":"","sources":["../../../src/interfaces/SocketInjectableNsp.ts"],"names":[],"mappings":"","sourcesContent":["export interface SocketInjectableNsp {\n propertyKey: string;\n nsp?: string;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketParamMetadata.js","sourceRoot":"","sources":["../../../src/interfaces/SocketParamMetadata.ts"],"names":[],"mappings":"","sourcesContent":["import {MetadataTypes} from \"@tsed/core\";\nimport {SocketFilters} from \"./SocketFilters\";\n\nexport interface SocketParamMetadata extends Partial<MetadataTypes> {\n filter: SocketFilters;\n mapIndex?: number;\n useConverter?: boolean;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketProviderTypes.js","sourceRoot":"","sources":["../../../src/interfaces/SocketProviderTypes.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,gDAAyB,CAAA;AAC3B,CAAC,EAHW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAG9B","sourcesContent":["/**\n *\n */\nexport enum SocketProviderTypes {\n SERVICE = \"service\",\n MIDDLEWARE = \"middleware\"\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketReturnsTypes.js","sourceRoot":"","sources":["../../../src/interfaces/SocketReturnsTypes.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,6CAAuB,CAAA;IACvB,0DAAoC,CAAA;IACpC,mCAAa,CAAA;AACf,CAAC,EAJW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAI7B","sourcesContent":["/**\n * @ignore\n */\nexport enum SocketReturnsTypes {\n BROADCAST = \"broadcast\",\n BROADCAST_OTHERS = \"broadcastOthers\",\n EMIT = \"emit\"\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["import SocketIO from \"socket.io\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n socketIO: Partial<SocketIO.ServerOptions>;\n }\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NspSessionRegistry.js","sourceRoot":"","sources":["../../../src/registries/NspSessionRegistry.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAM,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;AAE1D,SAAgB,aAAa,CAAC,YAAoB,GAAG;IACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;KACpC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAND,sCAMC","sourcesContent":["/**\n *\n * @type {Map<any, any>}\n */\nconst SESSIONS: Map<string, Map<string, any>> = new Map();\n\nexport function getNspSession(namespace: string = \"/\") {\n if (!SESSIONS.has(namespace)) {\n SESSIONS.set(namespace, new Map());\n }\n\n return SESSIONS.get(namespace);\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Server = exports.SocketIOServer = void 0;
4
- const common_1 = require("@tsed/common");
4
+ const di_1 = require("@tsed/di");
5
5
  const socket_io_1 = require("socket.io");
6
6
  Object.defineProperty(exports, "Server", { enumerable: true, get: function () { return socket_io_1.Server; } });
7
7
  // tslint:disable-next-line: variable-name
8
8
  exports.SocketIOServer = socket_io_1.Server;
9
- common_1.registerProvider({
9
+ (0, di_1.registerProvider)({
10
10
  provide: socket_io_1.Server,
11
11
  useFactory() {
12
12
  return new socket_io_1.Server();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketIOServer.js","sourceRoot":"","sources":["../../../src/services/SocketIOServer.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;AAC1C,yCAAiC;AAOzB,uFAPA,kBAAM,OAOA;AAHd,0CAA0C;AAC7B,QAAA,cAAc,GAAG,kBAAM,CAAC;AAIrC,IAAA,qBAAgB,EAAC;IACf,OAAO,EAAE,kBAAM;IACf,UAAU;QACR,OAAO,IAAI,kBAAM,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {registerProvider} from \"@tsed/di\";\nimport {Server} from \"socket.io\";\n\nexport type SocketIOServer = Server;\n\n// tslint:disable-next-line: variable-name\nexport const SocketIOServer = Server;\n\nexport {Server};\n\nregisterProvider({\n provide: Server,\n useFactory() {\n return new Server();\n }\n});\n"]}
@@ -11,10 +11,9 @@ const io_1 = require("../decorators/io");
11
11
  *
12
12
  */
13
13
  let SocketIOService = class SocketIOService {
14
- constructor(injector, io, converterService) {
14
+ constructor(injector, io) {
15
15
  this.injector = injector;
16
16
  this.io = io;
17
- this.converterService = converterService;
18
17
  /**
19
18
  *
20
19
  * @type {Map<any, any>}
@@ -54,14 +53,14 @@ let SocketIOService = class SocketIOService {
54
53
  this.namespaces.forEach((value, nsp) => {
55
54
  nsps.set(nsp, value.nsp);
56
55
  });
57
- const builder = new SocketHandlersBuilder_1.SocketHandlersBuilder(provider, this.converterService, this.injector).build(nsps);
56
+ const builder = new SocketHandlersBuilder_1.SocketHandlersBuilder(provider, this.injector).build(nsps);
58
57
  nspConfig.instances.push(builder);
59
58
  }
60
59
  };
61
60
  SocketIOService = tslib_1.__decorate([
62
- common_1.Service(),
61
+ (0, common_1.Service)(),
63
62
  tslib_1.__param(1, io_1.IO),
64
- tslib_1.__metadata("design:paramtypes", [common_1.InjectorService, socket_io_1.default.Server, common_1.ConverterService])
63
+ tslib_1.__metadata("design:paramtypes", [common_1.InjectorService, socket_io_1.default.Server])
65
64
  ], SocketIOService);
66
65
  exports.SocketIOService = SocketIOService;
67
66
  //# sourceMappingURL=SocketIOService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketIOService.js","sourceRoot":"","sources":["../../../src/services/SocketIOService.ts"],"names":[],"mappings":";;;;AAAA,yCAAgE;AAChE,kEAAiC,CAAC,0CAA0C;AAC5E,0EAAqE;AACrE,4EAAuE;AACvE,yCAAoC;AAEpC;;GAEG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAe;IAO1B,YAAoB,QAAyB,EAAc,EAAmB;QAA1D,aAAQ,GAAR,QAAQ,CAAiB;QAAc,OAAE,GAAF,EAAE,CAAiB;QAN9E;;;WAGG;QACK,eAAU,GAA2D,IAAI,GAAG,EAAE,CAAC;IAEN,CAAC;IAElF;;;;OAIG;IACI,MAAM,CAAC,YAAoB,GAAG;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACnC,MAAM,IAAI,GAAG,EAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;YAEzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAErC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAA8B,EAAE,EAAE;oBACxD,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;oBAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAA8B,EAAE,EAAE;wBACxD,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,QAAuB;QAC9C,MAAM,QAAQ,GAA2B,IAAI,+CAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,6CAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/E,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAtDY,eAAe;IAD3B,IAAA,gBAAO,GAAE;IAQwC,mBAAA,OAAE,CAAA;6CAApB,wBAAe,EAAkB,mBAAQ,CAAC,MAAM;GAPnE,eAAe,CAsD3B;AAtDY,0CAAe","sourcesContent":["import {InjectorService, Provider, Service} from \"@tsed/common\";\nimport SocketIO from \"socket.io\"; // tslint:disable-line: no-unused-variable\nimport {SocketHandlersBuilder} from \"../class/SocketHandlersBuilder\";\nimport {SocketProviderMetadata} from \"../class/SocketProviderMetadata\";\nimport {IO} from \"../decorators/io\";\n\n/**\n *\n */\n@Service()\nexport class SocketIOService {\n /**\n *\n * @type {Map<any, any>}\n */\n private namespaces: Map<string, {nsp: SocketIO.Namespace; instances: any}> = new Map();\n\n constructor(private injector: InjectorService, @IO private io: SocketIO.Server) {}\n\n /**\n *\n * @param {string} namespace\n * @returns {SocketIO.Namespace}\n */\n public getNsp(namespace: string = \"/\"): {nsp: SocketIO.Namespace; instances: any[]} {\n if (!this.namespaces.has(namespace)) {\n const conf = {nsp: this.io.of(namespace), instances: []};\n\n this.namespaces.set(namespace, conf);\n\n conf.nsp.on(\"connection\", (socket) => {\n conf.instances.forEach((builder: SocketHandlersBuilder) => {\n builder.onConnection(socket, conf.nsp);\n });\n\n socket.on(\"disconnect\", () => {\n conf.instances.forEach((builder: SocketHandlersBuilder) => {\n builder.onDisconnect(socket, conf.nsp);\n });\n });\n });\n }\n\n return this.namespaces.get(namespace)!;\n }\n\n /**\n *\n * @param {Provider<any>} provider\n */\n public addSocketProvider(provider: Provider<any>) {\n const wsConfig: SocketProviderMetadata = new SocketProviderMetadata(provider.store.get(\"socketIO\"));\n\n const nspConfig = this.getNsp(wsConfig.namespace);\n const nsps = new Map();\n\n this.namespaces.forEach((value, nsp) => {\n nsps.set(nsp, value.nsp);\n });\n\n const builder = new SocketHandlersBuilder(provider, this.injector).build(nsps);\n\n nspConfig.instances.push(builder);\n }\n}\n"]}
@@ -0,0 +1,109 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { $log, Constant, InjectorService, Module } from "@tsed/common";
3
+ import { nameOf } from "@tsed/core";
4
+ import { Server } from "socket.io";
5
+ import { SocketProviderMetadata } from "./class/SocketProviderMetadata.js"; // tslint:disable-line: no-unused-variable
6
+ import { PROVIDER_TYPE_SOCKET_SERVICE } from "./constants/constants.js";
7
+ import { IO } from "./decorators/io.js";
8
+ import { SocketIOService } from "./services/SocketIOService.js";
9
+ import Http from "http";
10
+ import Https from "https";
11
+ import { Inject } from "@tsed/di";
12
+ /**
13
+ * @ignore
14
+ */
15
+ let SocketIOModule = class SocketIOModule {
16
+ $afterListen() {
17
+ if (this.httpServer) {
18
+ this.io.attach(this.httpServer, { ...this.settings });
19
+ }
20
+ if (this.httpsServer) {
21
+ this.io.attach(this.httpsServer, { ...this.settings });
22
+ }
23
+ if (this.settings.adapter) {
24
+ this.io.adapter(this.settings.adapter);
25
+ }
26
+ this.getWebsocketServices().forEach((provider) => this.socketIOService.addSocketProvider(provider));
27
+ if (!this.disableRoutesSummary) {
28
+ this.printSocketEvents();
29
+ }
30
+ return this.injector.emit("$afterSocketListen");
31
+ }
32
+ $onDestroy() {
33
+ var _a, _b;
34
+ return ((_a = this.io) === null || _a === void 0 ? void 0 : _a.close) && ((_b = this.io) === null || _b === void 0 ? void 0 : _b.engine) && new Promise((resolve) => this.io.close(() => resolve(undefined)));
35
+ }
36
+ /**
37
+ *
38
+ * @returns {Provider<any>[]}
39
+ */
40
+ getWebsocketServices() {
41
+ return Array.from(this.injector.getProviders(PROVIDER_TYPE_SOCKET_SERVICE));
42
+ }
43
+ /**
44
+ *
45
+ */
46
+ printSocketEvents() {
47
+ const list = this.getWebsocketServices().reduce((acc, provider) => {
48
+ const socketProvider = new SocketProviderMetadata(provider.store.get("socketIO"));
49
+ if (socketProvider.namespace) {
50
+ socketProvider.getHandlers().forEach((handler) => {
51
+ acc.push({
52
+ namespace: socketProvider.namespace,
53
+ inputEvent: handler.eventName,
54
+ outputEvent: (handler.returns && handler.returns.eventName) || "",
55
+ outputType: (handler.returns && handler.returns.type) || "",
56
+ name: `${nameOf(provider.useClass)}.${handler.methodClassName}`
57
+ });
58
+ });
59
+ }
60
+ return acc;
61
+ }, []);
62
+ this.injector.logger.info("Socket events mounted:");
63
+ const str = $log.drawTable(list, {
64
+ padding: 1,
65
+ header: {
66
+ namespace: "Namespace",
67
+ inputEvent: "Input event",
68
+ outputEvent: "Output event",
69
+ outputType: "Output type",
70
+ name: "Class method"
71
+ }
72
+ });
73
+ this.injector.logger.info("\n" + str.trim());
74
+ this.injector.logger.info("Socket server started...");
75
+ }
76
+ };
77
+ __decorate([
78
+ Constant("logger.disableRoutesSummary", false),
79
+ __metadata("design:type", Boolean)
80
+ ], SocketIOModule.prototype, "disableRoutesSummary", void 0);
81
+ __decorate([
82
+ Constant("socketIO", {}),
83
+ __metadata("design:type", Object)
84
+ ], SocketIOModule.prototype, "settings", void 0);
85
+ __decorate([
86
+ Inject(),
87
+ __metadata("design:type", InjectorService)
88
+ ], SocketIOModule.prototype, "injector", void 0);
89
+ __decorate([
90
+ Inject(Http.Server),
91
+ __metadata("design:type", Object)
92
+ ], SocketIOModule.prototype, "httpServer", void 0);
93
+ __decorate([
94
+ Inject(Https.Server),
95
+ __metadata("design:type", Object)
96
+ ], SocketIOModule.prototype, "httpsServer", void 0);
97
+ __decorate([
98
+ IO(),
99
+ __metadata("design:type", Server)
100
+ ], SocketIOModule.prototype, "io", void 0);
101
+ __decorate([
102
+ Inject(),
103
+ __metadata("design:type", SocketIOService)
104
+ ], SocketIOModule.prototype, "socketIOService", void 0);
105
+ SocketIOModule = __decorate([
106
+ Module()
107
+ ], SocketIOModule);
108
+ export { SocketIOModule };
109
+ //# sourceMappingURL=SocketIOModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketIOModule.js","sourceRoot":"","sources":["../../src/SocketIOModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {$log, AfterListen, Constant, InjectorService, Module, OnDestroy, Provider} from \"@tsed/common\";\nimport {nameOf} from \"@tsed/core\";\nimport {Server, ServerOptions} from \"socket.io\";\nimport {SocketProviderMetadata} from \"./class/SocketProviderMetadata\"; // tslint:disable-line: no-unused-variable\nimport {PROVIDER_TYPE_SOCKET_SERVICE} from \"./constants/constants\";\nimport {IO} from \"./decorators/io\";\nimport {SocketIOService} from \"./services/SocketIOService\";\nimport Http from \"http\";\nimport Https from \"https\";\nimport {Inject} from \"@tsed/di\";\n\n/**\n * @ignore\n */\n@Module()\nexport class SocketIOModule implements AfterListen, OnDestroy {\n @Constant(\"logger.disableRoutesSummary\", false)\n protected disableRoutesSummary: boolean;\n\n @Constant(\"socketIO\", {})\n protected settings: Partial<ServerOptions>;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject(Http.Server)\n protected httpServer: Http.Server | null;\n\n @Inject(Https.Server)\n protected httpsServer: Https.Server | null;\n\n @IO()\n private io: Server;\n\n @Inject()\n private socketIOService: SocketIOService;\n\n $afterListen() {\n if (this.httpServer) {\n this.io.attach(this.httpServer, {...this.settings});\n }\n\n if (this.httpsServer) {\n this.io.attach(this.httpsServer, {...this.settings});\n }\n\n if (this.settings.adapter) {\n this.io.adapter(this.settings.adapter);\n }\n\n this.getWebsocketServices().forEach((provider) => this.socketIOService.addSocketProvider(provider));\n\n if (!this.disableRoutesSummary) {\n this.printSocketEvents();\n }\n\n return this.injector.emit(\"$afterSocketListen\");\n }\n\n $onDestroy() {\n return this.io?.close && this.io?.engine && new Promise((resolve) => this.io.close(() => resolve(undefined)));\n }\n\n /**\n *\n * @returns {Provider<any>[]}\n */\n protected getWebsocketServices(): Provider<any>[] {\n return Array.from(this.injector.getProviders(PROVIDER_TYPE_SOCKET_SERVICE));\n }\n\n /**\n *\n */\n protected printSocketEvents() {\n const list = this.getWebsocketServices().reduce((acc: any[], provider) => {\n const socketProvider = new SocketProviderMetadata(provider.store.get(\"socketIO\"));\n\n if (socketProvider.namespace) {\n socketProvider.getHandlers().forEach((handler) => {\n acc.push({\n namespace: socketProvider.namespace,\n inputEvent: handler.eventName,\n outputEvent: (handler.returns && handler.returns.eventName) || \"\",\n outputType: (handler.returns && handler.returns.type) || \"\",\n name: `${nameOf(provider.useClass)}.${handler.methodClassName}`\n });\n });\n }\n\n return acc;\n }, []);\n\n this.injector.logger.info(\"Socket events mounted:\");\n\n const str = $log.drawTable(list, {\n padding: 1,\n header: {\n namespace: \"Namespace\",\n inputEvent: \"Input event\",\n outputEvent: \"Output event\",\n outputType: \"Output type\",\n name: \"Class method\"\n }\n });\n\n this.injector.logger.info(\"\\n\" + str.trim());\n\n this.injector.logger.info(\"Socket server started...\");\n }\n}\n"]}
@@ -0,0 +1,207 @@
1
+ import { Store } from "@tsed/core";
2
+ import { $log } from "@tsed/logger";
3
+ import { deserialize } from "@tsed/json-mapper";
4
+ import { SocketFilters } from "../interfaces/SocketFilters.js";
5
+ import { SocketProviderTypes } from "../interfaces/SocketProviderTypes.js";
6
+ import { SocketReturnsTypes } from "../interfaces/SocketReturnsTypes.js";
7
+ import { getNspSession } from "../registries/NspSessionRegistry.js";
8
+ import { SocketProviderMetadata } from "./SocketProviderMetadata.js";
9
+ /**
10
+ * @ignore
11
+ */
12
+ export class SocketHandlersBuilder {
13
+ constructor(provider, injector) {
14
+ this.provider = provider;
15
+ this.injector = injector;
16
+ this.socketProviderMetadata = new SocketProviderMetadata(this.provider.store.get("socketIO"));
17
+ }
18
+ /**
19
+ *
20
+ * @param {SocketHandlerMetadata} handlerMetadata
21
+ * @param scope
22
+ * @returns {(data) => void}
23
+ */
24
+ static bindResponseMiddleware(handlerMetadata, scope) {
25
+ const { returns } = handlerMetadata;
26
+ return (response) => {
27
+ if (returns) {
28
+ switch (returns.type) {
29
+ case SocketReturnsTypes.BROADCAST:
30
+ scope.nsp.emit(returns.eventName, response);
31
+ break;
32
+ case SocketReturnsTypes.BROADCAST_OTHERS:
33
+ scope.socket.broadcast.emit(returns.eventName, response);
34
+ break;
35
+ case SocketReturnsTypes.EMIT:
36
+ scope.socket.emit(returns.eventName, response);
37
+ break;
38
+ }
39
+ }
40
+ };
41
+ }
42
+ /**
43
+ *
44
+ * @returns {any}
45
+ */
46
+ build(nsps) {
47
+ const instance = this.injector.get(this.provider.token);
48
+ const { injectNamespaces, namespace } = this.socketProviderMetadata;
49
+ const nsp = nsps.get(namespace);
50
+ instance.$onConnection && this.socketProviderMetadata.createHook("$onConnection", "connection");
51
+ instance.$onDisconnect && this.socketProviderMetadata.createHook("$onDisconnect", "disconnect");
52
+ instance._nspSession = getNspSession(namespace);
53
+ injectNamespaces.forEach((setting) => {
54
+ instance[setting.propertyKey] = nsps.get(setting.nsp || namespace);
55
+ });
56
+ instance["nsp"] = nsp;
57
+ if (instance.$onNamespaceInit) {
58
+ instance.$onNamespaceInit(nsp);
59
+ }
60
+ return this;
61
+ }
62
+ /**
63
+ *
64
+ * @param {Socket} socket
65
+ * @param {Namespace} nsp
66
+ */
67
+ onConnection(socket, nsp) {
68
+ const { socketProviderMetadata } = this;
69
+ const instance = this.injector.get(this.provider.token);
70
+ this.buildHandlers(socket, nsp);
71
+ this.createSession(socket);
72
+ if (instance.$onConnection) {
73
+ this.invoke(instance, socketProviderMetadata.$onConnection, { socket, nsp });
74
+ }
75
+ }
76
+ onDisconnect(socket, nsp) {
77
+ const instance = this.injector.get(this.provider.token);
78
+ const { socketProviderMetadata } = this;
79
+ if (instance.$onDisconnect) {
80
+ this.invoke(instance, socketProviderMetadata.$onDisconnect, { socket, nsp });
81
+ }
82
+ this.destroySession(socket);
83
+ }
84
+ /**
85
+ *
86
+ * @param {Socket} socket
87
+ */
88
+ createSession(socket) {
89
+ const instance = this.injector.get(this.provider.token);
90
+ instance._nspSession.set(socket.id, new Map());
91
+ }
92
+ /**
93
+ *
94
+ * @param {Socket} socket
95
+ */
96
+ destroySession(socket) {
97
+ const instance = this.injector.get(this.provider.token);
98
+ instance._nspSession.delete(socket.id);
99
+ }
100
+ buildHandlers(socket, nsp) {
101
+ const { socketProviderMetadata } = this;
102
+ socketProviderMetadata.getHandlers().forEach((handler) => {
103
+ const { eventName } = handler;
104
+ if (eventName) {
105
+ socket.on(eventName, (...args) => {
106
+ this.runQueue(handler, args, socket, nsp);
107
+ });
108
+ }
109
+ });
110
+ }
111
+ async runQueue(handlerMetadata, args, socket, nsp) {
112
+ let promise = Promise.resolve(args);
113
+ const instance = this.injector.get(this.provider.token);
114
+ const { useBefore, useAfter } = this.socketProviderMetadata;
115
+ const scope = {
116
+ args,
117
+ socket,
118
+ nsp,
119
+ eventName: handlerMetadata.eventName
120
+ };
121
+ promise = promise.then(() => this.deserialize(handlerMetadata, scope));
122
+ if (useBefore) {
123
+ useBefore.forEach((target) => (promise = this.bindMiddleware(target, scope, promise)));
124
+ }
125
+ if (handlerMetadata.useBefore) {
126
+ handlerMetadata.useBefore.forEach((target) => (promise = this.bindMiddleware(target, scope, promise)));
127
+ }
128
+ promise = promise
129
+ .then(() => this.invoke(instance, handlerMetadata, scope))
130
+ .then(SocketHandlersBuilder.bindResponseMiddleware(handlerMetadata, scope));
131
+ if (handlerMetadata.useAfter) {
132
+ handlerMetadata.useAfter.forEach((target) => (promise = this.bindMiddleware(target, scope, promise)));
133
+ }
134
+ if (useAfter) {
135
+ useAfter.forEach((target) => (promise = this.bindMiddleware(target, scope, promise)));
136
+ }
137
+ return promise.catch((er) => {
138
+ /* istanbul ignore next */
139
+ $log.error(handlerMetadata.eventName, er);
140
+ /* istanbul ignore next */
141
+ process.exit(-1);
142
+ });
143
+ }
144
+ deserialize(handlerMetadata, scope) {
145
+ const { parameters } = handlerMetadata;
146
+ Object.keys(parameters || []).forEach((index) => {
147
+ const { filter, useConverter, mapIndex, type, collectionType } = parameters[index];
148
+ let value = scope.args[mapIndex];
149
+ if (filter === SocketFilters.ARGS && useConverter) {
150
+ value = deserialize(value, {
151
+ useAlias: true,
152
+ additionalProperties: this.injector.settings.get("converter.additionalProperties") === "accept",
153
+ type,
154
+ collectionType
155
+ });
156
+ scope.args[mapIndex] = value;
157
+ }
158
+ });
159
+ }
160
+ bindMiddleware(target, scope, promise) {
161
+ const instance = this.injector.get(target);
162
+ if (instance) {
163
+ const handlerMetadata = new SocketProviderMetadata(Store.from(instance).get("socketIO"));
164
+ if (handlerMetadata.type === SocketProviderTypes.MIDDLEWARE) {
165
+ if (handlerMetadata.error) {
166
+ return promise.catch((error) => this.invoke(instance, handlerMetadata.useHandler, { error, ...scope }));
167
+ }
168
+ return promise
169
+ .then(() => this.invoke(instance, handlerMetadata.useHandler, scope))
170
+ .then((result) => {
171
+ if (result) {
172
+ scope.args = [].concat(result);
173
+ }
174
+ });
175
+ }
176
+ }
177
+ return promise;
178
+ }
179
+ async invoke(instance, handlerMetadata, scope) {
180
+ const { methodClassName, parameters } = handlerMetadata;
181
+ return await instance[methodClassName](...this.buildParameters(parameters, scope));
182
+ }
183
+ buildParameters(parameters, scope) {
184
+ return Object.keys(parameters || []).map((index) => {
185
+ const param = parameters[index];
186
+ switch (param.filter) {
187
+ case SocketFilters.ARGS:
188
+ if (param.mapIndex !== undefined) {
189
+ return scope.args[param.mapIndex];
190
+ }
191
+ return scope.args;
192
+ case SocketFilters.EVENT_NAME:
193
+ return scope.eventName;
194
+ case SocketFilters.SOCKET:
195
+ return scope.socket;
196
+ case SocketFilters.NSP:
197
+ return scope.nsp;
198
+ case SocketFilters.ERR:
199
+ return scope.error;
200
+ case SocketFilters.SESSION:
201
+ const instance = this.injector.get(this.provider.token);
202
+ return instance._nspSession.get(scope.socket.id);
203
+ }
204
+ });
205
+ }
206
+ }
207
+ //# sourceMappingURL=SocketHandlersBuilder.js.map