@deepkit/http 1.0.1-alpha.59 → 1.0.1-alpha.61
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 +60 -0
- package/dist/cjs/src/model.js +95 -24
- 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 +24 -53
- package/dist/cjs/src/router.js +140 -159
- 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 +298 -333
- 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 +60 -0
- package/dist/esm/src/model.js +91 -23
- 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 +24 -53
- package/dist/esm/src/router.js +136 -155
- 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 +167 -202
- 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 +77 -5
- package/src/module.config.ts +3 -6
- package/src/module.ts +2 -2
- package/src/router.ts +121 -161
- package/src/static-serving.ts +2 -4
- package/tests/middleware.spec.ts +0 -1
- package/tests/router.spec.ts +131 -133
- package/tsconfig.json +2 -1
package/dist/cjs/src/router.js
CHANGED
|
@@ -5,14 +5,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
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;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
10
|
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.Router = exports.dotToUrlPath = exports.parseRouteControllerAction = exports.
|
|
12
|
+
exports.Router = exports.__ΩRouteParameterResolverContext = exports.__ΩRouteParameterResolver = exports.dotToUrlPath = exports.parseRouteControllerAction = exports.RouteConfig = exports.__ΩRouteControllerAction = exports.UploadedFile = exports.__ΩRouteParameterResolverForInjector = void 0;
|
|
13
|
+
var { __ΩSerializationOptions } = require('@deepkit/type');
|
|
14
|
+
var { __ΩClassType } = require('@deepkit/core');
|
|
15
|
+
var { __ΩMiddlewareRegistryEntry } = require('@deepkit/app');
|
|
16
|
+
var { __ΩLoggerInterface } = require('@deepkit/logger');
|
|
17
|
+
var { __ΩHttpMiddlewareFn } = require('./middleware');
|
|
18
|
+
var { __ΩHttpRequestQuery } = require('./model');
|
|
19
|
+
var { __ΩHttpRequestResolvedParameters } = require('./model');
|
|
16
20
|
/*
|
|
17
21
|
* Deepkit Framework
|
|
18
22
|
* Copyright (C) 2021 Deepkit UG, Marc J. Schmidt
|
|
@@ -22,46 +26,33 @@ exports.Router = exports.dotToUrlPath = exports.parseRouteControllerAction = exp
|
|
|
22
26
|
*
|
|
23
27
|
* You should have received a copy of the MIT License along with this program.
|
|
24
28
|
*/
|
|
25
|
-
require("reflect-metadata");
|
|
26
29
|
const core_1 = require("@deepkit/core");
|
|
27
30
|
const type_1 = require("@deepkit/type");
|
|
28
31
|
// @ts-ignore
|
|
29
32
|
const formidable_1 = __importDefault(require("formidable"));
|
|
30
33
|
const decorator_1 = require("./decorator");
|
|
34
|
+
const model_1 = require("./model");
|
|
31
35
|
const injector_1 = require("@deepkit/injector");
|
|
32
36
|
const logger_1 = require("@deepkit/logger");
|
|
33
37
|
const controllers_1 = require("./controllers");
|
|
34
38
|
const app_1 = require("@deepkit/app");
|
|
35
39
|
const middleware_1 = require("./middleware");
|
|
40
|
+
var __ΩRouteParameterResolverForInjector = [() => injector_1.InjectorContext, 'injector', '', 'PP7!2"P"F"F`J/#'];
|
|
41
|
+
exports.__ΩRouteParameterResolverForInjector = __ΩRouteParameterResolverForInjector;
|
|
42
|
+
var __ΩResolvedController = [() => __ΩRouteParameterResolverForInjector, 'parameters', () => RouteConfig, 'routeConfig', () => UploadedFile, 'uploadedFiles', () => injector_1.InjectorContext, 'injector', () => __ΩHttpMiddlewareFn, 'fn', 'timeout', '', 'middlewares', 'Pn!4"P7#4$P&P7%LM4&PP7\'2(Pn)4*\'4+MF/,4-8M'];
|
|
36
43
|
let UploadedFile = class UploadedFile {
|
|
37
44
|
};
|
|
38
|
-
|
|
39
|
-
type_1.t.required,
|
|
40
|
-
__metadata("design:type", Number)
|
|
41
|
-
], UploadedFile.prototype, "size", void 0);
|
|
42
|
-
__decorate([
|
|
43
|
-
type_1.t.required,
|
|
44
|
-
__metadata("design:type", String)
|
|
45
|
-
], UploadedFile.prototype, "path", void 0);
|
|
46
|
-
__decorate([
|
|
47
|
-
type_1.t.string.required.nullable,
|
|
48
|
-
__metadata("design:type", Object)
|
|
49
|
-
], UploadedFile.prototype, "name", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
type_1.t.string.required.nullable,
|
|
52
|
-
__metadata("design:type", Object)
|
|
53
|
-
], UploadedFile.prototype, "type", void 0);
|
|
54
|
-
__decorate([
|
|
55
|
-
type_1.t.date.required.nullable,
|
|
56
|
-
__metadata("design:type", Object)
|
|
57
|
-
], UploadedFile.prototype, "lastModifiedDate", void 0);
|
|
45
|
+
UploadedFile.__type = ['size', 'path', 'name', 'type', 'lastModifiedDate', '\'3!&3"P&,J3#P&,J3$PT,J3%5'];
|
|
58
46
|
UploadedFile = __decorate([
|
|
59
47
|
type_1.entity.name('@deepkit/UploadedFile')
|
|
60
48
|
], UploadedFile);
|
|
61
49
|
exports.UploadedFile = UploadedFile;
|
|
50
|
+
var __ΩRouteControllerAction = [() => injector_1.InjectorModule, 'module', () => __ΩClassType, 'controller', 'methodName', 'PP"7!4"8n#4$&4%M'];
|
|
51
|
+
exports.__ΩRouteControllerAction = __ΩRouteControllerAction;
|
|
62
52
|
function getRouterControllerActionName(action) {
|
|
63
|
-
return `${core_1.getClassName(action.controller)}.${action.methodName}`;
|
|
53
|
+
return `${(0, core_1.getClassName)(action.controller)}.${action.methodName}`;
|
|
64
54
|
}
|
|
55
|
+
getRouterControllerActionName.__type = [() => __ΩRouteControllerAction, 'action', 'getRouterControllerActionName', 'Pn!2"&/#'];
|
|
65
56
|
class RouteConfig {
|
|
66
57
|
constructor(name, httpMethods, path, action, internal = false) {
|
|
67
58
|
this.name = name;
|
|
@@ -70,7 +61,6 @@ class RouteConfig {
|
|
|
70
61
|
this.action = action;
|
|
71
62
|
this.internal = internal;
|
|
72
63
|
this.baseUrl = '';
|
|
73
|
-
this.parameterRegularExpressions = {};
|
|
74
64
|
this.responses = [];
|
|
75
65
|
this.description = '';
|
|
76
66
|
this.groups = [];
|
|
@@ -82,7 +72,6 @@ class RouteConfig {
|
|
|
82
72
|
* An arbitrary data container the user can use to store app specific settings/values.
|
|
83
73
|
*/
|
|
84
74
|
this.data = new Map();
|
|
85
|
-
this.parameters = {};
|
|
86
75
|
}
|
|
87
76
|
getSchemaForResponse(statusCode) {
|
|
88
77
|
if (!this.responses.length)
|
|
@@ -94,47 +83,22 @@ class RouteConfig {
|
|
|
94
83
|
return;
|
|
95
84
|
}
|
|
96
85
|
getFullPath() {
|
|
97
|
-
let path = this.baseUrl ? core_1.urlJoin(this.baseUrl, this.path) : this.path;
|
|
86
|
+
let path = this.baseUrl ? (0, core_1.urlJoin)(this.baseUrl, this.path) : this.path;
|
|
98
87
|
if (!path.startsWith('/'))
|
|
99
88
|
path = '/' + path;
|
|
100
89
|
return path;
|
|
101
90
|
}
|
|
102
91
|
}
|
|
103
92
|
exports.RouteConfig = RouteConfig;
|
|
104
|
-
|
|
105
|
-
* When this class is injected into a route, then validation errors are not automatically thrown (using onHttpControllerValidationError event),
|
|
106
|
-
* but injected to the route itself. The user is then responsible to handle the errors.
|
|
107
|
-
*
|
|
108
|
-
* Note: The body parameter is still passed, however it might contain now invalid data. The BodyValidation tells what data is invalid.
|
|
109
|
-
*/
|
|
110
|
-
class BodyValidation {
|
|
111
|
-
constructor(errors = []) {
|
|
112
|
-
this.errors = errors;
|
|
113
|
-
}
|
|
114
|
-
hasErrors(prefix) {
|
|
115
|
-
return this.getErrors(prefix).length > 0;
|
|
116
|
-
}
|
|
117
|
-
getErrors(prefix) {
|
|
118
|
-
if (prefix)
|
|
119
|
-
return this.errors.filter(v => v.path.startsWith(prefix));
|
|
120
|
-
return this.errors;
|
|
121
|
-
}
|
|
122
|
-
getErrorsForPath(path) {
|
|
123
|
-
return this.errors.filter(v => v.path === path);
|
|
124
|
-
}
|
|
125
|
-
getErrorMessageForPath(path) {
|
|
126
|
-
return this.getErrorsForPath(path).map(v => v.message).join(', ');
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
exports.BodyValidation = BodyValidation;
|
|
93
|
+
RouteConfig.__type = ['baseUrl', () => "", 'statusCode', 'description', 'type', 'responses', () => [], () => "", 'groups', () => [], 'category', () => "", 'returnType', () => __ΩSerializationOptions, 'serializationOptions', () => type_1.Serializer, 'serializer', () => injector_1.InjectorModule, 'module', () => __ΩClassType, 'resolverForToken', () => new Map(), () => middleware_1.HttpMiddlewareConfig, 'config', () => injector_1.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'];
|
|
130
94
|
class ParsedRoute {
|
|
131
95
|
constructor(routeConfig) {
|
|
132
96
|
this.routeConfig = routeConfig;
|
|
133
97
|
this.pathParameterNames = {};
|
|
134
98
|
this.parameters = [];
|
|
135
99
|
}
|
|
136
|
-
addParameter(property
|
|
137
|
-
const parameter = new ParsedRouteParameter(property
|
|
100
|
+
addParameter(property) {
|
|
101
|
+
const parameter = new ParsedRouteParameter(property);
|
|
138
102
|
this.parameters.push(parameter);
|
|
139
103
|
return parameter;
|
|
140
104
|
}
|
|
@@ -149,71 +113,99 @@ class ParsedRoute {
|
|
|
149
113
|
throw new Error(`No route parameter with name ${name} defined.`);
|
|
150
114
|
}
|
|
151
115
|
}
|
|
116
|
+
ParsedRoute.__type = ['regex', 'pathParameterNames', () => ({}), () => ParsedRouteParameter, 'parameters', () => [], () => RouteConfig, 'routeConfig', 'constructor', () => type_1.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'];
|
|
152
117
|
class ParsedRouteParameter {
|
|
153
|
-
constructor(
|
|
154
|
-
this.
|
|
155
|
-
this.config = config;
|
|
118
|
+
constructor(parameter) {
|
|
119
|
+
this.parameter = parameter;
|
|
156
120
|
}
|
|
157
121
|
get body() {
|
|
158
|
-
return
|
|
122
|
+
return type_1.metaAnnotation.getForName(this.parameter.type, 'httpBody') !== undefined;
|
|
123
|
+
}
|
|
124
|
+
get bodyValidation() {
|
|
125
|
+
return type_1.metaAnnotation.getForName(this.parameter.type, 'httpBodyValidation') !== undefined;
|
|
126
|
+
}
|
|
127
|
+
getType() {
|
|
128
|
+
if (this.bodyValidation) {
|
|
129
|
+
(0, type_1.assertType)(this.parameter.type, 20 /* class */);
|
|
130
|
+
const valueType = (0, type_1.findMember)('value', this.parameter.type);
|
|
131
|
+
if (!valueType || valueType.kind !== 15 /* property */)
|
|
132
|
+
throw new Error(`No property value found at ${(0, type_1.stringifyType)(this.parameter.type)}`);
|
|
133
|
+
return valueType.type;
|
|
134
|
+
}
|
|
135
|
+
return this.parameter.type;
|
|
159
136
|
}
|
|
160
137
|
get query() {
|
|
161
|
-
return
|
|
138
|
+
return type_1.metaAnnotation.getForName(this.parameter.type, 'httpQuery') !== undefined;
|
|
162
139
|
}
|
|
163
140
|
get queries() {
|
|
164
|
-
return
|
|
141
|
+
return type_1.metaAnnotation.getForName(this.parameter.type, 'httpQueries') !== undefined;
|
|
165
142
|
}
|
|
166
143
|
get typePath() {
|
|
167
|
-
|
|
144
|
+
const typeOptions = type_1.metaAnnotation.getForName(this.parameter.type, 'httpQueries') || type_1.metaAnnotation.getForName(this.parameter.type, 'httpQuery');
|
|
145
|
+
if (!typeOptions)
|
|
146
|
+
return;
|
|
147
|
+
const options = (0, type_1.typeToObject)(typeOptions[0]);
|
|
148
|
+
if ((0, core_1.isObject)(options))
|
|
149
|
+
return options.name;
|
|
150
|
+
return;
|
|
168
151
|
}
|
|
169
152
|
getName() {
|
|
170
|
-
return this.
|
|
153
|
+
return this.parameter.name;
|
|
171
154
|
}
|
|
172
155
|
isPartOfPath() {
|
|
173
156
|
return this.regexPosition !== undefined;
|
|
174
157
|
}
|
|
175
158
|
}
|
|
159
|
+
ParsedRouteParameter.__type = ['regexPosition', () => type_1.ReflectionParameter, 'parameter', 'constructor', 'getType', 'getName', 'isPartOfPath', '\'3!8PP7"2#:"0$!!P"0%!!!P"0&P)0\'5'];
|
|
176
160
|
function parseRoutePathToRegex(routeConfig) {
|
|
177
161
|
const parameterNames = {};
|
|
178
162
|
let path = routeConfig.getFullPath();
|
|
163
|
+
const method = type_1.ReflectionClass.from(routeConfig.action.controller).getMethod(routeConfig.action.methodName);
|
|
179
164
|
let argumentIndex = 0;
|
|
180
|
-
path = path.replace(/:(\w+)/g, (a, name) => {
|
|
165
|
+
path = path.replace(/:(\w+)/g, Object.assign((a, name) => {
|
|
181
166
|
parameterNames[name] = argumentIndex;
|
|
182
167
|
argumentIndex++;
|
|
183
|
-
|
|
184
|
-
|
|
168
|
+
const parameter = method.getParameterOrUndefined(name);
|
|
169
|
+
if (parameter) {
|
|
170
|
+
const regExp = (0, model_1.getRegExp)(parameter.type);
|
|
171
|
+
if (regExp)
|
|
172
|
+
return '(' + regExp + ')';
|
|
173
|
+
}
|
|
174
|
+
return String.raw `([^/]+)`;
|
|
175
|
+
}, { __type: ['a', 'name', '', 'P"2!"2""/#'] }));
|
|
185
176
|
return { regex: path, parameterNames };
|
|
186
177
|
}
|
|
178
|
+
parseRoutePathToRegex.__type = [() => RouteConfig, 'routeConfig', 'regex', 'parameterNames', 'parseRoutePathToRegex', 'PP7!2"P&4#P&\'LM4$M/%'];
|
|
187
179
|
function parseRouteControllerAction(routeConfig) {
|
|
188
|
-
const schema = type_1.
|
|
180
|
+
const schema = type_1.ReflectionClass.from(routeConfig.action.controller);
|
|
189
181
|
const parsedRoute = new ParsedRoute(routeConfig);
|
|
190
|
-
const methodArgumentProperties = schema.
|
|
182
|
+
const methodArgumentProperties = schema.getMethodParameters(routeConfig.action.methodName);
|
|
191
183
|
const parsedPath = parseRoutePathToRegex(routeConfig);
|
|
192
184
|
parsedRoute.regex = parsedPath.regex;
|
|
193
185
|
parsedRoute.pathParameterNames = parsedPath.parameterNames;
|
|
194
186
|
for (const property of methodArgumentProperties) {
|
|
195
|
-
const
|
|
196
|
-
const parsedParameter = parsedRoute.addParameter(property, decoratorData);
|
|
197
|
-
if (decoratorData && decoratorData.optional)
|
|
198
|
-
property.isOptional = true;
|
|
199
|
-
if (property.type === 'class' && property.classType === BodyValidation) {
|
|
200
|
-
parsedRoute.customValidationErrorHandling = parsedParameter;
|
|
201
|
-
}
|
|
187
|
+
const parsedParameter = parsedRoute.addParameter(property);
|
|
202
188
|
parsedParameter.regexPosition = parsedPath.parameterNames[property.name];
|
|
203
189
|
}
|
|
204
190
|
return parsedRoute;
|
|
205
191
|
}
|
|
206
192
|
exports.parseRouteControllerAction = parseRouteControllerAction;
|
|
193
|
+
parseRouteControllerAction.__type = [() => RouteConfig, 'routeConfig', () => ParsedRoute, 'parseRouteControllerAction', 'PP7!2"P7#/$'];
|
|
207
194
|
function dotToUrlPath(dotPath) {
|
|
208
195
|
if (-1 === dotPath.indexOf('.'))
|
|
209
196
|
return dotPath;
|
|
210
197
|
return dotPath.replace(/\./g, '][').replace('][', '[') + ']';
|
|
211
198
|
}
|
|
212
199
|
exports.dotToUrlPath = dotToUrlPath;
|
|
200
|
+
dotToUrlPath.__type = ['dotPath', 'dotToUrlPath', 'P&2!&/"'];
|
|
201
|
+
var __ΩRouteParameterResolver = [() => __ΩRouteParameterResolverContext, 'context', 'resolve', 'PPn!2"P""`J1#M'];
|
|
202
|
+
exports.__ΩRouteParameterResolver = __ΩRouteParameterResolver;
|
|
203
|
+
var __ΩRouteParameterResolverContext = [() => __ΩClassType, 'token', () => RouteConfig, 'route', () => model_1.HttpRequest, 'request', 'name', 'value', () => __ΩHttpRequestQuery, 'query', () => __ΩHttpRequestResolvedParameters, 'parameters', 'PPn!&+"J4"P7#4$P7%4&"4\'"4(n)4*n+4,M'];
|
|
204
|
+
exports.__ΩRouteParameterResolverContext = __ΩRouteParameterResolverContext;
|
|
213
205
|
function filterMiddlewaresForRoute(middlewareRawConfigs, routeConfig, fullPath) {
|
|
214
206
|
const middlewares = middlewareRawConfigs.slice(0);
|
|
215
207
|
middlewares.push(...routeConfig.middlewares);
|
|
216
|
-
const middlewareConfigs = middlewares.filter((v) => {
|
|
208
|
+
const middlewareConfigs = middlewares.filter(Object.assign((v) => {
|
|
217
209
|
var _a;
|
|
218
210
|
if (!(v.config instanceof middleware_1.HttpMiddlewareConfig))
|
|
219
211
|
return false;
|
|
@@ -276,13 +268,14 @@ function filterMiddlewaresForRoute(middlewareRawConfigs, routeConfig, fullPath)
|
|
|
276
268
|
}
|
|
277
269
|
}
|
|
278
270
|
return true;
|
|
279
|
-
});
|
|
280
|
-
middlewareConfigs.sort((a, b) => {
|
|
271
|
+
}, { __type: ['v', '', 'P"2!"/"'] }));
|
|
272
|
+
middlewareConfigs.sort(Object.assign((a, b) => {
|
|
281
273
|
return a.config.order - b.config.order;
|
|
282
|
-
});
|
|
274
|
+
}, { __type: ['a', 'b', '', 'P"2!"2""/#'] }));
|
|
283
275
|
return middlewareConfigs;
|
|
284
276
|
}
|
|
285
|
-
|
|
277
|
+
filterMiddlewaresForRoute.__type = [() => __ΩMiddlewareRegistryEntry, 'middlewareRawConfigs', () => RouteConfig, 'routeConfig', 'fullPath', () => middleware_1.HttpMiddlewareConfig, 'config', () => injector_1.InjectorModule, 'module', 'filterMiddlewaresForRoute', 'Pn!F2"P7#2$&2%PP7&4\'P"7(4)MF/*'];
|
|
278
|
+
class Router {
|
|
286
279
|
constructor(controllers, logger, tagRegistry, middlewareRegistry = new app_1.MiddlewareRegistry) {
|
|
287
280
|
this.logger = logger;
|
|
288
281
|
this.middlewareRegistry = middlewareRegistry;
|
|
@@ -292,16 +285,16 @@ let Router = class Router {
|
|
|
292
285
|
}
|
|
293
286
|
}
|
|
294
287
|
parseBody(req, files) {
|
|
295
|
-
const form = formidable_1.default({
|
|
288
|
+
const form = (0, formidable_1.default)({
|
|
296
289
|
multiples: true,
|
|
297
290
|
hash: 'sha1',
|
|
298
291
|
enabledPlugins: ['octetstream', 'querystring', 'json'],
|
|
299
292
|
});
|
|
300
|
-
return core_1.asyncOperation((resolve, reject) => {
|
|
293
|
+
return (0, core_1.asyncOperation)(Object.assign((resolve, reject) => {
|
|
301
294
|
if (req.body) {
|
|
302
295
|
return resolve(req.body);
|
|
303
296
|
}
|
|
304
|
-
form.parse(req, (err, fields, files) => {
|
|
297
|
+
form.parse(req, Object.assign((err, fields, files) => {
|
|
305
298
|
if (err) {
|
|
306
299
|
reject(err);
|
|
307
300
|
}
|
|
@@ -309,16 +302,16 @@ let Router = class Router {
|
|
|
309
302
|
const body = req.body = { ...fields, ...files };
|
|
310
303
|
resolve(body);
|
|
311
304
|
}
|
|
312
|
-
});
|
|
313
|
-
});
|
|
305
|
+
}, { __type: ['err', 'fields', 'files', '', 'P"2!"2""2#"/$'] }));
|
|
306
|
+
}, { __type: ['resolve', 'reject', '', 'P"2!"2""/#'] }));
|
|
314
307
|
}
|
|
315
308
|
getRoutes() {
|
|
316
309
|
return this.routes;
|
|
317
310
|
}
|
|
318
|
-
static forControllers(controllers, tagRegistry = new injector_1.TagRegistry(), middlewareRegistry = new app_1.MiddlewareRegistry(), module = new
|
|
319
|
-
return new this(new controllers_1.HttpControllers(controllers.map(v => {
|
|
320
|
-
return core_1.isClass(v) ? { controller: v, module } : v;
|
|
321
|
-
})), new logger_1.Logger([], []), tagRegistry, middlewareRegistry);
|
|
311
|
+
static forControllers(controllers, tagRegistry = new injector_1.TagRegistry(), middlewareRegistry = new app_1.MiddlewareRegistry(), module = new injector_1.InjectorModule()) {
|
|
312
|
+
return new this(new controllers_1.HttpControllers(controllers.map(Object.assign(v => {
|
|
313
|
+
return (0, core_1.isClass)(v) ? { controller: v, module } : v;
|
|
314
|
+
}, { __type: ['v', '', 'P"2!"/"'] }))), new logger_1.Logger([], []), tagRegistry, middlewareRegistry);
|
|
322
315
|
}
|
|
323
316
|
getRouteCode(compiler, routeConfig) {
|
|
324
317
|
const routeConfigVar = compiler.reserveVariable('routeConfigVar', routeConfig);
|
|
@@ -329,7 +322,7 @@ let Router = class Router {
|
|
|
329
322
|
const setParameters = [];
|
|
330
323
|
const parameterNames = [];
|
|
331
324
|
const parameterValidator = [];
|
|
332
|
-
let bodyValidationErrorHandling = `if (bodyErrors.length) throw
|
|
325
|
+
let bodyValidationErrorHandling = `if (bodyErrors.length) throw ValidationError.from(bodyErrors);`;
|
|
333
326
|
let enableParseBody = false;
|
|
334
327
|
const hasParameters = parsedRoute.getParameters().length > 0;
|
|
335
328
|
let requiresAsyncParameters = false;
|
|
@@ -337,49 +330,51 @@ let Router = class Router {
|
|
|
337
330
|
const fullPath = routeConfig.getFullPath();
|
|
338
331
|
const middlewareConfigs = filterMiddlewaresForRoute(this.middlewareRegistry.configs, routeConfig, fullPath);
|
|
339
332
|
for (const parameter of parsedRoute.getParameters()) {
|
|
340
|
-
if (
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
parameterNames.push(`parameters.${parameter.property.name}`);
|
|
345
|
-
}
|
|
346
|
-
else if (parameter.body) {
|
|
347
|
-
const validatorVar = compiler.reserveVariable('argumentValidator', type_1.jitValidateProperty(parameter.property));
|
|
348
|
-
const converterVar = compiler.reserveVariable('argumentConverter', type_1.getPropertyXtoClassFunction(parameter.property, type_1.jsonSerializer));
|
|
333
|
+
if (parameter.body || parameter.bodyValidation) {
|
|
334
|
+
const type = parameter.getType();
|
|
335
|
+
const validatorVar = compiler.reserveVariable('argumentValidator', (0, type_1.getValidatorFunction)(undefined, type));
|
|
336
|
+
const converterVar = compiler.reserveVariable('argumentConverter', (0, type_1.getSerializeFunction)(type, type_1.serializer.deserializeRegistry));
|
|
349
337
|
enableParseBody = true;
|
|
350
|
-
setParameters.push(`parameters.${parameter.
|
|
351
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
352
|
-
|
|
338
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(bodyFields, {loosely: true});`);
|
|
339
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: bodyErrors});`);
|
|
340
|
+
if (parameter.bodyValidation) {
|
|
341
|
+
compiler.context.set('BodyValidation', model_1.ValidatedBody);
|
|
342
|
+
compiler.context.set('BodyValidationError', model_1.BodyValidationError);
|
|
343
|
+
parameterNames.push(`new BodyValidation(new BodyValidationError(bodyErrors), bodyErrors.length === 0 ? parameters.${parameter.parameter.name} : undefined)`);
|
|
344
|
+
bodyValidationErrorHandling = '';
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
348
|
+
}
|
|
353
349
|
}
|
|
354
350
|
else if (parameter.query || parameter.queries) {
|
|
355
|
-
const converted =
|
|
356
|
-
const validator =
|
|
351
|
+
const converted = (0, type_1.getSerializeFunction)(parameter.parameter.parameter, type_1.serializer.deserializeRegistry, undefined, parameter.getName());
|
|
352
|
+
const validator = (0, type_1.getValidatorFunction)(undefined, parameter.parameter.parameter);
|
|
357
353
|
const converterVar = compiler.reserveVariable('argumentConverter', converted);
|
|
358
354
|
const validatorVar = compiler.reserveVariable('argumentValidator', validator);
|
|
359
|
-
const queryPath = parameter.typePath === undefined ? parameter.
|
|
355
|
+
const queryPath = parameter.typePath === undefined && parameter.query ? parameter.parameter.name : parameter.typePath;
|
|
360
356
|
const accessor = queryPath ? `['` + (queryPath.replace(/\./g, `']['`)) + `']` : '';
|
|
361
357
|
const queryAccessor = queryPath ? `_query${accessor}` : '_query';
|
|
362
|
-
setParameters.push(`parameters.${parameter.
|
|
363
|
-
parameterNames.push(`parameters.${parameter.
|
|
364
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
358
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(${queryAccessor}, {loosely: true});`);
|
|
359
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
360
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: validationErrors}, ${JSON.stringify(parameter.typePath || parameter.getName())});`);
|
|
365
361
|
}
|
|
366
362
|
else {
|
|
367
|
-
parameterNames.push(`parameters.${parameter.
|
|
363
|
+
parameterNames.push(`parameters.${parameter.parameter.name}`);
|
|
368
364
|
if (parameter.isPartOfPath()) {
|
|
369
|
-
if (parameter.
|
|
370
|
-
const converted =
|
|
365
|
+
if (parameter.parameter.type.kind !== 20 /* class */) {
|
|
366
|
+
const converted = (0, type_1.getSerializeFunction)(parameter.parameter.parameter, type_1.serializer.deserializeRegistry, undefined, parameter.getName());
|
|
371
367
|
const converterVar = compiler.reserveVariable('argumentConverter', converted);
|
|
372
|
-
setParameters.push(`parameters.${parameter.
|
|
373
|
-
const validator =
|
|
368
|
+
setParameters.push(`parameters.${parameter.parameter.name} = ${converterVar}(_match[${1 + (parameter.regexPosition || 0)}], {loosely: true});`);
|
|
369
|
+
const validator = (0, type_1.getValidatorFunction)(undefined, parameter.parameter.parameter);
|
|
374
370
|
const validatorVar = compiler.reserveVariable('argumentValidator', validator);
|
|
375
|
-
parameterValidator.push(`${validatorVar}(parameters.${parameter.
|
|
371
|
+
parameterValidator.push(`${validatorVar}(parameters.${parameter.parameter.name}, {errors: validationErrors}, ${JSON.stringify(parameter.getName())});`);
|
|
376
372
|
}
|
|
377
373
|
else {
|
|
378
|
-
setParameters.push(`parameters.${parameter.
|
|
374
|
+
setParameters.push(`parameters.${parameter.parameter.name} = _match[${1 + (parameter.regexPosition || 0)}];`);
|
|
379
375
|
}
|
|
380
376
|
}
|
|
381
|
-
const
|
|
382
|
-
const injectorToken = injectorOptions && injectorOptions.token ? injectorOptions.token : (parameter.property.type === 'class' ? parameter.property.getResolvedClassType() : undefined);
|
|
377
|
+
const injectorToken = parameter.parameter.type.kind === 20 /* class */ ? parameter.parameter.type.classType : undefined;
|
|
383
378
|
const injectorTokenVar = compiler.reserveVariable('classType', injectorToken);
|
|
384
379
|
const parameterResolverFoundVar = compiler.reserveVariable('parameterResolverFound', false);
|
|
385
380
|
setParameters.push(`${parameterResolverFoundVar} = false;`);
|
|
@@ -397,31 +392,25 @@ let Router = class Router {
|
|
|
397
392
|
requiresAsyncParameters = true;
|
|
398
393
|
const instance = compiler.reserveVariable('resolverInstance');
|
|
399
394
|
setParameters.push(`
|
|
400
|
-
//resolver ${core_1.getClassName(resolver)} for ${parameter.getName()}
|
|
395
|
+
//resolver ${(0, core_1.getClassName)(resolver)} for ${parameter.getName()}
|
|
401
396
|
${instance} = ${injector}.get(${resolverProvideTokenVar}${moduleVar});
|
|
402
397
|
if (!${parameterResolverFoundVar}) {
|
|
403
398
|
${parameterResolverFoundVar} = true;
|
|
404
|
-
parameters.${parameter.
|
|
399
|
+
parameters.${parameter.parameter.name} = await ${instance}.resolve({
|
|
405
400
|
token: ${injectorTokenVar},
|
|
406
401
|
routeConfig: ${routeConfigVar},
|
|
407
402
|
request: request,
|
|
408
|
-
name: ${JSON.stringify(parameter.
|
|
409
|
-
value: parameters.${parameter.
|
|
403
|
+
name: ${JSON.stringify(parameter.parameter.name)},
|
|
404
|
+
value: parameters.${parameter.parameter.name},
|
|
410
405
|
query: _query,
|
|
411
406
|
parameters: parameters
|
|
412
407
|
});
|
|
413
408
|
}`);
|
|
414
409
|
}
|
|
415
|
-
else {
|
|
416
|
-
if (!parameter.isPartOfPath() && parameter.property.type !== 'class' && (!injectorOptions || !injectorOptions.token)) {
|
|
417
|
-
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.` +
|
|
418
|
-
`If its a query parameter use '@http.query() ${parameter.property.name}' or if its a body '@http.body() ${parameter.property.name}'.`);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
410
|
if (!parameter.isPartOfPath()) {
|
|
422
|
-
let injectorGet = `parameters.${parameter.
|
|
423
|
-
if (
|
|
424
|
-
injectorGet = `try {parameters.${parameter.
|
|
411
|
+
let injectorGet = `parameters.${parameter.parameter.name} = ${injector}.get(${injectorTokenVar});`;
|
|
412
|
+
if (parameter.parameter.isOptional()) {
|
|
413
|
+
injectorGet = `try {parameters.${parameter.parameter.name} = ${injector}.get(${injectorTokenVar}); } catch (e) {}`;
|
|
425
414
|
}
|
|
426
415
|
setParameters.push(`if (!${parameterResolverFoundVar}) ${injectorGet}`);
|
|
427
416
|
}
|
|
@@ -444,7 +433,7 @@ let Router = class Router {
|
|
|
444
433
|
for (const middlewareConfig of middlewareConfigs) {
|
|
445
434
|
const moduleVar = middlewareConfig.module ? ', ' + compiler.reserveVariable('module', middlewareConfig.module) : '';
|
|
446
435
|
for (const middleware of middlewareConfig.config.middlewares) {
|
|
447
|
-
if (core_1.isClass(middleware)) {
|
|
436
|
+
if ((0, core_1.isClass)(middleware)) {
|
|
448
437
|
const classVar = compiler.reserveVariable('middlewareClassType', middleware);
|
|
449
438
|
middlewareItems.push(`{fn: function() {return _injector.get(${classVar}${moduleVar}).execute(...arguments) }, timeout: ${middlewareConfig.config.timeout}}`);
|
|
450
439
|
}
|
|
@@ -470,15 +459,15 @@ let Router = class Router {
|
|
|
470
459
|
${setParameters.join('\n')}
|
|
471
460
|
${parameterValidator.join('\n')}
|
|
472
461
|
${bodyValidationErrorHandling}
|
|
473
|
-
if (validationErrors.length) throw
|
|
462
|
+
if (validationErrors.length) throw new ValidationError(validationErrors);
|
|
474
463
|
return [${parameterNames.join(',')}];
|
|
475
464
|
}`;
|
|
476
465
|
}
|
|
477
466
|
let methodCheck = '';
|
|
478
467
|
if (routeConfig.httpMethods.length) {
|
|
479
|
-
methodCheck = '(' + routeConfig.httpMethods.map(v => {
|
|
468
|
+
methodCheck = '(' + routeConfig.httpMethods.map(Object.assign(v => {
|
|
480
469
|
return `_method === '${v.toUpperCase()}'`;
|
|
481
|
-
}).join(' || ') + ') && ';
|
|
470
|
+
}, { __type: ['v', '', 'P"2!"/"'] })).join(' || ') + ') && ';
|
|
482
471
|
}
|
|
483
472
|
return `
|
|
484
473
|
//=> ${routeConfig.httpMethods.join(',')} ${path}
|
|
@@ -490,15 +479,15 @@ let Router = class Router {
|
|
|
490
479
|
getRouteUrlResolveCode(compiler, routeConfig) {
|
|
491
480
|
const parsedRoute = parseRouteControllerAction(routeConfig);
|
|
492
481
|
let url = routeConfig.getFullPath();
|
|
493
|
-
url = url.replace(/:(\w+)/g, (a, name) => {
|
|
482
|
+
url = url.replace(/:(\w+)/g, Object.assign((a, name) => {
|
|
494
483
|
return `\${parameters.${name}}`;
|
|
495
|
-
});
|
|
484
|
+
}, { __type: ['a', 'name', '', 'P"2!"2""/#'] }));
|
|
496
485
|
const modify = [];
|
|
497
486
|
for (const parameter of parsedRoute.getParameters()) {
|
|
498
487
|
if (parameter.query || parameter.queries) {
|
|
499
|
-
const queryPath = parameter.typePath === undefined ? parameter.
|
|
500
|
-
if (parameter.
|
|
501
|
-
for (const property of parameter.
|
|
488
|
+
const queryPath = parameter.typePath === undefined && parameter.query ? parameter.parameter.name : parameter.typePath || '';
|
|
489
|
+
if (parameter.parameter.type.kind === 20 /* class */ || parameter.parameter.type.kind === 30 /* objectLiteral */) {
|
|
490
|
+
for (const property of type_1.ReflectionClass.from(parameter.parameter.type).getProperties()) {
|
|
502
491
|
const accessor = `parameters.${parameter.getName()}?.${property.name}`;
|
|
503
492
|
const thisPath = queryPath ? queryPath + '.' + property.name : property.name;
|
|
504
493
|
modify.push(`${accessor} !== undefined && query.push(${JSON.stringify(dotToUrlPath(thisPath))} + '=' + encodeURIComponent(${accessor}))`);
|
|
@@ -525,8 +514,8 @@ let Router = class Router {
|
|
|
525
514
|
addRouteForController(controller, module) {
|
|
526
515
|
const data = decorator_1.httpClass._fetch(controller);
|
|
527
516
|
if (!data)
|
|
528
|
-
throw new Error(`Http controller class ${core_1.getClassName(controller)} has no @http.controller decorator.`);
|
|
529
|
-
const schema = type_1.
|
|
517
|
+
throw new Error(`Http controller class ${(0, core_1.getClassName)(controller)} has no @http.controller decorator.`);
|
|
518
|
+
const schema = type_1.ReflectionClass.from(controller);
|
|
530
519
|
for (const action of data.getActions()) {
|
|
531
520
|
const routeConfig = new RouteConfig(action.name, action.httpMethods, action.path, {
|
|
532
521
|
controller,
|
|
@@ -534,19 +523,18 @@ let Router = class Router {
|
|
|
534
523
|
methodName: action.methodName
|
|
535
524
|
});
|
|
536
525
|
routeConfig.module = module;
|
|
537
|
-
routeConfig.parameterRegularExpressions = action.parameterRegularExpressions;
|
|
538
526
|
routeConfig.responses = action.responses;
|
|
539
527
|
routeConfig.description = action.description;
|
|
540
528
|
routeConfig.category = action.category;
|
|
541
529
|
routeConfig.groups = action.groups;
|
|
542
530
|
routeConfig.data = new Map(action.data);
|
|
543
531
|
routeConfig.baseUrl = data.baseUrl;
|
|
544
|
-
routeConfig.middlewares = data.middlewares.map(v => {
|
|
532
|
+
routeConfig.middlewares = data.middlewares.map(Object.assign(v => {
|
|
545
533
|
return { config: v(), module };
|
|
546
|
-
});
|
|
547
|
-
routeConfig.middlewares.push(...action.middlewares.map(v => {
|
|
534
|
+
}, { __type: ['v', '', 'P"2!"/"'] }));
|
|
535
|
+
routeConfig.middlewares.push(...action.middlewares.map(Object.assign(v => {
|
|
548
536
|
return { config: v(), module };
|
|
549
|
-
}));
|
|
537
|
+
}, { __type: ['v', '', 'P"2!"/"'] })));
|
|
550
538
|
for (const item of action.resolverForToken)
|
|
551
539
|
routeConfig.resolverForToken.set(...item);
|
|
552
540
|
routeConfig.resolverForToken = new Map(data.resolverForToken);
|
|
@@ -555,18 +543,17 @@ let Router = class Router {
|
|
|
555
543
|
routeConfig.resolverForParameterName = new Map(data.resolverForParameterName);
|
|
556
544
|
for (const item of action.resolverForParameterName)
|
|
557
545
|
routeConfig.resolverForParameterName.set(...item);
|
|
558
|
-
routeConfig.parameters = { ...action.parameters };
|
|
559
546
|
routeConfig.serializationOptions = action.serializationOptions;
|
|
560
547
|
routeConfig.serializer = action.serializer;
|
|
561
548
|
routeConfig.serializer = action.serializer;
|
|
562
549
|
if (schema.hasMethod(action.methodName))
|
|
563
|
-
routeConfig.
|
|
550
|
+
routeConfig.returnType = schema.getMethod(action.methodName).getReturnType();
|
|
564
551
|
this.addRoute(routeConfig);
|
|
565
552
|
}
|
|
566
553
|
}
|
|
567
554
|
build() {
|
|
568
555
|
const compiler = new core_1.CompilerContext;
|
|
569
|
-
compiler.context.set('
|
|
556
|
+
compiler.context.set('ValidationError', type_1.ValidationError);
|
|
570
557
|
compiler.context.set('qs', require('qs'));
|
|
571
558
|
const code = [];
|
|
572
559
|
for (const route of this.routes) {
|
|
@@ -612,13 +599,7 @@ let Router = class Router {
|
|
|
612
599
|
method = method.toUpperCase();
|
|
613
600
|
return this.resolveRequest({ url, method });
|
|
614
601
|
}
|
|
615
|
-
}
|
|
616
|
-
Router = __decorate([
|
|
617
|
-
injector_1.injectable,
|
|
618
|
-
__metadata("design:paramtypes", [controllers_1.HttpControllers,
|
|
619
|
-
logger_1.Logger,
|
|
620
|
-
injector_1.TagRegistry,
|
|
621
|
-
app_1.MiddlewareRegistry])
|
|
622
|
-
], Router);
|
|
602
|
+
}
|
|
623
603
|
exports.Router = Router;
|
|
604
|
+
Router.__type = [() => model_1.HttpRequest, 'request', () => __ΩResolvedController, '', 'fn', 'name', 'parameters', 'resolveFn', () => RouteConfig, 'routes', () => [], () => model_1.HttpRequest, 'req', () => UploadedFile, 'files', 'parseBody', () => controllers_1.HttpControllers, 'controllers', () => __ΩLoggerInterface, 'logger', () => injector_1.TagRegistry, 'tagRegistry', () => app_1.MiddlewareRegistry, 'middlewareRegistry', () => new app_1.MiddlewareRegistry, 'constructor', () => RouteConfig, 'getRoutes', () => __ΩClassType, () => injector_1.InjectorModule, 'module', () => __ΩClassType, 'controller', () => injector_1.TagRegistry, () => new injector_1.TagRegistry(), () => app_1.MiddlewareRegistry, () => new app_1.MiddlewareRegistry(), () => injector_1.InjectorModule, () => new injector_1.InjectorModule(), () => Router, 'forControllers', () => core_1.CompilerContext, 'compiler', () => RouteConfig, 'routeConfig', 'getRouteCode', () => core_1.CompilerContext, () => RouteConfig, 'getRouteUrlResolveCode', () => RouteConfig, 'addRoute', () => __ΩClassType, () => injector_1.InjectorModule, 'addRouteForController', () => model_1.HttpRequest, () => __ΩResolvedController, 'build', 'buildUrlResolver', 'routeName', () => ({}), 'resolveUrl', () => model_1.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'];
|
|
624
605
|
//# sourceMappingURL=router.js.map
|