@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.
- package/jest.config.js +14 -0
- package/lib/cjs/domain/PlatformHandlerMetadata.js +106 -0
- package/lib/cjs/domain/PlatformHandlerMetadata.js.map +1 -0
- package/lib/cjs/domain/PlatformHandlerType.js +14 -0
- package/lib/cjs/domain/PlatformHandlerType.js.map +1 -0
- package/lib/cjs/domain/PlatformLayer.js +40 -0
- package/lib/cjs/domain/PlatformLayer.js.map +1 -0
- package/lib/cjs/domain/PlatformRouter.js +113 -0
- package/lib/cjs/domain/PlatformRouter.js.map +1 -0
- package/lib/cjs/domain/PlatformRouters.js +131 -0
- package/lib/cjs/domain/PlatformRouters.js.map +1 -0
- package/lib/cjs/domain/SinglePathType.js +3 -0
- package/lib/cjs/domain/SinglePathType.js.map +1 -0
- package/lib/cjs/index.js +15 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/utils/formatMethod.js +9 -0
- package/lib/cjs/utils/formatMethod.js.map +1 -0
- package/lib/cjs/utils/useContextHandler.js +15 -0
- package/lib/cjs/utils/useContextHandler.js.map +1 -0
- package/lib/esm/domain/PlatformHandlerMetadata.js +102 -0
- package/lib/esm/domain/PlatformHandlerMetadata.js.map +1 -0
- package/lib/esm/domain/PlatformHandlerType.js +11 -0
- package/lib/esm/domain/PlatformHandlerType.js.map +1 -0
- package/lib/esm/domain/PlatformLayer.js +36 -0
- package/lib/esm/domain/PlatformLayer.js.map +1 -0
- package/lib/esm/domain/PlatformRouter.js +110 -0
- package/lib/esm/domain/PlatformRouter.js.map +1 -0
- package/lib/esm/domain/PlatformRouters.js +128 -0
- package/lib/esm/domain/PlatformRouters.js.map +1 -0
- package/lib/esm/domain/SinglePathType.js +2 -0
- package/lib/esm/domain/SinglePathType.js.map +1 -0
- package/lib/esm/index.js +12 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/package.json +3 -0
- package/lib/esm/utils/formatMethod.js +5 -0
- package/lib/esm/utils/formatMethod.js.map +1 -0
- package/lib/esm/utils/useContextHandler.js +11 -0
- package/lib/esm/utils/useContextHandler.js.map +1 -0
- package/lib/types/domain/PlatformHandlerMetadata.d.ts +39 -0
- package/lib/types/domain/PlatformHandlerType.d.ts +9 -0
- package/lib/types/domain/PlatformLayer.d.ts +37 -0
- package/lib/types/domain/PlatformRouter.d.ts +28 -0
- package/lib/types/domain/PlatformRouters.d.ts +14 -0
- package/lib/types/domain/SinglePathType.d.ts +1 -0
- package/lib/types/index.d.ts +11 -0
- package/lib/types/utils/formatMethod.d.ts +1 -0
- package/lib/types/utils/useContextHandler.d.ts +13 -0
- package/package.json +72 -0
- package/readme.md +176 -0
- 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":";AAAA,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAO,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAY,YAAY,EAAgB,MAAM,UAAU,CAAC;AACjI,OAAO,EAAC,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,SAAS,mBAAmB,CAAC,QAAyB,EAAE,QAAkB;IACxE,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAE,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,GAAG,QAAQ,CAAC,IAAI,WAAW,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAyB,EAAE,QAA4B;IACrF,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC7B,OAAO,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KAChD;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAiB,cAAc,CAAC,CAAC;IAC/D,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAE3B,OAAO,QAAQ;SACZ,GAAG,CAAC,WAAW,EAAE;QAChB,QAAQ,EAAE,MAAM;KACjB,CAAC;SACD,MAAM,CAAiB,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,kBAAkB,EAAE;IAC1E,QAAQ,CAAC,QAA4B,EAAE,MAAW,EAAE,EAAC,QAAQ,EAAC;QAC5D,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;CACF,CAAC,CAAC;AAGH,IAAa,eAAe,GAA5B,MAAa,eAAe;IAGK;IAA8C;IAFpE,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAE7B,YAA+B,QAAyB,EAAqB,cAA8B;QAA5E,aAAQ,GAAR,QAAQ,CAAiB;QAAqB,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/G,QAAQ;QACN,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,QAA4B,EAAE,EAAE;YAC3F,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAoB,EAAE,oBAA2B,EAAE;QACtD,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAqB,KAAK,CAAE,CAAC;QAElE,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC7D;QAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YACpB,OAAO,MAAM,CAAC;SACf;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAElE,MAAM,EAAC,QAAQ,EAAC,GAAG,QAAQ,CAAC;QAE5B,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YAC7D,MAAM,EAAC,QAAQ,EAAC,GAAG,cAAc,CAAC;YAClC,MAAM,EAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAC,GAAG,QAAQ,CAAC;YAE5E,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAC/B,uBAAuB,EACvB;gBACE,GAAG,iBAAiB;gBACpB,GAAG,SAAS;gBACZ,GAAG,iBAAiB;gBACpB,GAAG,GAAG;gBACN,GAAG,MAAM;gBACT,cAAc,CAAC,QAAQ;gBACvB,GAAG,gBAAgB;gBACnB,GAAG,QAAQ;aACZ,EACD,CAAC,cAAc,CAAC,EAChB,IAAI,CACL,CAAC;YAEF,MAAM,CAAC,QAAQ,CACb,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,IAAI,IAAI,EAAE,EACzB;gBACE,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACtD,CAAC,CAAC;gBACF,GAAG,QAAQ;aACZ,EACD,cAAc,CACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAU,CAAC,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC,CAAC;QAEhE,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAgB,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,OAAO,MAAM,CAAC,MAAM;aACjB,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAuB,EAAE,EAAE;oBAClE,OAAO,IAAI,aAAa,CAAC;wBACvB,GAAG,QAAQ;wBACX,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;qBAC5C,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;YAED,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE;gBACtD,4DAA4D;gBAC5D,eAAe,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAElC,IAAI,OAAY,CAAC;gBAEjB,IAAI,eAAe,CAAC,eAAe,EAAE,EAAE;oBACrC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;iBACnC;qBAAM;oBACL,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE;wBACjC,CAAC,CAAC,CAAC,KAA0B,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;wBACrE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;iBACzD;gBAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEpB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AAlHY,eAAe;IAD3B,UAAU,EAAE;qCAI8B,eAAe,EAAqC,cAAc;GAHhG,eAAe,CAkH3B;SAlHY,eAAe","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 @@
|
|
|
1
|
+
{"version":3,"file":"SinglePathType.js","sourceRoot":"","sources":["../../../src/domain/SinglePathType.ts"],"names":[],"mappings":"","sourcesContent":["export type SinglePathType = string | RegExp;\n"]}
|
package/lib/esm/index.js
ADDED
|
@@ -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 @@
|
|
|
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,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
|
+
}
|