@pristine-ts/networking 0.0.174 → 0.0.178
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/dist/lib/cjs/errors/errors.js +3 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/request-handling.error.js +20 -0
- package/dist/lib/cjs/errors/request-handling.error.js.map +1 -0
- package/dist/lib/cjs/errors/request-interception-execution.error.js +21 -0
- package/dist/lib/cjs/errors/request-interception-execution.error.js.map +1 -0
- package/dist/lib/cjs/errors/response-interception-execution.error.js +23 -0
- package/dist/lib/cjs/errors/response-interception-execution.error.js.map +1 -0
- package/dist/lib/cjs/{enrichers/enrichers.js → handlers/handlers.js} +2 -2
- package/dist/lib/cjs/handlers/handlers.js.map +1 -0
- package/dist/lib/cjs/handlers/request.event-handler.js +71 -0
- package/dist/lib/cjs/handlers/request.event-handler.js.map +1 -0
- package/dist/lib/cjs/interceptors/interceptors.js +15 -0
- package/dist/lib/cjs/interceptors/interceptors.js.map +1 -0
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js +89 -0
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js.map +1 -0
- package/dist/lib/cjs/{enrichers/router-response.enricher.js → interceptors/response-headers.interceptor.js} +14 -12
- package/dist/lib/cjs/interceptors/response-headers.interceptor.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +1 -2
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
- package/dist/lib/cjs/interfaces/{router-request-enricher.interface.js → request-interceptor.interface.js} +1 -1
- package/dist/lib/cjs/interfaces/request-interceptor.interface.js.map +1 -0
- package/dist/lib/cjs/mappers/mappers.js +14 -0
- package/dist/lib/cjs/mappers/mappers.js.map +1 -0
- package/dist/lib/cjs/mappers/request.mapper.js +37 -0
- package/dist/lib/cjs/mappers/request.mapper.js.map +1 -0
- package/dist/lib/cjs/models/models.js +0 -2
- package/dist/lib/cjs/models/models.js.map +1 -1
- package/dist/lib/cjs/networking.module.js +14 -2
- package/dist/lib/cjs/networking.module.js.map +1 -1
- package/dist/lib/cjs/router.js +167 -49
- package/dist/lib/cjs/router.js.map +1 -1
- package/dist/lib/esm/errors/errors.js +3 -0
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/request-handling.error.js +16 -0
- package/dist/lib/esm/errors/request-handling.error.js.map +1 -0
- package/dist/lib/esm/errors/request-interception-execution.error.js +17 -0
- package/dist/lib/esm/errors/request-interception-execution.error.js.map +1 -0
- package/dist/lib/esm/errors/response-interception-execution.error.js +19 -0
- package/dist/lib/esm/errors/response-interception-execution.error.js.map +1 -0
- package/dist/lib/esm/handlers/handlers.js +2 -0
- package/dist/lib/esm/handlers/handlers.js.map +1 -0
- package/dist/lib/esm/handlers/request.event-handler.js +68 -0
- package/dist/lib/esm/handlers/request.event-handler.js.map +1 -0
- package/dist/lib/esm/interceptors/interceptors.js +3 -0
- package/dist/lib/esm/interceptors/interceptors.js.map +1 -0
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js +86 -0
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js.map +1 -0
- package/dist/lib/esm/{enrichers/router-response.enricher.js → interceptors/response-headers.interceptor.js} +13 -11
- package/dist/lib/esm/interceptors/response-headers.interceptor.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +1 -2
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
- package/dist/lib/esm/interfaces/request-interceptor.interface.js +2 -0
- package/dist/lib/esm/interfaces/request-interceptor.interface.js.map +1 -0
- package/dist/lib/esm/mappers/mappers.js +2 -0
- package/dist/lib/esm/mappers/mappers.js.map +1 -0
- package/dist/lib/esm/mappers/request.mapper.js +34 -0
- package/dist/lib/esm/mappers/request.mapper.js.map +1 -0
- package/dist/lib/esm/models/models.js +0 -2
- package/dist/lib/esm/models/models.js.map +1 -1
- package/dist/lib/esm/networking.module.js +14 -2
- package/dist/lib/esm/networking.module.js.map +1 -1
- package/dist/lib/esm/router.js +166 -48
- package/dist/lib/esm/router.js.map +1 -1
- package/dist/types/errors/errors.d.ts +3 -0
- package/dist/types/errors/request-handling.error.d.ts +7 -0
- package/dist/types/errors/request-interception-execution.error.d.ts +7 -0
- package/dist/types/errors/response-interception-execution.error.d.ts +7 -0
- package/dist/types/handlers/handlers.d.ts +1 -0
- package/dist/types/handlers/request.event-handler.d.ts +14 -0
- package/dist/types/interceptors/interceptors.d.ts +2 -0
- package/dist/types/interceptors/request-body-converter.interceptor.d.ts +9 -0
- package/dist/types/interceptors/response-headers.interceptor.d.ts +10 -0
- package/dist/types/interfaces/controller-method-parameter-decorator-resolver.interface.d.ts +1 -1
- package/dist/types/interfaces/interfaces.d.ts +1 -2
- package/dist/types/interfaces/request-interceptor.interface.d.ts +39 -0
- package/dist/types/interfaces/router.interface.d.ts +6 -3
- package/dist/types/mappers/mappers.d.ts +1 -0
- package/dist/types/mappers/request.mapper.d.ts +8 -0
- package/dist/types/models/models.d.ts +0 -2
- package/dist/types/networking.module.d.ts +3 -1
- package/dist/types/resolvers/body-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/controller-method-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/headers-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/identity-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/query-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/query-parameters-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/request-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/resolvers/route-parameter-decorator.resolver.d.ts +1 -1
- package/dist/types/router.d.ts +17 -7
- package/package.json +7 -5
- package/dist/lib/cjs/enrichers/enrichers.js.map +0 -1
- package/dist/lib/cjs/enrichers/router-response.enricher.js.map +0 -1
- package/dist/lib/cjs/interfaces/router-request-enricher.interface.js.map +0 -1
- package/dist/lib/cjs/interfaces/router-response-enricher.interface.js +0 -3
- package/dist/lib/cjs/interfaces/router-response-enricher.interface.js.map +0 -1
- package/dist/lib/cjs/models/request.js +0 -50
- package/dist/lib/cjs/models/request.js.map +0 -1
- package/dist/lib/cjs/models/response.js +0 -16
- package/dist/lib/cjs/models/response.js.map +0 -1
- package/dist/lib/esm/enrichers/enrichers.js +0 -2
- package/dist/lib/esm/enrichers/enrichers.js.map +0 -1
- package/dist/lib/esm/enrichers/router-response.enricher.js.map +0 -1
- package/dist/lib/esm/interfaces/router-request-enricher.interface.js +0 -2
- package/dist/lib/esm/interfaces/router-request-enricher.interface.js.map +0 -1
- package/dist/lib/esm/interfaces/router-response-enricher.interface.js +0 -2
- package/dist/lib/esm/interfaces/router-response-enricher.interface.js.map +0 -1
- package/dist/lib/esm/models/request.js +0 -46
- package/dist/lib/esm/models/request.js.map +0 -1
- package/dist/lib/esm/models/response.js +0 -12
- package/dist/lib/esm/models/response.js.map +0 -1
- package/dist/types/enrichers/enrichers.d.ts +0 -1
- package/dist/types/enrichers/router-response.enricher.d.ts +0 -11
- package/dist/types/interfaces/router-request-enricher.interface.d.ts +0 -18
- package/dist/types/interfaces/router-response-enricher.interface.d.ts +0 -20
- package/dist/types/models/request.d.ts +0 -45
- package/dist/types/models/response.d.ts +0 -24
package/dist/lib/cjs/router.js
CHANGED
|
@@ -26,16 +26,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
27
|
exports.Router = void 0;
|
|
28
28
|
const tsyringe_1 = require("tsyringe");
|
|
29
|
-
const response_1 = require("./models/response");
|
|
30
29
|
const url_util_1 = require("./utils/url.util");
|
|
31
30
|
const not_found_http_error_1 = require("./errors/not-found.http-error");
|
|
32
31
|
const path_router_node_1 = require("./nodes/path-router.node");
|
|
32
|
+
const route_1 = require("./models/route");
|
|
33
33
|
const forbidden_http_error_1 = require("./errors/forbidden.http-error");
|
|
34
34
|
const controller_method_parameter_decorator_resolver_1 = require("./resolvers/controller-method-parameter-decorator.resolver");
|
|
35
35
|
const url_parse_1 = __importDefault(require("url-parse"));
|
|
36
36
|
const common_1 = require("@pristine-ts/common");
|
|
37
37
|
const networking_module_keyname_1 = require("./networking.module.keyname");
|
|
38
38
|
const telemetry_1 = require("@pristine-ts/telemetry");
|
|
39
|
+
const controller_decorator_1 = require("./decorators/controller.decorator");
|
|
40
|
+
const lodash_1 = require("lodash");
|
|
41
|
+
const http_error_1 = require("./errors/http.error");
|
|
39
42
|
/**
|
|
40
43
|
* The router service is the service that creates the routing tree from the controllers.
|
|
41
44
|
* It also executes a request properly by routing it to the intended controller and returns the response.
|
|
@@ -55,6 +58,8 @@ let Router = class Router {
|
|
|
55
58
|
this.authorizerManager = authorizerManager;
|
|
56
59
|
this.authenticationManager = authenticationManager;
|
|
57
60
|
this.root = new path_router_node_1.PathRouterNode("/");
|
|
61
|
+
// This property is used to track whether the router has been already been properly instantiated or not.
|
|
62
|
+
this.setupCompleted = false;
|
|
58
63
|
}
|
|
59
64
|
/**
|
|
60
65
|
* This method registers a Route into the Route Tree maintained by the router.
|
|
@@ -67,6 +72,59 @@ let Router = class Router {
|
|
|
67
72
|
const splitPaths = url_util_1.UrlUtil.splitPath(path);
|
|
68
73
|
this.root.add(splitPaths, method, route, 0);
|
|
69
74
|
}
|
|
75
|
+
// /**
|
|
76
|
+
// * This method loops through the all the classes decorated with @controller, loops through all the methods decorated
|
|
77
|
+
// * with @route and builds the dependency tree of all the routes.
|
|
78
|
+
// *
|
|
79
|
+
// * @private
|
|
80
|
+
// */
|
|
81
|
+
setup() {
|
|
82
|
+
if (this.setupCompleted) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Loop over all the controllers and control the Route Tree
|
|
86
|
+
controller_decorator_1.controllerRegistry.forEach(controller => {
|
|
87
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
88
|
+
if (controller.hasOwnProperty("__metadata__") === false) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
let basePath = (_b = (_a = controller.__metadata__) === null || _a === void 0 ? void 0 : _a.controller) === null || _b === void 0 ? void 0 : _b.basePath;
|
|
92
|
+
// Clean the base path by removing trailing slashes.
|
|
93
|
+
if (basePath.endsWith("/")) {
|
|
94
|
+
basePath = basePath.slice(0, basePath.length - 1);
|
|
95
|
+
}
|
|
96
|
+
for (const methodPropertyKey in (_c = controller.__metadata__) === null || _c === void 0 ? void 0 : _c.methods) {
|
|
97
|
+
if (((_e = (_d = controller.__metadata__) === null || _d === void 0 ? void 0 : _d.methods) === null || _e === void 0 ? void 0 : _e.hasOwnProperty(methodPropertyKey)) === false) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const method = (_f = controller.__metadata__) === null || _f === void 0 ? void 0 : _f.methods[methodPropertyKey];
|
|
101
|
+
if (method.hasOwnProperty("route") === false) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Retrieve the "RouteMethodDecorator" object assigned by the @route decorator at .route
|
|
105
|
+
const routeMethodDecorator = method.route;
|
|
106
|
+
// Build the Route object that will be used the the router to dispatch a request to
|
|
107
|
+
// the appropriate controller method
|
|
108
|
+
const route = new route_1.Route(controller.constructor, routeMethodDecorator.methodKeyname);
|
|
109
|
+
route.methodArguments = (_g = method.arguments) !== null && _g !== void 0 ? _g : [];
|
|
110
|
+
route.context = lodash_1.mergeWith({}, (_j = (_h = controller.__metadata__) === null || _h === void 0 ? void 0 : _h.controller) === null || _j === void 0 ? void 0 : _j.__routeContext__, method.__routeContext__);
|
|
111
|
+
// Build the proper path
|
|
112
|
+
let path = routeMethodDecorator.path;
|
|
113
|
+
// Clean the path by removing the first and trailing slashes.
|
|
114
|
+
if (path.startsWith("/")) {
|
|
115
|
+
path = path.slice(1, path.length);
|
|
116
|
+
}
|
|
117
|
+
if (path.endsWith("/")) {
|
|
118
|
+
path = path.slice(0, path.length - 1);
|
|
119
|
+
}
|
|
120
|
+
// Build the proper path
|
|
121
|
+
const routePath = basePath + "/" + path;
|
|
122
|
+
// Register the route
|
|
123
|
+
this.register(routePath, routeMethodDecorator.httpMethod, route);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
this.setupCompleted = true;
|
|
127
|
+
}
|
|
70
128
|
/**
|
|
71
129
|
* This method receives a Request object, identifies the "path" its trying to hit, navigates the internally
|
|
72
130
|
* maintained Route Tree, identifies the method in the controller that represents this "path", and calls the
|
|
@@ -76,6 +134,8 @@ let Router = class Router {
|
|
|
76
134
|
* @param container
|
|
77
135
|
*/
|
|
78
136
|
execute(request, container) {
|
|
137
|
+
// todo: remove all the rejects and replace it with a response that contains an error.
|
|
138
|
+
// This method cannot throw.
|
|
79
139
|
const tracingManager = container.resolve("TracingManagerInterface");
|
|
80
140
|
const routerRequestExecutionSpan = tracingManager.startSpan(telemetry_1.SpanKeynameEnum.RouterRequestExecution, telemetry_1.SpanKeynameEnum.RequestExecution);
|
|
81
141
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -101,7 +161,7 @@ let Router = class Router {
|
|
|
101
161
|
url,
|
|
102
162
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
103
163
|
routerRequestExecutionSpan.end();
|
|
104
|
-
return
|
|
164
|
+
return resolve(this.executeErrorResponseInterceptors(new not_found_http_error_1.NotFoundHttpError("No route found for path: '" + url.pathname + "'."), request, container));
|
|
105
165
|
}
|
|
106
166
|
// Get the route parameters
|
|
107
167
|
const routeParameters = methodNode.parent.getRouteParameters(splitPath.reverse());
|
|
@@ -135,7 +195,7 @@ let Router = class Router {
|
|
|
135
195
|
error = new forbidden_http_error_1.ForbiddenHttpError("You are not allowed to access this.");
|
|
136
196
|
}
|
|
137
197
|
routerRequestExecutionSpan.end();
|
|
138
|
-
return
|
|
198
|
+
return resolve(this.executeErrorResponseInterceptors(error, request, container, methodNode));
|
|
139
199
|
}
|
|
140
200
|
// Call the controller with the resolved Method arguments
|
|
141
201
|
try {
|
|
@@ -148,20 +208,20 @@ let Router = class Router {
|
|
|
148
208
|
identity
|
|
149
209
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
150
210
|
routerRequestExecutionSpan.end();
|
|
151
|
-
return
|
|
211
|
+
return resolve(this.executeErrorResponseInterceptors(new forbidden_http_error_1.ForbiddenHttpError("You are not allowed to access this."), request, container, methodNode));
|
|
152
212
|
}
|
|
153
|
-
// Execute all the
|
|
154
|
-
const
|
|
155
|
-
const
|
|
156
|
-
|
|
213
|
+
// Execute all the interceptors
|
|
214
|
+
const requestInterceptorsSpan = tracingManager.startSpan(telemetry_1.SpanKeynameEnum.RequestInterceptors, telemetry_1.SpanKeynameEnum.RouterRequestExecution);
|
|
215
|
+
const interceptedRequest = yield this.executeRequestInterceptors(request, container, methodNode);
|
|
216
|
+
requestInterceptorsSpan.end();
|
|
157
217
|
this.loghandler.debug("This request has been enriched", {
|
|
158
218
|
request,
|
|
159
|
-
|
|
219
|
+
interceptedRequest,
|
|
160
220
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
161
221
|
// Resolve the value to inject in the method arguments that have a decorator resolver
|
|
162
222
|
const resolvedMethodArguments = [];
|
|
163
223
|
for (const methodArgument of methodNode.route.methodArguments) {
|
|
164
|
-
resolvedMethodArguments.push(yield this.controllerMethodParameterDecoratorResolver.resolve(methodArgument,
|
|
224
|
+
resolvedMethodArguments.push(yield this.controllerMethodParameterDecoratorResolver.resolve(methodArgument, interceptedRequest, routeParameters, identity));
|
|
165
225
|
}
|
|
166
226
|
this.loghandler.debug("Controller argument resolved", {
|
|
167
227
|
resolvedMethodArguments,
|
|
@@ -175,22 +235,22 @@ let Router = class Router {
|
|
|
175
235
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
176
236
|
let returnedResponse;
|
|
177
237
|
// If the response is already a Response object, return the response
|
|
178
|
-
if (response instanceof
|
|
238
|
+
if (response instanceof common_1.Response) {
|
|
179
239
|
returnedResponse = response;
|
|
180
240
|
}
|
|
181
241
|
else {
|
|
182
242
|
// If the response is not a response object, but the method hasn't thrown an error, assume the
|
|
183
243
|
// returned response is directly the body. Also assume an Http Status code of 200.
|
|
184
|
-
returnedResponse = new
|
|
244
|
+
returnedResponse = new common_1.Response();
|
|
185
245
|
returnedResponse.status = 200;
|
|
186
246
|
returnedResponse.body = response;
|
|
187
247
|
}
|
|
188
|
-
const
|
|
189
|
-
const
|
|
190
|
-
|
|
248
|
+
const responseInterceptorsSpan = tracingManager.startSpan(telemetry_1.SpanKeynameEnum.ResponseInterceptors, telemetry_1.SpanKeynameEnum.RouterRequestExecution);
|
|
249
|
+
const interceptedResponse = yield this.executeResponseInterceptors(returnedResponse, request, container, methodNode);
|
|
250
|
+
responseInterceptorsSpan.end();
|
|
191
251
|
this.loghandler.debug("This response has been enriched", {
|
|
192
252
|
returnedResponse,
|
|
193
|
-
enrichedResponse,
|
|
253
|
+
enrichedResponse: interceptedResponse,
|
|
194
254
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
195
255
|
routerRequestExecutionSpan.end();
|
|
196
256
|
return resolve(returnedResponse);
|
|
@@ -199,84 +259,142 @@ let Router = class Router {
|
|
|
199
259
|
this.loghandler.error("There was an error trying to execute the request in the router", {
|
|
200
260
|
error,
|
|
201
261
|
}, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
262
|
+
// Execute router interceptors for the error response;
|
|
202
263
|
routerRequestExecutionSpan.end();
|
|
203
|
-
return
|
|
264
|
+
return resolve(this.executeErrorResponseInterceptors(error, request, container, methodNode));
|
|
204
265
|
}
|
|
205
266
|
}));
|
|
206
267
|
}
|
|
207
268
|
/**
|
|
208
|
-
* This method executes all the
|
|
269
|
+
* This method executes all the Request Interceptors and returns the request updated by the interceptors.
|
|
209
270
|
*
|
|
210
|
-
* @param response
|
|
211
271
|
* @param request
|
|
212
272
|
* @param container
|
|
213
273
|
* @param methodNode
|
|
214
274
|
* @private
|
|
215
275
|
*/
|
|
216
|
-
|
|
276
|
+
executeRequestInterceptors(request, container, methodNode) {
|
|
277
|
+
var _a, _b, _c;
|
|
217
278
|
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
-
// Execute all the request
|
|
219
|
-
let
|
|
220
|
-
// Check first if there are any
|
|
221
|
-
if (container.isRegistered(common_1.ServiceDefinitionTagEnum.
|
|
222
|
-
const
|
|
223
|
-
for (const
|
|
224
|
-
// We don't have a guarantee that the Router
|
|
279
|
+
// Execute all the request interceptors
|
|
280
|
+
let interceptedRequest = request;
|
|
281
|
+
// Check first if there are any Request Interceptors
|
|
282
|
+
if (container.isRegistered(common_1.ServiceDefinitionTagEnum.RequestInterceptor, true)) {
|
|
283
|
+
const interceptors = container.resolveAll(common_1.ServiceDefinitionTagEnum.RequestInterceptor);
|
|
284
|
+
for (const interceptor of interceptors) {
|
|
285
|
+
// We don't have a guarantee that the Router Interceptors will implement the Interface, even though we specify it should.
|
|
225
286
|
// So, we have to verify that the method exists, and if it doesn't we throw
|
|
226
|
-
if (typeof
|
|
227
|
-
//
|
|
228
|
-
|
|
287
|
+
if (typeof interceptor.interceptRequest === "undefined") {
|
|
288
|
+
// Simply log a message for now that the interceptors doesn't implement the 'interceptRequest' method.
|
|
289
|
+
this.loghandler.info("The Request Interceptor doesn't implement the interceptRequest method.", { name: interceptor.constructor.name, interceptor });
|
|
290
|
+
continue;
|
|
229
291
|
}
|
|
230
292
|
try {
|
|
231
293
|
// https://stackoverflow.com/a/27760489/684101
|
|
232
|
-
|
|
294
|
+
interceptedRequest = (_c = yield ((_b = (_a = interceptor).interceptRequest) === null || _b === void 0 ? void 0 : _b.call(_a, interceptedRequest, methodNode))) !== null && _c !== void 0 ? _c : interceptedRequest;
|
|
233
295
|
}
|
|
234
296
|
catch (e) {
|
|
235
|
-
this.loghandler.error("There was an exception thrown while executing the '
|
|
297
|
+
this.loghandler.error("There was an exception thrown while executing the 'interceptedRequest' method of the RequestInterceptor named: '" + interceptor.constructor.name + "'.", { e }, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
236
298
|
throw e;
|
|
237
299
|
}
|
|
238
300
|
}
|
|
239
301
|
}
|
|
240
|
-
return
|
|
302
|
+
return interceptedRequest;
|
|
241
303
|
});
|
|
242
304
|
}
|
|
243
305
|
/**
|
|
244
|
-
* This method executes all the
|
|
306
|
+
* This method executes all the Request Interceptors and returns the response updated by the interceptors.
|
|
245
307
|
*
|
|
308
|
+
* @param response
|
|
246
309
|
* @param request
|
|
247
310
|
* @param container
|
|
248
311
|
* @param methodNode
|
|
249
312
|
* @private
|
|
250
313
|
*/
|
|
251
|
-
|
|
314
|
+
executeResponseInterceptors(response, request, container, methodNode) {
|
|
315
|
+
var _a, _b, _c;
|
|
252
316
|
return __awaiter(this, void 0, void 0, function* () {
|
|
253
|
-
// Execute all the request
|
|
254
|
-
let
|
|
255
|
-
// Check first if there are any
|
|
256
|
-
if (container.isRegistered(common_1.ServiceDefinitionTagEnum.
|
|
257
|
-
const
|
|
258
|
-
for (const
|
|
259
|
-
// We don't have a guarantee that the Router response
|
|
317
|
+
// Execute all the request interceptors
|
|
318
|
+
let interceptedResponse = response;
|
|
319
|
+
// Check first if there are any Request interceptors
|
|
320
|
+
if (container.isRegistered(common_1.ServiceDefinitionTagEnum.RequestInterceptor, true)) {
|
|
321
|
+
const interceptors = container.resolveAll(common_1.ServiceDefinitionTagEnum.RequestInterceptor);
|
|
322
|
+
for (const interceptor of interceptors) {
|
|
323
|
+
// We don't have a guarantee that the Router response interceptors will implement the Interface, even though we specify it should.
|
|
260
324
|
// So, we have to verify that the method exists, and if it doesn't we throw
|
|
261
|
-
if (typeof
|
|
262
|
-
//
|
|
263
|
-
|
|
325
|
+
if (typeof interceptor.interceptResponse === "undefined") {
|
|
326
|
+
// Simply log a message for now that the interceptors doesn't implement the 'interceptResponse' method.
|
|
327
|
+
this.loghandler.info("The Request Interceptor doesn't implement the interceptResponse method.", { name: interceptor.constructor.name, interceptor });
|
|
328
|
+
continue;
|
|
264
329
|
}
|
|
265
330
|
try {
|
|
266
|
-
|
|
267
|
-
|
|
331
|
+
interceptedResponse = (_c = yield ((_b = (_a = interceptor).interceptResponse) === null || _b === void 0 ? void 0 : _b.call(_a, interceptedResponse, request, methodNode))) !== null && _c !== void 0 ? _c : interceptedResponse;
|
|
332
|
+
}
|
|
333
|
+
catch (e) {
|
|
334
|
+
this.loghandler.error("There was an exception thrown while executing the 'interceptResponse' method of the RequestInterceptor named: '" + interceptor.constructor.name + "'.", { e }, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
335
|
+
throw e;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return interceptedResponse;
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* This method executes all the Request Interceptors and returns the response updated by the error interceptors.
|
|
344
|
+
*
|
|
345
|
+
* @param error
|
|
346
|
+
* @param request
|
|
347
|
+
* @param container
|
|
348
|
+
* @param methodNode
|
|
349
|
+
* @private
|
|
350
|
+
*/
|
|
351
|
+
executeErrorResponseInterceptors(error, request, container, methodNode) {
|
|
352
|
+
var _a, _b, _c;
|
|
353
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
354
|
+
// Execute all the request interceptors
|
|
355
|
+
let interceptedResponse = new common_1.Response();
|
|
356
|
+
if (error instanceof http_error_1.HttpError) {
|
|
357
|
+
interceptedResponse.status = error.httpStatus;
|
|
358
|
+
interceptedResponse.body = {
|
|
359
|
+
name: error.name,
|
|
360
|
+
message: error.message,
|
|
361
|
+
stack: error.stack,
|
|
362
|
+
errors: error.errors,
|
|
363
|
+
extra: error.extra,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
interceptedResponse.status = 500;
|
|
368
|
+
interceptedResponse.body = { name: error.name, message: error.message, stack: error.stack };
|
|
369
|
+
}
|
|
370
|
+
interceptedResponse.request = request;
|
|
371
|
+
// Check first if there are any Request interceptors
|
|
372
|
+
if (container.isRegistered(common_1.ServiceDefinitionTagEnum.RequestInterceptor, true)) {
|
|
373
|
+
const interceptors = container.resolveAll(common_1.ServiceDefinitionTagEnum.RequestInterceptor);
|
|
374
|
+
for (const interceptor of interceptors) {
|
|
375
|
+
// We don't have a guarantee that the Router response interceptors will implement the Interface, even though we specify it should.
|
|
376
|
+
// So, we have to verify that the method exists, and if it doesn't we throw
|
|
377
|
+
if (typeof interceptor.interceptError === "undefined") {
|
|
378
|
+
// Simply log a message for now that the interceptors doesn't implement the 'interceptError' method.
|
|
379
|
+
this.loghandler.info("The Request Interceptor doesn't implement the interceptError method.", { name: interceptor.constructor.name, interceptor });
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
try {
|
|
383
|
+
interceptedResponse = (_c = yield ((_b = (_a = interceptor).interceptError) === null || _b === void 0 ? void 0 : _b.call(_a, error, interceptedResponse, request, methodNode))) !== null && _c !== void 0 ? _c : interceptedResponse;
|
|
268
384
|
}
|
|
269
385
|
catch (e) {
|
|
270
|
-
this.loghandler.error("There was an exception thrown while executing the '
|
|
386
|
+
this.loghandler.error("There was an exception thrown while executing the 'interceptError' method of the RequestInterceptor named: '" + interceptor.constructor.name + "'.", { e }, networking_module_keyname_1.NetworkingModuleKeyname);
|
|
271
387
|
throw e;
|
|
272
388
|
}
|
|
273
389
|
}
|
|
274
390
|
}
|
|
275
|
-
|
|
391
|
+
interceptedResponse = yield this.executeResponseInterceptors(interceptedResponse, request, container, methodNode);
|
|
392
|
+
return interceptedResponse;
|
|
276
393
|
});
|
|
277
394
|
}
|
|
278
395
|
};
|
|
279
396
|
Router = __decorate([
|
|
397
|
+
common_1.tag("RouterInterface"),
|
|
280
398
|
tsyringe_1.singleton(),
|
|
281
399
|
__param(0, tsyringe_1.inject("LogHandlerInterface")),
|
|
282
400
|
__param(2, tsyringe_1.inject("AuthorizerManagerInterface")),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,4 +6,7 @@ export * from "./method-router-adding.error";
|
|
|
6
6
|
export * from "./not-found.http-error";
|
|
7
7
|
export * from "./path-router-adding.error";
|
|
8
8
|
export * from "./path-router-instantiation.error";
|
|
9
|
+
export * from "./request-handling.error";
|
|
10
|
+
export * from "./request-interception-execution.error";
|
|
11
|
+
export * from "./response-interception-execution.error";
|
|
9
12
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when there's an error that happens while handling a request.
|
|
4
|
+
*/
|
|
5
|
+
export class RequestHandlingError extends LoggableError {
|
|
6
|
+
constructor(message, request) {
|
|
7
|
+
super(message, {
|
|
8
|
+
request,
|
|
9
|
+
});
|
|
10
|
+
// Set the prototype explicitly.
|
|
11
|
+
// As specified in the documentation in TypeScript
|
|
12
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
13
|
+
Object.setPrototypeOf(this, RequestHandlingError.prototype);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=request-handling.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handling.error.js","sourceRoot":"","sources":["../../../../src/errors/request-handling.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAU,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAEnD,YAAmB,OAAe,EAAE,OAAgB;QAChD,KAAK,CAAC,OAAO,EAAE;YACX,OAAO;SACV,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAAI,CAAC;CACxE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when there's an error in the execution of a request interceptor.
|
|
4
|
+
*/
|
|
5
|
+
export class RequestInterceptionExecutionError extends LoggableError {
|
|
6
|
+
constructor(message, request, error) {
|
|
7
|
+
super(message, {
|
|
8
|
+
error,
|
|
9
|
+
request,
|
|
10
|
+
});
|
|
11
|
+
// Set the prototype explicitly.
|
|
12
|
+
// As specified in the documentation in TypeScript
|
|
13
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
14
|
+
Object.setPrototypeOf(this, RequestInterceptionExecutionError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=request-interception-execution.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-interception-execution.error.js","sourceRoot":"","sources":["../../../../src/errors/request-interception-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAU,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,iCAAkC,SAAQ,aAAa;IAEhE,YAAmB,OAAe,EAAE,OAAgB,EAAE,KAAa;QAC/D,KAAK,CAAC,OAAO,EAAE;YACX,KAAK;YACL,OAAO;SACV,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iCAAiC,CAAC,SAAS,CAAC,CAAC;IAAI,CAAC;CACrF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when an error happens in the execution of a response interceptor.
|
|
4
|
+
*/
|
|
5
|
+
export class ResponseInterceptionExecutionError extends LoggableError {
|
|
6
|
+
constructor(message, request, response, interceptor, previousError) {
|
|
7
|
+
super(message, {
|
|
8
|
+
previousError,
|
|
9
|
+
request,
|
|
10
|
+
response,
|
|
11
|
+
interceptor,
|
|
12
|
+
});
|
|
13
|
+
// Set the prototype explicitly.
|
|
14
|
+
// As specified in the documentation in TypeScript
|
|
15
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
16
|
+
Object.setPrototypeOf(this, ResponseInterceptionExecutionError.prototype);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=response-interception-execution.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-interception-execution.error.js","sourceRoot":"","sources":["../../../../src/errors/response-interception-execution.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAErE;;GAEG;AACH,MAAM,OAAO,kCAAmC,SAAQ,aAAa;IAEjE,YAAmB,OAAe,EAAE,OAAgB,EAAE,QAAkB,EAAE,WAAgB,EAAE,aAAqB;QAC7G,KAAK,CAAC,OAAO,EAAE;YACX,aAAa;YACb,OAAO;YACP,QAAQ;YACR,WAAW;SACd,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kCAAkC,CAAC,SAAS,CAAC,CAAC;IAAI,CAAC;CACtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/handlers/handlers.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
import { EventResponse } from "@pristine-ts/core";
|
|
23
|
+
import { injectable, inject } from "tsyringe";
|
|
24
|
+
import { moduleScoped, Request, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
25
|
+
import { NetworkingModuleKeyname } from "../networking.module.keyname";
|
|
26
|
+
let RequestEventHandler = class RequestEventHandler {
|
|
27
|
+
constructor(router, tracingManager, dependencyContainer) {
|
|
28
|
+
this.router = router;
|
|
29
|
+
this.tracingManager = tracingManager;
|
|
30
|
+
this.dependencyContainer = dependencyContainer;
|
|
31
|
+
this.priority = 10000; // Arbitrarily set to 10 000 so that another handler can have more priority, but be certain you know what you are doing.
|
|
32
|
+
}
|
|
33
|
+
supports(event) {
|
|
34
|
+
return event.payload instanceof Request;
|
|
35
|
+
}
|
|
36
|
+
handle(event) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
// todo: add tracing to calculate router setup
|
|
39
|
+
// We can use the injected TracingManager
|
|
40
|
+
this.router.setup();
|
|
41
|
+
//previous code:
|
|
42
|
+
// const routerSetupSpan = new Span(SpanKeynameEnum.RouterSetup);
|
|
43
|
+
//
|
|
44
|
+
// // Setup the router
|
|
45
|
+
// this.setupRouter();
|
|
46
|
+
//
|
|
47
|
+
// routerSetupSpan.endDate = Date.now();
|
|
48
|
+
// this.initializationSpan.addChild(routerSetupSpan);
|
|
49
|
+
//todo add tracing to calculate request execution
|
|
50
|
+
// todo catch if the method throws even though it should never throw.
|
|
51
|
+
const response = yield this.router.execute(event.payload, this.dependencyContainer);
|
|
52
|
+
//previous code:
|
|
53
|
+
// const requestSpan = tracingManager.startSpan(SpanKeynameEnum.RequestExecution);
|
|
54
|
+
return new EventResponse(event, response);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
RequestEventHandler = __decorate([
|
|
59
|
+
moduleScoped(NetworkingModuleKeyname),
|
|
60
|
+
tag(ServiceDefinitionTagEnum.EventHandler),
|
|
61
|
+
injectable(),
|
|
62
|
+
__param(0, inject("RouterInterface")),
|
|
63
|
+
__param(1, inject("TracingManagerInterface")),
|
|
64
|
+
__param(2, inject(ServiceDefinitionTagEnum.CurrentChildContainer)),
|
|
65
|
+
__metadata("design:paramtypes", [Object, Object, Object])
|
|
66
|
+
], RequestEventHandler);
|
|
67
|
+
export { RequestEventHandler };
|
|
68
|
+
//# sourceMappingURL=request.event-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.event-handler.js","sourceRoot":"","sources":["../../../../src/handlers/request.event-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAA+B,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,UAAU,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAC,YAAY,EAAE,OAAO,EAAY,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAEnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAKrE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG5B,YAAwD,MAAuB,EACf,cAAuC,EAClB,mBAAwC;QAFrE,WAAM,GAAN,MAAM,CAAiB;QACf,mBAAc,GAAd,cAAc,CAAyB;QAClB,wBAAmB,GAAnB,mBAAmB,CAAqB;QAJ7H,aAAQ,GAAW,KAAK,CAAC,CAAC,wHAAwH;IAKlJ,CAAC;IAED,QAAQ,CAAI,KAAe;QACvB,OAAO,KAAK,CAAC,OAAO,YAAY,OAAO,CAAC;IAC5C,CAAC;IAEK,MAAM,CAAC,KAAqB;;YAC9B,8CAA8C;YAC9C,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACnB,gBAAgB;YAChB,qEAAqE;YACrE,EAAE;YACF,0BAA0B;YAC1B,0BAA0B;YAC1B,EAAE;YACF,4CAA4C;YAC5C,yDAAyD;YAGzD,iDAAiD;YACjD,qEAAqE;YAErE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEpF,gBAAgB;YAChB,kFAAkF;YAElF,OAAO,IAAI,aAAa,CAAoB,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;KAAA;CAEJ,CAAA;AArCY,mBAAmB;IAH/B,YAAY,CAAC,uBAAuB,CAAC;IACrC,GAAG,CAAC,wBAAwB,CAAC,YAAY,CAAC;IAC1C,UAAU,EAAE;IAII,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACzB,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACjC,WAAA,MAAM,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAA;;GAL1D,mBAAmB,CAqC/B;SArCY,mBAAmB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../../src/interceptors/interceptors.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC"}
|