@tsed/platform-router 7.0.0-beta.14

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 (51) hide show
  1. package/jest.config.js +14 -0
  2. package/lib/cjs/domain/PlatformHandlerMetadata.js +106 -0
  3. package/lib/cjs/domain/PlatformHandlerMetadata.js.map +1 -0
  4. package/lib/cjs/domain/PlatformHandlerType.js +14 -0
  5. package/lib/cjs/domain/PlatformHandlerType.js.map +1 -0
  6. package/lib/cjs/domain/PlatformLayer.js +40 -0
  7. package/lib/cjs/domain/PlatformLayer.js.map +1 -0
  8. package/lib/cjs/domain/PlatformRouter.js +113 -0
  9. package/lib/cjs/domain/PlatformRouter.js.map +1 -0
  10. package/lib/cjs/domain/PlatformRouters.js +131 -0
  11. package/lib/cjs/domain/PlatformRouters.js.map +1 -0
  12. package/lib/cjs/domain/SinglePathType.js +3 -0
  13. package/lib/cjs/domain/SinglePathType.js.map +1 -0
  14. package/lib/cjs/index.js +15 -0
  15. package/lib/cjs/index.js.map +1 -0
  16. package/lib/cjs/package.json +3 -0
  17. package/lib/cjs/utils/formatMethod.js +9 -0
  18. package/lib/cjs/utils/formatMethod.js.map +1 -0
  19. package/lib/cjs/utils/useContextHandler.js +15 -0
  20. package/lib/cjs/utils/useContextHandler.js.map +1 -0
  21. package/lib/esm/domain/PlatformHandlerMetadata.js +102 -0
  22. package/lib/esm/domain/PlatformHandlerMetadata.js.map +1 -0
  23. package/lib/esm/domain/PlatformHandlerType.js +11 -0
  24. package/lib/esm/domain/PlatformHandlerType.js.map +1 -0
  25. package/lib/esm/domain/PlatformLayer.js +36 -0
  26. package/lib/esm/domain/PlatformLayer.js.map +1 -0
  27. package/lib/esm/domain/PlatformRouter.js +110 -0
  28. package/lib/esm/domain/PlatformRouter.js.map +1 -0
  29. package/lib/esm/domain/PlatformRouters.js +128 -0
  30. package/lib/esm/domain/PlatformRouters.js.map +1 -0
  31. package/lib/esm/domain/SinglePathType.js +2 -0
  32. package/lib/esm/domain/SinglePathType.js.map +1 -0
  33. package/lib/esm/index.js +12 -0
  34. package/lib/esm/index.js.map +1 -0
  35. package/lib/esm/package.json +3 -0
  36. package/lib/esm/utils/formatMethod.js +5 -0
  37. package/lib/esm/utils/formatMethod.js.map +1 -0
  38. package/lib/esm/utils/useContextHandler.js +11 -0
  39. package/lib/esm/utils/useContextHandler.js.map +1 -0
  40. package/lib/types/domain/PlatformHandlerMetadata.d.ts +39 -0
  41. package/lib/types/domain/PlatformHandlerType.d.ts +9 -0
  42. package/lib/types/domain/PlatformLayer.d.ts +37 -0
  43. package/lib/types/domain/PlatformRouter.d.ts +28 -0
  44. package/lib/types/domain/PlatformRouters.d.ts +14 -0
  45. package/lib/types/domain/SinglePathType.d.ts +1 -0
  46. package/lib/types/index.d.ts +11 -0
  47. package/lib/types/utils/formatMethod.d.ts +1 -0
  48. package/lib/types/utils/useContextHandler.d.ts +13 -0
  49. package/package.json +72 -0
  50. package/readme.md +176 -0
  51. package/tsconfig.compile.esm.json +12 -0
