@tsed/common 7.0.0-beta.8 → 7.0.0-rc.2

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 (203) hide show
  1. package/coverage.json +6 -0
  2. package/jest.config.js +9 -0
  3. package/lib/cjs/builder/PlatformBuilder.js +86 -68
  4. package/lib/cjs/builder/PlatformBuilder.js.map +1 -1
  5. package/lib/cjs/config/interfaces/PlatformLoggerSettings.js.map +1 -1
  6. package/lib/cjs/config/services/PlatformConfiguration.js +0 -64
  7. package/lib/cjs/config/services/PlatformConfiguration.js.map +1 -1
  8. package/lib/cjs/decorators/params/error.js +1 -1
  9. package/lib/cjs/decorators/params/error.js.map +1 -1
  10. package/lib/cjs/domain/AnyToPromiseWithCtx.js +4 -5
  11. package/lib/cjs/domain/AnyToPromiseWithCtx.js.map +1 -1
  12. package/lib/cjs/domain/PlatformContext.js +46 -38
  13. package/lib/cjs/domain/PlatformContext.js.map +1 -1
  14. package/lib/cjs/domain/PlatformRouteDetails.js +0 -21
  15. package/lib/cjs/domain/PlatformRouteDetails.js.map +1 -1
  16. package/lib/cjs/exports.js +1 -1
  17. package/lib/cjs/exports.js.map +1 -1
  18. package/lib/cjs/index.js +1 -9
  19. package/lib/cjs/index.js.map +1 -1
  20. package/lib/cjs/interfaces/PlatformRouteOptions.js.map +1 -1
  21. package/lib/cjs/interfaces/Route.js.map +1 -1
  22. package/lib/cjs/middlewares/PlatformAcceptMimesMiddleware.js +2 -1
  23. package/lib/cjs/middlewares/PlatformAcceptMimesMiddleware.js.map +1 -1
  24. package/lib/cjs/middlewares/PlatformMulterMiddleware.js +2 -0
  25. package/lib/cjs/middlewares/PlatformMulterMiddleware.js.map +1 -1
  26. package/lib/cjs/services/FakeAdapter.js +6 -12
  27. package/lib/cjs/services/FakeAdapter.js.map +1 -1
  28. package/lib/cjs/services/Platform.js +30 -86
  29. package/lib/cjs/services/Platform.js.map +1 -1
  30. package/lib/cjs/services/PlatformAdapter.js +10 -0
  31. package/lib/cjs/services/PlatformAdapter.js.map +1 -1
  32. package/lib/cjs/services/PlatformApplication.js +23 -9
  33. package/lib/cjs/services/PlatformApplication.js.map +1 -1
  34. package/lib/cjs/services/PlatformHandler.js +112 -171
  35. package/lib/cjs/services/PlatformHandler.js.map +1 -1
  36. package/lib/cjs/services/PlatformMiddlewaresChain.js +5 -19
  37. package/lib/cjs/services/PlatformMiddlewaresChain.js.map +1 -1
  38. package/lib/cjs/services/PlatformRequest.js +16 -12
  39. package/lib/cjs/services/PlatformRequest.js.map +1 -1
  40. package/lib/cjs/services/PlatformResponse.js +19 -22
  41. package/lib/cjs/services/PlatformResponse.js.map +1 -1
  42. package/lib/cjs/services/PlatformTest.js +29 -9
  43. package/lib/cjs/services/PlatformTest.js.map +1 -1
  44. package/lib/cjs/utils/createContext.js +32 -21
  45. package/lib/cjs/utils/createContext.js.map +1 -1
  46. package/lib/cjs/utils/createHttpServer.js +3 -3
  47. package/lib/cjs/utils/createHttpServer.js.map +1 -1
  48. package/lib/cjs/utils/createHttpsServer.js +3 -3
  49. package/lib/cjs/utils/createHttpsServer.js.map +1 -1
  50. package/lib/cjs/utils/createInjector.js +6 -8
  51. package/lib/cjs/utils/createInjector.js.map +1 -1
  52. package/lib/cjs/utils/ensureContext.js +16 -0
  53. package/lib/cjs/utils/ensureContext.js.map +1 -0
  54. package/lib/cjs/utils/getConfiguration.js +6 -12
  55. package/lib/cjs/utils/getConfiguration.js.map +1 -1
  56. package/lib/cjs/utils/printRoutes.js +10 -8
  57. package/lib/cjs/utils/printRoutes.js.map +1 -1
  58. package/lib/cjs/utils/setResponseHeaders.js +8 -14
  59. package/lib/cjs/utils/setResponseHeaders.js.map +1 -1
  60. package/lib/esm/builder/PlatformBuilder.js +63 -68
  61. package/lib/esm/builder/PlatformBuilder.js.map +1 -1
  62. package/lib/esm/config/interfaces/PlatformLoggerSettings.js.map +1 -1
  63. package/lib/esm/config/services/PlatformConfiguration.js +0 -64
  64. package/lib/esm/config/services/PlatformConfiguration.js.map +1 -1
  65. package/lib/esm/decorators/params/error.js +1 -1
  66. package/lib/esm/decorators/params/error.js.map +1 -1
  67. package/lib/esm/domain/AnyToPromiseWithCtx.js +4 -5
  68. package/lib/esm/domain/AnyToPromiseWithCtx.js.map +1 -1
  69. package/lib/esm/domain/PlatformContext.js +46 -38
  70. package/lib/esm/domain/PlatformContext.js.map +1 -1
  71. package/lib/esm/domain/PlatformRouteDetails.js +1 -19
  72. package/lib/esm/domain/PlatformRouteDetails.js.map +1 -1
  73. package/lib/esm/exports.js +1 -1
  74. package/lib/esm/exports.js.map +1 -1
  75. package/lib/esm/index.js +1 -9
  76. package/lib/esm/index.js.map +1 -1
  77. package/lib/esm/interfaces/PlatformRouteOptions.js.map +1 -1
  78. package/lib/esm/interfaces/Route.js.map +1 -1
  79. package/lib/esm/middlewares/PlatformAcceptMimesMiddleware.js +2 -1
  80. package/lib/esm/middlewares/PlatformAcceptMimesMiddleware.js.map +1 -1
  81. package/lib/esm/middlewares/PlatformMulterMiddleware.js +2 -0
  82. package/lib/esm/middlewares/PlatformMulterMiddleware.js.map +1 -1
  83. package/lib/esm/services/FakeAdapter.js +6 -12
  84. package/lib/esm/services/FakeAdapter.js.map +1 -1
  85. package/lib/esm/services/Platform.js +31 -87
  86. package/lib/esm/services/Platform.js.map +1 -1
  87. package/lib/esm/services/PlatformAdapter.js +10 -0
  88. package/lib/esm/services/PlatformAdapter.js.map +1 -1
  89. package/lib/esm/services/PlatformApplication.js +23 -9
  90. package/lib/esm/services/PlatformApplication.js.map +1 -1
  91. package/lib/esm/services/PlatformHandler.js +114 -173
  92. package/lib/esm/services/PlatformHandler.js.map +1 -1
  93. package/lib/esm/services/PlatformMiddlewaresChain.js +5 -19
  94. package/lib/esm/services/PlatformMiddlewaresChain.js.map +1 -1
  95. package/lib/esm/services/PlatformRequest.js +16 -12
  96. package/lib/esm/services/PlatformRequest.js.map +1 -1
  97. package/lib/esm/services/PlatformResponse.js +19 -22
  98. package/lib/esm/services/PlatformResponse.js.map +1 -1
  99. package/lib/esm/services/PlatformTest.js +29 -9
  100. package/lib/esm/services/PlatformTest.js.map +1 -1
  101. package/lib/esm/utils/createContext.js +30 -20
  102. package/lib/esm/utils/createContext.js.map +1 -1
  103. package/lib/esm/utils/createHttpServer.js +3 -3
  104. package/lib/esm/utils/createHttpServer.js.map +1 -1
  105. package/lib/esm/utils/createHttpsServer.js +3 -3
  106. package/lib/esm/utils/createHttpsServer.js.map +1 -1
  107. package/lib/esm/utils/createInjector.js +7 -9
  108. package/lib/esm/utils/createInjector.js.map +1 -1
  109. package/lib/esm/utils/ensureContext.js +12 -0
  110. package/lib/esm/utils/ensureContext.js.map +1 -0
  111. package/lib/esm/utils/getConfiguration.js +8 -14
  112. package/lib/esm/utils/getConfiguration.js.map +1 -1
  113. package/lib/esm/utils/printRoutes.js +10 -8
  114. package/lib/esm/utils/printRoutes.js.map +1 -1
  115. package/lib/esm/utils/setResponseHeaders.js +8 -14
  116. package/lib/esm/utils/setResponseHeaders.js.map +1 -1
  117. package/lib/types/builder/PlatformBuilder.d.ts +17 -16
  118. package/lib/types/config/interfaces/PlatformLoggerSettings.d.ts +2 -43
  119. package/lib/types/config/services/PlatformConfiguration.d.ts +6 -22
  120. package/lib/types/domain/AnyToPromiseWithCtx.d.ts +1 -9
  121. package/lib/types/domain/PlatformContext.d.ts +32 -18
  122. package/lib/types/domain/PlatformRouteDetails.d.ts +4 -19
  123. package/lib/types/exports.d.ts +1 -1
  124. package/lib/types/index.d.ts +1 -9
  125. package/lib/types/interfaces/PlatformRouteOptions.d.ts +0 -1
  126. package/lib/types/interfaces/Route.d.ts +2 -3
  127. package/lib/types/middlewares/PlatformMulterMiddleware.d.ts +1 -1
  128. package/lib/types/services/FakeAdapter.d.ts +7 -6
  129. package/lib/types/services/Platform.d.ts +7 -28
  130. package/lib/types/services/PlatformAdapter.d.ts +22 -11
  131. package/lib/types/services/PlatformApplication.d.ts +14 -6
  132. package/lib/types/services/PlatformHandler.d.ts +21 -59
  133. package/lib/types/services/PlatformMiddlewaresChain.d.ts +1 -2
  134. package/lib/types/services/PlatformRequest.d.ts +8 -10
  135. package/lib/types/services/PlatformResponse.d.ts +11 -15
  136. package/lib/types/services/PlatformTest.d.ts +4 -3
  137. package/lib/types/utils/createContext.d.ts +4 -1
  138. package/lib/types/utils/createHttpsServer.d.ts +1 -0
  139. package/lib/types/utils/createInjector.d.ts +2 -2
  140. package/lib/types/utils/ensureContext.d.ts +2 -0
  141. package/lib/types/utils/listenServer.d.ts +2 -0
  142. package/package.json +27 -25
  143. package/readme.md +2 -1
  144. package/lib/cjs/builder/PlatformControllerBuilder.js +0 -82
  145. package/lib/cjs/builder/PlatformControllerBuilder.js.map +0 -1
  146. package/lib/cjs/config/interfaces/EndpointDirectoriesSettings.js +0 -3
  147. package/lib/cjs/config/interfaces/EndpointDirectoriesSettings.js.map +0 -1
  148. package/lib/cjs/domain/ControllerProvider.js +0 -51
  149. package/lib/cjs/domain/ControllerProvider.js.map +0 -1
  150. package/lib/cjs/domain/HandlerMetadata.js +0 -57
  151. package/lib/cjs/domain/HandlerMetadata.js.map +0 -1
  152. package/lib/cjs/middlewares/__mock__/FakeCtrl.js +0 -12
  153. package/lib/cjs/middlewares/__mock__/FakeCtrl.js.map +0 -1
  154. package/lib/cjs/middlewares/bindEndpointMiddleware.js +0 -13
  155. package/lib/cjs/middlewares/bindEndpointMiddleware.js.map +0 -1
  156. package/lib/cjs/services/PlatformRouter.js +0 -108
  157. package/lib/cjs/services/PlatformRouter.js.map +0 -1
  158. package/lib/cjs/utils/__mock__/Test1.js +0 -8
  159. package/lib/cjs/utils/__mock__/Test1.js.map +0 -1
  160. package/lib/cjs/utils/__mock__/Test2.js +0 -8
  161. package/lib/cjs/utils/__mock__/Test2.js.map +0 -1
  162. package/lib/cjs/utils/createHandlerMetadata.js +0 -49
  163. package/lib/cjs/utils/createHandlerMetadata.js.map +0 -1
  164. package/lib/cjs/utils/importProviders.js +0 -29
  165. package/lib/cjs/utils/importProviders.js.map +0 -1
  166. package/lib/cjs/utils/useCtxHandler.js +0 -15
  167. package/lib/cjs/utils/useCtxHandler.js.map +0 -1
  168. package/lib/esm/builder/PlatformControllerBuilder.js +0 -76
  169. package/lib/esm/builder/PlatformControllerBuilder.js.map +0 -1
  170. package/lib/esm/config/interfaces/EndpointDirectoriesSettings.js +0 -2
  171. package/lib/esm/config/interfaces/EndpointDirectoriesSettings.js.map +0 -1
  172. package/lib/esm/domain/ControllerProvider.js +0 -47
  173. package/lib/esm/domain/ControllerProvider.js.map +0 -1
  174. package/lib/esm/domain/HandlerMetadata.js +0 -53
  175. package/lib/esm/domain/HandlerMetadata.js.map +0 -1
  176. package/lib/esm/middlewares/__mock__/FakeCtrl.js +0 -9
  177. package/lib/esm/middlewares/__mock__/FakeCtrl.js.map +0 -1
  178. package/lib/esm/middlewares/bindEndpointMiddleware.js +0 -9
  179. package/lib/esm/middlewares/bindEndpointMiddleware.js.map +0 -1
  180. package/lib/esm/services/PlatformRouter.js +0 -105
  181. package/lib/esm/services/PlatformRouter.js.map +0 -1
  182. package/lib/esm/utils/__mock__/Test1.js +0 -4
  183. package/lib/esm/utils/__mock__/Test1.js.map +0 -1
  184. package/lib/esm/utils/__mock__/Test2.js +0 -4
  185. package/lib/esm/utils/__mock__/Test2.js.map +0 -1
  186. package/lib/esm/utils/createHandlerMetadata.js +0 -45
  187. package/lib/esm/utils/createHandlerMetadata.js.map +0 -1
  188. package/lib/esm/utils/importProviders.js +0 -25
  189. package/lib/esm/utils/importProviders.js.map +0 -1
  190. package/lib/esm/utils/useCtxHandler.js +0 -11
  191. package/lib/esm/utils/useCtxHandler.js.map +0 -1
  192. package/lib/types/builder/PlatformControllerBuilder.d.ts +0 -18
  193. package/lib/types/config/interfaces/EndpointDirectoriesSettings.d.ts +0 -3
  194. package/lib/types/domain/ControllerProvider.d.ts +0 -24
  195. package/lib/types/domain/HandlerMetadata.d.ts +0 -32
  196. package/lib/types/middlewares/__mock__/FakeCtrl.d.ts +0 -2
  197. package/lib/types/middlewares/bindEndpointMiddleware.d.ts +0 -6
  198. package/lib/types/services/PlatformRouter.d.ts +0 -51
  199. package/lib/types/utils/__mock__/Test1.d.ts +0 -3
  200. package/lib/types/utils/__mock__/Test2.d.ts +0 -3
  201. package/lib/types/utils/createHandlerMetadata.d.ts +0 -8
  202. package/lib/types/utils/importProviders.d.ts +0 -10
  203. package/lib/types/utils/useCtxHandler.d.ts +0 -13
