@tsed/socketio 7.0.0-beta.2 → 7.0.0-beta.20

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 (82) hide show
  1. package/jest.config.js +14 -0
  2. package/lib/cjs/SocketIOModule.js +26 -19
  3. package/lib/cjs/SocketIOModule.js.map +1 -1
  4. package/lib/cjs/class/SocketHandlersBuilder.js +6 -3
  5. package/lib/cjs/class/SocketHandlersBuilder.js.map +1 -1
  6. package/lib/cjs/class/SocketProviderMetadata.js +7 -5
  7. package/lib/cjs/class/SocketProviderMetadata.js.map +1 -1
  8. package/lib/cjs/constants/{index.js → constants.js} +1 -1
  9. package/lib/cjs/constants/constants.js.map +1 -0
  10. package/lib/cjs/decorators/io.js +3 -3
  11. package/lib/cjs/decorators/io.js.map +1 -1
  12. package/lib/cjs/decorators/socketMiddleware.js +4 -4
  13. package/lib/cjs/decorators/socketMiddleware.js.map +1 -1
  14. package/lib/cjs/decorators/socketMiddlewareError.js +2 -2
  15. package/lib/cjs/decorators/socketMiddlewareError.js.map +1 -1
  16. package/lib/cjs/decorators/socketService.js +1 -1
  17. package/lib/cjs/decorators/socketService.js.map +1 -1
  18. package/lib/cjs/index.js +39 -28
  19. package/lib/cjs/index.js.map +1 -1
  20. package/lib/cjs/interfaces/interfaces.js +3 -0
  21. package/lib/cjs/interfaces/interfaces.js.map +1 -0
  22. package/lib/cjs/package.json +3 -0
  23. package/lib/cjs/services/SocketIOServer.js +2 -2
  24. package/lib/cjs/services/SocketIOServer.js.map +1 -1
  25. package/lib/cjs/services/SocketIOService.js +11 -9
  26. package/lib/cjs/services/SocketIOService.js.map +1 -1
  27. package/lib/esm/SocketIOModule.js +13 -6
  28. package/lib/esm/SocketIOModule.js.map +1 -1
  29. package/lib/esm/class/SocketHandlersBuilder.js +11 -8
  30. package/lib/esm/class/SocketHandlersBuilder.js.map +1 -1
  31. package/lib/esm/class/SocketProviderMetadata.js +7 -5
  32. package/lib/esm/class/SocketProviderMetadata.js.map +1 -1
  33. package/lib/esm/constants/{index.js → constants.js} +1 -1
  34. package/lib/esm/constants/constants.js.map +1 -0
  35. package/lib/esm/decorators/args.js +1 -1
  36. package/lib/esm/decorators/broadcast.js +2 -2
  37. package/lib/esm/decorators/broadcastOthers.js +2 -2
  38. package/lib/esm/decorators/emit.js +2 -2
  39. package/lib/esm/decorators/inputAndBroadcast.js +2 -2
  40. package/lib/esm/decorators/inputAndBroadcastOthers.js +2 -2
  41. package/lib/esm/decorators/inputAndEmit.js +2 -2
  42. package/lib/esm/decorators/io.js +2 -2
  43. package/lib/esm/decorators/io.js.map +1 -1
  44. package/lib/esm/decorators/nsp.js +2 -2
  45. package/lib/esm/decorators/socket.js +2 -2
  46. package/lib/esm/decorators/socketErr.js +2 -2
  47. package/lib/esm/decorators/socketEventName.js +2 -2
  48. package/lib/esm/decorators/socketMiddleware.js +2 -2
  49. package/lib/esm/decorators/socketMiddleware.js.map +1 -1
  50. package/lib/esm/decorators/socketMiddlewareError.js +2 -2
  51. package/lib/esm/decorators/socketMiddlewareError.js.map +1 -1
  52. package/lib/esm/decorators/socketService.js +2 -2
  53. package/lib/esm/decorators/socketService.js.map +1 -1
  54. package/lib/esm/decorators/socketSession.js +2 -2
  55. package/lib/esm/index.js +39 -28
  56. package/lib/esm/index.js.map +1 -1
  57. package/lib/esm/interfaces/interfaces.js +2 -0
  58. package/lib/esm/interfaces/interfaces.js.map +1 -0
  59. package/lib/esm/package.json +3 -0
  60. package/lib/esm/services/SocketIOServer.js +1 -1
  61. package/lib/esm/services/SocketIOServer.js.map +1 -1
  62. package/lib/esm/services/SocketIOService.js +10 -8
  63. package/lib/esm/services/SocketIOService.js.map +1 -1
  64. package/lib/types/SocketIOModule.d.ts +2 -1
  65. package/lib/types/class/SocketHandlersBuilder.d.ts +2 -2
  66. package/lib/types/class/SocketProviderMetadata.d.ts +2 -1
  67. package/lib/types/constants/{index.d.ts → constants.d.ts} +0 -0
  68. package/lib/types/decorators/socketUseAfter.d.ts +1 -1
  69. package/lib/types/decorators/socketUseBefore.d.ts +1 -1
  70. package/lib/types/index.d.ts +21 -7
  71. package/lib/types/interfaces/interfaces.d.ts +8 -0
  72. package/package.json +38 -20
  73. package/readme.md +83 -98
  74. package/tsconfig.compile.esm.json +1 -12
  75. package/.mocharc.js +0 -5
  76. package/lib/cjs/constants/index.js.map +0 -1
  77. package/lib/cjs/interfaces/index.js +0 -11
  78. package/lib/cjs/interfaces/index.js.map +0 -1
  79. package/lib/esm/constants/index.js.map +0 -1
  80. package/lib/esm/interfaces/index.js +0 -8
  81. package/lib/esm/interfaces/index.js.map +0 -1
  82. package/lib/types/interfaces/index.d.ts +0 -15
