@tsed/platform-router 7.0.0-beta.16 → 7.0.0-beta.19

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 (31) hide show
  1. package/coverage.json +6 -0
  2. package/jest.config.js +1 -6
  3. package/lib/cjs/domain/PlatformHandlerMetadata.js +6 -3
  4. package/lib/cjs/domain/PlatformHandlerMetadata.js.map +1 -1
  5. package/lib/cjs/domain/PlatformHandlerType.js +1 -0
  6. package/lib/cjs/domain/PlatformHandlerType.js.map +1 -1
  7. package/lib/cjs/domain/PlatformLayer.js.map +1 -1
  8. package/lib/cjs/domain/PlatformRouter.js +10 -11
  9. package/lib/cjs/domain/PlatformRouter.js.map +1 -1
  10. package/lib/cjs/domain/PlatformRouters.js +4 -16
  11. package/lib/cjs/domain/PlatformRouters.js.map +1 -1
  12. package/lib/cjs/utils/useContextHandler.js +6 -1
  13. package/lib/cjs/utils/useContextHandler.js.map +1 -1
  14. package/lib/esm/domain/PlatformHandlerMetadata.js +6 -3
  15. package/lib/esm/domain/PlatformHandlerMetadata.js.map +1 -1
  16. package/lib/esm/domain/PlatformHandlerType.js +1 -0
  17. package/lib/esm/domain/PlatformHandlerType.js.map +1 -1
  18. package/lib/esm/domain/PlatformLayer.js.map +1 -1
  19. package/lib/esm/domain/PlatformRouter.js +10 -11
  20. package/lib/esm/domain/PlatformRouter.js.map +1 -1
  21. package/lib/esm/domain/PlatformRouters.js +5 -17
  22. package/lib/esm/domain/PlatformRouters.js.map +1 -1
  23. package/lib/esm/utils/useContextHandler.js +4 -0
  24. package/lib/esm/utils/useContextHandler.js.map +1 -1
  25. package/lib/types/domain/PlatformHandlerMetadata.d.ts +2 -2
  26. package/lib/types/domain/PlatformHandlerType.d.ts +1 -0
  27. package/lib/types/domain/PlatformLayer.d.ts +1 -2
  28. package/lib/types/domain/PlatformRouters.d.ts +1 -3
  29. package/lib/types/utils/useContextHandler.d.ts +5 -0
  30. package/package.json +13 -13
  31. package/readme.md +12 -11
package/coverage.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "statements": 100,
3
+ "branches": 89.69,
4
+ "functions": 100,
5
+ "lines": 100
6
+ }
package/jest.config.js CHANGED
@@ -4,11 +4,6 @@
4
4
  module.exports = {
5
5
  ...require("@tsed/jest-config")(__dirname, "platform-router"),
6
6
  coverageThreshold: {
7
- global: {
8
- statements: 100,
9
- branches: 78.26,
10
- functions: 100,
11
- lines: 100
12
- }
7
+ global: require("./coverage.json")
13
8
  }
14
9
  };
