@deepkit/http 1.0.1-alpha.58 → 1.0.1-alpha.62
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/coverage/clover.xml +1086 -0
- package/coverage/coverage-final.json +12 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +79 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +126 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +170 -0
- package/coverage/lcov-report/src/controllers.ts.html +113 -0
- package/coverage/lcov-report/src/decorator.ts.html +1280 -0
- package/coverage/lcov-report/src/filter.ts.html +734 -0
- package/coverage/lcov-report/src/http.ts.html +2192 -0
- package/coverage/lcov-report/src/index.html +246 -0
- package/coverage/lcov-report/src/kernel.ts.html +260 -0
- package/coverage/lcov-report/src/middleware.ts.html +428 -0
- package/coverage/lcov-report/src/model.ts.html +937 -0
- package/coverage/lcov-report/src/module.config.ts.html +89 -0
- package/coverage/lcov-report/src/module.ts.html +245 -0
- package/coverage/lcov-report/src/router.ts.html +2318 -0
- package/coverage/lcov-report/tests/index.html +111 -0
- package/coverage/lcov-report/tests/utils.ts.html +176 -0
- package/coverage/lcov.info +2225 -0
- package/dist/cjs/src/controllers.d.ts +4 -4
- package/dist/cjs/src/controllers.js +3 -0
- package/dist/cjs/src/controllers.js.map +1 -1
- package/dist/cjs/src/decorator.d.ts +29 -94
- package/dist/cjs/src/decorator.js +53 -118
- package/dist/cjs/src/decorator.js.map +1 -1
- package/dist/cjs/src/filter.d.ts +1 -0
- package/dist/cjs/src/filter.js +11 -17
- package/dist/cjs/src/filter.js.map +1 -1
- package/dist/cjs/src/http.d.ts +5 -3
- package/dist/cjs/src/http.js +91 -55
- package/dist/cjs/src/http.js.map +1 -1
- package/dist/cjs/src/kernel.d.ts +3 -3
- package/dist/cjs/src/kernel.js +5 -25
- package/dist/cjs/src/kernel.js.map +1 -1
- package/dist/cjs/src/logger.d.ts +2 -2
- package/dist/cjs/src/logger.js +4 -8
- package/dist/cjs/src/logger.js.map +1 -1
- package/dist/cjs/src/middleware.d.ts +5 -1
- package/dist/cjs/src/middleware.js +15 -3
- package/dist/cjs/src/middleware.js.map +1 -1
- package/dist/cjs/src/model.d.ts +69 -2
- package/dist/cjs/src/model.js +96 -25
- package/dist/cjs/src/model.js.map +1 -1
- package/dist/cjs/src/module.config.d.ts +3 -4
- package/dist/cjs/src/module.config.js +8 -6
- package/dist/cjs/src/module.config.js.map +1 -1
- package/dist/cjs/src/module.d.ts +2 -3
- package/dist/cjs/src/module.js +4 -2
- package/dist/cjs/src/module.js.map +1 -1
- package/dist/cjs/src/router.d.ts +25 -54
- package/dist/cjs/src/router.js +157 -175
- package/dist/cjs/src/router.js.map +1 -1
- package/dist/cjs/src/static-serving.d.ts +1 -0
- package/dist/cjs/src/static-serving.js +38 -34
- package/dist/cjs/src/static-serving.js.map +1 -1
- package/dist/cjs/src/utils.js +1 -0
- package/dist/cjs/tests/filter.spec.js +61 -47
- package/dist/cjs/tests/filter.spec.js.map +1 -1
- package/dist/cjs/tests/middleware.spec.d.ts +1 -1
- package/dist/cjs/tests/middleware.spec.js +157 -145
- package/dist/cjs/tests/middleware.spec.js.map +1 -1
- package/dist/cjs/tests/model.spec.js +4 -4
- package/dist/cjs/tests/model.spec.js.map +1 -1
- package/dist/cjs/tests/module.spec.js +4 -3
- package/dist/cjs/tests/module.spec.js.map +1 -1
- package/dist/cjs/tests/router.spec.d.ts +1 -1
- package/dist/cjs/tests/router.spec.js +311 -322
- package/dist/cjs/tests/router.spec.js.map +1 -1
- package/dist/cjs/tests/utils.js +5 -2
- package/dist/cjs/tests/utils.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/controllers.d.ts +4 -4
- package/dist/esm/src/controllers.js +3 -0
- package/dist/esm/src/controllers.js.map +1 -1
- package/dist/esm/src/decorator.d.ts +29 -94
- package/dist/esm/src/decorator.js +49 -114
- package/dist/esm/src/decorator.js.map +1 -1
- package/dist/esm/src/filter.d.ts +1 -0
- package/dist/esm/src/filter.js +11 -18
- package/dist/esm/src/filter.js.map +1 -1
- package/dist/esm/src/http.d.ts +5 -3
- package/dist/esm/src/http.js +89 -55
- package/dist/esm/src/http.js.map +1 -1
- package/dist/esm/src/kernel.d.ts +3 -3
- package/dist/esm/src/kernel.js +6 -27
- package/dist/esm/src/kernel.js.map +1 -1
- package/dist/esm/src/logger.d.ts +2 -2
- package/dist/esm/src/logger.js +4 -9
- package/dist/esm/src/logger.js.map +1 -1
- package/dist/esm/src/middleware.d.ts +5 -1
- package/dist/esm/src/middleware.js +12 -0
- package/dist/esm/src/middleware.js.map +1 -1
- package/dist/esm/src/model.d.ts +69 -2
- package/dist/esm/src/model.js +92 -24
- package/dist/esm/src/model.js.map +1 -1
- package/dist/esm/src/module.config.d.ts +3 -4
- package/dist/esm/src/module.config.js +6 -5
- package/dist/esm/src/module.config.js.map +1 -1
- package/dist/esm/src/module.d.ts +2 -3
- package/dist/esm/src/module.js +5 -3
- package/dist/esm/src/module.js.map +1 -1
- package/dist/esm/src/router.d.ts +25 -54
- package/dist/esm/src/router.js +154 -172
- package/dist/esm/src/router.js.map +1 -1
- package/dist/esm/src/static-serving.d.ts +1 -0
- package/dist/esm/src/static-serving.js +29 -25
- package/dist/esm/src/static-serving.js.map +1 -1
- package/dist/esm/src/utils.js +1 -0
- package/dist/esm/tests/filter.spec.js +14 -0
- package/dist/esm/tests/filter.spec.js.map +1 -1
- package/dist/esm/tests/middleware.spec.d.ts +1 -1
- package/dist/esm/tests/middleware.spec.js +60 -48
- package/dist/esm/tests/middleware.spec.js.map +1 -1
- package/dist/esm/tests/module.spec.js +1 -0
- package/dist/esm/tests/module.spec.js.map +1 -1
- package/dist/esm/tests/router.spec.d.ts +1 -1
- package/dist/esm/tests/router.spec.js +184 -195
- package/dist/esm/tests/router.spec.js.map +1 -1
- package/dist/esm/tests/utils.js +4 -1
- package/dist/esm/tests/utils.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +14 -15
- package/src/controllers.ts +3 -3
- package/src/decorator.ts +42 -131
- package/src/filter.ts +0 -2
- package/src/http.ts +35 -36
- package/src/kernel.ts +4 -5
- package/src/logger.ts +2 -4
- package/src/middleware.ts +2 -1
- package/src/model.ts +86 -8
- package/src/module.config.ts +3 -6
- package/src/module.ts +2 -2
- package/src/router.ts +143 -183
- package/src/static-serving.ts +2 -4
- package/tests/middleware.spec.ts +0 -1
- package/tests/router.spec.ts +152 -131
- package/tsconfig.json +2 -1
package/dist/esm/src/router.js
CHANGED
|
@@ -4,9 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
7
|
+
import { __ΩSerializationOptions as __ΩSerializationOptions } from '@deepkit/type';
|
|
8
|
+
import { __ΩClassType as __ΩClassType } from '@deepkit/core';
|
|
9
|
+
import { __ΩMiddlewareRegistryEntry as __ΩMiddlewareRegistryEntry } from '@deepkit/app';
|
|
10
|
+
import { __ΩLoggerInterface as __ΩLoggerInterface } from '@deepkit/logger';
|
|
11
|
+
import { __ΩHttpMiddlewareFn as __ΩHttpMiddlewareFn } from './middleware';
|
|
12
|
+
import { __ΩHttpRequestQuery as __ΩHttpRequestQuery } from './model';
|
|
13
|
+
import { __ΩHttpRequestResolvedParameters as __ΩHttpRequestResolvedParameters } from './model';
|
|
10
14
|
/*
|
|
11
15
|
* Deepkit Framework
|
|
12
16
|
* Copyright (C) 2021 Deepkit UG, Marc J. Schmidt
|
|
@@ -16,58 +20,33 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
16
20
|
*
|
|
17
21
|
* You should have received a copy of the MIT License along with this program.
|
|
18
22
|
*/
|
|
19
|
-
import '
|
|
20
|
-
import {
|
|
21
|
-
import { entity, getClassSchema, getPropertyXtoClassFunction, jitValidateProperty, jsonSerializer, t, ValidationFailed } from '@deepkit/type';
|
|
23
|
+
import { asyncOperation, CompilerContext, getClassName, isClass, isObject, urlJoin } from '@deepkit/core';
|
|
24
|
+
import { assertType, entity, findMember, getSerializeFunction, getValidatorFunction, metaAnnotation, ReflectionClass, ReflectionParameter, serializer, Serializer, stringifyType, typeToObject, ValidationError } from '@deepkit/type';
|
|
22
25
|
// @ts-ignore
|
|
23
26
|
import formidable from 'formidable';
|
|
24
27
|
import { httpClass } from './decorator';
|
|
25
|
-
import {
|
|
28
|
+
import { BodyValidationError, getRegExp, HttpRequest, ValidatedBody } from './model';
|
|
29
|
+
import { InjectorContext, InjectorModule, TagRegistry } from '@deepkit/injector';
|
|
26
30
|
import { Logger } from '@deepkit/logger';
|
|
27
31
|
import { HttpControllers } from './controllers';
|
|
28
|
-
import {
|
|
32
|
+
import { MiddlewareRegistry } from '@deepkit/app';
|
|
29
33
|
import { HttpMiddlewareConfig } from './middleware';
|
|
34
|
+
var __ΩRouteParameterResolverForInjector = [() => InjectorContext, 'injector', '', 'PP7!2"P"F"F`J/#'];
|
|
35
|
+
export { __ΩRouteParameterResolverForInjector };
|
|
36
|
+
var __ΩResolvedController = [() => __ΩRouteParameterResolverForInjector, 'parameters', () => RouteConfig, 'routeConfig', () => UploadedFile, 'uploadedFiles', () => InjectorContext, 'injector', () => __ΩHttpMiddlewareFn, 'fn', 'timeout', '', 'middlewares', 'Pn!4"P7#4$P&P7%LM4&PP7\'2(Pn)4*\'4+MF/,4-8M'];
|
|
30
37
|
let UploadedFile = class UploadedFile {
|
|
31
38
|
};
|
|
32
|
-
|
|
33
|
-
t.required,
|
|
34
|
-
__metadata("design:type", Number)
|
|
35
|
-
], UploadedFile.prototype, "size", void 0);
|
|
36
|
-
__decorate([
|
|
37
|
-
t.required,
|
|
38
|
-
__metadata("design:type", String)
|
|
39
|
-
], UploadedFile.prototype, "path", void 0);
|
|
40
|
-
__decorate([
|
|
41
|
-
t.string.required.nullable,
|
|
42
|
-
__metadata("design:type", Object)
|
|
43
|
-
], UploadedFile.prototype, "name", void 0);
|
|
44
|
-
__decorate([
|
|
45
|
-
t.string.required.nullable,
|
|
46
|
-
__metadata("design:type", Object)
|
|
47
|
-
], UploadedFile.prototype, "type", void 0);
|
|
48
|
-
__decorate([
|
|
49
|
-
t.date.required.nullable,
|
|
50
|
-
__metadata("design:type", Object)
|
|
51
|
-
], UploadedFile.prototype, "lastModifiedDate", void 0);
|
|
39
|
+
UploadedFile.__type = ['size', 'path', 'name', 'type', 'lastModifiedDate', '\'3!&3"P&,J3#P&,J3$PT,J3%5'];
|
|
52
40
|
UploadedFile = __decorate([
|
|
53
41
|
entity.name('@deepkit/UploadedFile')
|
|
54
42
|
], UploadedFile);
|
|
55
43
|
export { UploadedFile };
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
form.parse(req, (err, fields, files) => {
|
|
59
|
-
if (err) {
|
|
60
|
-
reject(err);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
resolve({ fields, files });
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
}
|
|
44
|
+
var __ΩRouteControllerAction = [() => InjectorModule, 'module', () => __ΩClassType, 'controller', 'methodName', 'PP"7!4"8n#4$&4%M'];
|
|
45
|
+
export { __ΩRouteControllerAction };
|
|
68
46
|
function getRouterControllerActionName(action) {
|
|
69
47
|
return `${getClassName(action.controller)}.${action.methodName}`;
|
|
70
48
|
}
|
|
49
|
+
getRouterControllerActionName.__type = [() => __ΩRouteControllerAction, 'action', 'getRouterControllerActionName', 'Pn!2"&/#'];
|
|
71
50
|
export class RouteConfig {
|
|
72
51
|
constructor(name, httpMethods, path, action, internal = false) {
|
|
73
52
|
this.name = name;
|
|
@@ -76,7 +55,6 @@ export class RouteConfig {
|
|
|
76
55
|
this.action = action;
|
|
77
56
|
this.internal = internal;
|
|
78
57
|
this.baseUrl = '';
|
|
79
|
-
this.parameterRegularExpressions = {};
|
|
80
58
|
this.responses = [];
|
|
81
59
|
this.description = '';
|
|
82
60
|
this.groups = [];
|
|
@@ -88,7 +66,6 @@ export class RouteConfig {
|
|
|
88
66
|
* An arbitrary data container the user can use to store app specific settings/values.
|
|
89
67
|
*/
|
|
90
68
|
this.data = new Map();
|
|
91
|
-
this.parameters = {};
|
|
92
69
|
}
|
|
93
70
|
getSchemaForResponse(statusCode) {
|
|
94
71
|
if (!this.responses.length)
|
|
@@ -106,39 +83,15 @@ export class RouteConfig {
|
|
|
106
83
|
return path;
|
|
107
84
|
}
|
|
108
85
|
}
|
|
109
|
-
|
|
110
|
-
* When this class is injected into a route, then validation errors are not automatically thrown (using onHttpControllerValidationError event),
|
|
111
|
-
* but injected to the route itself. The user is then responsible to handle the errors.
|
|
112
|
-
*
|
|
113
|
-
* Note: The body parameter is still passed, however it might contain now invalid data. The BodyValidation tells what data is invalid.
|
|
114
|
-
*/
|
|
115
|
-
export class BodyValidation {
|
|
116
|
-
constructor(errors = []) {
|
|
117
|
-
this.errors = errors;
|
|
118
|
-
}
|
|
119
|
-
hasErrors(prefix) {
|
|
120
|
-
return this.getErrors(prefix).length > 0;
|
|
121
|
-
}
|
|
122
|
-
getErrors(prefix) {
|
|
123
|
-
if (prefix)
|
|
124
|
-
return this.errors.filter(v => v.path.startsWith(prefix));
|
|
125
|
-
return this.errors;
|
|
126
|
-
}
|
|
127
|
-
getErrorsForPath(path) {
|
|
128
|
-
return this.errors.filter(v => v.path === path);
|
|
129
|
-
}
|
|
130
|
-
getErrorMessageForPath(path) {
|
|
131
|
-
return this.getErrorsForPath(path).map(v => v.message).join(', ');
|
|
132
|
-
}
|
|
133
|
-
}
|
|
86
|
+
RouteConfig.__type = ['baseUrl', () => "", 'statusCode', 'description', 'type', 'responses', () => [], () => "", 'groups', () => [], 'category', () => "", 'returnType', () => __ΩSerializationOptions, 'serializationOptions', () => Serializer, 'serializer', () => InjectorModule, 'module', () => __ΩClassType, 'resolverForToken', () => new Map(), () => HttpMiddlewareConfig, 'config', () => InjectorModule, 'middlewares', () => [], () => __ΩClassType, 'resolverForParameterName', () => new Map(), 'name', 'httpMethods', 'path', () => __ΩRouteControllerAction, 'action', 'internal', () => false, 'constructor', 'getSchemaForResponse', 'getFullPath', '&3!>"P\'4#&4$"4%8MF3&>\'&3$>(&F3)>*&3+>,"3-8n.3/8P70318P"72338"n4E35>6PP7748P"7943MF3:>;&n<E3=>>P&2?:&F2@:&2A:nB2C:)2D:>E"0FP\'2#P"-J0GP&0H5'];
|
|
134
87
|
class ParsedRoute {
|
|
135
88
|
constructor(routeConfig) {
|
|
136
89
|
this.routeConfig = routeConfig;
|
|
137
90
|
this.pathParameterNames = {};
|
|
138
91
|
this.parameters = [];
|
|
139
92
|
}
|
|
140
|
-
addParameter(property
|
|
141
|
-
const parameter = new ParsedRouteParameter(property
|
|
93
|
+
addParameter(property) {
|
|
94
|
+
const parameter = new ParsedRouteParameter(property);
|
|
142
95
|
this.parameters.push(parameter);
|
|
143
96
|
return parameter;
|
|
144
97
|
}
|
|
@@ -153,69 +106,97 @@ class ParsedRoute {
|
|
|
153
106
|
throw new Error(`No route parameter with name ${name} defined.`);
|
|
154
107
|
}
|
|
155
108
|
}
|
|
109
|
+
ParsedRoute.__type = ['regex', 'pathParameterNames', () => ({}), () => ParsedRouteParameter, 'parameters', () => [], () => RouteConfig, 'routeConfig', 'constructor', () => ReflectionParameter, 'property', () => ParsedRouteParameter, 'addParameter', () => ParsedRouteParameter, 'getParameters', 'name', () => ParsedRouteParameter, 'getParameter', '&3!8P&\'LM3">#P7$F3%<>&PP7\'2(:"0)PP7*2+P7,0-PP7.F0/P&20P71025'];
|
|
156
110
|
class ParsedRouteParameter {
|
|
157
|
-
constructor(
|
|
158
|
-
this.
|
|
159
|
-
this.config = config;
|
|
111
|
+
constructor(parameter) {
|
|
112
|
+
this.parameter = parameter;
|
|
160
113
|
}
|
|
161
114
|
get body() {
|
|
162
|
-
return
|
|
115
|
+
return metaAnnotation.getForName(this.parameter.type, 'httpBody') !== undefined;
|
|
116
|
+
}
|
|
117
|
+
get bodyValidation() {
|
|
118
|
+
return metaAnnotation.getForName(this.parameter.type, 'httpBodyValidation') !== undefined;
|
|
119
|
+
}
|
|
120
|
+
getType() {
|
|
121
|
+
if (this.bodyValidation) {
|
|
122
|
+
assertType(this.parameter.type, 20 /* class */);
|
|
123
|
+
const valueType = findMember('value', this.parameter.type);
|
|
124
|
+
if (!valueType || valueType.kind !== 15 /* property */)
|
|
125
|
+
throw new Error(`No property value found at ${stringifyType(this.parameter.type)}`);
|
|
126
|
+
return valueType.type;
|
|
127
|
+
}
|
|
128
|
+
return this.parameter.type;
|
|
163
129
|
}
|
|
164
130
|
get query() {
|
|
165
|
-
return
|
|
131
|
+
return metaAnnotation.getForName(this.parameter.type, 'httpQuery') !== undefined;
|
|
166
132
|
}
|
|
167
133
|
get queries() {
|
|
168
|
-
return
|
|
134
|
+
return metaAnnotation.getForName(this.parameter.type, 'httpQueries') !== undefined;
|
|
169
135
|
}
|
|
170
136
|
get typePath() {
|
|
171
|
-
|
|
137
|
+
const typeOptions = metaAnnotation.getForName(this.parameter.type, 'httpQueries') || metaAnnotation.getForName(this.parameter.type, 'httpQuery');
|
|
138
|
+
if (!typeOptions)
|
|
139
|
+
return;
|
|
140
|
+
const options = typeToObject(typeOptions[0]);
|
|
141
|
+
if (isObject(options))
|
|
142
|
+
return options.name;
|
|
143
|
+
return;
|
|
172
144
|
}
|
|
173
145
|
getName() {
|
|
174
|
-
return this.
|
|
146
|
+
return this.parameter.name;
|
|
175
147
|
}
|
|
176
148
|
isPartOfPath() {
|
|
177
149
|
return this.regexPosition !== undefined;
|
|
178
150
|
}
|
|
179
151
|
}
|
|
152
|
+
ParsedRouteParameter.__type = ['regexPosition', () => ReflectionParameter, 'parameter', 'constructor', 'getType', 'getName', 'isPartOfPath', '\'3!8PP7"2#:"0$!!P"0%!!!P"0&P)0\'5'];
|
|
180
153
|
function parseRoutePathToRegex(routeConfig) {
|
|
181
154
|
const parameterNames = {};
|
|
182
155
|
let path = routeConfig.getFullPath();
|
|
156
|
+
const method = ReflectionClass.from(routeConfig.action.controller).getMethod(routeConfig.action.methodName);
|
|
183
157
|
let argumentIndex = 0;
|
|
184
|
-
path = path.replace(/:(\w+)/g, (a, name) => {
|
|
158
|
+
path = path.replace(/:(\w+)/g, Object.assign((a, name) => {
|
|
185
159
|
parameterNames[name] = argumentIndex;
|
|
186
160
|
argumentIndex++;
|
|
187
|
-
|
|
188
|
-
|
|
161
|
+
const parameter = method.getParameterOrUndefined(name);
|
|
162
|
+
if (parameter) {
|
|
163
|
+
const regExp = getRegExp(parameter.type);
|
|
164
|
+
if (regExp)
|
|
165
|
+
return '(' + regExp + ')';
|
|
166
|
+
}
|
|
167
|
+
return String.raw `([^/]+)`;
|
|
168
|
+
}, { __type: ['a', 'name', '', 'P"2!"2""/#'] }));
|
|
189
169
|
return { regex: path, parameterNames };
|
|
190
170
|
}
|
|
171
|
+
parseRoutePathToRegex.__type = [() => RouteConfig, 'routeConfig', 'regex', 'parameterNames', 'parseRoutePathToRegex', 'PP7!2"P&4#P&\'LM4$M/%'];
|
|
191
172
|
export function parseRouteControllerAction(routeConfig) {
|
|
192
|
-
const schema =
|
|
173
|
+
const schema = ReflectionClass.from(routeConfig.action.controller);
|
|
193
174
|
const parsedRoute = new ParsedRoute(routeConfig);
|
|
194
|
-
const methodArgumentProperties = schema.
|
|
175
|
+
const methodArgumentProperties = schema.getMethodParameters(routeConfig.action.methodName);
|
|
195
176
|
const parsedPath = parseRoutePathToRegex(routeConfig);
|
|
196
177
|
parsedRoute.regex = parsedPath.regex;
|
|
197
178
|
parsedRoute.pathParameterNames = parsedPath.parameterNames;
|
|
198
179
|
for (const property of methodArgumentProperties) {
|
|
199
|
-
const
|
|
200
|
-
const parsedParameter = parsedRoute.addParameter(property, decoratorData);
|
|
201
|
-
if (decoratorData && decoratorData.optional)
|
|
202
|
-
property.isOptional = true;
|
|
203
|
-
if (property.type === 'class' && property.classType === BodyValidation) {
|
|
204
|
-
parsedRoute.customValidationErrorHandling = parsedParameter;
|
|
205
|
-
}
|
|
180
|
+
const parsedParameter = parsedRoute.addParameter(property);
|
|
206
181
|
parsedParameter.regexPosition = parsedPath.parameterNames[property.name];
|
|
207
182
|
}
|
|
208
183
|
return parsedRoute;
|
|
209
184
|
}
|
|
185
|
+
parseRouteControllerAction.__type = [() => RouteConfig, 'routeConfig', () => ParsedRoute, 'parseRouteControllerAction', 'PP7!2"P7#/$'];
|
|
210
186
|
export function dotToUrlPath(dotPath) {
|
|
211
187
|
if (-1 === dotPath.indexOf('.'))
|
|
212
188
|
return dotPath;
|
|
213
189
|
return dotPath.replace(/\./g, '][').replace('][', '[') + ']';
|
|
214
190
|
}
|
|
191
|
+
dotToUrlPath.__type = ['dotPath', 'dotToUrlPath', 'P&2!&/"'];
|
|
192
|
+
var __ΩRouteParameterResolver = [() => __ΩRouteParameterResolverContext, 'context', 'resolve', 'PPn!2"P""`J1#M'];
|
|
193
|
+
export { __ΩRouteParameterResolver };
|
|
194
|
+
var __ΩRouteParameterResolverContext = [() => __ΩClassType, 'token', () => RouteConfig, 'route', () => HttpRequest, 'request', 'name', 'value', () => __ΩHttpRequestQuery, 'query', () => __ΩHttpRequestResolvedParameters, 'parameters', 'PPn!&+"J4"P7#4$P7%4&"4\'"4(n)4*n+4,M'];
|
|
195
|
+
export { __ΩRouteParameterResolverContext };
|
|
215
196
|
function filterMiddlewaresForRoute(middlewareRawConfigs, routeConfig, fullPath) {
|
|
216
197
|
const middlewares = middlewareRawConfigs.slice(0);
|
|
217
198
|
middlewares.push(...routeConfig.middlewares);
|
|
218
|
-
const middlewareConfigs = middlewares.filter((v) => {
|
|
199
|
+
const middlewareConfigs = middlewares.filter(Object.assign((v) => {
|
|
219
200
|
var _a;
|
|
220
201
|
if (!(v.config instanceof HttpMiddlewareConfig))
|
|
221
202
|
return false;
|
|
@@ -278,34 +259,50 @@ function filterMiddlewaresForRoute(middlewareRawConfigs, routeConfig, fullPath)
|
|
|
278
259
|
}
|
|
279
260
|
}
|
|
280
261
|
return true;
|
|
281
|
-
});
|
|
282
|
-
middlewareConfigs.sort((a, b) => {
|
|
262
|
+
}, { __type: ['v', '', 'P"2!"/"'] }));
|
|
263
|
+
middlewareConfigs.sort(Object.assign((a, b) => {
|
|
283
264
|
return a.config.order - b.config.order;
|
|
284
|
-
});
|
|
265
|
+
}, { __type: ['a', 'b', '', 'P"2!"2""/#'] }));
|
|
285
266
|
return middlewareConfigs;
|
|
286
267
|
}
|
|
287
|
-
|
|
268
|
+
filterMiddlewaresForRoute.__type = [() => __ΩMiddlewareRegistryEntry, 'middlewareRawConfigs', () => RouteConfig, 'routeConfig', 'fullPath', () => HttpMiddlewareConfig, 'config', () => InjectorModule, 'module', 'filterMiddlewaresForRoute', 'Pn!F2"P7#2$&2%PP7&4\'P"7(4)MF/*'];
|
|
269
|
+
export class Router {
|
|
288
270
|
constructor(controllers, logger, tagRegistry, middlewareRegistry = new MiddlewareRegistry) {
|
|
289
271
|
this.logger = logger;
|
|
290
272
|
this.middlewareRegistry = middlewareRegistry;
|
|
291
273
|
this.routes = [];
|
|
292
|
-
|
|
293
|
-
|
|
274
|
+
for (const controller of controllers.controllers) {
|
|
275
|
+
this.addRouteForController(controller.controller, controller.module);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
parseBody(req, files) {
|
|
279
|
+
const form = formidable({
|
|
294
280
|
multiples: true,
|
|
295
281
|
hash: 'sha1',
|
|
296
282
|
enabledPlugins: ['octetstream', 'querystring', 'json'],
|
|
297
283
|
});
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
284
|
+
return asyncOperation(Object.assign((resolve, reject) => {
|
|
285
|
+
if (req.body) {
|
|
286
|
+
return resolve(req.body);
|
|
287
|
+
}
|
|
288
|
+
form.parse(req, Object.assign((err, fields, files) => {
|
|
289
|
+
if (err) {
|
|
290
|
+
reject(err);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const body = req.body = { ...fields, ...files };
|
|
294
|
+
resolve(body);
|
|
295
|
+
}
|
|
296
|
+
}, { __type: ['err', 'fields', 'files', '', 'P"2!"2""2#"/$'] }));
|
|
297
|
+
}, { __type: ['resolve', 'reject', '', 'P"2!"2""/#'] }));
|
|
301
298
|
}
|
|
302
299
|
getRoutes() {
|
|
303
300
|
return this.routes;
|
|
304
301
|
}
|
|
305
|
-
static forControllers(controllers, tagRegistry = new TagRegistry(), middlewareRegistry = new MiddlewareRegistry(), module = new
|
|
306
|
-
return new this(new HttpControllers(controllers.map(v => {
|
|
302
|
+
static forControllers(controllers, tagRegistry = new TagRegistry(), middlewareRegistry = new MiddlewareRegistry(), module = new InjectorModule()) {
|
|
303
|
+
return new this(new HttpControllers(controllers.map(Object.assign(v => {
|
|
307
304
|
return isClass(v) ? { controller: v, module } : v;
|
|
308
|
-
})), new Logger([], []), tagRegistry, middlewareRegistry);
|
|
305
|
+
}, { __type: ['v', '', 'P"2!"/"'] }))), new Logger([], []), tagRegistry, middlewareRegistry);
|
|
309
306
|
}
|
|
310
307
|
getRouteCode(compiler, routeConfig) {
|
|
311
308
|
const routeConfigVar = compiler.reserveVariable('routeConfigVar', routeConfig);
|
|
@@ -316,7 +313,7 @@ let Router = class Router {
|
|
|
316
313
|
const setParameters = [];
|
|
317
314
|
const parameterNames = [];
|
|
318
315
|
const parameterValidator = [];
|
|
319
|
-
let bodyValidationErrorHandling = `if (bodyErrors.length) throw
|
|
316
|
+
let bodyValidationErrorHandling = `if (bodyErrors.length) throw ValidationError.from(bodyErrors);`;
|
|
320
317
|
let enableParseBody = false;
|
|
321
318
|
const hasParameters = parsedRoute.getParameters().length > 0;
|
|
322
319
|
let requiresAsyncParameters = false;
|
|
@@ -324,49 +321,51 @@ let Router = class Router {
|
|
|
324
321
|
const fullPath = routeConfig.getFullPath();
|
|
325
322
|
const middlewareConfigs = filterMiddlewaresForRoute(this.middlewareRegistry.configs, routeConfig, fullPath);
|
|
326
323
|
for (const parameter of parsedRoute.getParameters()) {
|
|
327
|
-
if (
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
parameterNames.push(`parameters.${parameter.property.name}`);
|
|
332
|
-
}
|
|
333
|
-
else if (parameter.body) {
|
|
334
|
-
const validatorVar = compiler.reserveVariable('argumentValidator', jitValidateProperty(parameter.property));
|
|
335
|
-
const converterVar = compiler.reserveVariable('argumentConverter', getPropertyXtoClassFunction(parameter.property, jsonSerializer));
|
|
324
|
+
if (parameter.body || parameter.bodyValidation) {
|
|
325
|
+
const type = parameter.getType();
|
|
326
|
+
const validatorVar = compiler.reserveVariable('argumentValidator', getValidatorFunction(undefined, type));
|
|
327
|
+
const converterVar = compiler.reserveVariable('argumentConverter', getSerializeFunction(type, serializer.deserializeRegistry));
|
|
336
328
|
enableParseBody = true;
|
|
337
|
-
setParameters.push(`parameters.${parameter.
|
|
338
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
339
|
-
|
|
329
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(bodyFields, {loosely: true});`);
|
|
330
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: bodyErrors});`);
|
|
331
|
+
if (parameter.bodyValidation) {
|
|
332
|
+
compiler.context.set('BodyValidation', ValidatedBody);
|
|
333
|
+
compiler.context.set('BodyValidationError', BodyValidationError);
|
|
334
|
+
parameterNames.push(`new BodyValidation(new BodyValidationError(bodyErrors), bodyErrors.length === 0 ? parameters.${parameter.parameter.name} : undefined)`);
|
|
335
|
+
bodyValidationErrorHandling = '';
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
339
|
+
}
|
|
340
340
|
}
|
|
341
341
|
else if (parameter.query || parameter.queries) {
|
|
342
|
-
const converted = parameter.
|
|
343
|
-
const validator =
|
|
342
|
+
const converted = getSerializeFunction(parameter.parameter.parameter, serializer.deserializeRegistry, undefined, parameter.getName());
|
|
343
|
+
const validator = getValidatorFunction(undefined, parameter.parameter.parameter);
|
|
344
344
|
const converterVar = compiler.reserveVariable('argumentConverter', converted);
|
|
345
345
|
const validatorVar = compiler.reserveVariable('argumentValidator', validator);
|
|
346
|
-
const queryPath = parameter.typePath === undefined ? parameter.
|
|
346
|
+
const queryPath = parameter.typePath === undefined && parameter.query ? parameter.parameter.name : parameter.typePath;
|
|
347
347
|
const accessor = queryPath ? `['` + (queryPath.replace(/\./g, `']['`)) + `']` : '';
|
|
348
348
|
const queryAccessor = queryPath ? `_query${accessor}` : '_query';
|
|
349
|
-
setParameters.push(`parameters.${parameter.
|
|
350
|
-
parameterNames.push(`parameters.${parameter.
|
|
351
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
349
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(${queryAccessor}, {loosely: true});`);
|
|
350
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
351
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: validationErrors}, ${JSON.stringify(parameter.typePath || parameter.getName())});`);
|
|
352
352
|
}
|
|
353
353
|
else {
|
|
354
|
-
parameterNames.push(`parameters.${parameter.
|
|
354
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
355
355
|
if (parameter.isPartOfPath()) {
|
|
356
|
-
if (parameter.
|
|
357
|
-
const converted = parameter.
|
|
356
|
+
if (parameter.parameter.type.kind !== 20 /* class */) {
|
|
357
|
+
const converted = getSerializeFunction(parameter.parameter.parameter, serializer.deserializeRegistry, undefined, parameter.getName());
|
|
358
358
|
const converterVar = compiler.reserveVariable('argumentConverter', converted);
|
|
359
|
-
setParameters.push(`parameters.${parameter.
|
|
360
|
-
const validator =
|
|
359
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(_match[${1 + (parameter.regexPosition || 0)}], {loosely: true});`);
|
|
360
|
+
const validator = getValidatorFunction(undefined, parameter.parameter.parameter);
|
|
361
361
|
const validatorVar = compiler.reserveVariable('argumentValidator', validator);
|
|
362
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
362
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: validationErrors}, ${JSON.stringify(parameter.getName())});`);
|
|
363
363
|
}
|
|
364
364
|
else {
|
|
365
|
-
setParameters.push(`parameters.${parameter.
|
|
365
|
+
setParameters.push(`parameters.${parameter.parameter.name} = _match[${1 + (parameter.regexPosition || 0)}];`);
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
|
-
const
|
|
369
|
-
const injectorToken = injectorOptions && injectorOptions.token ? injectorOptions.token : (parameter.property.type === 'class' ? parameter.property.getResolvedClassType() : undefined);
|
|
368
|
+
const injectorToken = parameter.parameter.type.kind === 20 /* class */ ? parameter.parameter.type.classType : undefined;
|
|
370
369
|
const injectorTokenVar = compiler.reserveVariable('classType', injectorToken);
|
|
371
370
|
const parameterResolverFoundVar = compiler.reserveVariable('parameterResolverFound', false);
|
|
372
371
|
setParameters.push(`${parameterResolverFoundVar} = false;`);
|
|
@@ -388,27 +387,21 @@ let Router = class Router {
|
|
|
388
387
|
${instance} = ${injector}.get(${resolverProvideTokenVar}${moduleVar});
|
|
389
388
|
if (!${parameterResolverFoundVar}) {
|
|
390
389
|
${parameterResolverFoundVar} = true;
|
|
391
|
-
parameters.${parameter.
|
|
390
|
+
parameters.${parameter.parameter.name} = await ${instance}.resolve({
|
|
392
391
|
token: ${injectorTokenVar},
|
|
393
392
|
routeConfig: ${routeConfigVar},
|
|
394
393
|
request: request,
|
|
395
|
-
name: ${JSON.stringify(parameter.
|
|
396
|
-
value: parameters.${parameter.
|
|
394
|
+
name: ${JSON.stringify(parameter.parameter.name)},
|
|
395
|
+
value: parameters.${parameter.parameter.name},
|
|
397
396
|
query: _query,
|
|
398
397
|
parameters: parameters
|
|
399
398
|
});
|
|
400
399
|
}`);
|
|
401
400
|
}
|
|
402
|
-
else {
|
|
403
|
-
if (!parameter.isPartOfPath() && parameter.property.type !== 'class' && (!injectorOptions || !injectorOptions.token)) {
|
|
404
|
-
throw new Error(`Route parameter '${parameter.property.name}' of ${getRouterControllerActionName(routeConfig.action)} is not a ClassType nor is a @inject(T) set. It can not be requested from the DI container like that.` +
|
|
405
|
-
`If its a query parameter use '@http.query() ${parameter.property.name}' or if its a body '@http.body() ${parameter.property.name}'.`);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
401
|
if (!parameter.isPartOfPath()) {
|
|
409
|
-
let injectorGet = `parameters.${parameter.
|
|
410
|
-
if (
|
|
411
|
-
injectorGet = `try {parameters.${parameter.
|
|
402
|
+
let injectorGet = `parameters.${parameter.parameter.name} = ${injector}.get(${injectorTokenVar});`;
|
|
403
|
+
if (parameter.parameter.isOptional()) {
|
|
404
|
+
injectorGet = `try {parameters.${parameter.parameter.name} = ${injector}.get(${injectorTokenVar}); } catch (e) {}`;
|
|
412
405
|
}
|
|
413
406
|
setParameters.push(`if (!${parameterResolverFoundVar}) ${injectorGet}`);
|
|
414
407
|
}
|
|
@@ -416,11 +409,9 @@ let Router = class Router {
|
|
|
416
409
|
}
|
|
417
410
|
let parseBodyLoading = '';
|
|
418
411
|
if (enableParseBody) {
|
|
419
|
-
const parseBodyVar = compiler.reserveVariable('parseBody', parseBody);
|
|
420
|
-
const formVar = compiler.reserveVariable('form', this.form);
|
|
412
|
+
const parseBodyVar = compiler.reserveVariable('parseBody', this.parseBody.bind(this));
|
|
421
413
|
parseBodyLoading = `
|
|
422
|
-
const
|
|
423
|
-
const bodyFields = {...bodyParsed.fields, ...bodyParsed.files};`;
|
|
414
|
+
const bodyFields = (await ${parseBodyVar}(request, uploadedFiles));`;
|
|
424
415
|
requiresAsyncParameters = true;
|
|
425
416
|
}
|
|
426
417
|
let matcher = `_path.startsWith(${JSON.stringify(prefix)}) && (_match = _path.match(${regexVar}))`;
|
|
@@ -459,15 +450,15 @@ let Router = class Router {
|
|
|
459
450
|
${setParameters.join('\n')}
|
|
460
451
|
${parameterValidator.join('\n')}
|
|
461
452
|
${bodyValidationErrorHandling}
|
|
462
|
-
if (validationErrors.length) throw
|
|
453
|
+
if (validationErrors.length) throw new ValidationError(validationErrors);
|
|
463
454
|
return [${parameterNames.join(',')}];
|
|
464
455
|
}`;
|
|
465
456
|
}
|
|
466
457
|
let methodCheck = '';
|
|
467
458
|
if (routeConfig.httpMethods.length) {
|
|
468
|
-
methodCheck = '(' + routeConfig.httpMethods.map(v => {
|
|
459
|
+
methodCheck = '(' + routeConfig.httpMethods.map(Object.assign(v => {
|
|
469
460
|
return `_method === '${v.toUpperCase()}'`;
|
|
470
|
-
}).join(' || ') + ') && ';
|
|
461
|
+
}, { __type: ['v', '', 'P"2!"/"'] })).join(' || ') + ') && ';
|
|
471
462
|
}
|
|
472
463
|
return `
|
|
473
464
|
//=> ${routeConfig.httpMethods.join(',')} ${path}
|
|
@@ -479,15 +470,15 @@ let Router = class Router {
|
|
|
479
470
|
getRouteUrlResolveCode(compiler, routeConfig) {
|
|
480
471
|
const parsedRoute = parseRouteControllerAction(routeConfig);
|
|
481
472
|
let url = routeConfig.getFullPath();
|
|
482
|
-
url = url.replace(/:(\w+)/g, (a, name) => {
|
|
473
|
+
url = url.replace(/:(\w+)/g, Object.assign((a, name) => {
|
|
483
474
|
return `\${parameters.${name}}`;
|
|
484
|
-
});
|
|
475
|
+
}, { __type: ['a', 'name', '', 'P"2!"2""/#'] }));
|
|
485
476
|
const modify = [];
|
|
486
477
|
for (const parameter of parsedRoute.getParameters()) {
|
|
487
478
|
if (parameter.query || parameter.queries) {
|
|
488
|
-
const queryPath = parameter.typePath === undefined ? parameter.
|
|
489
|
-
if (parameter.
|
|
490
|
-
for (const property of parameter.
|
|
479
|
+
const queryPath = parameter.typePath === undefined && parameter.query ? parameter.parameter.name : parameter.typePath || '';
|
|
480
|
+
if (parameter.parameter.type.kind === 20 /* class */ || parameter.parameter.type.kind === 30 /* objectLiteral */) {
|
|
481
|
+
for (const property of ReflectionClass.from(parameter.parameter.type).getProperties()) {
|
|
491
482
|
const accessor = `parameters.${parameter.getName()}?.${property.name}`;
|
|
492
483
|
const thisPath = queryPath ? queryPath + '.' + property.name : property.name;
|
|
493
484
|
modify.push(`${accessor} !== undefined && query.push(${JSON.stringify(dotToUrlPath(thisPath))} + '=' + encodeURIComponent(${accessor}))`);
|
|
@@ -515,7 +506,7 @@ let Router = class Router {
|
|
|
515
506
|
const data = httpClass._fetch(controller);
|
|
516
507
|
if (!data)
|
|
517
508
|
throw new Error(`Http controller class ${getClassName(controller)} has no @http.controller decorator.`);
|
|
518
|
-
const schema =
|
|
509
|
+
const schema = ReflectionClass.from(controller);
|
|
519
510
|
for (const action of data.getActions()) {
|
|
520
511
|
const routeConfig = new RouteConfig(action.name, action.httpMethods, action.path, {
|
|
521
512
|
controller,
|
|
@@ -523,19 +514,18 @@ let Router = class Router {
|
|
|
523
514
|
methodName: action.methodName
|
|
524
515
|
});
|
|
525
516
|
routeConfig.module = module;
|
|
526
|
-
routeConfig.parameterRegularExpressions = action.parameterRegularExpressions;
|
|
527
517
|
routeConfig.responses = action.responses;
|
|
528
518
|
routeConfig.description = action.description;
|
|
529
519
|
routeConfig.category = action.category;
|
|
530
520
|
routeConfig.groups = action.groups;
|
|
531
521
|
routeConfig.data = new Map(action.data);
|
|
532
522
|
routeConfig.baseUrl = data.baseUrl;
|
|
533
|
-
routeConfig.middlewares = data.middlewares.map(v => {
|
|
523
|
+
routeConfig.middlewares = data.middlewares.map(Object.assign(v => {
|
|
534
524
|
return { config: v(), module };
|
|
535
|
-
});
|
|
536
|
-
routeConfig.middlewares.push(...action.middlewares.map(v => {
|
|
525
|
+
}, { __type: ['v', '', 'P"2!"/"'] }));
|
|
526
|
+
routeConfig.middlewares.push(...action.middlewares.map(Object.assign(v => {
|
|
537
527
|
return { config: v(), module };
|
|
538
|
-
}));
|
|
528
|
+
}, { __type: ['v', '', 'P"2!"/"'] })));
|
|
539
529
|
for (const item of action.resolverForToken)
|
|
540
530
|
routeConfig.resolverForToken.set(...item);
|
|
541
531
|
routeConfig.resolverForToken = new Map(data.resolverForToken);
|
|
@@ -544,18 +534,17 @@ let Router = class Router {
|
|
|
544
534
|
routeConfig.resolverForParameterName = new Map(data.resolverForParameterName);
|
|
545
535
|
for (const item of action.resolverForParameterName)
|
|
546
536
|
routeConfig.resolverForParameterName.set(...item);
|
|
547
|
-
routeConfig.parameters = { ...action.parameters };
|
|
548
537
|
routeConfig.serializationOptions = action.serializationOptions;
|
|
549
538
|
routeConfig.serializer = action.serializer;
|
|
550
539
|
routeConfig.serializer = action.serializer;
|
|
551
540
|
if (schema.hasMethod(action.methodName))
|
|
552
|
-
routeConfig.
|
|
541
|
+
routeConfig.returnType = schema.getMethod(action.methodName).getReturnType();
|
|
553
542
|
this.addRoute(routeConfig);
|
|
554
543
|
}
|
|
555
544
|
}
|
|
556
545
|
build() {
|
|
557
546
|
const compiler = new CompilerContext;
|
|
558
|
-
compiler.context.set('
|
|
547
|
+
compiler.context.set('ValidationError', ValidationError);
|
|
559
548
|
compiler.context.set('qs', require('qs'));
|
|
560
549
|
const code = [];
|
|
561
550
|
for (const route of this.routes) {
|
|
@@ -601,13 +590,6 @@ let Router = class Router {
|
|
|
601
590
|
method = method.toUpperCase();
|
|
602
591
|
return this.resolveRequest({ url, method });
|
|
603
592
|
}
|
|
604
|
-
}
|
|
605
|
-
Router =
|
|
606
|
-
injectable,
|
|
607
|
-
__metadata("design:paramtypes", [HttpControllers,
|
|
608
|
-
Logger,
|
|
609
|
-
TagRegistry,
|
|
610
|
-
MiddlewareRegistry])
|
|
611
|
-
], Router);
|
|
612
|
-
export { Router };
|
|
593
|
+
}
|
|
594
|
+
Router.__type = [() => HttpRequest, 'request', () => __ΩResolvedController, '', 'fn', 'name', 'parameters', 'resolveFn', () => RouteConfig, 'routes', () => [], () => HttpRequest, 'req', () => UploadedFile, 'files', 'parseBody', () => HttpControllers, 'controllers', () => __ΩLoggerInterface, 'logger', () => TagRegistry, 'tagRegistry', () => MiddlewareRegistry, 'middlewareRegistry', () => new MiddlewareRegistry, 'constructor', () => RouteConfig, 'getRoutes', () => __ΩClassType, () => InjectorModule, 'module', () => __ΩClassType, 'controller', () => TagRegistry, () => new TagRegistry(), () => MiddlewareRegistry, () => new MiddlewareRegistry(), () => InjectorModule, () => new InjectorModule(), () => Router, 'forControllers', () => CompilerContext, 'compiler', () => RouteConfig, 'routeConfig', 'getRouteCode', () => CompilerContext, () => RouteConfig, 'getRouteUrlResolveCode', () => RouteConfig, 'addRoute', () => __ΩClassType, () => InjectorModule, 'addRouteForController', () => HttpRequest, () => __ΩResolvedController, 'build', 'buildUrlResolver', 'routeName', () => ({}), 'resolveUrl', () => HttpRequest, () => __ΩResolvedController, 'resolveRequest', 'method', 'url', () => __ΩResolvedController, 'resolve', 'PP7!2"Pn#-J/$3%8<P&2&P&"LM2\'&/$3(8<P7)F3*<>+PP7,2-P&P7.LM2/"00;PP7122n324;P7526P7728;>9"0:PP7;F0<PPn=PP"7>4?n@4AMJF22P7B26>CP7D28>EP"7F2?>GP7H0IPP7J2KP7L2M&0N<PP7O2KP7P2M&0Q<PP7R2M"0SPnT2AP"7U2?"0VPPP7W2"PnX-J/$0Y<P"0Z<P&2[P&"LM2\'>\\&0]PP7^2"Pn_-J0`P&2a&2bPnc-J0d5'];
|
|
613
595
|
//# sourceMappingURL=router.js.map
|