@pristine-ts/networking 2.0.3 → 2.0.5
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 +1 -7
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/method-router-adding.error.js +7 -12
- package/dist/lib/cjs/errors/method-router-adding.error.js.map +1 -1
- package/dist/lib/cjs/errors/networking-error-code.enum.js +16 -0
- package/dist/lib/cjs/errors/networking-error-code.enum.js.map +1 -0
- package/dist/lib/cjs/errors/path-router-adding.error.js +7 -11
- package/dist/lib/cjs/errors/path-router-adding.error.js.map +1 -1
- package/dist/lib/cjs/errors/path-router-instantiation.error.js +5 -9
- package/dist/lib/cjs/errors/path-router-instantiation.error.js.map +1 -1
- package/dist/lib/cjs/errors/request-handling.error.js +4 -8
- package/dist/lib/cjs/errors/request-handling.error.js.map +1 -1
- package/dist/lib/cjs/handlers/request.event-handler.js +2 -8
- package/dist/lib/cjs/handlers/request.event-handler.js.map +1 -1
- package/dist/lib/cjs/interceptors/body-mapping.request-interceptor.js +7 -0
- package/dist/lib/cjs/interceptors/body-mapping.request-interceptor.js.map +1 -1
- package/dist/lib/cjs/interceptors/default-content-type-response-header.interceptor.js +7 -0
- package/dist/lib/cjs/interceptors/default-content-type-response-header.interceptor.js.map +1 -1
- package/dist/lib/cjs/interceptors/interceptors.js +0 -1
- package/dist/lib/cjs/interceptors/interceptors.js.map +1 -1
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js +10 -4
- package/dist/lib/cjs/interceptors/request-body-converter.interceptor.js.map +1 -1
- package/dist/lib/cjs/interceptors/response-headers.interceptor.js +10 -0
- package/dist/lib/cjs/interceptors/response-headers.interceptor.js.map +1 -1
- package/dist/lib/cjs/networking.module.js +1 -11
- package/dist/lib/cjs/networking.module.js.map +1 -1
- package/dist/lib/cjs/responders/http-error.responder.js +108 -0
- package/dist/lib/cjs/responders/http-error.responder.js.map +1 -0
- package/dist/lib/cjs/router.js +44 -25
- package/dist/lib/cjs/router.js.map +1 -1
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/esm/errors/errors.js +1 -7
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/method-router-adding.error.js +8 -13
- package/dist/lib/esm/errors/method-router-adding.error.js.map +1 -1
- package/dist/lib/esm/errors/networking-error-code.enum.js +13 -0
- package/dist/lib/esm/errors/networking-error-code.enum.js.map +1 -0
- package/dist/lib/esm/errors/path-router-adding.error.js +8 -12
- package/dist/lib/esm/errors/path-router-adding.error.js.map +1 -1
- package/dist/lib/esm/errors/path-router-instantiation.error.js +6 -10
- package/dist/lib/esm/errors/path-router-instantiation.error.js.map +1 -1
- package/dist/lib/esm/errors/request-handling.error.js +5 -9
- package/dist/lib/esm/errors/request-handling.error.js.map +1 -1
- package/dist/lib/esm/handlers/request.event-handler.js +2 -8
- package/dist/lib/esm/handlers/request.event-handler.js.map +1 -1
- package/dist/lib/esm/interceptors/body-mapping.request-interceptor.js +8 -1
- package/dist/lib/esm/interceptors/body-mapping.request-interceptor.js.map +1 -1
- package/dist/lib/esm/interceptors/default-content-type-response-header.interceptor.js +8 -1
- package/dist/lib/esm/interceptors/default-content-type-response-header.interceptor.js.map +1 -1
- package/dist/lib/esm/interceptors/interceptors.js +0 -1
- package/dist/lib/esm/interceptors/interceptors.js.map +1 -1
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js +11 -5
- package/dist/lib/esm/interceptors/request-body-converter.interceptor.js.map +1 -1
- package/dist/lib/esm/interceptors/response-headers.interceptor.js +11 -1
- package/dist/lib/esm/interceptors/response-headers.interceptor.js.map +1 -1
- package/dist/lib/esm/networking.module.js +1 -11
- package/dist/lib/esm/networking.module.js.map +1 -1
- package/dist/lib/esm/responders/http-error.responder.js +105 -0
- package/dist/lib/esm/responders/http-error.responder.js.map +1 -0
- package/dist/lib/esm/router.js +45 -26
- package/dist/lib/esm/router.js.map +1 -1
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/errors/errors.d.ts +1 -7
- package/dist/types/errors/method-router-adding.error.d.ts +2 -2
- package/dist/types/errors/networking-error-code.enum.d.ts +11 -0
- package/dist/types/errors/path-router-adding.error.d.ts +2 -2
- package/dist/types/errors/path-router-instantiation.error.d.ts +2 -2
- package/dist/types/errors/request-handling.error.d.ts +2 -2
- package/dist/types/handlers/request.event-handler.d.ts +2 -3
- package/dist/types/interceptors/interceptors.d.ts +0 -1
- package/dist/types/networking.module.d.ts +1 -0
- package/dist/types/responders/http-error.responder.d.ts +43 -0
- package/dist/types/router.d.ts +3 -1
- package/package.json +7 -7
- package/dist/lib/cjs/errors/bad-request.http-error.js +0 -20
- package/dist/lib/cjs/errors/bad-request.http-error.js.map +0 -1
- package/dist/lib/cjs/errors/forbidden.http-error.js +0 -19
- package/dist/lib/cjs/errors/forbidden.http-error.js.map +0 -1
- package/dist/lib/cjs/errors/http.error.js +0 -25
- package/dist/lib/cjs/errors/http.error.js.map +0 -1
- package/dist/lib/cjs/errors/invalid-body.http-error.js +0 -19
- package/dist/lib/cjs/errors/invalid-body.http-error.js.map +0 -1
- package/dist/lib/cjs/errors/not-found.http-error.js +0 -19
- package/dist/lib/cjs/errors/not-found.http-error.js.map +0 -1
- package/dist/lib/cjs/errors/request-interception-execution.error.js +0 -21
- package/dist/lib/cjs/errors/request-interception-execution.error.js.map +0 -1
- package/dist/lib/cjs/errors/response-interception-execution.error.js +0 -23
- package/dist/lib/cjs/errors/response-interception-execution.error.js.map +0 -1
- package/dist/lib/cjs/interceptors/error-response-sanitizer.request-interceptor.js +0 -54
- package/dist/lib/cjs/interceptors/error-response-sanitizer.request-interceptor.js.map +0 -1
- package/dist/lib/esm/errors/bad-request.http-error.js +0 -16
- package/dist/lib/esm/errors/bad-request.http-error.js.map +0 -1
- package/dist/lib/esm/errors/forbidden.http-error.js +0 -15
- package/dist/lib/esm/errors/forbidden.http-error.js.map +0 -1
- package/dist/lib/esm/errors/http.error.js +0 -21
- package/dist/lib/esm/errors/http.error.js.map +0 -1
- package/dist/lib/esm/errors/invalid-body.http-error.js +0 -15
- package/dist/lib/esm/errors/invalid-body.http-error.js.map +0 -1
- package/dist/lib/esm/errors/not-found.http-error.js +0 -15
- package/dist/lib/esm/errors/not-found.http-error.js.map +0 -1
- package/dist/lib/esm/errors/request-interception-execution.error.js +0 -17
- package/dist/lib/esm/errors/request-interception-execution.error.js.map +0 -1
- package/dist/lib/esm/errors/response-interception-execution.error.js +0 -19
- package/dist/lib/esm/errors/response-interception-execution.error.js.map +0 -1
- package/dist/lib/esm/interceptors/error-response-sanitizer.request-interceptor.js +0 -51
- package/dist/lib/esm/interceptors/error-response-sanitizer.request-interceptor.js.map +0 -1
- package/dist/types/errors/bad-request.http-error.d.ts +0 -9
- package/dist/types/errors/forbidden.http-error.d.ts +0 -8
- package/dist/types/errors/http.error.d.ts +0 -11
- package/dist/types/errors/invalid-body.http-error.d.ts +0 -8
- package/dist/types/errors/not-found.http-error.d.ts +0 -8
- package/dist/types/errors/request-interception-execution.error.d.ts +0 -7
- package/dist/types/errors/response-interception-execution.error.d.ts +0 -7
- package/dist/types/interceptors/error-response-sanitizer.request-interceptor.d.ts +0 -11
|
@@ -14,15 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./bad-request.http-error"), exports);
|
|
18
|
-
__exportStar(require("./forbidden.http-error"), exports);
|
|
19
|
-
__exportStar(require("./http.error"), exports);
|
|
20
|
-
__exportStar(require("./invalid-body.http-error"), exports);
|
|
21
17
|
__exportStar(require("./method-router-adding.error"), exports);
|
|
22
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./networking-error-code.enum"), exports);
|
|
23
19
|
__exportStar(require("./path-router-adding.error"), exports);
|
|
24
20
|
__exportStar(require("./path-router-instantiation.error"), exports);
|
|
25
21
|
__exportStar(require("./request-handling.error"), exports);
|
|
26
|
-
__exportStar(require("./request-interception-execution.error"), exports);
|
|
27
|
-
__exportStar(require("./response-interception-execution.error"), exports);
|
|
28
22
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,+DAA6C;AAC7C,6DAA2C;AAC3C,oEAAkD;AAClD,2DAAyC"}
|
|
@@ -2,23 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MethodRouterAddingError = void 0;
|
|
4
4
|
const common_1 = require("@pristine-ts/common");
|
|
5
|
-
const method_router_node_1 = require("../nodes/method-router.node");
|
|
6
5
|
/**
|
|
7
6
|
* This Error is thrown when there's an error that happens when the networking is being initialized.
|
|
8
7
|
* It is thrown when trying to add a child node to a MethodRouterNode, since a MethodRouterNode is a leaf it cannot have any children.
|
|
9
8
|
*/
|
|
10
|
-
class MethodRouterAddingError extends common_1.
|
|
9
|
+
class MethodRouterAddingError extends common_1.PristineError {
|
|
11
10
|
constructor(message, splitPaths, method, route, methodRouterNode) {
|
|
12
|
-
super(message, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Set the prototype explicitly.
|
|
19
|
-
// As specified in the documentation in TypeScript
|
|
20
|
-
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
21
|
-
Object.setPrototypeOf(this, method_router_node_1.MethodRouterNode.prototype);
|
|
11
|
+
super(message, { details: {
|
|
12
|
+
splitPaths,
|
|
13
|
+
method,
|
|
14
|
+
route,
|
|
15
|
+
methodRouterNode,
|
|
16
|
+
} });
|
|
22
17
|
}
|
|
23
18
|
}
|
|
24
19
|
exports.MethodRouterAddingError = MethodRouterAddingError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-router-adding.error.js","sourceRoot":"","sources":["../../../../src/errors/method-router-adding.error.ts"],"names":[],"mappings":";;;AAAA,gDAA8D;
|
|
1
|
+
{"version":3,"file":"method-router-adding.error.js","sourceRoot":"","sources":["../../../../src/errors/method-router-adding.error.ts"],"names":[],"mappings":";;;AAAA,gDAA8D;AAI9D;;;GAGG;AACH,MAAa,uBAAwB,SAAQ,sBAAa;IAExD,YAAmB,OAAe,EAAE,UAAoB,EAAE,MAA2B,EAAE,KAAY,EAAE,gBAAkC;QACrI,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE;gBACvB,UAAU;gBACV,MAAM;gBACN,KAAK;gBACL,gBAAgB;aACjB,EAAC,CAAC,CAAC;IAAE,CAAC;CACV;AATD,0DASC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetworkingErrorCode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Error-code catalog owned by `@pristine-ts/networking`. Surfaced via
|
|
6
|
+
* `PristineErrorOptions.code` (typed `PristineErrorCode | string`, so any enum value is
|
|
7
|
+
* accepted).
|
|
8
|
+
*
|
|
9
|
+
* Codes here describe HTTP-layer failures specific to the networking module — body
|
|
10
|
+
* parsing/validation, request mapping, etc.
|
|
11
|
+
*/
|
|
12
|
+
var NetworkingErrorCode;
|
|
13
|
+
(function (NetworkingErrorCode) {
|
|
14
|
+
NetworkingErrorCode["InvalidBody"] = "INVALID_BODY";
|
|
15
|
+
})(NetworkingErrorCode || (exports.NetworkingErrorCode = NetworkingErrorCode = {}));
|
|
16
|
+
//# sourceMappingURL=networking-error-code.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networking-error-code.enum.js","sourceRoot":"","sources":["../../../../src/errors/networking-error-code.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,mDAA4B,CAAA;AAC9B,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B"}
|
|
@@ -6,18 +6,14 @@ const common_1 = require("@pristine-ts/common");
|
|
|
6
6
|
* This Error is thrown when there's an error that happens when the networking is being initialized.
|
|
7
7
|
* It is thrown when an error occurs when trying to add a child node to a PathRouterNode.
|
|
8
8
|
*/
|
|
9
|
-
class PathRouterAddingError extends common_1.
|
|
9
|
+
class PathRouterAddingError extends common_1.PristineError {
|
|
10
10
|
constructor(message, splitPaths, method, route, pathRouterNode) {
|
|
11
|
-
super(message, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Set the prototype explicitly.
|
|
18
|
-
// As specified in the documentation in TypeScript
|
|
19
|
-
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
20
|
-
Object.setPrototypeOf(this, PathRouterAddingError.prototype);
|
|
11
|
+
super(message, { details: {
|
|
12
|
+
splitPaths,
|
|
13
|
+
method,
|
|
14
|
+
route,
|
|
15
|
+
pathRouterNode,
|
|
16
|
+
} });
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
19
|
exports.PathRouterAddingError = PathRouterAddingError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-router-adding.error.js","sourceRoot":"","sources":["../../../../src/errors/path-router-adding.error.ts"],"names":[],"mappings":";;;AAAA,gDAA8D;AAI9D;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,sBAAa;IAEtD,YAAmB,OAAe,EAAE,UAAoB,EAAE,MAA2B,EAAE,KAAY,EAAE,cAA8B;QACjI,KAAK,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"path-router-adding.error.js","sourceRoot":"","sources":["../../../../src/errors/path-router-adding.error.ts"],"names":[],"mappings":";;;AAAA,gDAA8D;AAI9D;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,sBAAa;IAEtD,YAAmB,OAAe,EAAE,UAAoB,EAAE,MAA2B,EAAE,KAAY,EAAE,cAA8B;QACjI,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE;gBACvB,UAAU;gBACV,MAAM;gBACN,KAAK;gBACL,cAAc;aACf,EAAC,CAAC,CAAC;IAAE,CAAC;CACV;AATD,sDASC"}
|
|
@@ -6,16 +6,12 @@ const common_1 = require("@pristine-ts/common");
|
|
|
6
6
|
* This Error is thrown when there's an error that happens when the networking is being initialized.
|
|
7
7
|
* It is thrown when an error occurs when trying to instantiate a PathRouterNode.
|
|
8
8
|
*/
|
|
9
|
-
class PathRouterInstantiationError extends common_1.
|
|
9
|
+
class PathRouterInstantiationError extends common_1.PristineError {
|
|
10
10
|
constructor(message, path, parent) {
|
|
11
|
-
super(message, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// Set the prototype explicitly.
|
|
16
|
-
// As specified in the documentation in TypeScript
|
|
17
|
-
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
18
|
-
Object.setPrototypeOf(this, PathRouterInstantiationError.prototype);
|
|
11
|
+
super(message, { details: {
|
|
12
|
+
path,
|
|
13
|
+
parent,
|
|
14
|
+
} });
|
|
19
15
|
}
|
|
20
16
|
}
|
|
21
17
|
exports.PathRouterInstantiationError = PathRouterInstantiationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-router-instantiation.error.js","sourceRoot":"","sources":["../../../../src/errors/path-router-instantiation.error.ts"],"names":[],"mappings":";;;AAAA,gDAAkD;AAGlD;;;GAGG;AACH,MAAa,4BAA6B,SAAQ,sBAAa;IAE7D,YAAmB,OAAe,EAAE,IAAY,EAAE,MAAuB;QACvE,KAAK,CAAC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"path-router-instantiation.error.js","sourceRoot":"","sources":["../../../../src/errors/path-router-instantiation.error.ts"],"names":[],"mappings":";;;AAAA,gDAAkD;AAGlD;;;GAGG;AACH,MAAa,4BAA6B,SAAQ,sBAAa;IAE7D,YAAmB,OAAe,EAAE,IAAY,EAAE,MAAuB;QACvE,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE;gBACvB,IAAI;gBACJ,MAAM;aACP,EAAC,CAAC,CAAC;IAAE,CAAC;CACV;AAPD,oEAOC"}
|
|
@@ -5,15 +5,11 @@ const common_1 = require("@pristine-ts/common");
|
|
|
5
5
|
/**
|
|
6
6
|
* This Error is thrown when there's an error that happens while handling a request.
|
|
7
7
|
*/
|
|
8
|
-
class RequestHandlingError extends common_1.
|
|
8
|
+
class RequestHandlingError extends common_1.PristineError {
|
|
9
9
|
constructor(message, request) {
|
|
10
|
-
super(message, {
|
|
11
|
-
|
|
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, RequestHandlingError.prototype);
|
|
10
|
+
super(message, { details: {
|
|
11
|
+
request,
|
|
12
|
+
} });
|
|
17
13
|
}
|
|
18
14
|
}
|
|
19
15
|
exports.RequestHandlingError = RequestHandlingError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-handling.error.js","sourceRoot":"","sources":["../../../../src/errors/request-handling.error.ts"],"names":[],"mappings":";;;AAAA,gDAA2D;AAE3D;;GAEG;AACH,MAAa,oBAAqB,SAAQ,sBAAa;IAErD,YAAmB,OAAe,EAAE,OAAgB;QAClD,KAAK,CAAC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"request-handling.error.js","sourceRoot":"","sources":["../../../../src/errors/request-handling.error.ts"],"names":[],"mappings":";;;AAAA,gDAA2D;AAE3D;;GAEG;AACH,MAAa,oBAAqB,SAAQ,sBAAa;IAErD,YAAmB,OAAe,EAAE,OAAgB;QAClD,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE;gBACvB,OAAO;aACR,EAAC,CAAC,CAAC;IAAE,CAAC;CACV;AAND,oDAMC"}
|
|
@@ -27,12 +27,11 @@ const tsyringe_1 = require("tsyringe");
|
|
|
27
27
|
const common_1 = require("@pristine-ts/common");
|
|
28
28
|
const networking_module_keyname_1 = require("../networking.module.keyname");
|
|
29
29
|
let RequestEventHandler = class RequestEventHandler {
|
|
30
|
-
constructor(router, logHandler, tracingManager, dependencyContainer
|
|
30
|
+
constructor(router, logHandler, tracingManager, dependencyContainer) {
|
|
31
31
|
this.router = router;
|
|
32
32
|
this.logHandler = logHandler;
|
|
33
33
|
this.tracingManager = tracingManager;
|
|
34
34
|
this.dependencyContainer = dependencyContainer;
|
|
35
|
-
this.breadcrumbHandlerInterface = breadcrumbHandlerInterface;
|
|
36
35
|
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.
|
|
37
36
|
}
|
|
38
37
|
supports(event) {
|
|
@@ -61,7 +60,6 @@ let RequestEventHandler = class RequestEventHandler {
|
|
|
61
60
|
extra: {
|
|
62
61
|
event,
|
|
63
62
|
},
|
|
64
|
-
breadcrumb: `${networking_module_keyname_1.NetworkingModuleKeyname}:request.event-handler:handle`,
|
|
65
63
|
});
|
|
66
64
|
const start = performance.now();
|
|
67
65
|
const response = yield this.router.execute(event.payload, this.dependencyContainer);
|
|
@@ -77,9 +75,6 @@ let RequestEventHandler = class RequestEventHandler {
|
|
|
77
75
|
event,
|
|
78
76
|
response,
|
|
79
77
|
},
|
|
80
|
-
outputHints: {
|
|
81
|
-
outputBreadcrumbs: true,
|
|
82
|
-
}
|
|
83
78
|
});
|
|
84
79
|
//previous code:
|
|
85
80
|
// const requestSpan = tracingManager.startSpan(SpanKeynameEnum.RequestExecution);
|
|
@@ -96,7 +91,6 @@ exports.RequestEventHandler = RequestEventHandler = __decorate([
|
|
|
96
91
|
__param(1, (0, tsyringe_1.inject)("LogHandlerInterface")),
|
|
97
92
|
__param(2, (0, tsyringe_1.inject)("TracingManagerInterface")),
|
|
98
93
|
__param(3, (0, tsyringe_1.inject)(common_1.ServiceDefinitionTagEnum.CurrentChildContainer)),
|
|
99
|
-
|
|
100
|
-
__metadata("design:paramtypes", [Object, Object, Object, Object, Object])
|
|
94
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object])
|
|
101
95
|
], RequestEventHandler);
|
|
102
96
|
//# sourceMappingURL=request.event-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.event-handler.js","sourceRoot":"","sources":["../../../../src/handlers/request.event-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8E;AAC9E,uCAAiE;AAEjE,gDAAmG;AAEnG,4EAAqE;AAM9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,YAAuC,MAAwC,EACpC,UAAgD,EAC5C,cAAwD,EACnC,mBAAyD
|
|
1
|
+
{"version":3,"file":"request.event-handler.js","sourceRoot":"","sources":["../../../../src/handlers/request.event-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8E;AAC9E,uCAAiE;AAEjE,gDAAmG;AAEnG,4EAAqE;AAM9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,YAAuC,MAAwC,EACpC,UAAgD,EAC5C,cAAwD,EACnC,mBAAyD;QAHrE,WAAM,GAAN,MAAM,CAAiB;QACnB,eAAU,GAAV,UAAU,CAAqB;QAC3B,mBAAc,GAAd,cAAc,CAAyB;QAClB,wBAAmB,GAAnB,mBAAmB,CAAqB;QAL7H,aAAQ,GAAW,KAAK,CAAC,CAAC,wHAAwH;IAOlJ,CAAC;IAED,QAAQ,CAAI,KAAe;QACzB,OAAO,KAAK,CAAC,OAAO,YAAY,gBAAO,CAAC;IAC1C,CAAC;IAEK,MAAM,CAAC,KAAqB;;YAChC,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,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;gBAC1F,UAAU,EAAE;oBACV,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;iBAC/B;gBACD,KAAK,EAAE;oBACL,KAAK;iBACN;aACF,CAAE,CAAA;YAEH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEpF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAE3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gCAAgC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACpJ,UAAU,EAAE;oBACV,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;oBAC/B,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;oBACrC,YAAY,EAAE,QAAQ,CAAC,IAAI;oBAC3B,eAAe,EAAE,QAAQ,CAAC,OAAO;iBAClC;gBACD,KAAK,EAAE;oBACL,KAAK;oBACL,QAAQ;iBACT;aACF,CAAC,CAAA;YAEF,gBAAgB;YAChB,kFAAkF;YAElF,OAAO,IAAI,oBAAa,CAAoB,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;KAAA;CAEF,CAAA;AAlEY,kDAAmB;8BAAnB,mBAAmB;IAH/B,IAAA,qBAAY,EAAC,mDAAuB,CAAC;IACrC,IAAA,YAAG,EAAC,iCAAwB,CAAC,YAAY,CAAC;IAC1C,IAAA,qBAAU,GAAE;IAIE,WAAA,IAAA,iBAAM,EAAC,iBAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;IAC7B,WAAA,IAAA,iBAAM,EAAC,yBAAyB,CAAC,CAAA;IACjC,WAAA,IAAA,iBAAM,EAAC,iCAAwB,CAAC,qBAAqB,CAAC,CAAA;;GANxD,mBAAmB,CAkE/B"}
|
|
@@ -27,6 +27,7 @@ const tsyringe_1 = require("tsyringe");
|
|
|
27
27
|
const networking_module_keyname_1 = require("../networking.module.keyname");
|
|
28
28
|
const data_mapping_1 = require("@pristine-ts/data-mapping");
|
|
29
29
|
const body_mapping_decorator_1 = require("../decorators/body-mapping.decorator");
|
|
30
|
+
const method_router_node_1 = require("../nodes/method-router.node");
|
|
30
31
|
const request_interceptor_priority_enum_1 = require("../enums/request-interceptor-priority.enum");
|
|
31
32
|
/**
|
|
32
33
|
* This class is an interceptor that maps the body of an incoming request.
|
|
@@ -76,6 +77,12 @@ let BodyMappingRequestInterceptor = class BodyMappingRequestInterceptor {
|
|
|
76
77
|
}
|
|
77
78
|
};
|
|
78
79
|
exports.BodyMappingRequestInterceptor = BodyMappingRequestInterceptor;
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, common_1.traced)(),
|
|
82
|
+
__metadata("design:type", Function),
|
|
83
|
+
__metadata("design:paramtypes", [common_1.Request, method_router_node_1.MethodRouterNode]),
|
|
84
|
+
__metadata("design:returntype", Promise)
|
|
85
|
+
], BodyMappingRequestInterceptor.prototype, "interceptRequest", null);
|
|
79
86
|
exports.BodyMappingRequestInterceptor = BodyMappingRequestInterceptor = __decorate([
|
|
80
87
|
(0, common_1.moduleScoped)(networking_module_keyname_1.NetworkingModuleKeyname),
|
|
81
88
|
(0, common_1.tag)(common_1.ServiceDefinitionTagEnum.RequestInterceptor),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body-mapping.request-interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/body-mapping.request-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"body-mapping.request-interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/body-mapping.request-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiG;AACjG,uCAA4C;AAE5C,4EAAqE;AACrE,4DAAqD;AAMrD,iFAAyF;AAEzF,oEAA6D;AAC7D,kGAA0F;AAE1F;;;;GAIG;AAII,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAGxC,YAA2C,UAAgD,EAC9D,UAAsB;QADS,eAAU,GAAV,UAAU,CAAqB;QAC9D,eAAU,GAAV,UAAU,CAAY;QAHnD,aAAQ,GAAG,kEAA8B,CAAC,WAAW,CAAC;IAItD,CAAC;IAED;;;;OAIG;IAEG,gBAAgB,CAAC,OAAgB,EAAE,UAA4B;;YACnE,MAAM,WAAW,GAAsI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,4DAAmC,CAAC,CAAC;YAErN,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACrD,OAAO;gBACP,UAAU;gBACV,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;aACvC,CAAC,CAAA;YAEF,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,WAAW;oBACd,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;oBAClF,MAAM;gBAER,KAAK,oBAAoB;oBACvB,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;oBAChH,MAAM;gBAER,KAAK,UAAU;oBACb,OAAO,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzE,MAAM;YACV,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,8CAA8C,EAAE;gBACpE,OAAO;gBACP,UAAU;gBACV,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;aACvC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;CACF,CAAA;AAhDY,sEAA6B;AAalC;IADL,IAAA,eAAM,GAAE;;qCACuB,gBAAO,EAAc,qCAAgB;;qEAkCpE;wCA/CU,6BAA6B;IAHzC,IAAA,qBAAY,EAAC,mDAAuB,CAAC;IACrC,IAAA,YAAG,EAAC,iCAAwB,CAAC,kBAAkB,CAAC;IAChD,IAAA,qBAAU,GAAE;IAIE,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;6CACD,yBAAU;GAJxC,6BAA6B,CAgDzC"}
|
|
@@ -24,6 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
24
24
|
exports.DefaultContentTypeResponseHeaderInterceptor = void 0;
|
|
25
25
|
const common_1 = require("@pristine-ts/common");
|
|
26
26
|
const networking_module_keyname_1 = require("../networking.module.keyname");
|
|
27
|
+
const method_router_node_1 = require("../nodes/method-router.node");
|
|
27
28
|
const tsyringe_1 = require("tsyringe");
|
|
28
29
|
const request_interceptor_priority_enum_1 = require("../enums/request-interceptor-priority.enum");
|
|
29
30
|
/**
|
|
@@ -65,6 +66,12 @@ let DefaultContentTypeResponseHeaderInterceptor = class DefaultContentTypeRespon
|
|
|
65
66
|
}
|
|
66
67
|
};
|
|
67
68
|
exports.DefaultContentTypeResponseHeaderInterceptor = DefaultContentTypeResponseHeaderInterceptor;
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, common_1.traced)(),
|
|
71
|
+
__metadata("design:type", Function),
|
|
72
|
+
__metadata("design:paramtypes", [common_1.Response, common_1.Request, method_router_node_1.MethodRouterNode]),
|
|
73
|
+
__metadata("design:returntype", Promise)
|
|
74
|
+
], DefaultContentTypeResponseHeaderInterceptor.prototype, "interceptResponse", null);
|
|
68
75
|
exports.DefaultContentTypeResponseHeaderInterceptor = DefaultContentTypeResponseHeaderInterceptor = __decorate([
|
|
69
76
|
(0, common_1.tag)(common_1.ServiceDefinitionTagEnum.RequestInterceptor),
|
|
70
77
|
(0, common_1.moduleScoped)(networking_module_keyname_1.NetworkingModuleKeyname),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-content-type-response-header.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/default-content-type-response-header.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"default-content-type-response-header.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/default-content-type-response-header.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA2G;AAC3G,4EAAqE;AACrE,oEAA6D;AAE7D,uCAA4C;AAE5C,kGAA0F;AAE1F;;;GAGG;AAII,IAAM,2CAA2C,GAAjD,MAAM,2CAA2C;IAItD;;;;;;OAMG;IACH,YAAqF,gCAAyD,EAChD,QAAkC,EACrF,UAAgD;QAFW,qCAAgC,GAAhC,gCAAgC,CAAQ;QAC/B,aAAQ,GAAR,QAAQ,CAAS;QACpE,eAAU,GAAV,UAAU,CAAqB;QAX3F,aAAQ,GAAG,kEAA8B,CAAC,gCAAgC,CAAA;IAY1E,CAAC;IAED;;;;;OAKG;IAEG,iBAAiB,CAAC,QAAkB,EAAE,OAAgB,EAAE,UAA6B;;YACzF,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,4FAA4F,EAAE,EAAC,KAAK,EAAE,EAAC,QAAQ,EAAC,EAAC,CAAC,CAAA;YAExI,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF,CAAA;AArCY,kGAA2C;AAuBhD;IADL,IAAA,eAAM,GAAE;;qCACyB,iBAAQ,EAAW,gBAAO,EAAe,qCAAgB;;oFAa1F;sDApCU,2CAA2C;IAHvD,IAAA,YAAG,EAAC,iCAAwB,CAAC,kBAAkB,CAAC;IAChD,IAAA,qBAAY,EAAC,mDAAuB,CAAC;IACrC,IAAA,qBAAU,GAAE;IAYE,WAAA,IAAA,iBAAM,EAAC,IAAI,mDAAuB,oCAAoC,CAAC,CAAA;IACvE,WAAA,IAAA,iBAAM,EAAC,IAAI,mDAAuB,6CAA6C,CAAC,CAAA;IAChF,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;;GAb/B,2CAA2C,CAqCvD"}
|
|
@@ -18,5 +18,4 @@ __exportStar(require("./body-mapping.request-interceptor"), exports);
|
|
|
18
18
|
__exportStar(require("./default-content-type-response-header.interceptor"), exports);
|
|
19
19
|
__exportStar(require("./request-body-converter.interceptor"), exports);
|
|
20
20
|
__exportStar(require("./response-headers.interceptor"), exports);
|
|
21
|
-
__exportStar(require("./error-response-sanitizer.request-interceptor"), exports);
|
|
22
21
|
//# sourceMappingURL=interceptors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../../src/interceptors/interceptors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,qFAAmE;AACnE,uEAAqD;AACrD,iEAA+C
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../../src/interceptors/interceptors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,qFAAmE;AACnE,uEAAqD;AACrD,iEAA+C"}
|
|
@@ -26,8 +26,8 @@ const tsyringe_1 = require("tsyringe");
|
|
|
26
26
|
const networking_configuration_keys_1 = require("../networking.configuration-keys");
|
|
27
27
|
const common_1 = require("@pristine-ts/common");
|
|
28
28
|
const networking_module_keyname_1 = require("../networking.module.keyname");
|
|
29
|
-
const invalid_body_http_error_1 = require("../errors/invalid-body.http-error");
|
|
30
29
|
const request_interceptor_priority_enum_1 = require("../enums/request-interceptor-priority.enum");
|
|
30
|
+
const networking_error_code_enum_1 = require("../errors/networking-error-code.enum");
|
|
31
31
|
/**
|
|
32
32
|
* The Request Body Converter Interceptor intercepts the request and parses the body based on the Content-tTpe header.
|
|
33
33
|
* It is tagged as a RequestInterceptor so it can be automatically injected with the all the other RequestInterceptor.
|
|
@@ -66,7 +66,7 @@ let RequestBodyConverterInterceptor = class RequestBodyConverterInterceptor {
|
|
|
66
66
|
if (request.body.constructor === Date) {
|
|
67
67
|
const errorMessage = "RequestBodyConverterInterceptor: This request has the Content-Type header 'application/json' but the body is a Date object which is invalid JSON.";
|
|
68
68
|
this.logHandler.error(errorMessage);
|
|
69
|
-
throw new
|
|
69
|
+
throw new common_1.BadRequestError(errorMessage, { code: networking_error_code_enum_1.NetworkingErrorCode.InvalidBody });
|
|
70
70
|
}
|
|
71
71
|
return request;
|
|
72
72
|
case "string":
|
|
@@ -78,13 +78,13 @@ let RequestBodyConverterInterceptor = class RequestBodyConverterInterceptor {
|
|
|
78
78
|
catch (e) {
|
|
79
79
|
const errorMessage = "RequestBodyConverterInterceptor: This request has the Content-Type header 'application/json', and the body is of type string, but the body contains invalid JSON.";
|
|
80
80
|
this.logHandler.error(errorMessage);
|
|
81
|
-
throw new
|
|
81
|
+
throw new common_1.BadRequestError(errorMessage, { code: networking_error_code_enum_1.NetworkingErrorCode.InvalidBody });
|
|
82
82
|
}
|
|
83
83
|
break;
|
|
84
84
|
default:
|
|
85
85
|
const errorMessage = "RequestBodyConverterInterceptor: This request has the Content-Type header 'application/json' but the body contains invalid JSON.";
|
|
86
86
|
this.logHandler.error(errorMessage);
|
|
87
|
-
throw new
|
|
87
|
+
throw new common_1.BadRequestError(errorMessage, { code: networking_error_code_enum_1.NetworkingErrorCode.InvalidBody });
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
return request;
|
|
@@ -92,6 +92,12 @@ let RequestBodyConverterInterceptor = class RequestBodyConverterInterceptor {
|
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
94
|
exports.RequestBodyConverterInterceptor = RequestBodyConverterInterceptor;
|
|
95
|
+
__decorate([
|
|
96
|
+
(0, common_1.traced)(),
|
|
97
|
+
__metadata("design:type", Function),
|
|
98
|
+
__metadata("design:paramtypes", [common_1.Request]),
|
|
99
|
+
__metadata("design:returntype", Promise)
|
|
100
|
+
], RequestBodyConverterInterceptor.prototype, "interceptRequest", null);
|
|
95
101
|
exports.RequestBodyConverterInterceptor = RequestBodyConverterInterceptor = __decorate([
|
|
96
102
|
(0, common_1.tag)(common_1.ServiceDefinitionTagEnum.RequestInterceptor),
|
|
97
103
|
(0, common_1.moduleScoped)(networking_module_keyname_1.NetworkingModuleKeyname),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-body-converter.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/request-body-converter.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA4C;AAC5C,oFAA6E;AAE7E,
|
|
1
|
+
{"version":3,"file":"request-body-converter.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/request-body-converter.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA4C;AAC5C,oFAA6E;AAE7E,gDAAgI;AAChI,4EAAqE;AAErE,kGAA0F;AAC1F,qFAAyE;AAEzE;;;GAGG;AAII,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAI1C;;;;;OAKG;IACH,YAAoF,QAAkC,EAC3E,UAAgD;QADU,aAAQ,GAAR,QAAQ,CAAS;QAC1D,eAAU,GAAV,UAAU,CAAqB;QAT3F,aAAQ,GAAG,kEAA8B,CAAC,aAAa,CAAC;IAUxD,CAAC;IAED;;;OAGG;IAEG,gBAAgB,CAAC,OAAgB;;YACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,WAAW,GAAW,OAAO,CAAC,SAAS,CAAC,cAAc,CAAW,CAAC;YAExE,QAAQ,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,KAAK,kBAAkB;oBAGrB,QAAQ,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;wBAC5B,KAAK,WAAW;4BACd,OAAO,OAAO,CAAC;wBACjB,KAAK,QAAQ;4BACX,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gCACtC,MAAM,YAAY,GAAG,mJAAmJ,CAAC;gCACzK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gCAEpC,MAAM,IAAI,wBAAe,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,gDAAmB,CAAC,WAAW,EAAC,CAAC,CAAC;4BACnF,CAAC;4BACD,OAAO,OAAO,CAAC;wBAEjB,KAAK,QAAQ;4BACX,IAAI,CAAC;gCACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oCACjB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCAC1C,CAAC;4BACH,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACX,MAAM,YAAY,GAAG,mKAAmK,CAAC;gCACzL,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gCAEpC,MAAM,IAAI,wBAAe,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,gDAAmB,CAAC,WAAW,EAAC,CAAC,CAAC;4BACnF,CAAC;4BACD,MAAM;wBAER;4BACE,MAAM,YAAY,GAAG,kIAAkI,CAAC;4BACxJ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;4BAEpC,MAAM,IAAI,wBAAe,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,gDAAmB,CAAC,WAAW,EAAC,CAAC,CAAC;oBACrF,CAAC;YAGL,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;CAEF,CAAA;AAxEY,0EAA+B;AAmBpC;IADL,IAAA,eAAM,GAAE;;qCACuB,gBAAO;;uEAmDtC;0CAtEU,+BAA+B;IAH3C,IAAA,YAAG,EAAC,iCAAwB,CAAC,kBAAkB,CAAC;IAChD,IAAA,qBAAY,EAAC,mDAAuB,CAAC;IACrC,IAAA,qBAAU,GAAE;IAWE,WAAA,IAAA,qBAAY,EAAC,2DAA2B,CAAC,4BAA4B,CAAC,CAAA;IACtE,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;;GAX/B,+BAA+B,CAwE3C"}
|
|
@@ -5,6 +5,9 @@ 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
|
+
};
|
|
8
11
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
12
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
13
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,6 +21,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
21
|
exports.ResponseHeadersInterceptor = void 0;
|
|
19
22
|
const common_1 = require("@pristine-ts/common");
|
|
20
23
|
const networking_module_keyname_1 = require("../networking.module.keyname");
|
|
24
|
+
const method_router_node_1 = require("../nodes/method-router.node");
|
|
21
25
|
const tsyringe_1 = require("tsyringe");
|
|
22
26
|
const response_header_decorator_1 = require("../decorators/response-header.decorator");
|
|
23
27
|
/**
|
|
@@ -41,6 +45,12 @@ let ResponseHeadersInterceptor = class ResponseHeadersInterceptor {
|
|
|
41
45
|
}
|
|
42
46
|
};
|
|
43
47
|
exports.ResponseHeadersInterceptor = ResponseHeadersInterceptor;
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, common_1.traced)(),
|
|
50
|
+
__metadata("design:type", Function),
|
|
51
|
+
__metadata("design:paramtypes", [common_1.Response, common_1.Request, method_router_node_1.MethodRouterNode]),
|
|
52
|
+
__metadata("design:returntype", Promise)
|
|
53
|
+
], ResponseHeadersInterceptor.prototype, "interceptResponse", null);
|
|
44
54
|
exports.ResponseHeadersInterceptor = ResponseHeadersInterceptor = __decorate([
|
|
45
55
|
(0, common_1.tag)(common_1.ServiceDefinitionTagEnum.RequestInterceptor),
|
|
46
56
|
(0, common_1.moduleScoped)(networking_module_keyname_1.NetworkingModuleKeyname),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-headers.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/response-headers.interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"response-headers.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/response-headers.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,gDAA2G;AAC3G,4EAAqE;AACrE,oEAA6D;AAE7D,uCAAoC;AACpC,uFAAsF;AAEtF;;;GAGG;AAII,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAErC;;;;;OAKG;IAEG,iBAAiB,CAAC,QAAkB,EAAE,OAAgB,EAAE,UAA6B;;YACzF,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,yDAA6B,CAAC,EAAE,CAAC;gBACrH,QAAQ,CAAC,UAAU,iCAAK,QAAQ,CAAC,OAAO,GAAK,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,yDAA6B,CAAC,EAAE,CAAC;YACzG,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF,CAAA;AAhBY,gEAA0B;AAS/B;IADL,IAAA,eAAM,GAAE;;qCACyB,iBAAQ,EAAW,gBAAO,EAAe,qCAAgB;;mEAM1F;qCAfU,0BAA0B;IAHtC,IAAA,YAAG,EAAC,iCAAwB,CAAC,kBAAkB,CAAC;IAChD,IAAA,qBAAY,EAAC,mDAAuB,CAAC;IACrC,IAAA,qBAAU,GAAE;GACA,0BAA0B,CAgBtC"}
|
|
@@ -36,6 +36,7 @@ __exportStar(require("./nodes/nodes"), exports);
|
|
|
36
36
|
__exportStar(require("./resolvers/resolvers"), exports);
|
|
37
37
|
__exportStar(require("./utils/utils"), exports);
|
|
38
38
|
__exportStar(require("./router"), exports);
|
|
39
|
+
__exportStar(require("./responders/http-error.responder"), exports);
|
|
39
40
|
__exportStar(require("./networking.configuration-keys"), exports);
|
|
40
41
|
exports.NetworkingModule = {
|
|
41
42
|
keyname: networking_module_keyname_1.NetworkingModuleKeyname,
|
|
@@ -90,17 +91,6 @@ exports.NetworkingModule = {
|
|
|
90
91
|
new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_NETWORKING_ROUTER_CACHE_IS_ACTIVE")),
|
|
91
92
|
],
|
|
92
93
|
},
|
|
93
|
-
/**
|
|
94
|
-
* Activates or deactivates whether the Router Cache is on or off.
|
|
95
|
-
*/
|
|
96
|
-
{
|
|
97
|
-
parameterName: networking_module_keyname_1.NetworkingModuleKeyname + ".error_response_sanitizer.is_active",
|
|
98
|
-
isRequired: false,
|
|
99
|
-
defaultValue: true,
|
|
100
|
-
defaultResolvers: [
|
|
101
|
-
new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_NETWORKING_ERROR_RESPONSE_SANITIZER_IS_ACTIVE")),
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
94
|
],
|
|
105
95
|
};
|
|
106
96
|
//# sourceMappingURL=networking.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networking.module.js","sourceRoot":"","sources":["../../../src/networking.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,2EAAoE;AACpE,oDAAqD;AACrD,sDAAuD;AACvD,8DAAwF;AACxF,kDAAmD;AACnD,4DAA4D;AAE5D,gDAA8B;AAC9B,sDAAoC;AACpC,0DAAwC;AACxC,gDAA8B;AAC9B,kDAAgC;AAChC,sDAAoC;AACpC,8DAA4C;AAC5C,0DAAwC;AACxC,sDAAoC;AACpC,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B;AAC9B,wDAAsC;AACtC,gDAA8B;AAE9B,2CAAyB;
|
|
1
|
+
{"version":3,"file":"networking.module.js","sourceRoot":"","sources":["../../../src/networking.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,2EAAoE;AACpE,oDAAqD;AACrD,sDAAuD;AACvD,8DAAwF;AACxF,kDAAmD;AACnD,4DAA4D;AAE5D,gDAA8B;AAC9B,sDAAoC;AACpC,0DAAwC;AACxC,gDAA8B;AAC9B,kDAAgC;AAChC,sDAAoC;AACpC,8DAA4C;AAC5C,0DAAwC;AACxC,sDAAoC;AACpC,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B;AAC9B,wDAAsC;AACtC,gDAA8B;AAE9B,2CAAyB;AACzB,oEAAkD;AAElD,kEAAgD;AACnC,QAAA,gBAAgB,GAAoB;IAC/C,OAAO,EAAE,mDAAuB;IAChC,aAAa,EAAE;QACb,uBAAa;QACb,yBAAc;QACd,2BAAe;QACf,gCAAiB;KAClB;IACD,wBAAwB,EAAE;QACxB;;WAEG;QACH;YACE,aAAa,EAAE,mDAAuB,GAAG,gCAAgC;YACzE,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,sDAAsD,CAAC,CAAC;aAC7G;SACF;QAED;;WAEG;QACH;YACE,aAAa,EAAE,mDAAuB,GAAG,4CAA4C;YACrF,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,oEAAoE,CAAC,CAAC;aAC3H;SACF;QAED;;WAEG;QACH;YACE,aAAa,EAAE,mDAAuB,GAAG,mCAAmC;YAC5E,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,kBAAkB;YAChC,gBAAgB,EAAE;gBAChB,IAAI,2CAA2B,CAAC,0DAA0D,CAAC;aAC5F;SACF;QAED;;WAEG;QACH;YACE,aAAa,EAAE,mDAAuB,GAAG,uBAAuB;YAChE,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,4CAA4C,CAAC,CAAC;aACnG;SACF;KAEF;CACF,CAAA"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HttpErrorResponder = void 0;
|
|
13
|
+
const tsyringe_1 = require("tsyringe");
|
|
14
|
+
const common_1 = require("@pristine-ts/common");
|
|
15
|
+
const core_1 = require("@pristine-ts/core");
|
|
16
|
+
/**
|
|
17
|
+
* Converts any thrown value into an HTTP `Response`. Single chokepoint that the Router
|
|
18
|
+
* calls from its `catch` blocks — replaces the inline `if (error instanceof HttpError)`
|
|
19
|
+
* block that used to leak stack traces by default.
|
|
20
|
+
*
|
|
21
|
+
* **Production mode (default)**: sanitized output. `SystemError`s render as
|
|
22
|
+
* `{code: "INTERNAL_ERROR", message: "Internal Server Error"}` with no stack, no cause,
|
|
23
|
+
* no internal message. `UserError`s (validation, auth, etc.) surface their code, message,
|
|
24
|
+
* and `details` — those are safe by definition.
|
|
25
|
+
*
|
|
26
|
+
* **Development mode** (`pristine.environment = dev`, env override `PRISTINE_ENV=dev`):
|
|
27
|
+
* everything is included — message, stack, cause chain, structured details. Useful when
|
|
28
|
+
* debugging locally; never appropriate for a deployed instance.
|
|
29
|
+
*
|
|
30
|
+
* Anything that's not already a `PristineError` is normalized via `PristineError.from`,
|
|
31
|
+
* which marks it `kind: PristineErrorKind.SystemError` and propagates the original via
|
|
32
|
+
* the `cause` chain.
|
|
33
|
+
*
|
|
34
|
+
* The environment comes from `EnvironmentManager` — injected, not read from `process.env`
|
|
35
|
+
* directly — so the value flows through the normal configuration graph and can be
|
|
36
|
+
* overridden via `pristine.config.ts` like every other framework setting.
|
|
37
|
+
*
|
|
38
|
+
* **`request` is not set on the returned Response** — the responder doesn't know which
|
|
39
|
+
* inbound request triggered the error. The router assigns `response.request` itself
|
|
40
|
+
* after calling `respond()`.
|
|
41
|
+
*/
|
|
42
|
+
let HttpErrorResponder = class HttpErrorResponder {
|
|
43
|
+
constructor(environmentManager) {
|
|
44
|
+
this.environmentManager = environmentManager;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Turns any thrown value into a `Response` with status and body populated. The caller
|
|
48
|
+
* assigns `response.request` and layers any error-response interceptors on top.
|
|
49
|
+
*/
|
|
50
|
+
respond(error) {
|
|
51
|
+
var _a, _b;
|
|
52
|
+
const e = common_1.PristineError.from(error);
|
|
53
|
+
const isDev = this.environmentManager.getEnvironment() === core_1.PristineEnvironment.Development;
|
|
54
|
+
const isUserError = e.options.kind !== common_1.PristineErrorKind.SystemError;
|
|
55
|
+
const status = (_a = e.options.httpStatus) !== null && _a !== void 0 ? _a : 500;
|
|
56
|
+
const code = (_b = e.options.code) !== null && _b !== void 0 ? _b : common_1.PristineErrorCode.InternalError;
|
|
57
|
+
// User errors: caller wrote them, message is meant for the user. Surface verbatim.
|
|
58
|
+
// System errors in production: replace with a generic message so internal bugs
|
|
59
|
+
// never leak details to API consumers.
|
|
60
|
+
const messageForUser = isUserError
|
|
61
|
+
? e.message
|
|
62
|
+
: (isDev ? e.message : (status === 500 ? "Internal Server Error" : "Error"));
|
|
63
|
+
const body = { code, message: messageForUser };
|
|
64
|
+
// `details` is only safe to expose for user errors — it's per-error-class structured
|
|
65
|
+
// data that the throwing code explicitly chose to surface. In dev mode we expose it
|
|
66
|
+
// even for system errors (helps debugging).
|
|
67
|
+
if (e.options.details && (isUserError || isDev)) {
|
|
68
|
+
body.details = e.options.details;
|
|
69
|
+
}
|
|
70
|
+
// Dev-only fields. The cause chain is walked to whatever depth exists, so a nested
|
|
71
|
+
// wrapper like `PristineError → BadRequestError → original ValidationError` shows
|
|
72
|
+
// every level.
|
|
73
|
+
if (isDev) {
|
|
74
|
+
body.debugMessage = e.message;
|
|
75
|
+
if (e.stack)
|
|
76
|
+
body.stack = e.stack;
|
|
77
|
+
const causeChain = this.collectCauseChain(e);
|
|
78
|
+
if (causeChain.length > 0)
|
|
79
|
+
body.cause = causeChain;
|
|
80
|
+
}
|
|
81
|
+
const response = new common_1.Response();
|
|
82
|
+
response.status = status;
|
|
83
|
+
response.body = body;
|
|
84
|
+
return response;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Walks the standard `Error.cause` chain (Node 16.9+ native) and produces a JSON-safe
|
|
88
|
+
* representation. Used in dev mode to surface the full error history without forcing
|
|
89
|
+
* the response object to carry live Error instances.
|
|
90
|
+
*/
|
|
91
|
+
collectCauseChain(error) {
|
|
92
|
+
const chain = [];
|
|
93
|
+
let current = error.cause;
|
|
94
|
+
let depth = 0;
|
|
95
|
+
while (current instanceof Error && depth < 10) {
|
|
96
|
+
chain.push({ name: current.name, message: current.message, stack: current.stack });
|
|
97
|
+
current = current.cause;
|
|
98
|
+
depth++;
|
|
99
|
+
}
|
|
100
|
+
return chain;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.HttpErrorResponder = HttpErrorResponder;
|
|
104
|
+
exports.HttpErrorResponder = HttpErrorResponder = __decorate([
|
|
105
|
+
(0, tsyringe_1.injectable)(),
|
|
106
|
+
__metadata("design:paramtypes", [core_1.EnvironmentManager])
|
|
107
|
+
], HttpErrorResponder);
|
|
108
|
+
//# sourceMappingURL=http-error.responder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-error.responder.js","sourceRoot":"","sources":["../../../../src/responders/http-error.responder.ts"],"names":[],"mappings":"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"}
|