@@ -6,26 +6,44 @@ const PlatformApplication_1 = require("../services/PlatformApplication");
6
6
  const PlatformRequest_1 = require("../services/PlatformRequest");
7
7
  const PlatformResponse_1 = require("../services/PlatformResponse");
8
8
  class PlatformContext extends di_1.DIContext {
9
- constructor({ event, endpoint, ignoreUrlPatterns = [], ResponseKlass = PlatformResponse_1.PlatformResponse, RequestKlass = PlatformRequest_1.PlatformRequest, ...options }) {
10
- super({
11
- ...options,
12
- ignoreLog: () => {
13
- return this.ignoreUrlPatterns.find((reg) => !!this.url.match(reg));
14
- }
15
- });
16
- this.ignoreUrlPatterns = [];
17
- endpoint && (this.endpoint = endpoint);
18
- this.ignoreUrlPatterns = ignoreUrlPatterns.map((pattern) => typeof pattern === "string" ? new RegExp(pattern, "gi") : pattern);
19
- this.response = new ResponseKlass(event, this);
20
- this.request = new RequestKlass(event, this);
21
- this.response.request = this.request;
22
- this.request.response = this.response;
9
+ event;
10
+ /**
11
+ * The data return by the previous endpoint if you use multiple handler on the same route. By default data is empty.
12
+ */
13
+ data;
14
+ /**
15
+ * The error caught by the current handler
16
+ */
17
+ error;
18
+ /**
19
+ *
20
+ */
21
+ next;
22
+ /**
23
+ * The current @@PlatformResponse@@.
24
+ */
25
+ response;
26
+ /**
27
+ * The current @@PlatformRequest@@.
28
+ */
29
+ request;
30
+ /**
31
+ * The current @@EndpointMetadata@@ resolved by Ts.ED during the request.
32
+ */
33
+ endpoint;
34
+ /**
35
+ * The current @@PlatformHandlerMetadata@@ resolved by Ts.ED during the request.
36
+ */
37
+ handlerMetadata;
38
+ #isFinished = false;
39
+ constructor(options) {
40
+ super(options);
41
+ options.endpoint && (this.endpoint = options.endpoint);
42
+ this.event = options.event;
43
+ this.response = new (options.ResponseKlass || PlatformResponse_1.PlatformResponse)(this);
44
+ this.request = new (options.RequestKlass || PlatformRequest_1.PlatformRequest)(this);
23
45
  this.request.request.$ctx = this;
24
46
  this.request.request.id = this.id;
25
- this.logger.url = this.url;
26
- this.container.set(PlatformResponse_1.PlatformResponse, this.response);
27
- this.container.set(PlatformRequest_1.PlatformRequest, this.request);
28
- this.container.set(PlatformContext, this);
29
47
  this.response.setHeader("x-request-id", this.id);
30
48
  }
31
49
  get url() {
@@ -34,28 +52,18 @@ class PlatformContext extends di_1.DIContext {
34
52
  get app() {
35
53
  return this.injector.get(PlatformApplication_1.PlatformApplication);
36
54
  }
37
- async destroy() {
38
- var _a, _b;
39
- await super.destroy();
40
- (_b = (_a = this.request) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? true : delete _b.$ctx;
41
- this.response.destroy();
42
- this.request.destroy();
43
- // @ts-ignore
44
- delete this.endpoint;
45
- // @ts-ignore
46
- delete this.response;
47
- // @ts-ignore
48
- delete this.request;
55
+ async start() {
56
+ return this.emit("$onRequest", this);
57
+ }
58
+ async finish() {
59
+ await Promise.all([this.emit("$onResponse", this), this.destroy()]);
60
+ this.#isFinished = true;
61
+ }
62
+ isFinished() {
63
+ return this.#isFinished;
49
64
  }
50
65
  isDone() {
51
- var _a, _b;
52
- if (!this.request || !this.response) {
53
- return true;
54
- }
55
- if ((_a = this.request) === null || _a === void 0 ? void 0 : _a.isAborted()) {
56
- return true;
57
- }
58
- return (_b = this.response) === null || _b === void 0 ? void 0 : _b.isDone();
66
+ return this.request?.isAborted() || this.response?.isDone() || this.isFinished();
59
67
  }
60
68
  /**
61
69
  * Return the framework request instance (Express, Koa, etc...)
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformContext.js","sourceRoot":"","sources":["../../../src/domain/PlatformContext.ts"],"names":[],"mappings":"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","sourcesContent":["import {ContextMethods, DIContext, DIContextOptions} from \"@tsed/di\";\nimport {IncomingMessage, ServerResponse} from \"http\";\nimport {EndpointMetadata} from \"@tsed/schema\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\nimport {PlatformRequest} from \"../services/PlatformRequest\";\nimport {PlatformResponse} from \"../services/PlatformResponse\";\n\ndeclare global {\n namespace TsED {\n export interface Context extends PlatformContext {}\n }\n}\n\nexport interface PlatformContextOptions extends DIContextOptions {\n event: {\n response?: ServerResponse;\n request?: IncomingMessage;\n };\n ignoreUrlPatterns?: any[];\n endpoint?: EndpointMetadata;\n}\n\nexport class PlatformContext extends DIContext implements ContextMethods {\n /**\n * The current @@EndpointMetadata@@ resolved by Ts.ED during the request.\n */\n public endpoint: EndpointMetadata;\n /**\n * The data return by the previous endpoint if you use multiple handler on the same route. By default data is empty.\n */\n public data: any;\n /**\n * The current @@PlatformResponse@@.\n */\n public response: PlatformResponse;\n /**\n * The current @@PlatformRequest@@.\n */\n public request: PlatformRequest;\n\n private ignoreUrlPatterns: RegExp[] = [];\n\n constructor({\n event,\n endpoint,\n ignoreUrlPatterns = [],\n ResponseKlass = PlatformResponse,\n RequestKlass = PlatformRequest,\n ...options\n }: PlatformContextOptions) {\n super({\n ...options,\n ignoreLog: () => {\n return this.ignoreUrlPatterns.find((reg) => !!this.url.match(reg));\n }\n });\n\n endpoint && (this.endpoint = endpoint);\n\n this.ignoreUrlPatterns = ignoreUrlPatterns.map((pattern: string | RegExp) =>\n typeof pattern === \"string\" ? new RegExp(pattern, \"gi\") : pattern\n );\n\n this.response = new ResponseKlass(event, this);\n this.request = new RequestKlass(event, this);\n\n this.response.request = this.request;\n this.request.response = this.response;\n\n this.request.request.$ctx = this;\n this.request.request.id = this.id;\n this.logger.url = this.url;\n\n this.container.set(PlatformResponse, this.response);\n this.container.set(PlatformRequest, this.request);\n this.container.set(PlatformContext, this);\n\n this.response.setHeader(\"x-request-id\", this.id);\n }\n\n get url() {\n return this.request.url;\n }\n\n get app() {\n return this.injector.get<PlatformApplication>(PlatformApplication)!;\n }\n\n async destroy() {\n await super.destroy();\n\n delete this.request?.request?.$ctx;\n\n this.response.destroy();\n this.request.destroy();\n\n // @ts-ignore\n delete this.endpoint;\n // @ts-ignore\n delete this.response;\n // @ts-ignore\n delete this.request;\n }\n\n isDone() {\n if (!this.request || !this.response) {\n return true;\n }\n\n if (this.request?.isAborted()) {\n return true;\n }\n\n return this.response?.isDone();\n }\n\n /**\n * Return the framework request instance (Express, Koa, etc...)\n */\n getRequest<Req = any>(): Req {\n return this.request.getRequest<Req>();\n }\n\n /**\n * Return the framework response instance (Express, Koa, etc...)\n */\n getResponse<Res = any>(): Res {\n return this.response.getResponse<Res>();\n }\n\n /**\n * Get Node.js request\n */\n getReq(): IncomingMessage {\n return this.request.getReq();\n }\n\n /**\n * Get Node.js response\n */\n getRes(): ServerResponse {\n return this.response.getRes();\n }\n\n /**\n * Return the original application instance.\n */\n getApp<T = any>(): T {\n return this.app.getApp() as any;\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformContext.js","sourceRoot":"","sources":["../../../src/domain/PlatformContext.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AAKrD,yEAAoE;AACpE,iEAA4D;AAC5D,mEAA8D;AAc9D,MAAa,eAGX,SAAQ,cAAS;IACV,KAAK,CAAgB;IAC5B;;OAEG;IACI,IAAI,CAAM;IACjB;;OAEG;IACI,KAAK,CAAW;IACvB;;OAEG;IACI,IAAI,CAAO;IAClB;;OAEG;IACM,QAAQ,CAAO;IACxB;;OAEG;IACM,OAAO,CAAO;IACvB;;OAEG;IACH,QAAQ,CAAmB;IAC3B;;OAEG;IACH,eAAe,CAA0B;IAEzC,WAAW,GAAY,KAAK,CAAC;IAE7B,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,mCAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,iCAAe,CAAC,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAElC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAsB,yCAAmB,CAAE,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAO,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAO,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAS,CAAC;IAClC,CAAC;CACF;AA9GD,0CA8GC","sourcesContent":["import {DIContext, DIContextOptions} from \"@tsed/di\";\nimport {PlatformHandlerMetadata} from \"@tsed/platform-router\";\nimport {EndpointMetadata} from \"@tsed/schema\";\nimport {IncomingMessage, ServerResponse} from \"http\";\nimport {IncomingEvent} from \"../interfaces/IncomingEvent\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\nimport {PlatformRequest} from \"../services/PlatformRequest\";\nimport {PlatformResponse} from \"../services/PlatformResponse\";\n\ndeclare global {\n namespace TsED {\n export interface Context extends PlatformContext {}\n }\n}\n\nexport interface PlatformContextOptions extends DIContextOptions {\n event: IncomingEvent;\n ignoreUrlPatterns?: any[];\n endpoint?: EndpointMetadata;\n}\n\nexport class PlatformContext<\n PReq extends PlatformRequest = PlatformRequest,\n PRes extends PlatformResponse = PlatformResponse\n> extends DIContext {\n public event: IncomingEvent;\n /**\n * The data return by the previous endpoint if you use multiple handler on the same route. By default data is empty.\n */\n public data: any;\n /**\n * The error caught by the current handler\n */\n public error?: unknown;\n /**\n *\n */\n public next?: any;\n /**\n * The current @@PlatformResponse@@.\n */\n readonly response: PRes;\n /**\n * The current @@PlatformRequest@@.\n */\n readonly request: PReq;\n /**\n * The current @@EndpointMetadata@@ resolved by Ts.ED during the request.\n */\n endpoint: EndpointMetadata;\n /**\n * The current @@PlatformHandlerMetadata@@ resolved by Ts.ED during the request.\n */\n handlerMetadata: PlatformHandlerMetadata;\n\n #isFinished: boolean = false;\n\n constructor(options: PlatformContextOptions) {\n super(options);\n\n options.endpoint && (this.endpoint = options.endpoint);\n\n this.event = options.event;\n this.response = new (options.ResponseKlass || PlatformResponse)(this);\n this.request = new (options.RequestKlass || PlatformRequest)(this);\n\n this.request.request.$ctx = this;\n this.request.request.id = this.id;\n\n this.response.setHeader(\"x-request-id\", this.id);\n }\n\n get url() {\n return this.request.url;\n }\n\n get app() {\n return this.injector.get<PlatformApplication>(PlatformApplication)!;\n }\n\n async start() {\n return this.emit(\"$onRequest\", this);\n }\n\n async finish() {\n await Promise.all([this.emit(\"$onResponse\", this), this.destroy()]);\n this.#isFinished = true;\n }\n\n isFinished() {\n return this.#isFinished;\n }\n\n isDone() {\n return this.request?.isAborted() || this.response?.isDone() || this.isFinished();\n }\n\n /**\n * Return the framework request instance (Express, Koa, etc...)\n */\n getRequest<Req = any>(): Req {\n return this.request.getRequest<Req>();\n }\n\n /**\n * Return the framework response instance (Express, Koa, etc...)\n */\n getResponse<Res = any>(): Res {\n return this.response.getResponse<Res>();\n }\n\n /**\n * Get Node.js request\n */\n getReq(): IncomingMessage {\n return this.request.getReq();\n }\n\n /**\n * Get Node.js response\n */\n getRes(): ServerResponse {\n return this.response.getRes();\n }\n\n /**\n * Return the original application instance.\n */\n getApp<T = any>(): T {\n return this.app.getApp() as any;\n }\n}\n"]}
@@ -1,24 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlatformRouteDetails = void 0;
4
- const platform_params_1 = require("@tsed/platform-params");
5
- const schema_1 = require("@tsed/schema");
6
- class PlatformRouteDetails extends schema_1.JsonOperationRoute {
7
- constructor(options = {}) {
8
- super(options);
9
- this.rawBody = !!this.endpoint.parameters.find((param) => param.paramType === platform_params_1.ParamTypes.RAW_BODY);
10
- }
11
- toJSON() {
12
- return {
13
- method: this.method,
14
- name: this.name,
15
- url: this.url,
16
- className: this.className,
17
- methodClassName: this.methodClassName,
18
- parameters: this.parameters,
19
- rawBody: this.rawBody
20
- };
21
- }
22
- }
23
- exports.PlatformRouteDetails = PlatformRouteDetails;
24
3
  //# sourceMappingURL=PlatformRouteDetails.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouteDetails.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouteDetails.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AACjD,yCAAkE;AAUlE,MAAa,oBAAqB,SAAQ,2BAAoC;IAI5E,YAAY,UAAyC,EAAE;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,4BAAU,CAAC,QAAQ,CAAC,CAAC;IACrG,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AApBD,oDAoBC","sourcesContent":["import {ParamTypes} from \"@tsed/platform-params\";\nimport {EndpointMetadata, JsonOperationRoute} from \"@tsed/schema\";\nimport {ControllerProvider} from \"./ControllerProvider\";\n\nexport interface PlatformRouterDetailsOptions {\n provider: ControllerProvider;\n endpoint: EndpointMetadata;\n method: string;\n url: string;\n}\n\nexport class PlatformRouteDetails extends JsonOperationRoute<EndpointMetadata> {\n readonly rawBody: boolean;\n readonly provider: ControllerProvider;\n\n constructor(options: Partial<PlatformRouteDetails> = {}) {\n super(options);\n this.rawBody = !!this.endpoint.parameters.find((param) => param.paramType === ParamTypes.RAW_BODY);\n }\n\n toJSON() {\n return {\n method: this.method,\n name: this.name,\n url: this.url,\n className: this.className,\n methodClassName: this.methodClassName,\n parameters: this.parameters,\n rawBody: this.rawBody\n };\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformRouteDetails.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouteDetails.ts"],"names":[],"mappings":"","sourcesContent":["export interface PlatformRouteDetails {\n method: string;\n name: string;\n url: string;\n className: string;\n methodClassName: string;\n}\n"]}
@@ -8,10 +8,10 @@ tslib_1.__exportStar(require("@tsed/di"), exports);
8
8
  tslib_1.__exportStar(require("@tsed/platform-params"), exports);
9
9
  tslib_1.__exportStar(require("@tsed/platform-exceptions"), exports);
10
10
  tslib_1.__exportStar(require("@tsed/platform-response-filter"), exports);
11
- tslib_1.__exportStar(require("@tsed/platform-cache"), exports);
12
11
  tslib_1.__exportStar(require("@tsed/platform-middlewares"), exports);
13
12
  tslib_1.__exportStar(require("@tsed/components-scan"), exports);
14
13
  tslib_1.__exportStar(require("@tsed/platform-log-middleware"), exports);
14
+ tslib_1.__exportStar(require("@tsed/platform-router"), exports);
15
15
  var logger_1 = require("@tsed/logger");
16
16
  Object.defineProperty(exports, "$log", { enumerable: true, get: function () { return logger_1.$log; } });
17
17
  Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;;AAAA,wBAAsB;AACtB,6BAA2B;AAE3B,mDAAyB;AACzB,gEAAsC;AACtC,oEAA0C;AAC1C,yEAA+C;AAC/C,+DAAqC;AACrC,qEAA2C;AAC3C,gEAAsC;AACtC,wEAA8C;AAE9C,uCAA0C;AAAlC,8FAAA,IAAI,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEpB,uCAAqH;AAA7G,oGAAA,UAAU,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,+FAAA,KAAK,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,6FAAA,GAAG,OAAA","sourcesContent":["import \"@tsed/logger\";\nimport \"@tsed/logger-file\";\n\nexport * from \"@tsed/di\";\nexport * from \"@tsed/platform-params\";\nexport * from \"@tsed/platform-exceptions\";\nexport * from \"@tsed/platform-response-filter\";\nexport * from \"@tsed/platform-cache\";\nexport * from \"@tsed/platform-middlewares\";\nexport * from \"@tsed/components-scan\";\nexport * from \"@tsed/platform-log-middleware\";\n\nexport {$log, Logger} from \"@tsed/logger\";\n\nexport {AcceptMime, Location, Redirect, View, Get, Post, Put, Patch, Delete, Head, Options, All} from \"@tsed/schema\";\n"]}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;;AAAA,wBAAsB;AACtB,6BAA2B;AAE3B,mDAAyB;AACzB,gEAAsC;AACtC,oEAA0C;AAC1C,yEAA+C;AAC/C,qEAA2C;AAC3C,gEAAsC;AACtC,wEAA8C;AAC9C,gEAAsC;AAEtC,uCAA0C;AAAlC,8FAAA,IAAI,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEpB,uCAAqH;AAA7G,oGAAA,UAAU,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,+FAAA,KAAK,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,6FAAA,GAAG,OAAA","sourcesContent":["import \"@tsed/logger\";\nimport \"@tsed/logger-file\";\n\nexport * from \"@tsed/di\";\nexport * from \"@tsed/platform-params\";\nexport * from \"@tsed/platform-exceptions\";\nexport * from \"@tsed/platform-response-filter\";\nexport * from \"@tsed/platform-middlewares\";\nexport * from \"@tsed/components-scan\";\nexport * from \"@tsed/platform-log-middleware\";\nexport * from \"@tsed/platform-router\";\n\nexport {$log, Logger} from \"@tsed/logger\";\n\nexport {AcceptMime, Location, Redirect, View, Get, Post, Put, Patch, Delete, Head, Options, All} from \"@tsed/schema\";\n"]}
package/lib/cjs/index.js CHANGED
@@ -6,9 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./exports"), exports);
8
8
  tslib_1.__exportStar(require("./builder/PlatformBuilder"), exports);
9
- tslib_1.__exportStar(require("./builder/PlatformControllerBuilder"), exports);
10
9
  tslib_1.__exportStar(require("./config/interfaces/ConverterSettings"), exports);
11
- tslib_1.__exportStar(require("./config/interfaces/EndpointDirectoriesSettings"), exports);
12
10
  tslib_1.__exportStar(require("./config/interfaces/PlatformLoggerSettings"), exports);
13
11
  tslib_1.__exportStar(require("./config/interfaces/PlatformMulterSettings"), exports);
14
12
  tslib_1.__exportStar(require("./config/interfaces/PlatformStaticsSettings"), exports);
@@ -22,9 +20,7 @@ tslib_1.__exportStar(require("./decorators/params/next"), exports);
22
20
  tslib_1.__exportStar(require("./decorators/params/request"), exports);
23
21
  tslib_1.__exportStar(require("./decorators/params/response"), exports);
24
22
  tslib_1.__exportStar(require("./domain/AnyToPromiseWithCtx"), exports);
25
- tslib_1.__exportStar(require("./domain/ControllerProvider"), exports);
26
23
  tslib_1.__exportStar(require("./domain/EndpointMetadata"), exports);
27
- tslib_1.__exportStar(require("./domain/HandlerMetadata"), exports);
28
24
  tslib_1.__exportStar(require("./domain/PlatformContext"), exports);
29
25
  tslib_1.__exportStar(require("./domain/PlatformRouteDetails"), exports);
30
26
  tslib_1.__exportStar(require("./interfaces/AfterInit"), exports);
@@ -44,7 +40,6 @@ tslib_1.__exportStar(require("./interfaces/ResponseErrorObject"), exports);
44
40
  tslib_1.__exportStar(require("./interfaces/Route"), exports);
45
41
  tslib_1.__exportStar(require("./middlewares/PlatformAcceptMimesMiddleware"), exports);
46
42
  tslib_1.__exportStar(require("./middlewares/PlatformMulterMiddleware"), exports);
47
- tslib_1.__exportStar(require("./middlewares/bindEndpointMiddleware"), exports);
48
43
  tslib_1.__exportStar(require("./services/FakeAdapter"), exports);
49
44
  tslib_1.__exportStar(require("./services/Platform"), exports);
50
45
  tslib_1.__exportStar(require("./services/PlatformAdapter"), exports);
@@ -53,18 +48,15 @@ tslib_1.__exportStar(require("./services/PlatformHandler"), exports);
53
48
  tslib_1.__exportStar(require("./services/PlatformMiddlewaresChain"), exports);
54
49
  tslib_1.__exportStar(require("./services/PlatformRequest"), exports);
55
50
  tslib_1.__exportStar(require("./services/PlatformResponse"), exports);
56
- tslib_1.__exportStar(require("./services/PlatformRouter"), exports);
57
51
  tslib_1.__exportStar(require("./services/PlatformTest"), exports);
58
52
  tslib_1.__exportStar(require("./utils/createContext"), exports);
59
- tslib_1.__exportStar(require("./utils/createHandlerMetadata"), exports);
60
53
  tslib_1.__exportStar(require("./utils/createHttpServer"), exports);
61
54
  tslib_1.__exportStar(require("./utils/createHttpsServer"), exports);
62
55
  tslib_1.__exportStar(require("./utils/createInjector"), exports);
56
+ tslib_1.__exportStar(require("./utils/ensureContext"), exports);
63
57
  tslib_1.__exportStar(require("./utils/getStaticsOptions"), exports);
64
- tslib_1.__exportStar(require("./utils/importProviders"), exports);
65
58
  tslib_1.__exportStar(require("./utils/listenServer"), exports);
66
59
  tslib_1.__exportStar(require("./utils/mapReturnedResponse"), exports);
67
60
  tslib_1.__exportStar(require("./utils/printRoutes"), exports);
68
61
  tslib_1.__exportStar(require("./utils/setResponseHeaders"), exports);
69
- tslib_1.__exportStar(require("./utils/useCtxHandler"), exports);
70
62
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,oEAA0C;AAC1C,8EAAoD;AACpD,gFAAsD;AACtD,0FAAgE;AAChE,qFAA2D;AAC3D,qFAA2D;AAC3D,sFAA4D;AAC5D,kFAAwD;AACxD,oEAA0C;AAC1C,6EAAmD;AACnD,4EAAkD;AAClD,4EAAkD;AAClD,oEAA0C;AAC1C,mEAAyC;AACzC,sEAA4C;AAC5C,uEAA6C;AAC7C,uEAA6C;AAC7C,sEAA4C;AAC5C,oEAA0C;AAC1C,mEAAyC;AACzC,mEAAyC;AACzC,wEAA8C;AAC9C,iEAAuC;AACvC,mEAAyC;AACzC,uEAA6C;AAC7C,kEAAwC;AACxC,oEAA0C;AAC1C,wEAA8C;AAC9C,mEAAyC;AACzC,qEAA2C;AAC3C,+DAAqC;AACrC,iEAAuC;AACvC,kEAAwC;AACxC,oEAA0C;AAC1C,4EAAkD;AAClD,2EAAiD;AACjD,6DAAmC;AACnC,sFAA4D;AAC5D,iFAAuD;AACvD,+EAAqD;AACrD,iEAAuC;AACvC,8DAAoC;AACpC,qEAA2C;AAC3C,yEAA+C;AAC/C,qEAA2C;AAC3C,8EAAoD;AACpD,qEAA2C;AAC3C,sEAA4C;AAC5C,oEAA0C;AAC1C,kEAAwC;AACxC,gEAAsC;AACtC,wEAA8C;AAC9C,mEAAyC;AACzC,oEAA0C;AAC1C,iEAAuC;AACvC,oEAA0C;AAC1C,kEAAwC;AACxC,+DAAqC;AACrC,sEAA4C;AAC5C,8DAAoC;AACpC,qEAA2C;AAC3C,gEAAsC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./builder/PlatformBuilder\";\nexport * from \"./builder/PlatformControllerBuilder\";\nexport * from \"./config/interfaces/ConverterSettings\";\nexport * from \"./config/interfaces/EndpointDirectoriesSettings\";\nexport * from \"./config/interfaces/PlatformLoggerSettings\";\nexport * from \"./config/interfaces/PlatformMulterSettings\";\nexport * from \"./config/interfaces/PlatformStaticsSettings\";\nexport * from \"./config/services/PlatformConfiguration\";\nexport * from \"./constants/routerOptions\";\nexport * from \"./decorators/multer/multerFileSize\";\nexport * from \"./decorators/multer/multerOptions\";\nexport * from \"./decorators/multer/multipartFile\";\nexport * from \"./decorators/params/error\";\nexport * from \"./decorators/params/next\";\nexport * from \"./decorators/params/request\";\nexport * from \"./decorators/params/response\";\nexport * from \"./domain/AnyToPromiseWithCtx\";\nexport * from \"./domain/ControllerProvider\";\nexport * from \"./domain/EndpointMetadata\";\nexport * from \"./domain/HandlerMetadata\";\nexport * from \"./domain/PlatformContext\";\nexport * from \"./domain/PlatformRouteDetails\";\nexport * from \"./interfaces/AfterInit\";\nexport * from \"./interfaces/AfterListen\";\nexport * from \"./interfaces/AfterRoutesInit\";\nexport * from \"./interfaces/BeforeInit\";\nexport * from \"./interfaces/BeforeListen\";\nexport * from \"./interfaces/BeforeRoutesInit\";\nexport * from \"./interfaces/HandlerType\";\nexport * from \"./interfaces/IncomingEvent\";\nexport * from \"./interfaces/OnReady\";\nexport * from \"./interfaces/OnRequest\";\nexport * from \"./interfaces/OnResponse\";\nexport * from \"./interfaces/OnRoutesInit\";\nexport * from \"./interfaces/PlatformRouteOptions\";\nexport * from \"./interfaces/ResponseErrorObject\";\nexport * from \"./interfaces/Route\";\nexport * from \"./middlewares/PlatformAcceptMimesMiddleware\";\nexport * from \"./middlewares/PlatformMulterMiddleware\";\nexport * from \"./middlewares/bindEndpointMiddleware\";\nexport * from \"./services/FakeAdapter\";\nexport * from \"./services/Platform\";\nexport * from \"./services/PlatformAdapter\";\nexport * from \"./services/PlatformApplication\";\nexport * from \"./services/PlatformHandler\";\nexport * from \"./services/PlatformMiddlewaresChain\";\nexport * from \"./services/PlatformRequest\";\nexport * from \"./services/PlatformResponse\";\nexport * from \"./services/PlatformRouter\";\nexport * from \"./services/PlatformTest\";\nexport * from \"./utils/createContext\";\nexport * from \"./utils/createHandlerMetadata\";\nexport * from \"./utils/createHttpServer\";\nexport * from \"./utils/createHttpsServer\";\nexport * from \"./utils/createInjector\";\nexport * from \"./utils/getStaticsOptions\";\nexport * from \"./utils/importProviders\";\nexport * from \"./utils/listenServer\";\nexport * from \"./utils/mapReturnedResponse\";\nexport * from \"./utils/printRoutes\";\nexport * from \"./utils/setResponseHeaders\";\nexport * from \"./utils/useCtxHandler\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,oEAA0C;AAC1C,gFAAsD;AACtD,qFAA2D;AAC3D,qFAA2D;AAC3D,sFAA4D;AAC5D,kFAAwD;AACxD,oEAA0C;AAC1C,6EAAmD;AACnD,4EAAkD;AAClD,4EAAkD;AAClD,oEAA0C;AAC1C,mEAAyC;AACzC,sEAA4C;AAC5C,uEAA6C;AAC7C,uEAA6C;AAC7C,oEAA0C;AAC1C,mEAAyC;AACzC,wEAA8C;AAC9C,iEAAuC;AACvC,mEAAyC;AACzC,uEAA6C;AAC7C,kEAAwC;AACxC,oEAA0C;AAC1C,wEAA8C;AAC9C,mEAAyC;AACzC,qEAA2C;AAC3C,+DAAqC;AACrC,iEAAuC;AACvC,kEAAwC;AACxC,oEAA0C;AAC1C,4EAAkD;AAClD,2EAAiD;AACjD,6DAAmC;AACnC,sFAA4D;AAC5D,iFAAuD;AACvD,iEAAuC;AACvC,8DAAoC;AACpC,qEAA2C;AAC3C,yEAA+C;AAC/C,qEAA2C;AAC3C,8EAAoD;AACpD,qEAA2C;AAC3C,sEAA4C;AAC5C,kEAAwC;AACxC,gEAAsC;AACtC,mEAAyC;AACzC,oEAA0C;AAC1C,iEAAuC;AACvC,gEAAsC;AACtC,oEAA0C;AAC1C,+DAAqC;AACrC,sEAA4C;AAC5C,8DAAoC;AACpC,qEAA2C","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./builder/PlatformBuilder\";\nexport * from \"./config/interfaces/ConverterSettings\";\nexport * from \"./config/interfaces/PlatformLoggerSettings\";\nexport * from \"./config/interfaces/PlatformMulterSettings\";\nexport * from \"./config/interfaces/PlatformStaticsSettings\";\nexport * from \"./config/services/PlatformConfiguration\";\nexport * from \"./constants/routerOptions\";\nexport * from \"./decorators/multer/multerFileSize\";\nexport * from \"./decorators/multer/multerOptions\";\nexport * from \"./decorators/multer/multipartFile\";\nexport * from \"./decorators/params/error\";\nexport * from \"./decorators/params/next\";\nexport * from \"./decorators/params/request\";\nexport * from \"./decorators/params/response\";\nexport * from \"./domain/AnyToPromiseWithCtx\";\nexport * from \"./domain/EndpointMetadata\";\nexport * from \"./domain/PlatformContext\";\nexport * from \"./domain/PlatformRouteDetails\";\nexport * from \"./interfaces/AfterInit\";\nexport * from \"./interfaces/AfterListen\";\nexport * from \"./interfaces/AfterRoutesInit\";\nexport * from \"./interfaces/BeforeInit\";\nexport * from \"./interfaces/BeforeListen\";\nexport * from \"./interfaces/BeforeRoutesInit\";\nexport * from \"./interfaces/HandlerType\";\nexport * from \"./interfaces/IncomingEvent\";\nexport * from \"./interfaces/OnReady\";\nexport * from \"./interfaces/OnRequest\";\nexport * from \"./interfaces/OnResponse\";\nexport * from \"./interfaces/OnRoutesInit\";\nexport * from \"./interfaces/PlatformRouteOptions\";\nexport * from \"./interfaces/ResponseErrorObject\";\nexport * from \"./interfaces/Route\";\nexport * from \"./middlewares/PlatformAcceptMimesMiddleware\";\nexport * from \"./middlewares/PlatformMulterMiddleware\";\nexport * from \"./services/FakeAdapter\";\nexport * from \"./services/Platform\";\nexport * from \"./services/PlatformAdapter\";\nexport * from \"./services/PlatformApplication\";\nexport * from \"./services/PlatformHandler\";\nexport * from \"./services/PlatformMiddlewaresChain\";\nexport * from \"./services/PlatformRequest\";\nexport * from \"./services/PlatformResponse\";\nexport * from \"./services/PlatformTest\";\nexport * from \"./utils/createContext\";\nexport * from \"./utils/createHttpServer\";\nexport * from \"./utils/createHttpsServer\";\nexport * from \"./utils/createInjector\";\nexport * from \"./utils/ensureContext\";\nexport * from \"./utils/getStaticsOptions\";\nexport * from \"./utils/listenServer\";\nexport * from \"./utils/mapReturnedResponse\";\nexport * from \"./utils/printRoutes\";\nexport * from \"./utils/setResponseHeaders\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouteOptions.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformRouteOptions.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {PathType} from \"@tsed/di\";\n\n/**\n * @ignore\n */\nexport interface PlatformRouteOptions {\n token?: Type<any>;\n path?: PathType | undefined;\n method?: string;\n isFinal?: boolean;\n handlers: any[];\n}\n\n/**\n * @ignore\n */\nexport type PlatformRouteWithoutHandlers = Partial<Omit<PlatformRouteOptions, \"handlers\">>;\n"]}
1
+ {"version":3,"file":"PlatformRouteOptions.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformRouteOptions.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {PathType} from \"@tsed/di\";\n\n/**\n * @ignore\n */\nexport interface PlatformRouteOptions {\n token?: Type<any>;\n path?: PathType | undefined;\n method?: string;\n handlers: any[];\n}\n\n/**\n * @ignore\n */\nexport type PlatformRouteWithoutHandlers = Partial<Omit<PlatformRouteOptions, \"handlers\">>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../../src/interfaces/Route.ts"],"names":[],"mappings":"","sourcesContent":["import {TokenProvider} from \"@tsed/di\";\nimport {ControllerProvider} from \"../domain/ControllerProvider\";\n\nexport interface Route extends Record<string, any> {\n route: string;\n token: TokenProvider;\n}\n\nexport interface RouteController {\n route: string;\n provider: ControllerProvider;\n}\n"]}
1
+ {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../../src/interfaces/Route.ts"],"names":[],"mappings":"","sourcesContent":["import {Provider, TokenProvider} from \"@tsed/di\";\n\nexport interface Route extends Record<string, any> {\n route: string;\n token: TokenProvider;\n}\n\nexport interface RouteController {\n route: string;\n provider: Provider;\n}\n"]}
@@ -12,9 +12,10 @@ const platform_params_1 = require("@tsed/platform-params");
12
12
  * @platform