@@ -86,11 +86,11 @@ class PlatformHandlerMetadata {
86
86
  hasParamType(paramType) {
87
87
  return this.getParams().findIndex((p) => p.paramType === paramType) > -1;
88
88
  }
89
- isFinal() {
90
- return this.opts?.isFinal || false;
89
+ isInjectable() {
90
+ return !(this.isRawMiddleware() || this.isResponseFn());
91
91
  }
92
92
  isRawMiddleware() {
93
- return [PlatformHandlerType_1.PlatformHandlerType.RAW_ERR_FN, PlatformHandlerType_1.PlatformHandlerType.RAW_FN].includes(this.type);
93
+ return this.type === PlatformHandlerType_1.PlatformHandlerType.RAW_ERR_FN || this.type === PlatformHandlerType_1.PlatformHandlerType.RAW_FN;
94
94
  }
95
95
  isEndpoint() {
96
96
  return this.type === PlatformHandlerType_1.PlatformHandlerType.ENDPOINT;
@@ -98,6 +98,9 @@ class PlatformHandlerMetadata {
98
98
  isCtxFn() {
99
99
  return this.type === PlatformHandlerType_1.PlatformHandlerType.CTX_FN;
100
100
  }
101
+ isResponseFn() {
102
+ return this.type === PlatformHandlerType_1.PlatformHandlerType.RESPONSE_FN;
103
+ }
101
104
  toString() {
102
105
  return [(0, core_1.nameOf)(this.target), this.propertyKey].filter(Boolean).join(".");
103
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformHandlerMetadata.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {InjectorService, Provider, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {ParamTypes} from \"@tsed/platform-params\";\nimport {EndpointMetadata, JsonEntityStore, JsonParameterStore} from \"@tsed/schema\";\nimport {PlatformHandlerType} from \"./PlatformHandlerType\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformHandlerMetadataOpts extends Record<string, any> {\n token?: TokenProvider;\n isFinal?: boolean;\n}\n\nexport interface PlatformHandlerMetadataProps {\n provider?: Provider;\n handler?: any;\n opts?: PlatformHandlerMetadataOpts;\n propertyKey?: string | symbol;\n type?: PlatformHandlerType;\n}\n\nexport class PlatformHandlerMetadata {\n path: SinglePathType;\n\n readonly provider?: Provider;\n readonly propertyKey: string | symbol;\n readonly type: PlatformHandlerType = PlatformHandlerType.RAW_FN;\n readonly hasNextFunction: boolean = false;\n readonly opts: PlatformHandlerMetadataOpts = {};\n\n #handler: any;\n\n constructor(props: PlatformHandlerMetadataProps) {\n const {propertyKey, type, provider, handler, opts} = props;\n\n this.provider = provider;\n this.type = type || handler.type || PlatformHandlerType.RAW_FN;\n this.opts = opts || {};\n\n this.#handler = propertyKey ? this.target.prototype[propertyKey] : handler;\n\n if (propertyKey) {\n this.propertyKey = propertyKey;\n this.hasNextFunction = this.hasParamType(ParamTypes.NEXT_FN);\n\n if (this.hasParamType(ParamTypes.ERR)) {\n this.type = PlatformHandlerType.ERR_MIDDLEWARE;\n }\n } else {\n if (this.#handler.length === 4) {\n this.type = PlatformHandlerType.RAW_ERR_FN;\n }\n this.hasNextFunction = this.#handler.length >= 3;\n }\n }\n\n get target() {\n return this.provider?.useClass || this.#handler;\n }\n\n get token() {\n return this.provider?.token || this.#handler;\n }\n\n get handler() {\n return this.#handler;\n }\n\n get scope() {\n return this.provider?.scope || ProviderScope.SINGLETON;\n }\n\n get hasErrorParam() {\n return this.type === PlatformHandlerType.ERR_MIDDLEWARE || this.type === PlatformHandlerType.RAW_ERR_FN;\n }\n\n get store() {\n return JsonEntityStore.fromMethod(this.provider!.useClass, this.propertyKey!);\n }\n\n static from(injector: InjectorService, input: any, opts: PlatformHandlerMetadataOpts = {}): PlatformHandlerMetadata {\n if (input instanceof PlatformHandlerMetadata) {\n return input;\n }\n\n if (input instanceof EndpointMetadata) {\n const provider = injector.getProvider(opts.token)!;\n\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.ENDPOINT,\n propertyKey: input.propertyKey,\n opts\n });\n }\n\n const provider = injector.getProvider(input);\n\n if (provider) {\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.MIDDLEWARE,\n propertyKey: \"use\",\n opts\n });\n }\n\n return new PlatformHandlerMetadata({\n handler: input,\n type: input.type,\n opts\n });\n }\n\n public getParams() {\n return JsonParameterStore.getParams(this.target, this.propertyKey) || [];\n }\n\n public hasParamType(paramType: any): boolean {\n return this.getParams().findIndex((p) => p.paramType === paramType) > -1;\n }\n\n public isFinal() {\n return this.opts?.isFinal || false;\n }\n\n public isRawMiddleware() {\n return [PlatformHandlerType.RAW_ERR_FN, PlatformHandlerType.RAW_FN].includes(this.type);\n }\n\n public isEndpoint() {\n return this.type === PlatformHandlerType.ENDPOINT;\n }\n\n public isCtxFn() {\n return this.type === PlatformHandlerType.CTX_FN;\n }\n\n toString() {\n return [nameOf(this.target), this.propertyKey].filter(Boolean).join(\".\");\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformHandlerMetadata.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {InjectorService, Provider, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {ParamTypes} from \"@tsed/platform-params\";\nimport {EndpointMetadata, JsonEntityStore, JsonParameterStore} from \"@tsed/schema\";\nimport {PlatformHandlerType} from \"./PlatformHandlerType\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformHandlerMetadataOpts extends Record<string, any> {\n token?: TokenProvider;\n}\n\nexport interface PlatformHandlerMetadataProps {\n provider?: Provider;\n handler?: any;\n opts?: PlatformHandlerMetadataOpts;\n propertyKey?: string | symbol;\n type?: PlatformHandlerType;\n}\n\nexport class PlatformHandlerMetadata {\n path: SinglePathType;\n\n readonly provider?: Provider;\n readonly propertyKey: string | symbol;\n readonly type: PlatformHandlerType = PlatformHandlerType.RAW_FN;\n readonly hasNextFunction: boolean = false;\n readonly opts: PlatformHandlerMetadataOpts = {};\n\n #handler: any;\n\n constructor(props: PlatformHandlerMetadataProps) {\n const {propertyKey, type, provider, handler, opts} = props;\n\n this.provider = provider;\n this.type = type || handler.type || PlatformHandlerType.RAW_FN;\n this.opts = opts || {};\n\n this.#handler = propertyKey ? this.target.prototype[propertyKey] : handler;\n\n if (propertyKey) {\n this.propertyKey = propertyKey;\n this.hasNextFunction = this.hasParamType(ParamTypes.NEXT_FN);\n\n if (this.hasParamType(ParamTypes.ERR)) {\n this.type = PlatformHandlerType.ERR_MIDDLEWARE;\n }\n } else {\n if (this.#handler.length === 4) {\n this.type = PlatformHandlerType.RAW_ERR_FN;\n }\n this.hasNextFunction = this.#handler.length >= 3;\n }\n }\n\n get target() {\n return this.provider?.useClass || this.#handler;\n }\n\n get token() {\n return this.provider?.token || this.#handler;\n }\n\n get handler() {\n return this.#handler;\n }\n\n get scope() {\n return this.provider?.scope || ProviderScope.SINGLETON;\n }\n\n get hasErrorParam() {\n return this.type === PlatformHandlerType.ERR_MIDDLEWARE || this.type === PlatformHandlerType.RAW_ERR_FN;\n }\n\n get store() {\n return JsonEntityStore.fromMethod(this.provider!.useClass, this.propertyKey!);\n }\n\n static from(injector: InjectorService, input: any, opts: PlatformHandlerMetadataOpts = {}): PlatformHandlerMetadata {\n if (input instanceof PlatformHandlerMetadata) {\n return input;\n }\n\n if (input instanceof EndpointMetadata) {\n const provider = injector.getProvider(opts.token)!;\n\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.ENDPOINT,\n propertyKey: input.propertyKey,\n opts\n });\n }\n\n const provider = injector.getProvider(input);\n\n if (provider) {\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.MIDDLEWARE,\n propertyKey: \"use\",\n opts\n });\n }\n\n return new PlatformHandlerMetadata({\n handler: input,\n type: input.type,\n opts\n });\n }\n\n public getParams() {\n return JsonParameterStore.getParams(this.target, this.propertyKey) || [];\n }\n\n public hasParamType(paramType: any): boolean {\n return this.getParams().findIndex((p) => p.paramType === paramType) > -1;\n }\n\n public isInjectable() {\n return !(this.isRawMiddleware() || this.isResponseFn());\n }\n\n public isRawMiddleware() {\n return this.type === PlatformHandlerType.RAW_ERR_FN || this.type === PlatformHandlerType.RAW_FN;\n }\n\n public isEndpoint() {\n return this.type === PlatformHandlerType.ENDPOINT;\n }\n\n public isCtxFn() {\n return this.type === PlatformHandlerType.CTX_FN;\n }\n\n public isResponseFn() {\n return this.type === PlatformHandlerType.RESPONSE_FN;\n }\n\n toString() {\n return [nameOf(this.target), this.propertyKey].filter(Boolean).join(\".\");\n }\n}\n"]}
@@ -8,6 +8,7 @@ var PlatformHandlerType;
8
8
  PlatformHandlerType["MIDDLEWARE"] = "middleware";
9
9
  PlatformHandlerType["ERR_MIDDLEWARE"] = "err:middleware";
10
10
  PlatformHandlerType["CTX_FN"] = "context";
11
+ PlatformHandlerType["RESPONSE_FN"] = "response";
11
12
  PlatformHandlerType["RAW_FN"] = "raw:middleware";
12
13
  PlatformHandlerType["RAW_ERR_FN"] = "raw:err:middleware";
13
14
  })(PlatformHandlerType = exports.PlatformHandlerType || (exports.PlatformHandlerType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformHandlerType.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerType.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;IACjC,yCAAkB,CAAA;IAClB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;AACnC,CAAC,EARW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAQ9B","sourcesContent":["export enum PlatformHandlerType {\n CUSTOM = \"custom\",\n ENDPOINT = \"endpoint\",\n MIDDLEWARE = \"middleware\",\n ERR_MIDDLEWARE = \"err:middleware\",\n CTX_FN = \"context\",\n RAW_FN = \"raw:middleware\",\n RAW_ERR_FN = \"raw:err:middleware\"\n}\n"]}
1
+ {"version":3,"file":"PlatformHandlerType.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerType.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;IACjC,yCAAkB,CAAA;IAClB,+CAAwB,CAAA;IACxB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;AACnC,CAAC,EATW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAS9B","sourcesContent":["export enum PlatformHandlerType {\n CUSTOM = \"custom\",\n ENDPOINT = \"endpoint\",\n MIDDLEWARE = \"middleware\",\n ERR_MIDDLEWARE = \"err:middleware\",\n CTX_FN = \"context\",\n RESPONSE_FN = \"response\",\n RAW_FN = \"raw:middleware\",\n RAW_ERR_FN = \"raw:err:middleware\"\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformLayer.js","sourceRoot":"","sources":["../../../src/domain/PlatformLayer.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AAqBrD,MAAa,aAAa;IACjB,QAAQ,CAAW;IACnB,IAAI,GAAmB,EAAE,CAAC;IAC1B,MAAM,CAAS;IACf,QAAQ,GAA8B,EAAE,CAAC;IACzC,MAAM,CAAkB;IACxB,IAAI,GAAyB,EAAE,CAAC;IAEvC,KAAK,CAA2B;IAEhC,YAAY,QAAqC,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAA8B;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,GAAG,CAAC,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,aAAM,EAAC,KAAK,CAAC;iBAClD,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAvCD,sCAuCC","sourcesContent":["import {isPrimitive, nameOf, Type} from \"@tsed/core\";\nimport {Provider} from \"@tsed/di\";\nimport {PlatformParamsCallback} from \"@tsed/platform-params\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport type {PlatformRouter} from \"./PlatformRouter\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformLayerOptions extends Record<string, any> {\n token?: Type<any>;\n isFinal?: boolean;\n}\n\nexport interface PlatformLayerProps {\n provider: Provider;\n path: SinglePathType;\n method: string;\n handlers: any[];\n router: PlatformRouter;\n opts: PlatformLayerOptions;\n}\n\nexport class PlatformLayer {\n public provider: Provider;\n public path: SinglePathType = \"\";\n public method: string;\n public handlers: PlatformHandlerMetadata[] = [];\n public router?: PlatformRouter;\n public opts: PlatformLayerOptions = {};\n\n #args: PlatformParamsCallback[];\n\n constructor(props: Partial<PlatformLayerProps> = {}) {\n Object.assign(this, props);\n }\n\n set(args: PlatformParamsCallback[]) {\n this.#args = args;\n }\n\n getArgs() {\n return [this.path, ...this.#args].filter(Boolean);\n }\n\n isProvider() {\n return !!this.provider;\n }\n\n inspect() {\n return {\n path: this.path,\n method: this.method,\n handlers: this.handlers.map((item: any) => String(item)),\n opts: Object.entries(this.opts).reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: isPrimitive(value) ? value : nameOf(value)\n };\n }, {})\n };\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformLayer.js","sourceRoot":"","sources":["../../../src/domain/PlatformLayer.ts"],"names":[],"mappings":";;;AAAA,qCAAqD;AAoBrD,MAAa,aAAa;IACjB,QAAQ,CAAW;IACnB,IAAI,GAAmB,EAAE,CAAC;IAC1B,MAAM,CAAS;IACf,QAAQ,GAA8B,EAAE,CAAC;IACzC,MAAM,CAAkB;IACxB,IAAI,GAAyB,EAAE,CAAC;IAEvC,KAAK,CAA2B;IAEhC,YAAY,QAAqC,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAA8B;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,GAAG,CAAC,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,aAAM,EAAC,KAAK,CAAC;iBAClD,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAvCD,sCAuCC","sourcesContent":["import {isPrimitive, nameOf, Type} from \"@tsed/core\";\nimport {Provider} from \"@tsed/di\";\nimport type {PlatformParamsCallback} from \"@tsed/platform-params\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport type {PlatformRouter} from \"./PlatformRouter\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformLayerOptions extends Record<string, any> {\n token?: Type<any>;\n}\n\nexport interface PlatformLayerProps {\n provider: Provider;\n path: SinglePathType;\n method: string;\n handlers: any[];\n router: PlatformRouter;\n opts: PlatformLayerOptions;\n}\n\nexport class PlatformLayer {\n public provider: Provider;\n public path: SinglePathType = \"\";\n public method: string;\n public handlers: PlatformHandlerMetadata[] = [];\n public router?: PlatformRouter;\n public opts: PlatformLayerOptions = {};\n\n #args: PlatformParamsCallback[];\n\n constructor(props: Partial<PlatformLayerProps> = {}) {\n Object.assign(this, props);\n }\n\n set(args: PlatformParamsCallback[]) {\n this.#args = args;\n }\n\n getArgs() {\n return [this.path, ...this.#args].filter(Boolean);\n }\n\n isProvider() {\n return !!this.provider;\n }\n\n inspect() {\n return {\n path: this.path,\n method: this.method,\n handlers: this.handlers.map((item: any) => String(item)),\n opts: Object.entries(this.opts).reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: isPrimitive(value) ? value : nameOf(value)\n };\n }, {})\n };\n }\n}\n"]}
@@ -50,9 +50,8 @@ let PlatformRouter = PlatformRouter_1 = class PlatformRouter {
50
50
  provider: this.provider,
51
51
  method: (0, formatMethod_1.formatMethod)(method),
52
52
  path,
53
- handlers: handlers.map((input, index, handlers) => {
54
- const isFinal = opts.isFinal ? index === handlers.length - 1 : false;
55
- return PlatformHandlerMetadata_1.PlatformHandlerMetadata.from(this.injector, input, { ...opts, isFinal });
53
+ handlers: handlers.map((input) => {
54
+ return PlatformHandlerMetadata_1.PlatformHandlerMetadata.from(this.injector, input, opts);
56
55
  }),
57
56
  opts
58
57
  });
@@ -60,28 +59,28 @@ let PlatformRouter = PlatformRouter_1 = class PlatformRouter {
60
59
  return this;
61
60
  }
62
61
  all(path, ...handlers) {
63
- return this.addRoute("all", path, handlers, { isFinal: true });
62
+ return this.addRoute("all", path, handlers);
64
63
  }
65
64
  get(path, ...handlers) {
66
- return this.addRoute("get", path, handlers, { isFinal: true });
65
+ return this.addRoute("get", path, handlers);
67
66
  }
68
67
  post(path, ...handlers) {
69
- return this.addRoute("post", path, handlers, { isFinal: true });
68
+ return this.addRoute("post", path, handlers);
70
69
  }
71
70
  put(path, ...handlers) {
72
- return this.addRoute("put", path, handlers, { isFinal: true });
71
+ return this.addRoute("put", path, handlers);
73
72
  }
74
73
  delete(path, ...handlers) {
75
- return this.addRoute("delete", path, handlers, { isFinal: true });
74
+ return this.addRoute("delete", path, handlers);
76
75
  }
77
76
  patch(path, ...handlers) {
78
- return this.addRoute("patch", path, handlers, { isFinal: true });
77
+ return this.addRoute("patch", path, handlers);
79
78
  }
80
79
  head(path, ...handlers) {
81
- return this.addRoute("head", path, handlers, { isFinal: true });
80
+ return this.addRoute("head", path, handlers);
82
81
  }
83
82
  options(path, ...handlers) {
84
- return this.addRoute("options", path, handlers, { isFinal: true });
83
+ return this.addRoute("options", path, handlers);
85
84
  }
86
85
  statics(path, options) {
87
86
  return this.addRoute("statics", path, [], options);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouter.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouter.ts"],"names":[],"mappings":"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","sourcesContent":["import {isString} from \"@tsed/core\";\nimport {Injectable, InjectorService, Provider, ProviderScope, Scope} from \"@tsed/di\";\nimport {concatPath} from \"@tsed/schema\";\nimport {formatMethod} from \"../utils/formatMethod\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport {PlatformLayer, PlatformLayerOptions} from \"./PlatformLayer\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nfunction printHandler(handler: any) {\n return handler.toString().split(\"{\")[0].trim();\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class PlatformRouter {\n #isBuilt = false;\n\n readonly layers: PlatformLayer[] = [];\n\n provider: Provider;\n\n constructor(protected readonly injector: InjectorService) {}\n\n use(...handlers: any[]) {\n const layer = handlers.reduce((layer: PlatformLayer, item) => {\n if (isString(item) || item instanceof RegExp) {\n layer.path = item;\n } else {\n if (item instanceof PlatformRouter) {\n layer.router = item;\n\n if (!this.provider && item.provider) {\n layer.path = concatPath(layer.path, item.provider.path);\n } else {\n layer.path = layer.path || item.provider.path;\n }\n } else {\n item = PlatformHandlerMetadata.from(this.injector, item);\n }\n\n layer.handlers.push(item);\n }\n\n return layer;\n }, new PlatformLayer({method: \"use\", provider: this.provider}));\n\n this.layers.push(layer);\n\n return this;\n }\n\n addRoute(method: string, path: SinglePathType, handlers: any[], opts: PlatformLayerOptions = {}) {\n const layer = new PlatformLayer({\n provider: this.provider,\n method: formatMethod(method),\n path,\n handlers: handlers.map((input, index, handlers) => {\n const isFinal = opts.isFinal ? index === handlers.length - 1 : false;\n\n return PlatformHandlerMetadata.from(this.injector, input, {...opts, isFinal});\n }),\n opts\n });\n\n this.layers.push(layer);\n\n return this;\n }\n\n all(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"all\", path, handlers, {isFinal: true});\n }\n\n get(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"get\", path, handlers, {isFinal: true});\n }\n\n post(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"post\", path, handlers, {isFinal: true});\n }\n\n put(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"put\", path, handlers, {isFinal: true});\n }\n\n delete(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"delete\", path, handlers, {isFinal: true});\n }\n\n patch(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"patch\", path, handlers, {isFinal: true});\n }\n\n head(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"head\", path, handlers, {isFinal: true});\n }\n\n options(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"options\", path, handlers, {isFinal: true});\n }\n\n statics(path: string, options: any) {\n return this.addRoute(\"statics\", path, [], options);\n }\n\n inspect() {\n return this.layers.map((layer) => {\n const obj = layer.inspect();\n\n return {\n ...obj,\n handlers: obj.handlers.map(printHandler),\n path: concatPath(this.provider?.path, obj.path)\n };\n });\n }\n\n isBuilt() {\n if (this.#isBuilt) {\n return true;\n }\n\n this.#isBuilt = true;\n\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformRouter.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouter.ts"],"names":[],"mappings":"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","sourcesContent":["import {isString} from \"@tsed/core\";\nimport {Injectable, InjectorService, Provider, ProviderScope, Scope} from \"@tsed/di\";\nimport {concatPath} from \"@tsed/schema\";\nimport {formatMethod} from \"../utils/formatMethod\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport {PlatformLayer, PlatformLayerOptions} from \"./PlatformLayer\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nfunction printHandler(handler: any) {\n return handler.toString().split(\"{\")[0].trim();\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class PlatformRouter {\n #isBuilt = false;\n\n readonly layers: PlatformLayer[] = [];\n\n provider: Provider;\n\n constructor(protected readonly injector: InjectorService) {}\n\n use(...handlers: any[]) {\n const layer = handlers.reduce((layer: PlatformLayer, item) => {\n if (isString(item) || item instanceof RegExp) {\n layer.path = item;\n } else {\n if (item instanceof PlatformRouter) {\n layer.router = item;\n\n if (!this.provider && item.provider) {\n layer.path = concatPath(layer.path, item.provider.path);\n } else {\n layer.path = layer.path || item.provider.path;\n }\n } else {\n item = PlatformHandlerMetadata.from(this.injector, item);\n }\n\n layer.handlers.push(item);\n }\n\n return layer;\n }, new PlatformLayer({method: \"use\", provider: this.provider}));\n\n this.layers.push(layer);\n\n return this;\n }\n\n addRoute(method: string, path: SinglePathType, handlers: any[], opts: PlatformLayerOptions = {}) {\n const layer = new PlatformLayer({\n provider: this.provider,\n method: formatMethod(method),\n path,\n handlers: handlers.map((input) => {\n return PlatformHandlerMetadata.from(this.injector, input, opts);\n }),\n opts\n });\n\n this.layers.push(layer);\n\n return this;\n }\n\n all(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"all\", path, handlers);\n }\n\n get(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"get\", path, handlers);\n }\n\n post(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"post\", path, handlers);\n }\n\n put(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"put\", path, handlers);\n }\n\n delete(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"delete\", path, handlers);\n }\n\n patch(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"patch\", path, handlers);\n }\n\n head(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"head\", path, handlers);\n }\n\n options(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"options\", path, handlers);\n }\n\n statics(path: string, options: any) {\n return this.addRoute(\"statics\", path, [], options);\n }\n\n inspect() {\n return this.layers.map((layer) => {\n const obj = layer.inspect();\n\n return {\n ...obj,\n handlers: obj.handlers.map(printHandler),\n path: concatPath(this.provider?.path, obj.path)\n };\n });\n }\n\n isBuilt() {\n if (this.#isBuilt) {\n return true;\n }\n\n this.#isBuilt = true;\n\n return false;\n }\n}\n"]}
@@ -4,7 +4,6 @@ exports.PlatformRouters = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@tsed/core");
6
6
  const di_1 = require("@tsed/di");
7
- const platform_params_1 = require("@tsed/platform-params");
8
7
  const schema_1 = require("@tsed/schema");
9
8
  const useContextHandler_1 = require("../utils/useContextHandler");
10
9
  const PlatformLayer_1 = require("./PlatformLayer");
@@ -37,11 +36,9 @@ di_1.GlobalProviders.createRegistry(di_1.ProviderType.CONTROLLER, di_1.Controlle
37
36
  });
38
37
  let PlatformRouters = class PlatformRouters {
39
38
  injector;
40
- platformParams;
41
39
  hooks = new core_1.Hooks();
42
- constructor(injector, platformParams) {
40
+ constructor(injector) {
43
41
  this.injector = injector;
44
- this.platformParams = platformParams;
45
42
  }
46
43
  prebuild() {
47
44
  this.injector.getProviders(di_1.ProviderType.CONTROLLER).forEach((provider) => {
@@ -78,7 +75,7 @@ let PlatformRouters = class PlatformRouters {
78
75
  ], [operationRoute], this);
79
76
  router.addRoute(operationRoute.method, operationRoute.path || "", [
80
77
  (0, useContextHandler_1.useContextHandler)(($ctx) => {
81
- $ctx.set(schema_1.EndpointMetadata, operationRoute.endpoint);
78
+ $ctx.endpoint = operationRoute.endpoint;
82
79
  }),
83
80
  ...handlers
84
81
  ], operationRoute);
@@ -107,16 +104,7 @@ let PlatformRouters = class PlatformRouters {
107
104
  const handlers = layer.handlers.map((handlerMetadata) => {
108
105
  // set path on handler metadata to retrieve it later in $ctx
109
106
  handlerMetadata.path = layer.path;
110
- let handler;
111
- if (handlerMetadata.isRawMiddleware()) {
112
- handler = handlerMetadata.handler;
113
- }
114
- else {
115
- handler = handlerMetadata.isCtxFn()
116
- ? (scope) => handlerMetadata.handler(scope.$ctx)
117
- : this.platformParams.compileHandler(handlerMetadata);
118
- }
119
- return this.hooks.alter("alterHandler", handler, [handlerMetadata]);
107
+ return this.hooks.alter("alterHandler", handlerMetadata);
120
108
  });
121
109
  layer.set(handlers);
122
110
  return layer;
@@ -125,7 +113,7 @@ let PlatformRouters = class PlatformRouters {
125
113
  };
126
114
  PlatformRouters = tslib_1.__decorate([
127
115
  (0, di_1.Injectable)(),
128
- tslib_1.__metadata("design:paramtypes", [di_1.InjectorService, platform_params_1.PlatformParams])
116
+ tslib_1.__metadata("design:paramtypes", [di_1.InjectorService])
129
117
  ], PlatformRouters);
130
118
  exports.PlatformRouters = PlatformRouters;
131
119
  //# sourceMappingURL=PlatformRouters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouters.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouters.ts"],"names":[],"mappings":"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","sourcesContent":["import {getValue, Hooks, Type} from \"@tsed/core\";\nimport {ControllerProvider, GlobalProviders, Injectable, InjectorService, Provider, ProviderType, TokenProvider} from \"@tsed/di\";\nimport {PlatformParams, PlatformParamsScope} from \"@tsed/platform-params\";\nimport {concatPath, EndpointMetadata, getOperationsRoutes} from \"@tsed/schema\";\nimport {useContextHandler} from \"../utils/useContextHandler\";\nimport {PlatformLayer} from \"./PlatformLayer\";\nimport {PlatformRouter} from \"./PlatformRouter\";\n\nlet AUTO_INC = 0;\n\nfunction getInjectableRouter(injector: InjectorService, provider: Provider): PlatformRouter {\n return injector.get(provider.tokenRouter)!;\n}\n\nfunction createTokenRouter(provider: ControllerProvider) {\n return (provider.tokenRouter = provider.tokenRouter || `${provider.name}_ROUTER_${AUTO_INC++}`);\n}\n\nfunction createInjectableRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter {\n const tokenRouter = createTokenRouter(provider);\n\n if (injector.has(tokenRouter)) {\n return getInjectableRouter(injector, provider);\n }\n\n const router = injector.invoke<PlatformRouter>(PlatformRouter);\n router.provider = provider;\n\n return injector\n .add(tokenRouter, {\n useValue: router\n })\n .invoke<PlatformRouter>(tokenRouter);\n}\n\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {\n onInvoke(provider: ControllerProvider, locals: any, {injector}) {\n const router = createInjectableRouter(injector, provider);\n locals.set(PlatformRouter, router);\n }\n});\n\n@Injectable()\nexport class PlatformRouters {\n readonly hooks = new Hooks();\n\n constructor(protected readonly injector: InjectorService, protected readonly platformParams: PlatformParams) {}\n\n prebuild() {\n this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider: ControllerProvider) => {\n createInjectableRouter(this.injector, provider);\n });\n }\n\n from(token: TokenProvider, parentMiddlewares: any[] = []) {\n const {injector} = this;\n const provider = injector.getProvider<ControllerProvider>(token)!;\n\n if (!provider) {\n throw new Error(\"Token not found in the provider registry\");\n }\n\n const router = createInjectableRouter(injector, provider);\n\n if (router.isBuilt()) {\n return router;\n }\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n\n const {children} = provider;\n\n getOperationsRoutes(provider.token).forEach((operationRoute) => {\n const {endpoint} = operationRoute;\n const {beforeMiddlewares, middlewares: mldwrs, afterMiddlewares} = endpoint;\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n const use = getValue(provider, \"middlewares.use\", []);\n const useAfter = getValue(provider, \"middlewares.useAfter\", []);\n\n const handlers = this.hooks.alter(\n \"alterEndpointHandlers\",\n [\n ...parentMiddlewares,\n ...useBefore,\n ...beforeMiddlewares,\n ...use,\n ...mldwrs,\n operationRoute.endpoint,\n ...afterMiddlewares,\n ...useAfter\n ],\n [operationRoute],\n this\n );\n\n router.addRoute(\n operationRoute.method,\n operationRoute.path || \"\",\n [\n useContextHandler(($ctx) => {\n $ctx.set(EndpointMetadata, operationRoute.endpoint);\n }),\n ...handlers\n ],\n operationRoute\n );\n });\n\n const middlewares: any[] = [...parentMiddlewares, ...useBefore];\n\n children.forEach((token: Type<any>) => {\n const nested = this.from(token, middlewares);\n\n router.use(nested);\n });\n\n return router;\n }\n\n getLayers(router: PlatformRouter): PlatformLayer[] {\n return router.layers\n .flatMap((layer) => {\n if (layer.router) {\n return this.getLayers(layer.router).map((subLayer: PlatformLayer) => {\n return new PlatformLayer({\n ...subLayer,\n path: concatPath(layer.path, subLayer.path)\n });\n });\n }\n\n return new PlatformLayer(layer);\n })\n .map((layer) => {\n const handlers = layer.handlers.map((handlerMetadata) => {\n // set path on handler metadata to retrieve it later in $ctx\n handlerMetadata.path = layer.path;\n\n let handler: any;\n\n if (handlerMetadata.isRawMiddleware()) {\n handler = handlerMetadata.handler;\n } else {\n handler = handlerMetadata.isCtxFn()\n ? (scope: PlatformParamsScope) => handlerMetadata.handler(scope.$ctx)\n : this.platformParams.compileHandler(handlerMetadata);\n }\n\n return this.hooks.alter(\"alterHandler\", handler, [handlerMetadata]);\n });\n\n layer.set(handlers);\n\n return layer;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformRouters.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouters.ts"],"names":[],"mappings":"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","sourcesContent":["import {getValue, Hooks, Type} from \"@tsed/core\";\nimport {ControllerProvider, GlobalProviders, Injectable, InjectorService, Provider, ProviderType, TokenProvider} from \"@tsed/di\";\nimport {concatPath, getOperationsRoutes} from \"@tsed/schema\";\nimport {useContextHandler} from \"../utils/useContextHandler\";\nimport {PlatformLayer} from \"./PlatformLayer\";\nimport {PlatformRouter} from \"./PlatformRouter\";\n\nlet AUTO_INC = 0;\n\nfunction getInjectableRouter(injector: InjectorService, provider: Provider): PlatformRouter {\n return injector.get(provider.tokenRouter)!;\n}\n\nfunction createTokenRouter(provider: ControllerProvider) {\n return (provider.tokenRouter = provider.tokenRouter || `${provider.name}_ROUTER_${AUTO_INC++}`);\n}\n\nfunction createInjectableRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter {\n const tokenRouter = createTokenRouter(provider);\n\n if (injector.has(tokenRouter)) {\n return getInjectableRouter(injector, provider);\n }\n\n const router = injector.invoke<PlatformRouter>(PlatformRouter);\n router.provider = provider;\n\n return injector\n .add(tokenRouter, {\n useValue: router\n })\n .invoke<PlatformRouter>(tokenRouter);\n}\n\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {\n onInvoke(provider: ControllerProvider, locals: any, {injector}) {\n const router = createInjectableRouter(injector, provider);\n locals.set(PlatformRouter, router);\n }\n});\n\n@Injectable()\nexport class PlatformRouters {\n readonly hooks = new Hooks();\n\n constructor(protected readonly injector: InjectorService) {}\n\n prebuild() {\n this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider: ControllerProvider) => {\n createInjectableRouter(this.injector, provider);\n });\n }\n\n from(token: TokenProvider, parentMiddlewares: any[] = []) {\n const {injector} = this;\n const provider = injector.getProvider<ControllerProvider>(token)!;\n\n if (!provider) {\n throw new Error(\"Token not found in the provider registry\");\n }\n\n const router = createInjectableRouter(injector, provider);\n\n if (router.isBuilt()) {\n return router;\n }\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n\n const {children} = provider;\n\n getOperationsRoutes(provider.token).forEach((operationRoute) => {\n const {endpoint} = operationRoute;\n const {beforeMiddlewares, middlewares: mldwrs, afterMiddlewares} = endpoint;\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n const use = getValue(provider, \"middlewares.use\", []);\n const useAfter = getValue(provider, \"middlewares.useAfter\", []);\n\n const handlers = this.hooks.alter(\n \"alterEndpointHandlers\",\n [\n ...parentMiddlewares,\n ...useBefore,\n ...beforeMiddlewares,\n ...use,\n ...mldwrs,\n operationRoute.endpoint,\n ...afterMiddlewares,\n ...useAfter\n ],\n [operationRoute],\n this\n );\n\n router.addRoute(\n operationRoute.method,\n operationRoute.path || \"\",\n [\n useContextHandler(($ctx) => {\n $ctx.endpoint = operationRoute.endpoint;\n }),\n ...handlers\n ],\n operationRoute\n );\n });\n\n const middlewares: any[] = [...parentMiddlewares, ...useBefore];\n\n children.forEach((token: Type<any>) => {\n const nested = this.from(token, middlewares);\n\n router.use(nested);\n });\n\n return router;\n }\n\n getLayers(router: PlatformRouter): PlatformLayer[] {\n return router.layers\n .flatMap((layer) => {\n if (layer.router) {\n return this.getLayers(layer.router).map((subLayer: PlatformLayer) => {\n return new PlatformLayer({\n ...subLayer,\n path: concatPath(layer.path, subLayer.path)\n });\n });\n }\n\n return new PlatformLayer(layer);\n })\n .map((layer) => {\n const handlers = layer.handlers.map((handlerMetadata) => {\n // set path on handler metadata to retrieve it later in $ctx\n handlerMetadata.path = layer.path;\n\n return this.hooks.alter(\"alterHandler\", handlerMetadata);\n });\n\n layer.set(handlers);\n\n return layer;\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useContextHandler = void 0;
3
+ exports.useResponseHandler = exports.useContextHandler = void 0;
4
4
  const PlatformHandlerType_1 = require("../domain/PlatformHandlerType");
5
5
  /**
6
6
  * Create Ts.ED context handler
@@ -12,4 +12,9 @@ function useContextHandler(fn) {
12
12
  return fn;
13
13
  }
14
14
  exports.useContextHandler = useContextHandler;
15
+ function useResponseHandler(fn) {
16
+ fn.type = PlatformHandlerType_1.PlatformHandlerType.RESPONSE_FN;
17
+ return fn;
18
+ }
19
+ exports.useResponseHandler = useResponseHandler;
15
20
  //# sourceMappingURL=useContextHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContextHandler.js","sourceRoot":"","sources":["../../../src/utils/useContextHandler.ts"],"names":[],"mappings":";;;AACA,uEAAkE;AAIlE;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,EAAyD;IACzF,EAAE,CAAC,IAAI,GAAG,yCAAmB,CAAC,MAAM,CAAC;IAErC,OAAO,EAAE,CAAC;AACZ,CAAC;AAJD,8CAIC","sourcesContent":["import {DIContext} from \"@tsed/di\";\nimport {PlatformHandlerType} from \"../domain/PlatformHandlerType\";\n\nexport type PlatformContextHandler<Context = DIContext> = ($ctx: Context) => any | Promise<any>;\n\n/**\n * Create Ts.ED context handler\n * @param fn\n * @ignore\n */\nexport function useContextHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.CTX_FN;\n\n return fn;\n}\n"]}
1
+ {"version":3,"file":"useContextHandler.js","sourceRoot":"","sources":["../../../src/utils/useContextHandler.ts"],"names":[],"mappings":";;;AACA,uEAAkE;AAIlE;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,EAAyD;IACzF,EAAE,CAAC,IAAI,GAAG,yCAAmB,CAAC,MAAM,CAAC;IAErC,OAAO,EAAE,CAAC;AACZ,CAAC;AAJD,8CAIC;AAED,SAAgB,kBAAkB,CAAC,EAAyD;IAC1F,EAAE,CAAC,IAAI,GAAG,yCAAmB,CAAC,WAAW,CAAC;IAE1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAJD,gDAIC","sourcesContent":["import {DIContext} from \"@tsed/di\";\nimport {PlatformHandlerType} from \"../domain/PlatformHandlerType\";\n\nexport type PlatformContextHandler<Context = DIContext> = ($ctx: Context) => any | Promise<any>;\n\n/**\n * Create Ts.ED context handler\n * @param fn\n * @ignore\n */\nexport function useContextHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.CTX_FN;\n\n return fn;\n}\n\nexport function useResponseHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.RESPONSE_FN;\n\n return fn;\n}\n"]}
@@ -83,11 +83,11 @@ export class PlatformHandlerMetadata {
83
83
  hasParamType(paramType) {
84
84
  return this.getParams().findIndex((p) => p.paramType === paramType) > -1;
85
85
  }
86
- isFinal() {
87
- return this.opts?.isFinal || false;
86
+ isInjectable() {
87
+ return !(this.isRawMiddleware() || this.isResponseFn());
88
88
  }
89
89
  isRawMiddleware() {
90
- return [PlatformHandlerType.RAW_ERR_FN, PlatformHandlerType.RAW_FN].includes(this.type);
90
+ return this.type === PlatformHandlerType.RAW_ERR_FN || this.type === PlatformHandlerType.RAW_FN;
91
91
  }
92
92
  isEndpoint() {
93
93
  return this.type === PlatformHandlerType.ENDPOINT;
@@ -95,6 +95,9 @@ export class PlatformHandlerMetadata {
95
95
  isCtxFn() {
96
96
  return this.type === PlatformHandlerType.CTX_FN;
97
97
  }
98
+ isResponseFn() {
99
+ return this.type === PlatformHandlerType.RESPONSE_FN;
100
+ }
98
101
  toString() {
99
102
  return [nameOf(this.target), this.propertyKey].filter(Boolean).join(".");
100
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformHandlerMetadata.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {InjectorService, Provider, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {ParamTypes} from \"@tsed/platform-params\";\nimport {EndpointMetadata, JsonEntityStore, JsonParameterStore} from \"@tsed/schema\";\nimport {PlatformHandlerType} from \"./PlatformHandlerType\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformHandlerMetadataOpts extends Record<string, any> {\n token?: TokenProvider;\n isFinal?: boolean;\n}\n\nexport interface PlatformHandlerMetadataProps {\n provider?: Provider;\n handler?: any;\n opts?: PlatformHandlerMetadataOpts;\n propertyKey?: string | symbol;\n type?: PlatformHandlerType;\n}\n\nexport class PlatformHandlerMetadata {\n path: SinglePathType;\n\n readonly provider?: Provider;\n readonly propertyKey: string | symbol;\n readonly type: PlatformHandlerType = PlatformHandlerType.RAW_FN;\n readonly hasNextFunction: boolean = false;\n readonly opts: PlatformHandlerMetadataOpts = {};\n\n #handler: any;\n\n constructor(props: PlatformHandlerMetadataProps) {\n const {propertyKey, type, provider, handler, opts} = props;\n\n this.provider = provider;\n this.type = type || handler.type || PlatformHandlerType.RAW_FN;\n this.opts = opts || {};\n\n this.#handler = propertyKey ? this.target.prototype[propertyKey] : handler;\n\n if (propertyKey) {\n this.propertyKey = propertyKey;\n this.hasNextFunction = this.hasParamType(ParamTypes.NEXT_FN);\n\n if (this.hasParamType(ParamTypes.ERR)) {\n this.type = PlatformHandlerType.ERR_MIDDLEWARE;\n }\n } else {\n if (this.#handler.length === 4) {\n this.type = PlatformHandlerType.RAW_ERR_FN;\n }\n this.hasNextFunction = this.#handler.length >= 3;\n }\n }\n\n get target() {\n return this.provider?.useClass || this.#handler;\n }\n\n get token() {\n return this.provider?.token || this.#handler;\n }\n\n get handler() {\n return this.#handler;\n }\n\n get scope() {\n return this.provider?.scope || ProviderScope.SINGLETON;\n }\n\n get hasErrorParam() {\n return this.type === PlatformHandlerType.ERR_MIDDLEWARE || this.type === PlatformHandlerType.RAW_ERR_FN;\n }\n\n get store() {\n return JsonEntityStore.fromMethod(this.provider!.useClass, this.propertyKey!);\n }\n\n static from(injector: InjectorService, input: any, opts: PlatformHandlerMetadataOpts = {}): PlatformHandlerMetadata {\n if (input instanceof PlatformHandlerMetadata) {\n return input;\n }\n\n if (input instanceof EndpointMetadata) {\n const provider = injector.getProvider(opts.token)!;\n\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.ENDPOINT,\n propertyKey: input.propertyKey,\n opts\n });\n }\n\n const provider = injector.getProvider(input);\n\n if (provider) {\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.MIDDLEWARE,\n propertyKey: \"use\",\n opts\n });\n }\n\n return new PlatformHandlerMetadata({\n handler: input,\n type: input.type,\n opts\n });\n }\n\n public getParams() {\n return JsonParameterStore.getParams(this.target, this.propertyKey) || [];\n }\n\n public hasParamType(paramType: any): boolean {\n return this.getParams().findIndex((p) => p.paramType === paramType) > -1;\n }\n\n public isFinal() {\n return this.opts?.isFinal || false;\n }\n\n public isRawMiddleware() {\n return [PlatformHandlerType.RAW_ERR_FN, PlatformHandlerType.RAW_FN].includes(this.type);\n }\n\n public isEndpoint() {\n return this.type === PlatformHandlerType.ENDPOINT;\n }\n\n public isCtxFn() {\n return this.type === PlatformHandlerType.CTX_FN;\n }\n\n toString() {\n return [nameOf(this.target), this.propertyKey].filter(Boolean).join(\".\");\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformHandlerMetadata.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAA4B,aAAa,EAAgB,MAAM,UAAU,CAAC;AACjF,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACnF,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAe1D,MAAM,OAAO,uBAAuB;IAClC,IAAI,CAAiB;IAEZ,QAAQ,CAAY;IACpB,WAAW,CAAkB;IAC7B,IAAI,GAAwB,mBAAmB,CAAC,MAAM,CAAC;IACvD,eAAe,GAAY,KAAK,CAAC;IACjC,IAAI,GAAgC,EAAE,CAAC;IAEhD,QAAQ,CAAM;IAEd,YAAY,KAAmC;QAC7C,MAAM,EAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC;QAE3D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE3E,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC;aAChD;SACF;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC;aAC5C;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;SAClD;IACH,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;IAClD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,aAAa,CAAC,SAAS,CAAC;IACzD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,UAAU,CAAC;IAC1G,CAAC;IAED,IAAI,KAAK;QACP,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAY,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,QAAyB,EAAE,KAAU,EAAE,OAAoC,EAAE;QACvF,IAAI,KAAK,YAAY,uBAAuB,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,YAAY,gBAAgB,EAAE;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;YAEnD,OAAO,IAAI,uBAAuB,CAAC;gBACjC,QAAQ;gBACR,IAAI,EAAE,mBAAmB,CAAC,QAAQ;gBAClC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,IAAI;aACL,CAAC,CAAC;SACJ;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE;YACZ,OAAO,IAAI,uBAAuB,CAAC;gBACjC,QAAQ;gBACR,IAAI,EAAE,mBAAmB,CAAC,UAAU;gBACpC,WAAW,EAAE,KAAK;gBAClB,IAAI;aACL,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,uBAAuB,CAAC;YACjC,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAEM,SAAS;QACd,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAEM,YAAY,CAAC,SAAc;QAChC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEM,YAAY;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,CAAC;IAClG,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ,CAAC;IACpD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,CAAC;IAClD,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,WAAW,CAAC;IACvD,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {InjectorService, Provider, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {ParamTypes} from \"@tsed/platform-params\";\nimport {EndpointMetadata, JsonEntityStore, JsonParameterStore} from \"@tsed/schema\";\nimport {PlatformHandlerType} from \"./PlatformHandlerType\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformHandlerMetadataOpts extends Record<string, any> {\n token?: TokenProvider;\n}\n\nexport interface PlatformHandlerMetadataProps {\n provider?: Provider;\n handler?: any;\n opts?: PlatformHandlerMetadataOpts;\n propertyKey?: string | symbol;\n type?: PlatformHandlerType;\n}\n\nexport class PlatformHandlerMetadata {\n path: SinglePathType;\n\n readonly provider?: Provider;\n readonly propertyKey: string | symbol;\n readonly type: PlatformHandlerType = PlatformHandlerType.RAW_FN;\n readonly hasNextFunction: boolean = false;\n readonly opts: PlatformHandlerMetadataOpts = {};\n\n #handler: any;\n\n constructor(props: PlatformHandlerMetadataProps) {\n const {propertyKey, type, provider, handler, opts} = props;\n\n this.provider = provider;\n this.type = type || handler.type || PlatformHandlerType.RAW_FN;\n this.opts = opts || {};\n\n this.#handler = propertyKey ? this.target.prototype[propertyKey] : handler;\n\n if (propertyKey) {\n this.propertyKey = propertyKey;\n this.hasNextFunction = this.hasParamType(ParamTypes.NEXT_FN);\n\n if (this.hasParamType(ParamTypes.ERR)) {\n this.type = PlatformHandlerType.ERR_MIDDLEWARE;\n }\n } else {\n if (this.#handler.length === 4) {\n this.type = PlatformHandlerType.RAW_ERR_FN;\n }\n this.hasNextFunction = this.#handler.length >= 3;\n }\n }\n\n get target() {\n return this.provider?.useClass || this.#handler;\n }\n\n get token() {\n return this.provider?.token || this.#handler;\n }\n\n get handler() {\n return this.#handler;\n }\n\n get scope() {\n return this.provider?.scope || ProviderScope.SINGLETON;\n }\n\n get hasErrorParam() {\n return this.type === PlatformHandlerType.ERR_MIDDLEWARE || this.type === PlatformHandlerType.RAW_ERR_FN;\n }\n\n get store() {\n return JsonEntityStore.fromMethod(this.provider!.useClass, this.propertyKey!);\n }\n\n static from(injector: InjectorService, input: any, opts: PlatformHandlerMetadataOpts = {}): PlatformHandlerMetadata {\n if (input instanceof PlatformHandlerMetadata) {\n return input;\n }\n\n if (input instanceof EndpointMetadata) {\n const provider = injector.getProvider(opts.token)!;\n\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.ENDPOINT,\n propertyKey: input.propertyKey,\n opts\n });\n }\n\n const provider = injector.getProvider(input);\n\n if (provider) {\n return new PlatformHandlerMetadata({\n provider,\n type: PlatformHandlerType.MIDDLEWARE,\n propertyKey: \"use\",\n opts\n });\n }\n\n return new PlatformHandlerMetadata({\n handler: input,\n type: input.type,\n opts\n });\n }\n\n public getParams() {\n return JsonParameterStore.getParams(this.target, this.propertyKey) || [];\n }\n\n public hasParamType(paramType: any): boolean {\n return this.getParams().findIndex((p) => p.paramType === paramType) > -1;\n }\n\n public isInjectable() {\n return !(this.isRawMiddleware() || this.isResponseFn());\n }\n\n public isRawMiddleware() {\n return this.type === PlatformHandlerType.RAW_ERR_FN || this.type === PlatformHandlerType.RAW_FN;\n }\n\n public isEndpoint() {\n return this.type === PlatformHandlerType.ENDPOINT;\n }\n\n public isCtxFn() {\n return this.type === PlatformHandlerType.CTX_FN;\n }\n\n public isResponseFn() {\n return this.type === PlatformHandlerType.RESPONSE_FN;\n }\n\n toString() {\n return [nameOf(this.target), this.propertyKey].filter(Boolean).join(\".\");\n }\n}\n"]}
@@ -5,6 +5,7 @@ export var PlatformHandlerType;
5
5
  PlatformHandlerType["MIDDLEWARE"] = "middleware";
6
6
  PlatformHandlerType["ERR_MIDDLEWARE"] = "err:middleware";
7
7
  PlatformHandlerType["CTX_FN"] = "context";
8
+ PlatformHandlerType["RESPONSE_FN"] = "response";
8
9
  PlatformHandlerType["RAW_FN"] = "raw:middleware";
9
10
  PlatformHandlerType["RAW_ERR_FN"] = "raw:err:middleware";
10
11
  })(PlatformHandlerType || (PlatformHandlerType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformHandlerType.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;IACjC,yCAAkB,CAAA;IAClB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;AACnC,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B","sourcesContent":["export enum PlatformHandlerType {\n CUSTOM = \"custom\",\n ENDPOINT = \"endpoint\",\n MIDDLEWARE = \"middleware\",\n ERR_MIDDLEWARE = \"err:middleware\",\n CTX_FN = \"context\",\n RAW_FN = \"raw:middleware\",\n RAW_ERR_FN = \"raw:err:middleware\"\n}\n"]}
1
+ {"version":3,"file":"PlatformHandlerType.js","sourceRoot":"","sources":["../../../src/domain/PlatformHandlerType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;IACjC,yCAAkB,CAAA;IAClB,+CAAwB,CAAA;IACxB,gDAAyB,CAAA;IACzB,wDAAiC,CAAA;AACnC,CAAC,EATW,mBAAmB,KAAnB,mBAAmB,QAS9B","sourcesContent":["export enum PlatformHandlerType {\n CUSTOM = \"custom\",\n ENDPOINT = \"endpoint\",\n MIDDLEWARE = \"middleware\",\n ERR_MIDDLEWARE = \"err:middleware\",\n CTX_FN = \"context\",\n RESPONSE_FN = \"response\",\n RAW_FN = \"raw:middleware\",\n RAW_ERR_FN = \"raw:err:middleware\"\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformLayer.js","sourceRoot":"","sources":["../../../src/domain/PlatformLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAO,MAAM,YAAY,CAAC;AAqBrD,MAAM,OAAO,aAAa;IACjB,QAAQ,CAAW;IACnB,IAAI,GAAmB,EAAE,CAAC;IAC1B,MAAM,CAAS;IACf,QAAQ,GAA8B,EAAE,CAAC;IACzC,MAAM,CAAkB;IACxB,IAAI,GAAyB,EAAE,CAAC;IAEvC,KAAK,CAA2B;IAEhC,YAAY,QAAqC,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAA8B;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAClD,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF","sourcesContent":["import {isPrimitive, nameOf, Type} from \"@tsed/core\";\nimport {Provider} from \"@tsed/di\";\nimport {PlatformParamsCallback} from \"@tsed/platform-params\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport type {PlatformRouter} from \"./PlatformRouter\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformLayerOptions extends Record<string, any> {\n token?: Type<any>;\n isFinal?: boolean;\n}\n\nexport interface PlatformLayerProps {\n provider: Provider;\n path: SinglePathType;\n method: string;\n handlers: any[];\n router: PlatformRouter;\n opts: PlatformLayerOptions;\n}\n\nexport class PlatformLayer {\n public provider: Provider;\n public path: SinglePathType = \"\";\n public method: string;\n public handlers: PlatformHandlerMetadata[] = [];\n public router?: PlatformRouter;\n public opts: PlatformLayerOptions = {};\n\n #args: PlatformParamsCallback[];\n\n constructor(props: Partial<PlatformLayerProps> = {}) {\n Object.assign(this, props);\n }\n\n set(args: PlatformParamsCallback[]) {\n this.#args = args;\n }\n\n getArgs() {\n return [this.path, ...this.#args].filter(Boolean);\n }\n\n isProvider() {\n return !!this.provider;\n }\n\n inspect() {\n return {\n path: this.path,\n method: this.method,\n handlers: this.handlers.map((item: any) => String(item)),\n opts: Object.entries(this.opts).reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: isPrimitive(value) ? value : nameOf(value)\n };\n }, {})\n };\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformLayer.js","sourceRoot":"","sources":["../../../src/domain/PlatformLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAO,MAAM,YAAY,CAAC;AAoBrD,MAAM,OAAO,aAAa;IACjB,QAAQ,CAAW;IACnB,IAAI,GAAmB,EAAE,CAAC;IAC1B,MAAM,CAAS;IACf,QAAQ,GAA8B,EAAE,CAAC;IACzC,MAAM,CAAkB;IACxB,IAAI,GAAyB,EAAE,CAAC;IAEvC,KAAK,CAA2B;IAEhC,YAAY,QAAqC,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAA8B;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3D,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAClD,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF","sourcesContent":["import {isPrimitive, nameOf, Type} from \"@tsed/core\";\nimport {Provider} from \"@tsed/di\";\nimport type {PlatformParamsCallback} from \"@tsed/platform-params\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport type {PlatformRouter} from \"./PlatformRouter\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nexport interface PlatformLayerOptions extends Record<string, any> {\n token?: Type<any>;\n}\n\nexport interface PlatformLayerProps {\n provider: Provider;\n path: SinglePathType;\n method: string;\n handlers: any[];\n router: PlatformRouter;\n opts: PlatformLayerOptions;\n}\n\nexport class PlatformLayer {\n public provider: Provider;\n public path: SinglePathType = \"\";\n public method: string;\n public handlers: PlatformHandlerMetadata[] = [];\n public router?: PlatformRouter;\n public opts: PlatformLayerOptions = {};\n\n #args: PlatformParamsCallback[];\n\n constructor(props: Partial<PlatformLayerProps> = {}) {\n Object.assign(this, props);\n }\n\n set(args: PlatformParamsCallback[]) {\n this.#args = args;\n }\n\n getArgs() {\n return [this.path, ...this.#args].filter(Boolean);\n }\n\n isProvider() {\n return !!this.provider;\n }\n\n inspect() {\n return {\n path: this.path,\n method: this.method,\n handlers: this.handlers.map((item: any) => String(item)),\n opts: Object.entries(this.opts).reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: isPrimitive(value) ? value : nameOf(value)\n };\n }, {})\n };\n }\n}\n"]}
@@ -47,9 +47,8 @@ let PlatformRouter = PlatformRouter_1 = class PlatformRouter {
47
47
  provider: this.provider,
48
48
  method: formatMethod(method),
49
49
  path,
50
- handlers: handlers.map((input, index, handlers) => {
51
- const isFinal = opts.isFinal ? index === handlers.length - 1 : false;
52
- return PlatformHandlerMetadata.from(this.injector, input, { ...opts, isFinal });
50
+ handlers: handlers.map((input) => {
51
+ return PlatformHandlerMetadata.from(this.injector, input, opts);
53
52
  }),
54
53
  opts
55
54
  });
@@ -57,28 +56,28 @@ let PlatformRouter = PlatformRouter_1 = class PlatformRouter {
57
56
  return this;
58
57
  }
59
58
  all(path, ...handlers) {
60
- return this.addRoute("all", path, handlers, { isFinal: true });
59
+ return this.addRoute("all", path, handlers);
61
60
  }
62
61
  get(path, ...handlers) {
63
- return this.addRoute("get", path, handlers, { isFinal: true });
62
+ return this.addRoute("get", path, handlers);
64
63
  }
65
64
  post(path, ...handlers) {
66
- return this.addRoute("post", path, handlers, { isFinal: true });
65
+ return this.addRoute("post", path, handlers);
67
66
  }
68
67
  put(path, ...handlers) {
69
- return this.addRoute("put", path, handlers, { isFinal: true });
68
+ return this.addRoute("put", path, handlers);
70
69
  }
71
70
  delete(path, ...handlers) {
72
- return this.addRoute("delete", path, handlers, { isFinal: true });
71
+ return this.addRoute("delete", path, handlers);
73
72
  }
74
73
  patch(path, ...handlers) {
75
- return this.addRoute("patch", path, handlers, { isFinal: true });
74
+ return this.addRoute("patch", path, handlers);
76
75
  }
77
76
  head(path, ...handlers) {
78
- return this.addRoute("head", path, handlers, { isFinal: true });
77
+ return this.addRoute("head", path, handlers);
79
78
  }
80
79
  options(path, ...handlers) {
81
- return this.addRoute("options", path, handlers, { isFinal: true });
80
+ return this.addRoute("options", path, handlers);
82
81
  }
83
82
  statics(path, options) {
84
83
  return this.addRoute("statics", path, [], options);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouter.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouter.ts"],"names":[],"mappings":"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","sourcesContent":["import {isString} from \"@tsed/core\";\nimport {Injectable, InjectorService, Provider, ProviderScope, Scope} from \"@tsed/di\";\nimport {concatPath} from \"@tsed/schema\";\nimport {formatMethod} from \"../utils/formatMethod\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport {PlatformLayer, PlatformLayerOptions} from \"./PlatformLayer\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nfunction printHandler(handler: any) {\n return handler.toString().split(\"{\")[0].trim();\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class PlatformRouter {\n #isBuilt = false;\n\n readonly layers: PlatformLayer[] = [];\n\n provider: Provider;\n\n constructor(protected readonly injector: InjectorService) {}\n\n use(...handlers: any[]) {\n const layer = handlers.reduce((layer: PlatformLayer, item) => {\n if (isString(item) || item instanceof RegExp) {\n layer.path = item;\n } else {\n if (item instanceof PlatformRouter) {\n layer.router = item;\n\n if (!this.provider && item.provider) {\n layer.path = concatPath(layer.path, item.provider.path);\n } else {\n layer.path = layer.path || item.provider.path;\n }\n } else {\n item = PlatformHandlerMetadata.from(this.injector, item);\n }\n\n layer.handlers.push(item);\n }\n\n return layer;\n }, new PlatformLayer({method: \"use\", provider: this.provider}));\n\n this.layers.push(layer);\n\n return this;\n }\n\n addRoute(method: string, path: SinglePathType, handlers: any[], opts: PlatformLayerOptions = {}) {\n const layer = new PlatformLayer({\n provider: this.provider,\n method: formatMethod(method),\n path,\n handlers: handlers.map((input, index, handlers) => {\n const isFinal = opts.isFinal ? index === handlers.length - 1 : false;\n\n return PlatformHandlerMetadata.from(this.injector, input, {...opts, isFinal});\n }),\n opts\n });\n\n this.layers.push(layer);\n\n return this;\n }\n\n all(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"all\", path, handlers, {isFinal: true});\n }\n\n get(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"get\", path, handlers, {isFinal: true});\n }\n\n post(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"post\", path, handlers, {isFinal: true});\n }\n\n put(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"put\", path, handlers, {isFinal: true});\n }\n\n delete(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"delete\", path, handlers, {isFinal: true});\n }\n\n patch(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"patch\", path, handlers, {isFinal: true});\n }\n\n head(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"head\", path, handlers, {isFinal: true});\n }\n\n options(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"options\", path, handlers, {isFinal: true});\n }\n\n statics(path: string, options: any) {\n return this.addRoute(\"statics\", path, [], options);\n }\n\n inspect() {\n return this.layers.map((layer) => {\n const obj = layer.inspect();\n\n return {\n ...obj,\n handlers: obj.handlers.map(printHandler),\n path: concatPath(this.provider?.path, obj.path)\n };\n });\n }\n\n isBuilt() {\n if (this.#isBuilt) {\n return true;\n }\n\n this.#isBuilt = true;\n\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformRouter.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouter.ts"],"names":[],"mappings":"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","sourcesContent":["import {isString} from \"@tsed/core\";\nimport {Injectable, InjectorService, Provider, ProviderScope, Scope} from \"@tsed/di\";\nimport {concatPath} from \"@tsed/schema\";\nimport {formatMethod} from \"../utils/formatMethod\";\nimport {PlatformHandlerMetadata} from \"./PlatformHandlerMetadata\";\nimport {PlatformLayer, PlatformLayerOptions} from \"./PlatformLayer\";\nimport {SinglePathType} from \"./SinglePathType\";\n\nfunction printHandler(handler: any) {\n return handler.toString().split(\"{\")[0].trim();\n}\n\n@Injectable()\n@Scope(ProviderScope.INSTANCE)\nexport class PlatformRouter {\n #isBuilt = false;\n\n readonly layers: PlatformLayer[] = [];\n\n provider: Provider;\n\n constructor(protected readonly injector: InjectorService) {}\n\n use(...handlers: any[]) {\n const layer = handlers.reduce((layer: PlatformLayer, item) => {\n if (isString(item) || item instanceof RegExp) {\n layer.path = item;\n } else {\n if (item instanceof PlatformRouter) {\n layer.router = item;\n\n if (!this.provider && item.provider) {\n layer.path = concatPath(layer.path, item.provider.path);\n } else {\n layer.path = layer.path || item.provider.path;\n }\n } else {\n item = PlatformHandlerMetadata.from(this.injector, item);\n }\n\n layer.handlers.push(item);\n }\n\n return layer;\n }, new PlatformLayer({method: \"use\", provider: this.provider}));\n\n this.layers.push(layer);\n\n return this;\n }\n\n addRoute(method: string, path: SinglePathType, handlers: any[], opts: PlatformLayerOptions = {}) {\n const layer = new PlatformLayer({\n provider: this.provider,\n method: formatMethod(method),\n path,\n handlers: handlers.map((input) => {\n return PlatformHandlerMetadata.from(this.injector, input, opts);\n }),\n opts\n });\n\n this.layers.push(layer);\n\n return this;\n }\n\n all(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"all\", path, handlers);\n }\n\n get(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"get\", path, handlers);\n }\n\n post(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"post\", path, handlers);\n }\n\n put(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"put\", path, handlers);\n }\n\n delete(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"delete\", path, handlers);\n }\n\n patch(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"patch\", path, handlers);\n }\n\n head(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"head\", path, handlers);\n }\n\n options(path: SinglePathType, ...handlers: any[]) {\n return this.addRoute(\"options\", path, handlers);\n }\n\n statics(path: string, options: any) {\n return this.addRoute(\"statics\", path, [], options);\n }\n\n inspect() {\n return this.layers.map((layer) => {\n const obj = layer.inspect();\n\n return {\n ...obj,\n handlers: obj.handlers.map(printHandler),\n path: concatPath(this.provider?.path, obj.path)\n };\n });\n }\n\n isBuilt() {\n if (this.#isBuilt) {\n return true;\n }\n\n this.#isBuilt = true;\n\n return false;\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { getValue, Hooks } from "@tsed/core";
3
3
  import { ControllerProvider, GlobalProviders, Injectable, InjectorService, ProviderType } from "@tsed/di";
4
- import { PlatformParams } from "@tsed/platform-params";
5
- import { concatPath, EndpointMetadata, getOperationsRoutes } from "@tsed/schema";
4
+ import { concatPath, getOperationsRoutes } from "@tsed/schema";
6
5
  import { useContextHandler } from "../utils/useContextHandler.js";
7
6
  import { PlatformLayer } from "./PlatformLayer.js";
8
7
  import { PlatformRouter } from "./PlatformRouter.js";
@@ -34,11 +33,9 @@ GlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {
34
33
  });
35
34
  let PlatformRouters = class PlatformRouters {
36
35
  injector;
37
- platformParams;
38
36
  hooks = new Hooks();
39
- constructor(injector, platformParams) {
37
+ constructor(injector) {
40
38
  this.injector = injector;
41
- this.platformParams = platformParams;
42
39
  }
43
40
  prebuild() {
44
41
  this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider) => {
@@ -75,7 +72,7 @@ let PlatformRouters = class PlatformRouters {
75
72
  ], [operationRoute], this);
76
73
  router.addRoute(operationRoute.method, operationRoute.path || "", [
77
74
  useContextHandler(($ctx) => {
78
- $ctx.set(EndpointMetadata, operationRoute.endpoint);
75
+ $ctx.endpoint = operationRoute.endpoint;
79
76
  }),
80
77
  ...handlers
81
78
  ], operationRoute);
@@ -104,16 +101,7 @@ let PlatformRouters = class PlatformRouters {
104
101
  const handlers = layer.handlers.map((handlerMetadata) => {
105
102
  // set path on handler metadata to retrieve it later in $ctx
106
103
  handlerMetadata.path = layer.path;
107
- let handler;
108
- if (handlerMetadata.isRawMiddleware()) {
109
- handler = handlerMetadata.handler;
110
- }
111
- else {
112
- handler = handlerMetadata.isCtxFn()
113
- ? (scope) => handlerMetadata.handler(scope.$ctx)
114
- : this.platformParams.compileHandler(handlerMetadata);
115
- }
116
- return this.hooks.alter("alterHandler", handler, [handlerMetadata]);
104
+ return this.hooks.alter("alterHandler", handlerMetadata);
117
105
  });
118
106
  layer.set(handlers);
119
107
  return layer;
@@ -122,7 +110,7 @@ let PlatformRouters = class PlatformRouters {
122
110
  };
123
111
  PlatformRouters = __decorate([
124
112
  Injectable(),
125
- __metadata("design:paramtypes", [InjectorService, PlatformParams])
113
+ __metadata("design:paramtypes", [InjectorService])
126
114
  ], PlatformRouters);
127
115
  export { PlatformRouters };
128
116
  //# sourceMappingURL=PlatformRouters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformRouters.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouters.ts"],"names":[],"mappings":"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","sourcesContent":["import {getValue, Hooks, Type} from \"@tsed/core\";\nimport {ControllerProvider, GlobalProviders, Injectable, InjectorService, Provider, ProviderType, TokenProvider} from \"@tsed/di\";\nimport {PlatformParams, PlatformParamsScope} from \"@tsed/platform-params\";\nimport {concatPath, EndpointMetadata, getOperationsRoutes} from \"@tsed/schema\";\nimport {useContextHandler} from \"../utils/useContextHandler\";\nimport {PlatformLayer} from \"./PlatformLayer\";\nimport {PlatformRouter} from \"./PlatformRouter\";\n\nlet AUTO_INC = 0;\n\nfunction getInjectableRouter(injector: InjectorService, provider: Provider): PlatformRouter {\n return injector.get(provider.tokenRouter)!;\n}\n\nfunction createTokenRouter(provider: ControllerProvider) {\n return (provider.tokenRouter = provider.tokenRouter || `${provider.name}_ROUTER_${AUTO_INC++}`);\n}\n\nfunction createInjectableRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter {\n const tokenRouter = createTokenRouter(provider);\n\n if (injector.has(tokenRouter)) {\n return getInjectableRouter(injector, provider);\n }\n\n const router = injector.invoke<PlatformRouter>(PlatformRouter);\n router.provider = provider;\n\n return injector\n .add(tokenRouter, {\n useValue: router\n })\n .invoke<PlatformRouter>(tokenRouter);\n}\n\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {\n onInvoke(provider: ControllerProvider, locals: any, {injector}) {\n const router = createInjectableRouter(injector, provider);\n locals.set(PlatformRouter, router);\n }\n});\n\n@Injectable()\nexport class PlatformRouters {\n readonly hooks = new Hooks();\n\n constructor(protected readonly injector: InjectorService, protected readonly platformParams: PlatformParams) {}\n\n prebuild() {\n this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider: ControllerProvider) => {\n createInjectableRouter(this.injector, provider);\n });\n }\n\n from(token: TokenProvider, parentMiddlewares: any[] = []) {\n const {injector} = this;\n const provider = injector.getProvider<ControllerProvider>(token)!;\n\n if (!provider) {\n throw new Error(\"Token not found in the provider registry\");\n }\n\n const router = createInjectableRouter(injector, provider);\n\n if (router.isBuilt()) {\n return router;\n }\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n\n const {children} = provider;\n\n getOperationsRoutes(provider.token).forEach((operationRoute) => {\n const {endpoint} = operationRoute;\n const {beforeMiddlewares, middlewares: mldwrs, afterMiddlewares} = endpoint;\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n const use = getValue(provider, \"middlewares.use\", []);\n const useAfter = getValue(provider, \"middlewares.useAfter\", []);\n\n const handlers = this.hooks.alter(\n \"alterEndpointHandlers\",\n [\n ...parentMiddlewares,\n ...useBefore,\n ...beforeMiddlewares,\n ...use,\n ...mldwrs,\n operationRoute.endpoint,\n ...afterMiddlewares,\n ...useAfter\n ],\n [operationRoute],\n this\n );\n\n router.addRoute(\n operationRoute.method,\n operationRoute.path || \"\",\n [\n useContextHandler(($ctx) => {\n $ctx.set(EndpointMetadata, operationRoute.endpoint);\n }),\n ...handlers\n ],\n operationRoute\n );\n });\n\n const middlewares: any[] = [...parentMiddlewares, ...useBefore];\n\n children.forEach((token: Type<any>) => {\n const nested = this.from(token, middlewares);\n\n router.use(nested);\n });\n\n return router;\n }\n\n getLayers(router: PlatformRouter): PlatformLayer[] {\n return router.layers\n .flatMap((layer) => {\n if (layer.router) {\n return this.getLayers(layer.router).map((subLayer: PlatformLayer) => {\n return new PlatformLayer({\n ...subLayer,\n path: concatPath(layer.path, subLayer.path)\n });\n });\n }\n\n return new PlatformLayer(layer);\n })\n .map((layer) => {\n const handlers = layer.handlers.map((handlerMetadata) => {\n // set path on handler metadata to retrieve it later in $ctx\n handlerMetadata.path = layer.path;\n\n let handler: any;\n\n if (handlerMetadata.isRawMiddleware()) {\n handler = handlerMetadata.handler;\n } else {\n handler = handlerMetadata.isCtxFn()\n ? (scope: PlatformParamsScope) => handlerMetadata.handler(scope.$ctx)\n : this.platformParams.compileHandler(handlerMetadata);\n }\n\n return this.hooks.alter(\"alterHandler\", handler, [handlerMetadata]);\n });\n\n layer.set(handlers);\n\n return layer;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformRouters.js","sourceRoot":"","sources":["../../../src/domain/PlatformRouters.ts"],"names":[],"mappings":"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","sourcesContent":["import {getValue, Hooks, Type} from \"@tsed/core\";\nimport {ControllerProvider, GlobalProviders, Injectable, InjectorService, Provider, ProviderType, TokenProvider} from \"@tsed/di\";\nimport {concatPath, getOperationsRoutes} from \"@tsed/schema\";\nimport {useContextHandler} from \"../utils/useContextHandler\";\nimport {PlatformLayer} from \"./PlatformLayer\";\nimport {PlatformRouter} from \"./PlatformRouter\";\n\nlet AUTO_INC = 0;\n\nfunction getInjectableRouter(injector: InjectorService, provider: Provider): PlatformRouter {\n return injector.get(provider.tokenRouter)!;\n}\n\nfunction createTokenRouter(provider: ControllerProvider) {\n return (provider.tokenRouter = provider.tokenRouter || `${provider.name}_ROUTER_${AUTO_INC++}`);\n}\n\nfunction createInjectableRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter {\n const tokenRouter = createTokenRouter(provider);\n\n if (injector.has(tokenRouter)) {\n return getInjectableRouter(injector, provider);\n }\n\n const router = injector.invoke<PlatformRouter>(PlatformRouter);\n router.provider = provider;\n\n return injector\n .add(tokenRouter, {\n useValue: router\n })\n .invoke<PlatformRouter>(tokenRouter);\n}\n\nGlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {\n onInvoke(provider: ControllerProvider, locals: any, {injector}) {\n const router = createInjectableRouter(injector, provider);\n locals.set(PlatformRouter, router);\n }\n});\n\n@Injectable()\nexport class PlatformRouters {\n readonly hooks = new Hooks();\n\n constructor(protected readonly injector: InjectorService) {}\n\n prebuild() {\n this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider: ControllerProvider) => {\n createInjectableRouter(this.injector, provider);\n });\n }\n\n from(token: TokenProvider, parentMiddlewares: any[] = []) {\n const {injector} = this;\n const provider = injector.getProvider<ControllerProvider>(token)!;\n\n if (!provider) {\n throw new Error(\"Token not found in the provider registry\");\n }\n\n const router = createInjectableRouter(injector, provider);\n\n if (router.isBuilt()) {\n return router;\n }\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n\n const {children} = provider;\n\n getOperationsRoutes(provider.token).forEach((operationRoute) => {\n const {endpoint} = operationRoute;\n const {beforeMiddlewares, middlewares: mldwrs, afterMiddlewares} = endpoint;\n\n const useBefore = getValue(provider, \"middlewares.useBefore\", []);\n const use = getValue(provider, \"middlewares.use\", []);\n const useAfter = getValue(provider, \"middlewares.useAfter\", []);\n\n const handlers = this.hooks.alter(\n \"alterEndpointHandlers\",\n [\n ...parentMiddlewares,\n ...useBefore,\n ...beforeMiddlewares,\n ...use,\n ...mldwrs,\n operationRoute.endpoint,\n ...afterMiddlewares,\n ...useAfter\n ],\n [operationRoute],\n this\n );\n\n router.addRoute(\n operationRoute.method,\n operationRoute.path || \"\",\n [\n useContextHandler(($ctx) => {\n $ctx.endpoint = operationRoute.endpoint;\n }),\n ...handlers\n ],\n operationRoute\n );\n });\n\n const middlewares: any[] = [...parentMiddlewares, ...useBefore];\n\n children.forEach((token: Type<any>) => {\n const nested = this.from(token, middlewares);\n\n router.use(nested);\n });\n\n return router;\n }\n\n getLayers(router: PlatformRouter): PlatformLayer[] {\n return router.layers\n .flatMap((layer) => {\n if (layer.router) {\n return this.getLayers(layer.router).map((subLayer: PlatformLayer) => {\n return new PlatformLayer({\n ...subLayer,\n path: concatPath(layer.path, subLayer.path)\n });\n });\n }\n\n return new PlatformLayer(layer);\n })\n .map((layer) => {\n const handlers = layer.handlers.map((handlerMetadata) => {\n // set path on handler metadata to retrieve it later in $ctx\n handlerMetadata.path = layer.path;\n\n return this.hooks.alter(\"alterHandler\", handlerMetadata);\n });\n\n layer.set(handlers);\n\n return layer;\n });\n }\n}\n"]}
@@ -8,4 +8,8 @@ export function useContextHandler(fn) {
8
8
  fn.type = PlatformHandlerType.CTX_FN;
9
9
  return fn;
10
10
  }
11
+ export function useResponseHandler(fn) {
12
+ fn.type = PlatformHandlerType.RESPONSE_FN;
13
+ return fn;
14
+ }
11
15
  //# sourceMappingURL=useContextHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContextHandler.js","sourceRoot":"","sources":["../../../src/utils/useContextHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAIlE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAyD;IACzF,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAErC,OAAO,EAAE,CAAC;AACZ,CAAC","sourcesContent":["import {DIContext} from \"@tsed/di\";\nimport {PlatformHandlerType} from \"../domain/PlatformHandlerType\";\n\nexport type PlatformContextHandler<Context = DIContext> = ($ctx: Context) => any | Promise<any>;\n\n/**\n * Create Ts.ED context handler\n * @param fn\n * @ignore\n */\nexport function useContextHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.CTX_FN;\n\n return fn;\n}\n"]}
1
+ {"version":3,"file":"useContextHandler.js","sourceRoot":"","sources":["../../../src/utils/useContextHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAIlE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAyD;IACzF,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAErC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAyD;IAC1F,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC;IAE1C,OAAO,EAAE,CAAC;AACZ,CAAC","sourcesContent":["import {DIContext} from \"@tsed/di\";\nimport {PlatformHandlerType} from \"../domain/PlatformHandlerType\";\n\nexport type PlatformContextHandler<Context = DIContext> = ($ctx: Context) => any | Promise<any>;\n\n/**\n * Create Ts.ED context handler\n * @param fn\n * @ignore\n */\nexport function useContextHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.CTX_FN;\n\n return fn;\n}\n\nexport function useResponseHandler(fn: PlatformContextHandler & {type?: PlatformHandlerType}) {\n fn.type = PlatformHandlerType.RESPONSE_FN;\n\n return fn;\n}\n"]}
@@ -4,7 +4,6 @@ import { PlatformHandlerType } from "./PlatformHandlerType";
4
4
  import { SinglePathType } from "./SinglePathType";
5
5
  export interface PlatformHandlerMetadataOpts extends Record<string, any> {
6
6
  token?: TokenProvider;
7
- isFinal?: boolean;
8
7
  }
9
8
  export interface PlatformHandlerMetadataProps {
10
9
  provider?: Provider;
@@ -31,9 +30,10 @@ export declare class PlatformHandlerMetadata {
31
30
  static from(injector: InjectorService, input: any, opts?: PlatformHandlerMetadataOpts): PlatformHandlerMetadata;
32
31
  getParams(): JsonParameterStore[];
33
32
  hasParamType(paramType: any): boolean;
34
- isFinal(): boolean;
33
+ isInjectable(): boolean;
35
34
  isRawMiddleware(): boolean;
36
35
  isEndpoint(): boolean;
37
36
  isCtxFn(): boolean;
37
+ isResponseFn(): boolean;
38
38
  toString(): string;
39
39
  }
@@ -4,6 +4,7 @@ export declare enum PlatformHandlerType {
4
4
  MIDDLEWARE = "middleware",
5
5
  ERR_MIDDLEWARE = "err:middleware",
6
6
  CTX_FN = "context",
7
+ RESPONSE_FN = "response",
7
8
  RAW_FN = "raw:middleware",
8
9
  RAW_ERR_FN = "raw:err:middleware"
9
10
  }
@@ -1,12 +1,11 @@
1
1
  import { Type } from "@tsed/core";
2
2
  import { Provider } from "@tsed/di";
3
- import { PlatformParamsCallback } from "@tsed/platform-params";
3
+ import type { PlatformParamsCallback } from "@tsed/platform-params";
4
4
  import { PlatformHandlerMetadata } from "./PlatformHandlerMetadata";
5
5
  import type { PlatformRouter } from "./PlatformRouter";
6
6
  import { SinglePathType } from "./SinglePathType";
7
7
  export interface PlatformLayerOptions extends Record<string, any> {
8
8
  token?: Type<any>;
9
- isFinal?: boolean;
10
9
  }
11
10
  export interface PlatformLayerProps {
12
11
  provider: Provider;
@@ -1,13 +1,11 @@
1
1
  import { Hooks } from "@tsed/core";
2
2
  import { InjectorService, TokenProvider } from "@tsed/di";
3
- import { PlatformParams } from "@tsed/platform-params";
4
3
  import { PlatformLayer } from "./PlatformLayer";
5
4
  import { PlatformRouter } from "./PlatformRouter";
6
5
  export declare class PlatformRouters {
7
6
  protected readonly injector: InjectorService;
8
- protected readonly platformParams: PlatformParams;
9
7
  readonly hooks: Hooks;
10
- constructor(injector: InjectorService, platformParams: PlatformParams);
8
+ constructor(injector: InjectorService);
11
9
  prebuild(): void;
12
10
  from(token: TokenProvider, parentMiddlewares?: any[]): PlatformRouter;
13
11
  getLayers(router: PlatformRouter): PlatformLayer[];
@@ -11,3 +11,8 @@ export declare function useContextHandler(fn: PlatformContextHandler & {
11
11
  }): PlatformContextHandler<DIContext> & {
12
12
  type?: PlatformHandlerType | undefined;
13
13
  };
14
+ export declare function useResponseHandler(fn: PlatformContextHandler & {
15
+ type?: PlatformHandlerType;
16
+ }): PlatformContextHandler<DIContext> & {
17
+ type?: PlatformHandlerType | undefined;
18
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/platform-router",
3
- "version": "7.0.0-beta.16",
3
+ "version": "7.0.0-beta.19",
4
4
  "description": "Router",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
@@ -24,20 +24,20 @@
24
24
  "tslib": "2.4.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@tsed/core": "7.0.0-beta.16",
28
- "@tsed/di": "7.0.0-beta.16",
29
- "@tsed/exceptions": "7.0.0-beta.16",
30
- "@tsed/json-mapper": "7.0.0-beta.16",
31
- "@tsed/platform-params": "7.0.0-beta.16",
32
- "@tsed/schema": "7.0.0-beta.16"
27
+ "@tsed/core": "7.0.0-beta.19",
28
+ "@tsed/di": "7.0.0-beta.19",
29
+ "@tsed/exceptions": "7.0.0-beta.19",
30
+ "@tsed/json-mapper": "7.0.0-beta.19",
31
+ "@tsed/platform-params": "7.0.0-beta.19",
32
+ "@tsed/schema": "7.0.0-beta.19"
33
33
  },
34
34
  "peerDependencies": {
35
- "@tsed/core": "^7.0.0-beta.16",
36
- "@tsed/di": "^7.0.0-beta.16",
37
- "@tsed/exceptions": "^7.0.0-beta.16",
38
- "@tsed/json-mapper": "^7.0.0-beta.16",
39
- "@tsed/platform-params": "^7.0.0-beta.16",
40
- "@tsed/schema": "^7.0.0-beta.16"
35
+ "@tsed/core": "^7.0.0-beta.19",
36
+ "@tsed/di": "^7.0.0-beta.19",
37
+ "@tsed/exceptions": "^7.0.0-beta.19",
38
+ "@tsed/json-mapper": "^7.0.0-beta.19",
39
+ "@tsed/platform-params": "^7.0.0-beta.19",
40
+ "@tsed/schema": "^7.0.0-beta.19"
41
41
  },
42
42
  "peerDependenciesMeta": {
43
43
  "@tsed/core": {
package/readme.md CHANGED
@@ -96,6 +96,7 @@ class MyController {
96
96
  }
97
97
 
98
98
  const injector = new InjectorService();
99
+
99
100
  const expressApp = express();
100
101
 
101
102
  injector.addProvider(MyController);
@@ -107,24 +108,24 @@ appRouter.use("/rest", MyController);
107
108
 
108
109
  // transform handlerMetadata to a compatible handler for the targeted framework (Express.js, Koa.js, etc...)
109
110
  PlatformRouter.hooks.on("alterHandler", (handlerMetadata: PlatformHandlerMetadata) => {
110
- const handler = handlerMetadata.compileHandler(injector);
111
+ if (!handlerMetadata.isInjectable()) {
112
+ return handlerMetadata.handler;
113
+ }
114
+
115
+ const handler = this.platformParams.compileHandler(handlerMetadata);
111
116
 
112
117
  switch (handlerMetadata.type) {
113
- default:
114
- case PlatformHandlerType.RAW_FN: // native express.js/koa.js handler
115
- return handler;
116
- case PlatformHandlerType.MIDDLEWARE:
118
+ case PlatformHandlerType.DEFAULT:
117
119
  case PlatformHandlerType.ENDPOINT:
120
+ case PlatformHandlerType.MIDDLEWARE:
121
+ const handler = platformParams.compileHandler(handlerMetadata);
122
+
118
123
  return (req, res, next) => {
119
- return next();
124
+ return handler({$ctx: {next, request: req, response: res}});
120
125
  };
121
126
  case PlatformHandlerType.ERR_MIDDLEWARE:
122
127
  return (error: unknown, req, res, next) => {
123
- return next();
124
- };
125
- case PlatformHandlerType.CUSTOM:
126
- return (req, res, next) => {
127
- return next();
128
+ return handler({$ctx: {error, next, request: req, response: res}});
128
129
  };
129
130
  }
130
131
  });