@@ -0,0 +1,102 @@
1
+ import { nameOf } from "@tsed/core";
2
+ import { ProviderScope } from "@tsed/di";
3
+ import { ParamTypes } from "@tsed/platform-params";
4
+ import { EndpointMetadata, JsonEntityStore, JsonParameterStore } from "@tsed/schema";
5
+ import { PlatformHandlerType } from "./PlatformHandlerType.js";
6
+ export class PlatformHandlerMetadata {
7
+ path;
8
+ provider;
9
+ propertyKey;
10
+ type = PlatformHandlerType.RAW_FN;
11
+ hasNextFunction = false;
12
+ opts = {};
13
+ #handler;
14
+ constructor(props) {
15
+ const { propertyKey, type, provider, handler, opts } = props;
16
+ this.provider = provider;
17
+ this.type = type || handler.type || PlatformHandlerType.RAW_FN;
18
+ this.opts = opts || {};
19
+ this.#handler = propertyKey ? this.target.prototype[propertyKey] : handler;
20
+ if (propertyKey) {
21
+ this.propertyKey = propertyKey;
22
+ this.hasNextFunction = this.hasParamType(ParamTypes.NEXT_FN);
23
+ if (this.hasParamType(ParamTypes.ERR)) {
24
+ this.type = PlatformHandlerType.ERR_MIDDLEWARE;
25
+ }
26
+ }
27
+ else {
28
+ if (this.#handler.length === 4) {
29
+ this.type = PlatformHandlerType.RAW_ERR_FN;
30
+ }
31
+ this.hasNextFunction = this.#handler.length >= 3;
32
+ }
33
+ }
34
+ get target() {
35
+ return this.provider?.useClass || this.#handler;
36
+ }
37
+ get token() {
38
+ return this.provider?.token || this.#handler;
39
+ }
40
+ get handler() {
41
+ return this.#handler;
42
+ }
43
+ get scope() {
44
+ return this.provider?.scope || ProviderScope.SINGLETON;
45
+ }
46
+ get hasErrorParam() {
47
+ return this.type === PlatformHandlerType.ERR_MIDDLEWARE || this.type === PlatformHandlerType.RAW_ERR_FN;
48
+ }
49
+ get store() {
50
+ return JsonEntityStore.fromMethod(this.provider.useClass, this.propertyKey);
51
+ }
52
+ static from(injector, input, opts = {}) {
53
+ if (input instanceof PlatformHandlerMetadata) {
54
+ return input;
55
+ }
56
+ if (input instanceof EndpointMetadata) {
57
+ const provider = injector.getProvider(opts.token);
58
+ return new PlatformHandlerMetadata({
59
+ provider,
60
+ type: PlatformHandlerType.ENDPOINT,
61
+ propertyKey: input.propertyKey,
62
+ opts
63
+ });
64
+ }
65
+ const provider = injector.getProvider(input);
66
+ if (provider) {
67
+ return new PlatformHandlerMetadata({
68
+ provider,
69
+ type: PlatformHandlerType.MIDDLEWARE,
70
+ propertyKey: "use",
71
+ opts
72
+ });
73
+ }
74
+ return new PlatformHandlerMetadata({
75
+ handler: input,
76
+ type: input.type,
77
+ opts
78
+ });
79
+ }
80
+ getParams() {
81
+ return JsonParameterStore.getParams(this.target, this.propertyKey) || [];
82
+ }
83
+ hasParamType(paramType) {
84
+ return this.getParams().findIndex((p) => p.paramType === paramType) > -1;
85
+ }
86
+ isFinal() {
87
+ return this.opts?.isFinal || false;
88
+ }
89
+ isRawMiddleware() {
90
+ return [PlatformHandlerType.RAW_ERR_FN, PlatformHandlerType.RAW_FN].includes(this.type);
91
+ }
92
+ isEndpoint() {
93
+ return this.type === PlatformHandlerType.ENDPOINT;
94
+ }
95
+ isCtxFn() {
96
+ return this.type === PlatformHandlerType.CTX_FN;
97
+ }
98
+ toString() {
99
+ return [nameOf(this.target), this.propertyKey].filter(Boolean).join(".");
100
+ }
101
+ }
102
+ //# sourceMappingURL=PlatformHandlerMetadata.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,11 @@
1
+ export var PlatformHandlerType;
2
+ (function (PlatformHandlerType) {
3
+ PlatformHandlerType["CUSTOM"] = "custom";
4
+ PlatformHandlerType["ENDPOINT"] = "endpoint";
5
+ PlatformHandlerType["MIDDLEWARE"] = "middleware";
6
+ PlatformHandlerType["ERR_MIDDLEWARE"] = "err:middleware";
7
+ PlatformHandlerType["CTX_FN"] = "context";
8
+ PlatformHandlerType["RAW_FN"] = "raw:middleware";
9
+ PlatformHandlerType["RAW_ERR_FN"] = "raw:err:middleware";
10
+ })(PlatformHandlerType || (PlatformHandlerType = {}));
11
+ //# sourceMappingURL=PlatformHandlerType.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,36 @@
1
+ import { isPrimitive, nameOf } from "@tsed/core";
2
+ export class PlatformLayer {
3
+ provider;
4
+ path = "";
5
+ method;
6
+ handlers = [];
7
+ router;
8
+ opts = {};
9
+ #args;
10
+ constructor(props = {}) {
11
+ Object.assign(this, props);
12
+ }
13
+ set(args) {
14
+ this.#args = args;
15
+ }
16
+ getArgs() {
17
+ return [this.path, ...this.#args].filter(Boolean);
18
+ }
19
+ isProvider() {
20
+ return !!this.provider;
21
+ }
22
+ inspect() {
23
+ return {
24
+ path: this.path,
25
+ method: this.method,
26
+ handlers: this.handlers.map((item) => String(item)),
27
+ opts: Object.entries(this.opts).reduce((obj, [key, value]) => {
28
+ return {
29
+ ...obj,
30
+ [key]: isPrimitive(value) ? value : nameOf(value)
31
+ };
32
+ }, {})
33
+ };
34
+ }
35
+ }
36
+ //# sourceMappingURL=PlatformLayer.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,110 @@
1
+ var PlatformRouter_1;
2
+ import { __decorate, __metadata } from "tslib";
3
+ import { isString } from "@tsed/core";
4
+ import { Injectable, InjectorService, ProviderScope, Scope } from "@tsed/di";
5
+ import { concatPath } from "@tsed/schema";
6
+ import { formatMethod } from "../utils/formatMethod.js";
7
+ import { PlatformHandlerMetadata } from "./PlatformHandlerMetadata.js";
8
+ import { PlatformLayer } from "./PlatformLayer.js";
9
+ function printHandler(handler) {
10
+ return handler.toString().split("{")[0].trim();
11
+ }
12
+ let PlatformRouter = PlatformRouter_1 = class PlatformRouter {
13
+ injector;
14
+ #isBuilt = false;
15
+ layers = [];
16
+ provider;
17
+ constructor(injector) {
18
+ this.injector = injector;
19
+ }
20
+ use(...handlers) {
21
+ const layer = handlers.reduce((layer, item) => {
22
+ if (isString(item) || item instanceof RegExp) {
23
+ layer.path = item;
24
+ }
25
+ else {
26
+ if (item instanceof PlatformRouter_1) {
27
+ layer.router = item;
28
+ if (!this.provider && item.provider) {
29
+ layer.path = concatPath(layer.path, item.provider.path);
30
+ }
31
+ else {
32
+ layer.path = layer.path || item.provider.path;
33
+ }
34
+ }
35
+ else {
36
+ item = PlatformHandlerMetadata.from(this.injector, item);
37
+ }
38
+ layer.handlers.push(item);
39
+ }
40
+ return layer;
41
+ }, new PlatformLayer({ method: "use", provider: this.provider }));
42
+ this.layers.push(layer);
43
+ return this;
44
+ }
45
+ addRoute(method, path, handlers, opts = {}) {
46
+ const layer = new PlatformLayer({
47
+ provider: this.provider,
48
+ method: formatMethod(method),
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 });
53
+ }),
54
+ opts
55
+ });
56
+ this.layers.push(layer);
57
+ return this;
58
+ }
59
+ all(path, ...handlers) {
60
+ return this.addRoute("all", path, handlers, { isFinal: true });
61
+ }
62
+ get(path, ...handlers) {
63
+ return this.addRoute("get", path, handlers, { isFinal: true });
64
+ }
65
+ post(path, ...handlers) {
66
+ return this.addRoute("post", path, handlers, { isFinal: true });
67
+ }
68
+ put(path, ...handlers) {
69
+ return this.addRoute("put", path, handlers, { isFinal: true });
70
+ }
71
+ delete(path, ...handlers) {
72
+ return this.addRoute("delete", path, handlers, { isFinal: true });
73
+ }
74
+ patch(path, ...handlers) {
75
+ return this.addRoute("patch", path, handlers, { isFinal: true });
76
+ }
77
+ head(path, ...handlers) {
78
+ return this.addRoute("head", path, handlers, { isFinal: true });
79
+ }
80
+ options(path, ...handlers) {
81
+ return this.addRoute("options", path, handlers, { isFinal: true });
82
+ }
83
+ statics(path, options) {
84
+ return this.addRoute("statics", path, [], options);
85
+ }
86
+ inspect() {
87
+ return this.layers.map((layer) => {
88
+ const obj = layer.inspect();
89
+ return {
90
+ ...obj,
91
+ handlers: obj.handlers.map(printHandler),
92
+ path: concatPath(this.provider?.path, obj.path)
93
+ };
94
+ });
95
+ }
96
+ isBuilt() {
97
+ if (this.#isBuilt) {
98
+ return true;
99
+ }
100
+ this.#isBuilt = true;
101
+ return false;
102
+ }
103
+ };
104
+ PlatformRouter = PlatformRouter_1 = __decorate([
105
+ Injectable(),
106
+ Scope(ProviderScope.INSTANCE),
107
+ __metadata("design:paramtypes", [InjectorService])
108
+ ], PlatformRouter);
109
+ export { PlatformRouter };
110
+ //# sourceMappingURL=PlatformRouter.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,128 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { getValue, Hooks } from "@tsed/core";
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";
6
+ import { useContextHandler } from "../utils/useContextHandler.js";
7
+ import { PlatformLayer } from "./PlatformLayer.js";
8
+ import { PlatformRouter } from "./PlatformRouter.js";
9
+ let AUTO_INC = 0;
10
+ function getInjectableRouter(injector, provider) {
11
+ return injector.get(provider.tokenRouter);
12
+ }
13
+ function createTokenRouter(provider) {
14
+ return (provider.tokenRouter = provider.tokenRouter || `${provider.name}_ROUTER_${AUTO_INC++}`);
15
+ }
16
+ function createInjectableRouter(injector, provider) {
17
+ const tokenRouter = createTokenRouter(provider);
18
+ if (injector.has(tokenRouter)) {
19
+ return getInjectableRouter(injector, provider);
20
+ }
21
+ const router = injector.invoke(PlatformRouter);
22
+ router.provider = provider;
23
+ return injector
24
+ .add(tokenRouter, {
25
+ useValue: router
26
+ })
27
+ .invoke(tokenRouter);
28
+ }
29
+ GlobalProviders.createRegistry(ProviderType.CONTROLLER, ControllerProvider, {
30
+ onInvoke(provider, locals, { injector }) {
31
+ const router = createInjectableRouter(injector, provider);
32
+ locals.set(PlatformRouter, router);
33
+ }
34
+ });
35
+ let PlatformRouters = class PlatformRouters {
36
+ injector;
37
+ platformParams;
38
+ hooks = new Hooks();
39
+ constructor(injector, platformParams) {
40
+ this.injector = injector;
41
+ this.platformParams = platformParams;
42
+ }
43
+ prebuild() {
44
+ this.injector.getProviders(ProviderType.CONTROLLER).forEach((provider) => {
45
+ createInjectableRouter(this.injector, provider);
46
+ });
47
+ }
48
+ from(token, parentMiddlewares = []) {
49
+ const { injector } = this;
50
+ const provider = injector.getProvider(token);
51
+ if (!provider) {
52
+ throw new Error("Token not found in the provider registry");
53
+ }
54
+ const router = createInjectableRouter(injector, provider);
55
+ if (router.isBuilt()) {
56
+ return router;
57
+ }
58
+ const useBefore = getValue(provider, "middlewares.useBefore", []);
59
+ const { children } = provider;
60
+ getOperationsRoutes(provider.token).forEach((operationRoute) => {
61
+ const { endpoint } = operationRoute;
62
+ const { beforeMiddlewares, middlewares: mldwrs, afterMiddlewares } = endpoint;
63
+ const useBefore = getValue(provider, "middlewares.useBefore", []);
64
+ const use = getValue(provider, "middlewares.use", []);
65
+ const useAfter = getValue(provider, "middlewares.useAfter", []);
66
+ const handlers = this.hooks.alter("alterEndpointHandlers", [
67
+ ...parentMiddlewares,
68
+ ...useBefore,
69
+ ...beforeMiddlewares,
70
+ ...use,
71
+ ...mldwrs,
72
+ operationRoute.endpoint,
73
+ ...afterMiddlewares,
74
+ ...useAfter
75
+ ], [operationRoute], this);
76
+ router.addRoute(operationRoute.method, operationRoute.path || "", [
77
+ useContextHandler(($ctx) => {
78
+ $ctx.set(EndpointMetadata, operationRoute.endpoint);
79
+ }),
80
+ ...handlers
81
+ ], operationRoute);
82
+ });
83
+ const middlewares = [...parentMiddlewares, ...useBefore];
84
+ children.forEach((token) => {
85
+ const nested = this.from(token, middlewares);
86
+ router.use(nested);
87
+ });
88
+ return router;
89
+ }
90
+ getLayers(router) {
91
+ return router.layers
92
+ .flatMap((layer) => {
93
+ if (layer.router) {
94
+ return this.getLayers(layer.router).map((subLayer) => {
95
+ return new PlatformLayer({
96
+ ...subLayer,
97
+ path: concatPath(layer.path, subLayer.path)
98
+ });
99
+ });
100
+ }
101
+ return new PlatformLayer(layer);
102
+ })
103
+ .map((layer) => {
104
+ const handlers = layer.handlers.map((handlerMetadata) => {
105
+ // set path on handler metadata to retrieve it later in $ctx
106
+ 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]);
117
+ });
118
+ layer.set(handlers);
119
+ return layer;
120
+ });
121
+ }
122
+ };
123
+ PlatformRouters = __decorate([
124
+ Injectable(),
125
+ __metadata("design:paramtypes", [InjectorService, PlatformParams])
126
+ ], PlatformRouters);
127
+ export { PlatformRouters };
128
+ //# sourceMappingURL=PlatformRouters.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SinglePathType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SinglePathType.js","sourceRoot":"","sources":["../../../src/domain/SinglePathType.ts"],"names":[],"mappings":"","sourcesContent":["export type SinglePathType = string | RegExp;\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./domain/PlatformHandlerMetadata.js";
5
+ export * from "./domain/PlatformHandlerType.js";
6
+ export * from "./domain/PlatformLayer.js";
7
+ export * from "./domain/PlatformRouter.js";
8
+ export * from "./domain/PlatformRouters.js";
9
+ export * from "./domain/SinglePathType.js";
10
+ export * from "./utils/formatMethod.js";
11
+ export * from "./utils/useContextHandler.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./domain/PlatformHandlerMetadata\";\nexport * from \"./domain/PlatformHandlerType\";\nexport * from \"./domain/PlatformLayer\";\nexport * from \"./domain/PlatformRouter\";\nexport * from \"./domain/PlatformRouters\";\nexport * from \"./domain/SinglePathType\";\nexport * from \"./utils/formatMethod\";\nexport * from \"./utils/useContextHandler\";\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,5 @@
1
+ import { OperationMethods } from "@tsed/schema";
2
+ export function formatMethod(method) {
3
+ return (method === OperationMethods.CUSTOM ? "use" : method || "use").toLowerCase();
4
+ }
5
+ //# sourceMappingURL=formatMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatMethod.js","sourceRoot":"","sources":["../../../src/utils/formatMethod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,OAAO,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACtF,CAAC","sourcesContent":["import {OperationMethods} from \"@tsed/schema\";\n\nexport function formatMethod(method: string | undefined) {\n return (method === OperationMethods.CUSTOM ? \"use\" : method || \"use\").toLowerCase();\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { PlatformHandlerType } from "../domain/PlatformHandlerType.js";
2
+ /**
3
+ * Create Ts.ED context handler
4
+ * @param fn
5
+ * @ignore
6
+ */
7
+ export function useContextHandler(fn) {
8
+ fn.type = PlatformHandlerType.CTX_FN;
9
+ return fn;
10
+ }
11
+ //# sourceMappingURL=useContextHandler.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,39 @@
1
+ import { InjectorService, Provider, ProviderScope, TokenProvider } from "@tsed/di";
2
+ import { JsonParameterStore } from "@tsed/schema";
3
+ import { PlatformHandlerType } from "./PlatformHandlerType";
4
+ import { SinglePathType } from "./SinglePathType";
5
+ export interface PlatformHandlerMetadataOpts extends Record<string, any> {
6
+ token?: TokenProvider;
7
+ isFinal?: boolean;
8
+ }
9
+ export interface PlatformHandlerMetadataProps {
10
+ provider?: Provider;
11
+ handler?: any;
12
+ opts?: PlatformHandlerMetadataOpts;
13
+ propertyKey?: string | symbol;
14
+ type?: PlatformHandlerType;
15
+ }
16
+ export declare class PlatformHandlerMetadata {
17
+ #private;
18
+ path: SinglePathType;
19
+ readonly provider?: Provider;
20
+ readonly propertyKey: string | symbol;
21
+ readonly type: PlatformHandlerType;
22
+ readonly hasNextFunction: boolean;
23
+ readonly opts: PlatformHandlerMetadataOpts;
24
+ constructor(props: PlatformHandlerMetadataProps);
25
+ get target(): any;
26
+ get token(): any;
27
+ get handler(): any;
28
+ get scope(): ProviderScope;
29
+ get hasErrorParam(): boolean;
30
+ get store(): import("@tsed/schema").JsonMethodStore;
31
+ static from(injector: InjectorService, input: any, opts?: PlatformHandlerMetadataOpts): PlatformHandlerMetadata;
32
+ getParams(): JsonParameterStore[];
33
+ hasParamType(paramType: any): boolean;
34
+ isFinal(): boolean;
35
+ isRawMiddleware(): boolean;
36
+ isEndpoint(): boolean;
37
+ isCtxFn(): boolean;
38
+ toString(): string;
39
+ }
@@ -0,0 +1,9 @@
1
+ export declare enum PlatformHandlerType {
2
+ CUSTOM = "custom",
3
+ ENDPOINT = "endpoint",
4
+ MIDDLEWARE = "middleware",
5
+ ERR_MIDDLEWARE = "err:middleware",
6
+ CTX_FN = "context",
7
+ RAW_FN = "raw:middleware",
8
+ RAW_ERR_FN = "raw:err:middleware"
9
+ }
@@ -0,0 +1,37 @@
1
+ import { Type } from "@tsed/core";
2
+ import { Provider } from "@tsed/di";
3
+ import { PlatformParamsCallback } from "@tsed/platform-params";
4
+ import { PlatformHandlerMetadata } from "./PlatformHandlerMetadata";
5
+ import type { PlatformRouter } from "./PlatformRouter";
6
+ import { SinglePathType } from "./SinglePathType";
7
+ export interface PlatformLayerOptions extends Record<string, any> {
8
+ token?: Type<any>;
9
+ isFinal?: boolean;
10
+ }
11
+ export interface PlatformLayerProps {
12
+ provider: Provider;
13
+ path: SinglePathType;
14
+ method: string;
15
+ handlers: any[];
16
+ router: PlatformRouter;
17
+ opts: PlatformLayerOptions;
18
+ }
19
+ export declare class PlatformLayer {
20
+ #private;
21
+ provider: Provider;
22
+ path: SinglePathType;
23
+ method: string;
24
+ handlers: PlatformHandlerMetadata[];
25
+ router?: PlatformRouter;
26
+ opts: PlatformLayerOptions;
27
+ constructor(props?: Partial<PlatformLayerProps>);
28
+ set(args: PlatformParamsCallback[]): void;
29
+ getArgs(): (SinglePathType | PlatformParamsCallback<import("@tsed/di").DIContext>)[];
30
+ isProvider(): boolean;
31
+ inspect(): {
32
+ path: SinglePathType;
33
+ method: string;
34
+ handlers: string[];
35
+ opts: {};
36
+ };
37
+ }
@@ -0,0 +1,28 @@
1
+ import { InjectorService, Provider } from "@tsed/di";
2
+ import { PlatformLayer, PlatformLayerOptions } from "./PlatformLayer";
3
+ import { SinglePathType } from "./SinglePathType";
4
+ export declare class PlatformRouter {
5
+ #private;
6
+ protected readonly injector: InjectorService;
7
+ readonly layers: PlatformLayer[];
8
+ provider: Provider;
9
+ constructor(injector: InjectorService);
10
+ use(...handlers: any[]): this;
11
+ addRoute(method: string, path: SinglePathType, handlers: any[], opts?: PlatformLayerOptions): this;
12
+ all(path: SinglePathType, ...handlers: any[]): this;
13
+ get(path: SinglePathType, ...handlers: any[]): this;
14
+ post(path: SinglePathType, ...handlers: any[]): this;
15
+ put(path: SinglePathType, ...handlers: any[]): this;
16
+ delete(path: SinglePathType, ...handlers: any[]): this;
17
+ patch(path: SinglePathType, ...handlers: any[]): this;
18
+ head(path: SinglePathType, ...handlers: any[]): this;
19
+ options(path: SinglePathType, ...handlers: any[]): this;
20
+ statics(path: string, options: any): this;
21
+ inspect(): {
22
+ handlers: any[];
23
+ path: any;
24
+ method: string;
25
+ opts: {};
26
+ }[];
27
+ isBuilt(): boolean;
28
+ }