@@ -1,21 +1,23 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
2
  import { InjectorService, Service } from "@tsed/common";
3
3
  import SocketIO from "socket.io"; // tslint:disable-line: no-unused-variable
4
- import { SocketHandlersBuilder } from "../class/SocketHandlersBuilder";
5
- import { SocketProviderMetadata } from "../class/SocketProviderMetadata";
6
- import { IO } from "../decorators/io";
4
+ import { SocketHandlersBuilder } from "../class/SocketHandlersBuilder.js";
5
+ import { SocketProviderMetadata } from "../class/SocketProviderMetadata.js";
6
+ import { IO } from "../decorators/io.js";
7
7
  /**
8
8
  *
9
9
  */
10
10
  let SocketIOService = class SocketIOService {
11
+ injector;
12
+ io;
13
+ /**
14
+ *
15
+ * @type {Map<any, any>}
16
+ */
17
+ namespaces = new Map();
11
18
  constructor(injector, io) {
12
19
  this.injector = injector;
13
20
  this.io = io;
14
- /**
15
- *
16
- * @type {Map<any, any>}
17
- */
18
- this.namespaces = new Map();
19
21
  }
20
22
  /**
21
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SocketIOService.js","sourceRoot":"","sources":["../../../src/services/SocketIOService.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAY,OAAO,EAAC,MAAM,cAAc,CAAC;AAChE,OAAO,QAAQ,MAAM,WAAW,CAAC,CAAC,0CAA0C;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAC,EAAE,EAAC,MAAM,kBAAkB,CAAC;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,sBAAsB,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,qBAAqB,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,OAAO,EAAE;IAQwC,WAAA,EAAE,CAAA;qCAApB,eAAe,EAAkB,QAAQ,CAAC,MAAM;GAPnE,eAAe,CAsD3B;SAtDY,eAAe","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"]}
1
+ {"version":3,"file":"SocketIOService.js","sourceRoot":"","sources":["../../../src/services/SocketIOService.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAY,OAAO,EAAC,MAAM,cAAc,CAAC;AAChE,OAAO,QAAQ,MAAM,WAAW,CAAC,CAAC,0CAA0C;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAC,EAAE,EAAC,MAAM,kBAAkB,CAAC;AAEpC;;GAEG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAe;IAON;IAAuC;IAN3D;;;OAGG;IACK,UAAU,GAA2D,IAAI,GAAG,EAAE,CAAC;IAEvF,YAAoB,QAAyB,EAAc,EAAmB;QAA1D,aAAQ,GAAR,QAAQ,CAAiB;QAAc,OAAE,GAAF,EAAE,CAAiB;IAAG,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,sBAAsB,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,qBAAqB,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,OAAO,EAAE;IAQwC,WAAA,EAAE,CAAA;qCAApB,eAAe,EAAkB,QAAQ,CAAC,MAAM;GAPnE,eAAe,CAsD3B;SAtDY,eAAe","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"]}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { AfterListen, InjectorService, OnDestroy, Provider } from "@tsed/common";
3
4
  import { ServerOptions } from "socket.io";
4
5
  import Http from "http";
@@ -15,7 +16,7 @@ export declare class SocketIOModule implements AfterListen, OnDestroy {
15
16
  private io;
16
17
  private socketIOService;
17
18
  $afterListen(): Promise<void>;
18
- $onDestroy(): void;
19
+ $onDestroy(): any;
19
20
  /**
20
21
  *
21
22
  * @returns {Provider<any>[]}
@@ -1,4 +1,4 @@
1
- import { InjectorService, Provider } from "@tsed/common";
1
+ import { InjectorService, Provider } from "@tsed/di";
2
2
  import { Namespace, Socket } from "socket.io";
3
3
  /**
4
4
  * @ignore
@@ -7,7 +7,7 @@ export declare class SocketHandlersBuilder {
7
7
  private provider;
8
8
  private injector;
9
9
  private socketProviderMetadata;
10
- constructor(provider: Provider<any>, injector: InjectorService);
10
+ constructor(provider: Provider, injector: InjectorService);
11
11
  /**
12
12
  *
13
13
  * @param {SocketHandlerMetadata} handlerMetadata
@@ -1,4 +1,5 @@
1
- import { SocketHandlerMetadata, SocketInjectableNsp } from "../interfaces";
1
+ import { SocketHandlerMetadata } from "../interfaces/SocketHandlerMetadata";
2
+ import { SocketInjectableNsp } from "../interfaces/SocketInjectableNsp";
2
3
  import { SocketProviderTypes } from "../interfaces/SocketProviderTypes";
3
4
  export declare class SocketProviderMetadata {
4
5
  type: SocketProviderTypes;
@@ -49,4 +49,4 @@ import { Type } from "@tsed/core";
49
49
  * @experimental
50
50
  * @param middlewares
51
51
  */
52
- export declare function SocketUseAfter(...middlewares: Type<any>[]): (target: any, propertyKey?: string | undefined, descriptor?: PropertyDescriptor | undefined) => void;
52
+ export declare function SocketUseAfter(...middlewares: Type<any>[]): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void;
@@ -53,4 +53,4 @@ import { Type } from "@tsed/core";
53
53
  * @experimental
54
54
  * @param middlewares
55
55
  */
56
- export declare function SocketUseBefore(...middlewares: Type<any>[]): (target: any, propertyKey?: string | undefined, descriptor?: PropertyDescriptor | undefined) => void;
56
+ export declare function SocketUseBefore(...middlewares: Type<any>[]): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void;
@@ -1,25 +1,39 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
1
4
  export * from "./SocketIOModule";
2
- export * from "./interfaces";
5
+ export * from "./class/SocketHandlersBuilder";
3
6
  export * from "./class/SocketProviderMetadata";
4
- export * from "./decorators/input";
7
+ export * from "./constants/constants";
5
8
  export * from "./decorators/args";
6
- export * from "./decorators/io";
7
- export * from "./decorators/nsp";
8
- export * from "./decorators/emit";
9
9
  export * from "./decorators/broadcast";
10
10
  export * from "./decorators/broadcastOthers";
11
- export * from "./decorators/inputAndEmit";
11
+ export * from "./decorators/emit";
12
+ export * from "./decorators/input";
12
13
  export * from "./decorators/inputAndBroadcast";
13
14
  export * from "./decorators/inputAndBroadcastOthers";
15
+ export * from "./decorators/inputAndEmit";
16
+ export * from "./decorators/io";
17
+ export * from "./decorators/nsp";
14
18
  export * from "./decorators/socket";
15
19
  export * from "./decorators/socketErr";
20
+ export * from "./decorators/socketEventName";
16
21
  export * from "./decorators/socketFilter";
17
22
  export * from "./decorators/socketMiddleware";
18
23
  export * from "./decorators/socketMiddlewareError";
24
+ export * from "./decorators/socketReturns";
19
25
  export * from "./decorators/socketService";
20
26
  export * from "./decorators/socketSession";
21
27
  export * from "./decorators/socketUseAfter";
22
28
  export * from "./decorators/socketUseBefore";
23
- export * from "./decorators/socketEventName";
29
+ export * from "./interfaces/OnNamespaceInit";
30
+ export * from "./interfaces/SocketFilters";
31
+ export * from "./interfaces/SocketHandlerMetadata";
32
+ export * from "./interfaces/SocketInjectableNsp";
33
+ export * from "./interfaces/SocketParamMetadata";
34
+ export * from "./interfaces/SocketProviderTypes";
35
+ export * from "./interfaces/SocketReturnsTypes";
36
+ export * from "./interfaces/interfaces";
37
+ export * from "./registries/NspSessionRegistry";
24
38
  export * from "./services/SocketIOServer";
25
39
  export * from "./services/SocketIOService";
@@ -0,0 +1,8 @@
1
+ import SocketIO from "socket.io";
2
+ declare global {
3
+ namespace TsED {
4
+ interface Configuration {
5
+ socketIO: Partial<SocketIO.ServerOptions>;
6
+ }
7
+ }
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/socketio",
3
- "version": "7.0.0-beta.2",
3
+ "version": "7.0.0-beta.20",
4
4
  "description": "Socket.io package for Ts.ED framework",
5
5
  "private": false,
6
6
  "keywords": [
@@ -12,6 +12,7 @@
12
12
  ],
13
13
  "source": "./src/index.ts",
14
14
  "main": "./lib/cjs/index.js",
15
+ "module": "./lib/esm/index.js",
15
16
  "typings": "./lib/types/index.d.ts",
16
17
  "exports": {
17
18
  "types": "./lib/types/index.d.ts",
@@ -20,41 +21,58 @@
20
21
  "default": "./lib/esm/index.js"
21
22
  },
22
23
  "scripts": {
23
- "build": "yarn run build:esm && yarn run build:cjs",
24
+ "build": "yarn barrels && yarn run build:esm && yarn run build:cjs",
24
25
  "build:cjs": "tsc --build tsconfig.compile.json",
25
26
  "build:esm": "tsc --build tsconfig.compile.esm.json",
27
+ "barrels": "yarn barrelsby --delete -d ./src -e \"\\.spec\\.ts\" -e \"__mock__\" -e \".benchmark.ts\"",
26
28
  "start": "ts-node -r tsconfig-paths/register test/app/index.ts",
27
- "test": "cross-env NODE_ENV=test nyc mocha"
29
+ "test": "cross-env NODE_ENV=test yarn jest --runInBand --testTimeout 10000"
28
30
  },
29
31
  "dependencies": {
30
- "tslib": "2.2.0"
32
+ "tslib": "2.4.0"
31
33
  },
32
34
  "devDependencies": {
33
- "@tsed/common": "7.0.0-beta.2",
34
- "@tsed/core": "7.0.0-beta.2",
35
- "@tsed/di": "7.0.0-beta.2",
36
- "@tsed/json-mapper": "7.0.0-beta.2",
37
- "@tsed/openspec": "7.0.0-beta.2",
38
- "@tsed/schema": "7.0.0-beta.2",
35
+ "@tsed/common": "7.0.0-beta.20",
36
+ "@tsed/core": "7.0.0-beta.20",
37
+ "@tsed/di": "7.0.0-beta.20",
38
+ "@tsed/json-mapper": "7.0.0-beta.20",
39
+ "@tsed/openspec": "7.0.0-beta.20",
40
+ "@tsed/platform-middlewares": "7.0.0-beta.20",
41
+ "@tsed/schema": "7.0.0-beta.20",
39
42
  "express": "^4.17.1",
40
- "socket.io": "4.1.2",
43
+ "socket.io": "4.4.1",
41
44
  "socket.io-client": "^4.1.2"
42
45
  },
43
46
  "peerDependencies": {
44
- "@tsed/common": "^7.0.0-beta.2",
45
- "@tsed/core": "^7.0.0-beta.2",
46
- "@tsed/di": "^7.0.0-beta.2",
47
- "@tsed/json-mapper": "^7.0.0-beta.2",
48
- "@tsed/logger": ">=6.0.0",
49
- "@tsed/openspec": "^7.0.0-beta.2",
50
- "@tsed/schema": "^7.0.0-beta.2",
47
+ "@tsed/di": "^7.0.0-beta.20",
48
+ "@tsed/json-mapper": "^7.0.0-beta.20",
49
+ "@tsed/logger": ">=6.2.0",
50
+ "@tsed/platform-middlewares": "^7.0.0-beta.20",
51
+ "@tsed/schema": "^7.0.0-beta.20",
51
52
  "socket.io": ">=4.0.0"
52
53
  },
54
+ "peerDependenciesMeta": {
55
+ "@tsed/di": {
56
+ "optional": false
57
+ },
58
+ "@tsed/json-mapper": {
59
+ "optional": false
60
+ },
61
+ "@tsed/platform-middlewares": {
62
+ "optional": false
63
+ },
64
+ "@tsed/schema": {
65
+ "optional": false
66
+ }
67
+ },
53
68
  "repository": "https://github.com/tsedio/tsed",
54
69
  "bugs": {
55
70
  "url": "https://github.com/tsedio/tsed/issues"
56
71
  },
57
- "homepage": "https://github.com/tsedio/tsed/tree/alpha/packages/third-parties/socketio",
72
+ "homepage": "https://github.com/tsedio/tsed/tree/beta/packages/third-parties/socketio",
58
73
  "author": "Romain Lenzotti",
59
- "license": "MIT"
74
+ "license": "MIT",
75
+ "publishConfig": {
76
+ "tag": "beta"
77
+ }
60
78
  }
package/readme.md CHANGED
@@ -11,7 +11,8 @@
11
11
  [![npm version](https://badge.fury.io/js/%40tsed%2Fcommon.svg)](https://badge.fury.io/js/%40tsed%2Fcommon)
12
12
  [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
13
13
  [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
14
- [![backers](https://opencollective.com/tsed/tiers/badge.svg)](https://opencollective.com/tsed)
14
+ [![github](https://img.shields.io/static/v1?label=Github%20sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/romakita)
15
+ [![opencollective](https://img.shields.io/static/v1?label=OpenCollective%20sponsor&message=%E2%9D%A4&logo=OpenCollective&color=%23fe8e86)](https://opencollective.com/tsed)
15
16
 
16
17
  </div>
17
18
 
@@ -45,24 +46,20 @@ Then add the following configuration in your Server:
45
46
  import {Configuration} from "@tsed/common";
46
47
  import "@tsed/socketio"; // import socketio Ts.ED module
47
48
  import {resolve} from "path";
48
- const rootDir = resolve(__dirname)
49
49
 
50
50
  @Configuration({
51
- rootDir,
52
- socketIO: {
53
- // ... see configuration
54
- }
51
+ socketIO: {
52
+ // ... see configuration
53
+ }
55
54
  })
56
- export class Server {
57
-
58
- }
55
+ export class Server {}
59
56
  ```
60
57
 
61
58
  ## Socket Service
62
59
 
63
60
  > Socket.IO allows you to “namespace” your sockets, which essentially means assigning different endpoints or paths.
64
- This is a useful feature to minimize the number of resources (TCP connections) and at the same time separate concerns within your application
65
- by introducing separation between communication channels. See [namespace documentation](https://socket.io/docs/rooms-and-namespaces/#).
61
+ > This is a useful feature to minimize the number of resources (TCP connections) and at the same time separate concerns within your application
62
+ > by introducing separation between communication channels. See [namespace documentation](https://socket.io/docs/rooms-and-namespaces/#).
66
63
 
67
64
  All Socket service work under a namespace and you can create one Socket service per namespace.
68
65
 
@@ -74,31 +71,24 @@ import {SocketService, IO, Nsp, Socket, SocketSession} from "@tsed/socketio";
74
71
 
75
72
  @SocketService("/my-namespace")
76
73
  export class MySocketService {
77
-
78
- @Nsp nsp: SocketIO.Namespace;
79
-
80
- @Nsp("/my-other-namespace")
81
- nspOther: SocketIO.Namespace; // communication between two namespace
82
-
83
- constructor(@IO private io: SocketIO.Server) {}
84
- /**
85
- * Triggered the namespace is created
86
- */
87
- $onNamespaceInit(nsp: SocketIO.Namespace) {
88
-
89
- }
90
- /**
91
- * Triggered when a new client connects to the Namespace.
92
- */
93
- $onConnection(@Socket socket: SocketIO.Socket, @SocketSession session: SocketSession) {
94
-
95
- }
96
- /**
97
- * Triggered when a client disconnects from the Namespace.
98
- */
99
- $onDisconnect(@Socket socket: SocketIO.Socket) {
100
-
101
- }
74
+ @Nsp nsp: SocketIO.Namespace;
75
+
76
+ @Nsp("/my-other-namespace")
77
+ nspOther: SocketIO.Namespace; // communication between two namespace
78
+
79
+ constructor(@IO private io: SocketIO.Server) {}
80
+ /**
81
+ * Triggered the namespace is created
82
+ */
83
+ $onNamespaceInit(nsp: SocketIO.Namespace) {}
84
+ /**
85
+ * Triggered when a new client connects to the Namespace.
86
+ */
87
+ $onConnection(@Socket socket: SocketIO.Socket, @SocketSession session: SocketSession) {}
88
+ /**
89
+ * Triggered when a client disconnects from the Namespace.
90
+ */
91
+ $onDisconnect(@Socket socket: SocketIO.Socket) {}
102
92
  }
103
93
  ```
104
94
 
@@ -112,13 +102,14 @@ import {SocketService, Nsp} from "@tsed/socketio";
112
102
 
113
103
  @SocketService()
114
104
  export class MySocketService {
115
- @Nsp nsp: SocketIO.Namespace;
105
+ @Nsp nsp: SocketIO.Namespace;
116
106
 
117
- helloAll() {
118
- this.nsp.emit('hi', 'everyone!');
119
- }
107
+ helloAll() {
108
+ this.nsp.emit("hi", "everyone!");
109
+ }
120
110
  }
121
111
  ```
112
+
122
113
  Then, you can inject your socket service into another Service, Controller, etc... as following:
123
114
 
124
115
  ```typescript
@@ -127,16 +118,13 @@ import {MySocketService} from "../services/MySocketService";
127
118
 
128
119
  @Controller("/")
129
120
  export class MyCtrl {
130
-
131
- constructor(private mySocketService: MySocketService) {
132
-
133
- }
134
-
135
- @Get("/allo")
136
- allo() {
137
- this.mySocketService.helloAll();
138
- return "is sent";
139
- }
121
+ constructor(private mySocketService: MySocketService) {}
122
+
123
+ @Get("/allo")
124
+ allo() {
125
+ this.mySocketService.helloAll();
126
+ return "is sent";
127
+ }
140
128
  }
141
129
  ```
142
130
 
@@ -149,10 +137,10 @@ import {SocketService, Input, Emit, Args, Socket, Nsp} from "@tsed/socketio";
149
137
 
150
138
  @SocketService("/my-namespace")
151
139
  export class MySocketService {
152
- @Input("eventName")
153
- myMethod(@Args(0) userName: string, @Socket socket: SocketIO.Socket, @Nsp nsp: SocketIO.Namespace) {
154
- console.log(userName);
155
- }
140
+ @Input("eventName")
141
+ myMethod(@Args(0) userName: string, @Socket socket: SocketIO.Socket, @Nsp nsp: SocketIO.Namespace) {
142
+ console.log(userName);
143
+ }
156
144
  }
157
145
  ```
158
146
 
@@ -173,13 +161,14 @@ import {SocketService, Input, Emit, Args, Socket, Nsp} from "@tsed/socketio";
173
161
 
174
162
  @SocketService("/my-namespace")
175
163
  export class MySocketService {
176
- @Input("eventName")
177
- @Emit("responseEventName") // or Broadcast or BroadcastOthers
178
- async myMethod(@Args(0) userName: string, @Socket socket: SocketIO.Socket) {
179
- return "Message " + userName;
180
- }
164
+ @Input("eventName")
165
+ @Emit("responseEventName") // or Broadcast or BroadcastOthers
166
+ async myMethod(@Args(0) userName: string, @Socket socket: SocketIO.Socket) {
167
+ return "Message " + userName;
168
+ }
181
169
  }
182
170
  ```
171
+
183
172
  > The method accept a promise as returned value.
184
173
 
185
174
  ::: warning
@@ -195,17 +184,16 @@ import {SocketService, Input, Emit, Args, SocketSession} from "@tsed/socketio";
195
184
 
196
185
  @SocketService("/my-namespace")
197
186
  export class MySocketService {
198
- @Input("eventName")
199
- @Emit("responseEventName") // or Broadcast or BroadcastOthers
200
- async myMethod(@Args(0) userName: string, @SocketSession session: SocketSession) {
187
+ @Input("eventName")
188
+ @Emit("responseEventName") // or Broadcast or BroadcastOthers
189
+ async myMethod(@Args(0) userName: string, @SocketSession session: SocketSession) {
190
+ const user = session.get("user") || {};
191
+ user.name = userName;
201
192
 
202
- const user = session.get("user") || {}
203
- user.name = userName;
193
+ session.set("user", user);
204
194
 
205
- session.set("user", user);
206
-
207
- return user;
208
- }
195
+ return user;
196
+ }
209
197
  }
210
198
  ```
211
199
 
@@ -222,16 +210,16 @@ import {User} from "../models/User";
222
210
 
223
211
  @SocketMiddleware()
224
212
  export class UserConverterSocketMiddleware {
225
- async use(@Args() args: any[]) {
226
-
227
- let [user] = args;
228
- // update Arguments
229
- user = deserialize(user, {type: User});
230
-
231
- return [user];
232
- }
213
+ async use(@Args() args: any[]) {
214
+ let [user] = args;
215
+ // update Arguments
216
+ user = deserialize(user, {type: User});
217
+
218
+ return [user];
219
+ }
233
220
  }
234
221
  ```
222
+
235
223
  > The user instance will be forwarded to the next middleware and to your decorated method.
236
224
 
237
225
  You can also declare a middleware to handle an error with `@SocketMiddlewareError`.
@@ -242,10 +230,10 @@ import {SocketMiddlewareError, SocketErr, Socket} from "@tsed/socketio";
242
230
 
243
231
  @SocketMiddlewareError()
244
232
  export class ErrorHandlerSocketMiddleware {
245
- async use(@SocketErr err: any, @Socket socket: SocketIO.Socket) {
246
- console.error(err);
247
- socket.emit("error", {message: "An error has occured"})
248
- }
233
+ async use(@SocketErr err: any, @Socket socket: SocketIO.Socket) {
234
+ console.error(err);
235
+ socket.emit("error", {message: "An error has occured"});
236
+ }
249
237
  }
250
238
  ```
251
239
 
@@ -261,7 +249,7 @@ The call sequences is the following for each event request:
261
249
  - Middlewares attached with `@SocketUseBefore` on method,
262
250
  - The method,
263
251
  - Send response if the method is decorated with `@Emit`, `@Broadcast` or `@BroadcastOther`,
264
- - Middlewares attached with `@SocketUseAfter` on method,
252
+ - Middlewares attached with `@SocketUseAfter` on method,
265
253
  - Middlewares attached with `@SocketUseAfter` on class.
266
254
 
267
255
  Middlewares chain use the `Promise` to run it. If one of this middlewares/method emit an error, the first middleware error will be called.
@@ -275,20 +263,18 @@ import {User} from "../models/User";
275
263
  @SocketUseBefore(UserConverterSocketMiddleware) // global version
276
264
  @SocketUseAfter(ErrorHandlerSocketMiddleware)
277
265
  export class MySocketService {
278
-
279
- @Input("eventName")
280
- @Emit("responseEventName") // or Broadcast or BroadcastOthers
281
- @SocketUseBefore(UserConverterSocketMiddleware)
282
- @SocketUseAfter(ErrorHandlerSocketMiddleware)
283
- async myMethod(@Args(0) userName: User) {
284
-
285
- const user = session.get("user") || {}
286
- user.name = userName;
287
-
288
- session.set("user", user);
289
-
290
- return user;
291
- }
266
+ @Input("eventName")
267
+ @Emit("responseEventName") // or Broadcast or BroadcastOthers
268
+ @SocketUseBefore(UserConverterSocketMiddleware)
269
+ @SocketUseAfter(ErrorHandlerSocketMiddleware)
270
+ async myMethod(@Args(0) userName: User) {
271
+ const user = session.get("user") || {};
272
+ user.name = userName;
273
+
274
+ session.set("user", user);
275
+
276
+ return user;
277
+ }
292
278
  }
293
279
  ```
294
280
 
@@ -297,18 +283,17 @@ export class MySocketService {
297
283
  See our documentation https://tsed.io/#/api/index
298
284
 
299
285
  ## Contributors
286
+
300
287
  Please read [contributing guidelines here](https://tsed.io/CONTRIBUTING.html)
301
288
 
302
289
  <a href="https://github.com/tsedio/ts-express-decorators/graphs/contributors"><img src="https://opencollective.com/tsed/contributors.svg?width=890" /></a>
303
290
 
304
-
305
291
  ## Backers
306
292
 
307
293
  Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)]
308
294
 
309
295
  <a href="https://opencollective.com/tsed#backers" target="_blank"><img src="https://opencollective.com/tsed/tiers/backer.svg?width=890"></a>
310
296
 
311
-
312
297
  ## Sponsors
313
298
 
314
299
  Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)]
@@ -317,7 +302,7 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
317
302
 
318
303
  The MIT License (MIT)
319
304
 
320
- Copyright (c) 2016 - 2018 Romain Lenzotti
305
+ Copyright (c) 2016 - 2022 Romain Lenzotti
321
306
 
322
307
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
323
308
 
@@ -8,16 +8,5 @@
8
8
  "declaration": true,
9
9
  "declarationDir": "./lib/types"
10
10
  },
11
- "exclude": [
12
- "node_modules",
13
- "test",
14
- "lib",
15
- "benchmark",
16
- "coverage",
17
- "spec",
18
- "**/*.benchmark.ts",
19
- "**/*.spec.ts",
20
- "keys",
21
- "jest.config.js"
22
- ]
11
+ "exclude": ["node_modules", "test", "lib", "benchmark", "coverage", "spec", "**/*.benchmark.ts", "**/*.spec.ts", "keys", "jest.config.js"]
23
12
  }
package/.mocharc.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- ...require('@tsed/mocha-config')(),
3
- spec: ["{src,test}/**/*.spec.ts"],
4
- exclude: [],
5
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,eAAe,CAAC","sourcesContent":["export const PROVIDER_TYPE_SOCKET_SERVICE = \"socketService\";\n"]}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./SocketHandlerMetadata"), exports);
5
- (0, tslib_1.__exportStar)(require("./SocketParamMetadata"), exports);
6
- (0, tslib_1.__exportStar)(require("./SocketProviderTypes"), exports);
7
- (0, tslib_1.__exportStar)(require("./OnNamespaceInit"), exports);
8
- (0, tslib_1.__exportStar)(require("./SocketFilters"), exports);
9
- (0, tslib_1.__exportStar)(require("./SocketReturnsTypes"), exports);
10
- (0, tslib_1.__exportStar)(require("./SocketInjectableNsp"), exports);
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAUA,uEAAwC;AACxC,qEAAsC;AACtC,qEAAsC;AACtC,iEAAkC;AAClC,+DAAgC;AAChC,oEAAqC;AACrC,qEAAsC","sourcesContent":["import SocketIO from \"socket.io\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n socketIO: Partial<SocketIO.ServerOptions>;\n }\n }\n}\n\nexport * from \"./SocketHandlerMetadata\";\nexport * from \"./SocketParamMetadata\";\nexport * from \"./SocketProviderTypes\";\nexport * from \"./OnNamespaceInit\";\nexport * from \"./SocketFilters\";\nexport * from \"./SocketReturnsTypes\";\nexport * from \"./SocketInjectableNsp\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC","sourcesContent":["export const PROVIDER_TYPE_SOCKET_SERVICE = \"socketService\";\n"]}
@@ -1,8 +0,0 @@
1
- export * from "./SocketHandlerMetadata";
2
- export * from "./SocketParamMetadata";
3
- export * from "./SocketProviderTypes";
4
- export * from "./OnNamespaceInit";
5
- export * from "./SocketFilters";
6
- export * from "./SocketReturnsTypes";
7
- export * from "./SocketInjectableNsp";
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAUA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC","sourcesContent":["import SocketIO from \"socket.io\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n socketIO: Partial<SocketIO.ServerOptions>;\n }\n }\n}\n\nexport * from \"./SocketHandlerMetadata\";\nexport * from \"./SocketParamMetadata\";\nexport * from \"./SocketProviderTypes\";\nexport * from \"./OnNamespaceInit\";\nexport * from \"./SocketFilters\";\nexport * from \"./SocketReturnsTypes\";\nexport * from \"./SocketInjectableNsp\";\n"]}
@@ -1,15 +0,0 @@
1
- import SocketIO from "socket.io";
2
- declare global {
3
- namespace TsED {
4
- interface Configuration {
5
- socketIO: Partial<SocketIO.ServerOptions>;
6
- }
7
- }
8
- }
9
- export * from "./SocketHandlerMetadata";
10
- export * from "./SocketParamMetadata";
11
- export * from "./SocketProviderTypes";
12
- export * from "./OnNamespaceInit";
13
- export * from "./SocketFilters";
14
- export * from "./SocketReturnsTypes";
15
- export * from "./SocketInjectableNsp";