13
13
  */
14
14
  let PlatformAcceptMimesMiddleware = class PlatformAcceptMimesMiddleware {
15
+ acceptMimes;
15
16
  use(ctx) {
16
17
  const { endpoint, request } = ctx;
17
- const mimes = (0, core_1.uniq)(((endpoint === null || endpoint === void 0 ? void 0 : endpoint.get("acceptMimes")) || []).concat(this.acceptMimes));
18
+ const mimes = (0, core_1.uniq)((endpoint?.get("acceptMimes") || []).concat(this.acceptMimes));
18
19
  if (mimes.length && !request.accepts(mimes)) {
19
20
  throw new exceptions_1.NotAcceptable(mimes.join(", "));
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformAcceptMimesMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PlatformAcceptMimesMiddleware.ts"],"names":[],"mappings":";;;;AAAA,qCAAgC;AAChC,iCAAkC;AAClC,iDAA+C;AAC/C,qEAAyE;AACzE,2DAA8C;AAE9C;;;GAGG;AAEH,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAIjC,GAAG,CAAY,GAAY;QAChC,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,GAAG,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,aAAa,CAAC,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAElF,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3C;IACH,CAAC;CACF,CAAA;AAVC;IADC,IAAA,aAAQ,EAAC,aAAa,EAAE,EAAE,CAAC;;kEACN;AAEtB;IAAY,mBAAA,IAAA,yBAAO,GAAE,CAAA;;;;wDAOpB;AAXU,6BAA6B;IADzC,IAAA,iCAAU,GAAE;GACA,6BAA6B,CAYzC;AAZY,sEAA6B","sourcesContent":["import {uniq} from \"@tsed/core\";\nimport {Constant} from \"@tsed/di\";\nimport {NotAcceptable} from \"@tsed/exceptions\";\nimport {Middleware, MiddlewareMethods} from \"@tsed/platform-middlewares\";\nimport {Context} from \"@tsed/platform-params\";\n\n/**\n * @middleware\n * @platform\n */\n@Middleware()\nexport class PlatformAcceptMimesMiddleware implements MiddlewareMethods {\n @Constant(\"acceptMimes\", [])\n acceptMimes: string[];\n\n public use(@Context() ctx: Context): void {\n const {endpoint, request} = ctx;\n const mimes = uniq((endpoint?.get(\"acceptMimes\") || []).concat(this.acceptMimes));\n\n if (mimes.length && !request.accepts(mimes)) {\n throw new NotAcceptable(mimes.join(\", \"));\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformAcceptMimesMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PlatformAcceptMimesMiddleware.ts"],"names":[],"mappings":";;;;AAAA,qCAAgC;AAChC,iCAAkC;AAClC,iDAA+C;AAC/C,qEAAyE;AACzE,2DAA8C;AAE9C;;;GAGG;AAEH,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAExC,WAAW,CAAW;IAEf,GAAG,CAAY,GAAY;QAChC,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,GAAG,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAElF,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,IAAI,0BAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3C;IACH,CAAC;CACF,CAAA;AAVC;IADC,IAAA,aAAQ,EAAC,aAAa,EAAE,EAAE,CAAC;;kEACN;AAEtB;IAAY,mBAAA,IAAA,yBAAO,GAAE,CAAA;;;;wDAOpB;AAXU,6BAA6B;IADzC,IAAA,iCAAU,GAAE;GACA,6BAA6B,CAYzC;AAZY,sEAA6B","sourcesContent":["import {uniq} from \"@tsed/core\";\nimport {Constant} from \"@tsed/di\";\nimport {NotAcceptable} from \"@tsed/exceptions\";\nimport {Middleware, MiddlewareMethods} from \"@tsed/platform-middlewares\";\nimport {Context} from \"@tsed/platform-params\";\n\n/**\n * @middleware\n * @platform\n */\n@Middleware()\nexport class PlatformAcceptMimesMiddleware implements MiddlewareMethods {\n @Constant(\"acceptMimes\", [])\n acceptMimes: string[];\n\n public use(@Context() ctx: Context): void {\n const {endpoint, request} = ctx;\n const mimes = uniq((endpoint?.get(\"acceptMimes\") || []).concat(this.acceptMimes));\n\n if (mimes.length && !request.accepts(mimes)) {\n throw new NotAcceptable(mimes.join(\", \"));\n }\n }\n}\n"]}
@@ -20,6 +20,8 @@ exports.MulterException = MulterException;
20
20
  * @middleware
21
21
  */
22
22
  let PlatformMulterMiddleware = PlatformMulterMiddleware_1 = class PlatformMulterMiddleware {
23
+ settings;
24
+ app;
23
25
  async use(ctx) {
24
26
  try {
25
27
  const { fields, options = {} } = ctx.endpoint.get(PlatformMulterMiddleware_1);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformMulterMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PlatformMulterMiddleware.ts"],"names":[],"mappings":";;;;;AACA,iCAAiD;AACjD,iDAA4C;AAC5C,qEAAyE;AACzE,2DAA8C;AAE9C,yEAAoE;AAOpE,MAAa,eAAgB,SAAQ,uBAAU;IAC7C,YAAY,EAAe;QACzB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACtB,CAAC;CACF;AAND,0CAMC;AAED;;GAEG;AAEH,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IAOnC,KAAK,CAAC,GAAG,CAAY,GAAY;QAC/B,IAAI;YACF,MAAM,EAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAAwB,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAA2B;gBACvC,GAAG,IAAI,CAAC,QAAQ;gBAChB,GAAG,OAAO;aACX,CAAC;YAEF,0BAA0B;YAC1B,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,OAAO,QAAQ,CAAC,IAAI,CAAC;aACtB;YAED,MAAM,UAAU,GAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAEnF,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9D;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,CAAC,IAAI,EAAE;gBACX,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;aAC/B;YAED,MAAM,EAAE,CAAC;SACV;IACH,CAAC;IAES,SAAS,CAAC,IAAwB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AAjCC;IADC,IAAA,UAAK,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,4EAA4E;;;0DACtD;AAG3C;IADC,IAAA,WAAM,GAAE;sCACM,yCAAmB;qDAAC;AAEnC;IAAW,mBAAA,IAAA,yBAAO,GAAE,CAAA;;;;mDAuBnB;AA9BU,wBAAwB;IADpC,IAAA,iCAAU,GAAE;GACA,wBAAwB,CAmCpC;AAnCY,4DAAwB","sourcesContent":["import type {MulterError} from \"multer\";\nimport {Constant, Inject, Value} from \"@tsed/di\";\nimport {BadRequest} from \"@tsed/exceptions\";\nimport {Middleware, MiddlewareMethods} from \"@tsed/platform-middlewares\";\nimport {Context} from \"@tsed/platform-params\";\nimport {PlatformMulterField, PlatformMulterSettings} from \"../config/interfaces/PlatformMulterSettings\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\nimport {PlatformConfiguration} from \"../config/services/PlatformConfiguration\";\n\nexport interface MulterInputOptions {\n fields: PlatformMulterField[];\n}\n\nexport class MulterException extends BadRequest {\n constructor(er: MulterError) {\n super(er.message);\n this.origin = er;\n this.name = er.code;\n }\n}\n\n/**\n * @middleware\n */\n@Middleware()\nexport class PlatformMulterMiddleware implements MiddlewareMethods {\n @Value(\"multer\", {}) // NOTE: don't use constant to getting multer configuration. See issue #1840\n protected settings: PlatformMulterSettings;\n\n @Inject()\n protected app: PlatformApplication;\n\n async use(@Context() ctx: Context) {\n try {\n const {fields, options = {}} = ctx.endpoint.get(PlatformMulterMiddleware);\n const settings: PlatformMulterSettings = {\n ...this.settings,\n ...options\n };\n\n /* istanbul ignore next */\n if (settings.storage) {\n delete settings.dest;\n }\n\n const middleware: any = this.app.multer(settings).fields(this.getFields({fields}));\n\n return await middleware(ctx.getRequest(), ctx.getResponse());\n } catch (er) {\n if (er.code) {\n throw new MulterException(er);\n }\n\n throw er;\n }\n }\n\n protected getFields(conf: MulterInputOptions) {\n return conf.fields.map(({name, maxCount}) => ({name, maxCount}));\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformMulterMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PlatformMulterMiddleware.ts"],"names":[],"mappings":";;;;;AAAA,iCAAuC;AACvC,iDAA4C;AAC5C,qEAAyE;AACzE,2DAA8C;AAG9C,yEAAoE;AAMpE,MAAa,eAAgB,SAAQ,uBAAU;IAC7C,YAAY,EAAe;QACzB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACtB,CAAC;CACF;AAND,0CAMC;AAED;;GAEG;AAEH,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IAEzB,QAAQ,CAAyB;IAGjC,GAAG,CAAsB;IAEnC,KAAK,CAAC,GAAG,CAAY,GAAY;QAC/B,IAAI;YACF,MAAM,EAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAAwB,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAA2B;gBACvC,GAAG,IAAI,CAAC,QAAQ;gBAChB,GAAG,OAAO;aACX,CAAC;YAEF,0BAA0B;YAC1B,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,OAAO,QAAQ,CAAC,IAAI,CAAC;aACtB;YAED,MAAM,UAAU,GAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAEnF,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9D;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,CAAC,IAAI,EAAE;gBACX,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;aAC/B;YAED,MAAM,EAAE,CAAC;SACV;IACH,CAAC;IAES,SAAS,CAAC,IAAwB;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AAjCC;IADC,IAAA,UAAK,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,4EAA4E;;;0DACtD;AAG3C;IADC,IAAA,WAAM,GAAE;sCACM,yCAAmB;qDAAC;AAEnC;IAAW,mBAAA,IAAA,yBAAO,GAAE,CAAA;;;;mDAuBnB;AA9BU,wBAAwB;IADpC,IAAA,iCAAU,GAAE;GACA,wBAAwB,CAmCpC;AAnCY,4DAAwB","sourcesContent":["import {Inject, Value} from \"@tsed/di\";\nimport {BadRequest} from \"@tsed/exceptions\";\nimport {Middleware, MiddlewareMethods} from \"@tsed/platform-middlewares\";\nimport {Context} from \"@tsed/platform-params\";\nimport type {MulterError} from \"multer\";\nimport {PlatformMulterField, PlatformMulterSettings} from \"../config/interfaces/PlatformMulterSettings\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\n\nexport interface MulterInputOptions {\n fields: PlatformMulterField[];\n}\n\nexport class MulterException extends BadRequest {\n constructor(er: MulterError) {\n super(er.message);\n this.origin = er;\n this.name = er.code;\n }\n}\n\n/**\n * @middleware\n */\n@Middleware()\nexport class PlatformMulterMiddleware implements MiddlewareMethods {\n @Value(\"multer\", {}) // NOTE: don't use constant to getting multer configuration. See issue #1840\n protected settings: PlatformMulterSettings;\n\n @Inject()\n protected app: PlatformApplication;\n\n async use(@Context() ctx: Context) {\n try {\n const {fields, options = {}} = ctx.endpoint.get(PlatformMulterMiddleware);\n const settings: PlatformMulterSettings = {\n ...this.settings,\n ...options\n };\n\n /* istanbul ignore next */\n if (settings.storage) {\n delete settings.dest;\n }\n\n const middleware: any = this.app.multer(settings).fields(this.getFields({fields}));\n\n return await middleware(ctx.getRequest(), ctx.getResponse());\n } catch (er) {\n if (er.code) {\n throw new MulterException(er);\n }\n\n throw er;\n }\n }\n\n protected getFields(conf: MulterInputOptions) {\n return conf.fields.map(({name, maxCount}) => ({name, maxCount}));\n }\n}\n"]}
@@ -2,9 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FakeAdapter = void 0;
4
4
  class FakeAdapter {
5
- constructor() {
6
- this.providers = [];
7
- }
5
+ providers = [];
8
6
  static createFakeRawDriver() {
9
7
  // istanbul ignore next
10
8
  function FakeRawDriver() { }
@@ -35,21 +33,17 @@ class FakeAdapter {
35
33
  multipart(options) {
36
34
  return {};
37
35
  }
38
- router(routerOptions) {
39
- const router = FakeAdapter.createFakeRawDriver();
40
- return {
41
- router,
42
- callback() {
43
- return router;
44
- }
45
- };
46
- }
47
36
  statics(endpoint, options) {
48
37
  return {};
49
38
  }
50
39
  bodyParser(type) {
51
40
  return () => { };
52
41
  }
42
+ mapLayers(layers) { }
43
+ mapHandler(handler) {
44
+ return handler;
45
+ }
46
+ useContext() { }
53
47
  }
54
48
  exports.FakeAdapter = FakeAdapter;
55
49
  //# sourceMappingURL=FakeAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeAdapter.js","sourceRoot":"","sources":["../../../src/services/FakeAdapter.ts"],"names":[],"mappings":";;;AAKA,MAAa,WAAW;IAAxB;QACE,cAAS,GAAmB,EAAE,CAAC;IAuDjC,CAAC;IArDC,MAAM,CAAC,mBAAmB;QACxB,uBAAuB;QACvB,SAAS,aAAa,KAAI,CAAC;QAE3B,uBAAuB;QACvB,SAAS,GAAG;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;QAC1B,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;QACzB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;QACzB,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC;QAC3B,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;QAE5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC9C,OAAO;YACL,GAAG;YACH,QAAQ;gBACN,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,OAAO,EAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,aAAkB;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACjD,OAAO;YACL,MAAM;YACN,QAAQ;gBACN,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,OAA+B;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;CACF;AAxDD,kCAwDC","sourcesContent":["import {ProviderOpts} from \"@tsed/di\";\nimport {PlatformAdapter} from \"./PlatformAdapter\";\nimport {PlatformMulter, PlatformMulterSettings} from \"../config/interfaces/PlatformMulterSettings\";\nimport {PlatformStaticsOptions} from \"../config/interfaces/PlatformStaticsSettings\";\n\nexport class FakeAdapter implements PlatformAdapter<any, any> {\n providers: ProviderOpts[] = [];\n\n static createFakeRawDriver() {\n // istanbul ignore next\n function FakeRawDriver() {}\n\n // istanbul ignore next\n function use() {\n return this;\n }\n\n FakeRawDriver.use = use;\n FakeRawDriver.all = use;\n FakeRawDriver.get = use;\n FakeRawDriver.patch = use;\n FakeRawDriver.post = use;\n FakeRawDriver.put = use;\n FakeRawDriver.head = use;\n FakeRawDriver.delete = use;\n FakeRawDriver.options = use;\n\n return FakeRawDriver;\n }\n\n app(): {app: any; callback(): any} {\n const app = FakeAdapter.createFakeRawDriver();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n return {} as any;\n }\n\n router(routerOptions: any): {router: any; callback(): any} {\n const router = FakeAdapter.createFakeRawDriver();\n return {\n router,\n callback() {\n return router;\n }\n };\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions): any {\n return {};\n }\n\n bodyParser(type: string): any {\n return () => {};\n }\n}\n"]}
1
+ {"version":3,"file":"FakeAdapter.js","sourceRoot":"","sources":["../../../src/services/FakeAdapter.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IACtB,SAAS,GAAmB,EAAE,CAAC;IAE/B,MAAM,CAAC,mBAAmB;QACxB,uBAAuB;QACvB,SAAS,aAAa,KAAI,CAAC;QAE3B,uBAAuB;QACvB,SAAS,GAAG;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC;QAC1B,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;QACzB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;QACzB,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC;QAC3B,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;QAE5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC9C,OAAO;YACL,GAAG;YACH,QAAQ;gBACN,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,OAAO,EAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,OAA+B;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,MAAuB,IAAG,CAAC;IAErC,UAAU,CAAC,OAAgD;QACzD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,UAAU,KAAI,CAAC;CAChB;AAtDD,kCAsDC","sourcesContent":["import {ProviderOpts} from \"@tsed/di\";\nimport {PlatformContextHandler, PlatformLayer} from \"@tsed/platform-router\";\nimport {PlatformMulter, PlatformMulterSettings} from \"../config/interfaces/PlatformMulterSettings\";\nimport {PlatformStaticsOptions} from \"../config/interfaces/PlatformStaticsSettings\";\nimport {PlatformContext} from \"../domain/PlatformContext\";\nimport {PlatformAdapter} from \"./PlatformAdapter\";\n\nexport class FakeAdapter implements PlatformAdapter<any> {\n providers: ProviderOpts[] = [];\n\n static createFakeRawDriver() {\n // istanbul ignore next\n function FakeRawDriver() {}\n\n // istanbul ignore next\n function use() {\n return this;\n }\n\n FakeRawDriver.use = use;\n FakeRawDriver.all = use;\n FakeRawDriver.get = use;\n FakeRawDriver.patch = use;\n FakeRawDriver.post = use;\n FakeRawDriver.put = use;\n FakeRawDriver.head = use;\n FakeRawDriver.delete = use;\n FakeRawDriver.options = use;\n\n return FakeRawDriver;\n }\n\n app(): {app: any; callback(): any} {\n const app = FakeAdapter.createFakeRawDriver();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n return {} as any;\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions): any {\n return {};\n }\n\n bodyParser(type: string): any {\n return () => {};\n }\n\n mapLayers(layers: PlatformLayer[]) {}\n\n mapHandler(handler: PlatformContextHandler<PlatformContext>) {\n return handler;\n }\n\n useContext() {}\n}\n"]}
@@ -3,126 +3,70 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Platform = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const di_1 = require("@tsed/di");
6
- const schema_1 = require("@tsed/schema");
7
- const PlatformControllerBuilder_1 = require("../builder/PlatformControllerBuilder");
8
- const PlatformRouteDetails_1 = require("../domain/PlatformRouteDetails");
6
+ const platform_router_1 = require("@tsed/platform-router");
9
7
  const PlatformApplication_1 = require("./PlatformApplication");
10
- const PlatformMiddlewaresChain_1 = require("./PlatformMiddlewaresChain");
8
+ const PlatformHandler_1 = require("./PlatformHandler");
11
9
  /**
12
10
  * `Platform` is used to provide all routes collected by annotation `@Controller`.
13
11
  *
14
12
  * @platform
15
13
  */
16
14
  let Platform = class Platform {
17
- constructor(injector, platformApplication) {
15
+ injector;
16
+ platformApplication;
17
+ platformRouters;
18
+ #controllers = new Map();
19
+ constructor(injector, platformApplication, platformRouters) {
18
20
  this.injector = injector;
19
21
  this.platformApplication = platformApplication;
20
- this._routes = [];
21
- this._controllers = [];
22
- this.createRouters();
22
+ this.platformRouters = platformRouters;
23
+ platformRouters.prebuild();
23
24
  }
24
25
  get app() {
25
26
  return this.platformApplication;
26
27
  }
27
- get routes() {
28
- return this._routes;
29
- }
30
28
  addRoutes(routes) {
31
29
  routes.forEach((routeSettings) => {
32
30
  this.addRoute(routeSettings.route, routeSettings.token);
33
31
  });
34
32
  }
35
- addRoute(basePath, token) {
36
- const { injector } = this;
37
- const provider = injector.getProvider(token);
33
+ addRoute(route, token) {
34
+ const provider = this.injector.getProvider(token);
38
35
  if (!provider || provider.hasParent()) {
39
- return;
36
+ return this;
40
37
  }
41
- this._controllers.push(...this.getAllControllers(basePath, token));
42
- const ctrlPath = (0, schema_1.concatPath)(basePath, schema_1.JsonEntityStore.from(provider.token).path);
43
- this.app.use(ctrlPath, ...[].concat((0, PlatformControllerBuilder_1.getRouter)(injector, provider).callback()));
44
- this._routes = (0, schema_1.getOperationsRoutes)(provider.token, {
45
- withChildren: true,
46
- basePath
47
- }).reduce((routes, operationRoute) => {
48
- if (injector.hasProvider(token)) {
49
- const provider = injector.getProvider(operationRoute.token);
50
- const route = new PlatformRouteDetails_1.PlatformRouteDetails({
51
- ...operationRoute,
52
- provider
53
- });
54
- routes = routes.concat(route);
55
- }
56
- return routes;
57
- }, this._routes);
38
+ const router = this.platformRouters.from(provider.token);
39
+ this.app.use(route, router);
58
40
  return this;
59
41
  }
60
- /**
61
- * Get all routes built by TsExpressDecorators and mounted on Express application.
62
- * @returns {PlatformRouteDetails[]}
63
- */
64
- getRoutes() {
65
- return this._routes;
42
+ getLayers() {
43
+ this.#controllers = new Map();
44
+ return this.platformRouters.getLayers(this.app).map((layer) => {
45
+ if (layer.isProvider()) {
46
+ this.#controllers.set(layer.provider.token, {
47
+ route: String(layer.path).split(layer.provider.path)[0],
48
+ provider: layer.provider
49
+ });
50
+ }
51
+ return layer;
52
+ });
66
53
  }
67
54
  /**
68
55
  * Get all controllers mounted on the application.
69
56
  * @returns {RouteController[]}
70
57
  */
71
58
  getMountedControllers() {
72
- return this._controllers;
73
- }
74
- $onInit() {
75
- this.buildControllers();
76
- }
77
- /**
78
- * Create routers from the collected controllers.
79
- * @private
80
- */
81
- createRouters() {
82
- const { injector } = this;
83
- injector.getProviders(di_1.ProviderType.CONTROLLER).map((provider) => {
84
- (0, PlatformControllerBuilder_1.createRouter)(injector, provider);
85
- });
86
- }
87
- /**
88
- * Get all router controllers from the controller token.
89
- * @private
90
- */
91
- getAllControllers(basePath, token) {
92
- const store = token.isStore ? token : (0, schema_1.getJsonEntityStore)(token);
93
- const ctrlPath = (0, schema_1.concatPath)(basePath, schema_1.JsonEntityStore.from(token).path);
94
- const children = store.get("childrenControllers", []);
95
- return children
96
- .reduce((controllers, token) => {
97
- const childBasePath = (0, schema_1.concatPath)(basePath, store.path);
98
- return controllers.concat(this.getAllControllers(childBasePath, token));
99
- }, [])
100
- .concat([
101
- {
102
- route: ctrlPath,
103
- provider: this.injector.getProvider(token)
104
- }
105
- ]);
106
- }
107
- /**
108
- * Create controllers from DI
109
- * @private
110
- */
111
- buildControllers() {
112
- const { injector } = this;
113
- injector.getProviders(di_1.ProviderType.CONTROLLER).map((provider) => {
114
- if (!provider.hasParent()) {
115
- return (0, PlatformControllerBuilder_1.buildRouter)(injector, provider);
116
- }
117
- });
59
+ return [...this.#controllers.values()];
118
60
  }
119
61
  };
120
62
  Platform = tslib_1.__decorate([
121
63
  (0, di_1.Injectable)({
122
64
  scope: di_1.ProviderScope.SINGLETON,
123
- imports: [PlatformMiddlewaresChain_1.PlatformMiddlewaresChain]
65
+ imports: [PlatformHandler_1.PlatformHandler]
124
66
  }),
125
- tslib_1.__metadata("design:paramtypes", [di_1.InjectorService, PlatformApplication_1.PlatformApplication])
67
+ tslib_1.__metadata("design:paramtypes", [di_1.InjectorService,
68
+ PlatformApplication_1.PlatformApplication,
69
+ platform_router_1.PlatformRouters])
126
70
  ], Platform);
127
71
  exports.Platform = Platform;
128
72
  //# sourceMappingURL=Platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../src/services/Platform.ts"],"names":[],"mappings":"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","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Injectable, InjectorService, ProviderScope, ProviderType, TokenProvider} from \"@tsed/di\";\nimport {concatPath, EndpointMetadata, getJsonEntityStore, getOperationsRoutes, JsonEntityStore} from \"@tsed/schema\";\nimport {buildRouter, createRouter, getRouter} from \"../builder/PlatformControllerBuilder\";\nimport {ControllerProvider} from \"../domain/ControllerProvider\";\nimport {PlatformRouteDetails} from \"../domain/PlatformRouteDetails\";\nimport {Route, RouteController} from \"../interfaces/Route\";\nimport {PlatformApplication} from \"./PlatformApplication\";\nimport {PlatformMiddlewaresChain} from \"./PlatformMiddlewaresChain\";\n\n/**\n * `Platform` is used to provide all routes collected by annotation `@Controller`.\n *\n * @platform\n */\n@Injectable({\n scope: ProviderScope.SINGLETON,\n imports: [PlatformMiddlewaresChain]\n})\nexport class Platform {\n private _routes: PlatformRouteDetails[] = [];\n private _controllers: RouteController[] = [];\n\n constructor(readonly injector: InjectorService, readonly platformApplication: PlatformApplication) {\n this.createRouters();\n }\n\n get app() {\n return this.platformApplication;\n }\n\n get routes(): PlatformRouteDetails[] {\n return this._routes;\n }\n\n public addRoutes(routes: Route[]) {\n routes.forEach((routeSettings) => {\n this.addRoute(routeSettings.route, routeSettings.token);\n });\n }\n\n public addRoute(basePath: string, token: TokenProvider) {\n const {injector} = this;\n const provider = injector.getProvider(token) as ControllerProvider;\n\n if (!provider || provider.hasParent()) {\n return;\n }\n\n this._controllers.push(...this.getAllControllers(basePath, token));\n\n const ctrlPath = concatPath(basePath, JsonEntityStore.from(provider.token).path);\n\n this.app.use(ctrlPath, ...[].concat(getRouter(injector, provider).callback()));\n\n this._routes = getOperationsRoutes<EndpointMetadata>(provider.token, {\n withChildren: true,\n basePath\n }).reduce((routes, operationRoute) => {\n if (injector.hasProvider(token)) {\n const provider = injector.getProvider(operationRoute.token) as ControllerProvider;\n const route = new PlatformRouteDetails({\n ...operationRoute,\n provider\n });\n\n routes = routes.concat(route);\n }\n\n return routes;\n }, this._routes);\n\n return this;\n }\n\n /**\n * Get all routes built by TsExpressDecorators and mounted on Express application.\n * @returns {PlatformRouteDetails[]}\n */\n public getRoutes(): PlatformRouteDetails[] {\n return this._routes;\n }\n\n /**\n * Get all controllers mounted on the application.\n * @returns {RouteController[]}\n */\n public getMountedControllers(): RouteController[] {\n return this._controllers;\n }\n\n protected $onInit() {\n this.buildControllers();\n }\n\n /**\n * Create routers from the collected controllers.\n * @private\n */\n private createRouters() {\n const {injector} = this;\n\n injector.getProviders(ProviderType.CONTROLLER).map((provider: ControllerProvider) => {\n createRouter(injector, provider);\n });\n }\n\n /**\n * Get all router controllers from the controller token.\n * @private\n */\n private getAllControllers(basePath: string, token: Type<any> | any): RouteController[] {\n const store: JsonEntityStore = token.isStore ? token : getJsonEntityStore(token);\n const ctrlPath = concatPath(basePath, JsonEntityStore.from(token).path);\n const children = store.get<Type[]>(\"childrenControllers\", []);\n\n return children\n .reduce<RouteController[]>((controllers, token) => {\n const childBasePath = concatPath(basePath, store.path);\n return controllers.concat(this.getAllControllers(childBasePath, token));\n }, [])\n .concat([\n {\n route: ctrlPath,\n provider: this.injector.getProvider(token) as ControllerProvider\n }\n ]);\n }\n\n /**\n * Create controllers from DI\n * @private\n */\n private buildControllers() {\n const {injector} = this;\n\n injector.getProviders(ProviderType.CONTROLLER).map((provider: ControllerProvider) => {\n if (!provider.hasParent()) {\n return buildRouter(injector, provider);\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../src/services/Platform.ts"],"names":[],"mappings":";;;;AAAA,iCAAuG;AACvG,2DAAsD;AAEtD,+DAA0D;AAC1D,uDAAkD;AAElD;;;;GAIG;AAKH,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAIR;IACA;IACA;IALX,YAAY,GAAiC,IAAI,GAAG,EAAE,CAAC;IAEvD,YACW,QAAyB,EACzB,mBAAwC,EACxC,eAAgC;QAFhC,aAAQ,GAAR,QAAQ,CAAiB;QACzB,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,oBAAe,GAAf,eAAe,CAAiB;QAEzC,eAAe,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAEM,SAAS,CAAC,MAAe;QAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,QAAQ,CAAC,KAAa,EAAE,KAAoB;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAuB,CAAC;QAExE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5D,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;oBAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;aACJ;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,qBAAqB;QAC1B,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AAzDY,QAAQ;IAJpB,IAAA,eAAU,EAAC;QACV,KAAK,EAAE,kBAAa,CAAC,SAAS;QAC9B,OAAO,EAAE,CAAC,iCAAe,CAAC;KAC3B,CAAC;6CAKqB,oBAAe;QACJ,yCAAmB;QACvB,iCAAe;GANhC,QAAQ,CAyDpB;AAzDY,4BAAQ","sourcesContent":["import {ControllerProvider, Injectable, InjectorService, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {PlatformRouters} from \"@tsed/platform-router\";\nimport {Route, RouteController} from \"../interfaces/Route\";\nimport {PlatformApplication} from \"./PlatformApplication\";\nimport {PlatformHandler} from \"./PlatformHandler\";\n\n/**\n * `Platform` is used to provide all routes collected by annotation `@Controller`.\n *\n * @platform\n */\n@Injectable({\n scope: ProviderScope.SINGLETON,\n imports: [PlatformHandler]\n})\nexport class Platform {\n #controllers: Map<string, RouteController> = new Map();\n\n constructor(\n readonly injector: InjectorService,\n readonly platformApplication: PlatformApplication,\n readonly platformRouters: PlatformRouters\n ) {\n platformRouters.prebuild();\n }\n\n get app() {\n return this.platformApplication;\n }\n\n public addRoutes(routes: Route[]) {\n routes.forEach((routeSettings) => {\n this.addRoute(routeSettings.route, routeSettings.token);\n });\n }\n\n public addRoute(route: string, token: TokenProvider) {\n const provider = this.injector.getProvider(token) as ControllerProvider;\n\n if (!provider || provider.hasParent()) {\n return this;\n }\n\n const router = this.platformRouters.from(provider.token);\n\n this.app.use(route, router);\n\n return this;\n }\n\n public getLayers() {\n this.#controllers = new Map();\n\n return this.platformRouters.getLayers(this.app).map((layer) => {\n if (layer.isProvider()) {\n this.#controllers.set(layer.provider.token, {\n route: String(layer.path).split(layer.provider.path)[0],\n provider: layer.provider\n });\n }\n\n return layer;\n });\n }\n\n /**\n * Get all controllers mounted on the application.\n * @returns {RouteController[]}\n */\n public getMountedControllers(): RouteController[] {\n return [...this.#controllers.values()];\n }\n}\n"]}
@@ -4,6 +4,16 @@ exports.PlatformAdapter = void 0;
4
4
  const di_1 = require("@tsed/di");
5
5
  const FakeAdapter_1 = require("./FakeAdapter");
6
6
  class PlatformAdapter {
7
+ /**
8
+ * Load providers in top priority
9
+ */
10
+ providers;
11
+ /**
12
+ * Called after the injector instantiation
13
+ */
14
+ onInit;
15
+ beforeLoadRoutes;
16
+ afterLoadRoutes;
7
17
  }
8
18
  exports.PlatformAdapter = PlatformAdapter;
9
19
  (0, di_1.registerProvider)({