@nestia/core 1.0.19 → 1.1.0-dev.20230413

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.
Files changed (83) hide show
  1. package/README.md +1 -23
  2. package/lib/decorators/DynamicModule.d.ts +23 -23
  3. package/lib/decorators/DynamicModule.js +103 -103
  4. package/lib/decorators/EncryptedBody.d.ts +23 -23
  5. package/lib/decorators/EncryptedBody.js +125 -125
  6. package/lib/decorators/EncryptedController.d.ts +31 -31
  7. package/lib/decorators/EncryptedController.js +41 -41
  8. package/lib/decorators/EncryptedModule.d.ts +49 -49
  9. package/lib/decorators/EncryptedModule.js +161 -161
  10. package/lib/decorators/EncryptedRoute.d.ts +78 -78
  11. package/lib/decorators/EncryptedRoute.js +216 -216
  12. package/lib/decorators/PlainBody.d.ts +22 -22
  13. package/lib/decorators/PlainBody.js +82 -82
  14. package/lib/decorators/TypedBody.d.ts +16 -16
  15. package/lib/decorators/TypedBody.js +94 -94
  16. package/lib/decorators/TypedParam.d.ts +25 -25
  17. package/lib/decorators/TypedParam.js +61 -61
  18. package/lib/decorators/TypedQuery.d.ts +14 -14
  19. package/lib/decorators/TypedQuery.js +99 -99
  20. package/lib/decorators/TypedQuery.js.map +1 -1
  21. package/lib/decorators/TypedRoute.d.ts +72 -72
  22. package/lib/decorators/TypedRoute.js +185 -185
  23. package/lib/decorators/internal/EncryptedConstant.d.ts +1 -1
  24. package/lib/decorators/internal/EncryptedConstant.js +7 -7
  25. package/lib/decorators/internal/TransformError.d.ts +1 -1
  26. package/lib/decorators/internal/TransformError.js +10 -10
  27. package/lib/decorators/internal/get_path_and_stringify.d.ts +1 -1
  28. package/lib/decorators/internal/get_path_and_stringify.js +78 -78
  29. package/lib/decorators/internal/headers_to_object.d.ts +3 -3
  30. package/lib/decorators/internal/headers_to_object.js +49 -49
  31. package/lib/decorators/internal/load_controller.d.ts +2 -2
  32. package/lib/decorators/internal/load_controller.js +151 -152
  33. package/lib/decorators/internal/load_controller.js.map +1 -1
  34. package/lib/decorators/internal/route_error.d.ts +3 -3
  35. package/lib/decorators/internal/route_error.js +86 -86
  36. package/lib/decorators/internal/validate_request_body.d.ts +2 -2
  37. package/lib/decorators/internal/validate_request_body.js +57 -57
  38. package/lib/index.d.ts +3 -3
  39. package/lib/index.js +31 -31
  40. package/lib/module.d.ts +12 -12
  41. package/lib/module.js +28 -28
  42. package/lib/options/INestiaTransformOptions.d.ts +4 -4
  43. package/lib/options/INestiaTransformOptions.js +2 -2
  44. package/lib/options/INestiaTransformProject.d.ts +5 -5
  45. package/lib/options/INestiaTransformProject.js +2 -2
  46. package/lib/options/IRequestBodyValidator.d.ts +16 -16
  47. package/lib/options/IRequestBodyValidator.js +2 -2
  48. package/lib/options/IResponseBodyStringifier.d.ts +20 -20
  49. package/lib/options/IResponseBodyStringifier.js +2 -2
  50. package/lib/programmers/TypedBodyProgrammer.d.ts +5 -5
  51. package/lib/programmers/TypedBodyProgrammer.js +45 -45
  52. package/lib/programmers/TypedQueryProgrammer.d.ts +5 -5
  53. package/lib/programmers/TypedQueryProgrammer.js +260 -165
  54. package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
  55. package/lib/programmers/TypedRouteProgrammer.d.ts +5 -5
  56. package/lib/programmers/TypedRouteProgrammer.js +47 -47
  57. package/lib/transform.d.ts +3 -3
  58. package/lib/transform.js +20 -20
  59. package/lib/transformers/FileTransformer.d.ts +5 -5
  60. package/lib/transformers/FileTransformer.js +32 -32
  61. package/lib/transformers/MethodDecoratorTransformer.d.ts +5 -5
  62. package/lib/transformers/MethodDecoratorTransformer.js +87 -87
  63. package/lib/transformers/MethodTransformer.d.ts +5 -5
  64. package/lib/transformers/MethodTransformer.js +54 -54
  65. package/lib/transformers/MethodTransformer.js.map +1 -1
  66. package/lib/transformers/NodeTransformer.d.ts +5 -5
  67. package/lib/transformers/NodeTransformer.js +20 -20
  68. package/lib/transformers/ParameterDecoratorTransformer.d.ts +5 -5
  69. package/lib/transformers/ParameterDecoratorTransformer.js +53 -53
  70. package/lib/transformers/ParameterTransformer.d.ts +5 -5
  71. package/lib/transformers/ParameterTransformer.js +33 -33
  72. package/lib/transformers/ParameterTransformer.js.map +1 -1
  73. package/lib/typings/Creator.d.ts +3 -3
  74. package/lib/typings/Creator.js +2 -2
  75. package/lib/utils/ExceptionManager.d.ts +64 -64
  76. package/lib/utils/ExceptionManager.js +112 -112
  77. package/lib/utils/Singleton.d.ts +1 -1
  78. package/lib/utils/Singleton.js +23 -23
  79. package/package.json +7 -5
  80. package/src/decorators/TypedQuery.ts +10 -8
  81. package/src/programmers/TypedQueryProgrammer.ts +104 -33
  82. package/src/transformers/MethodTransformer.ts +1 -1
  83. package/src/transformers/ParameterTransformer.ts +1 -1
@@ -1,83 +1,83 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.PlainBody = void 0;
43
- var common_1 = require("@nestjs/common");
44
- var raw_body_1 = __importDefault(require("raw-body"));
45
- /**
46
- * Plain body decorator.
47
- *
48
- * `PlainBody` is a decorator function getting full body text from the HTTP request.
49
- *
50
- * If you adjust the regular {@link Body} decorator function to the body parameter,
51
- * you can't get the full body text because the {@link Body} tries to convert the
52
- * body text to JSON object. Therefore, `@nestia/core` provides this `PlainBody`
53
- * decorator function to get the full body text.
54
- *
55
- * ```typescript
56
- * \@TypedRoute.Post("memo")
57
- * public store
58
- * (
59
- * \@PlainBody() body: string
60
- * ): void;
61
- * ```
62
- *
63
- * @return Parameter decorator
64
- * @author Jeongho Nam - https://github.com/samchon
65
- */
66
- exports.PlainBody = (0, common_1.createParamDecorator)(function PlainBody(_data, context) {
67
- return __awaiter(this, void 0, void 0, function () {
68
- var request, body;
69
- return __generator(this, function (_a) {
70
- switch (_a.label) {
71
- case 0:
72
- request = context.switchToHttp().getRequest();
73
- if (!request.readable)
74
- throw new common_1.BadRequestException("Invalid body");
75
- return [4 /*yield*/, (0, raw_body_1.default)(request)];
76
- case 1:
77
- body = (_a.sent()).toString("utf8").trim();
78
- return [2 /*return*/, body];
79
- }
80
- });
81
- });
82
- });
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.PlainBody = void 0;
43
+ var common_1 = require("@nestjs/common");
44
+ var raw_body_1 = __importDefault(require("raw-body"));
45
+ /**
46
+ * Plain body decorator.
47
+ *
48
+ * `PlainBody` is a decorator function getting full body text from the HTTP request.
49
+ *
50
+ * If you adjust the regular {@link Body} decorator function to the body parameter,
51
+ * you can't get the full body text because the {@link Body} tries to convert the
52
+ * body text to JSON object. Therefore, `@nestia/core` provides this `PlainBody`
53
+ * decorator function to get the full body text.
54
+ *
55
+ * ```typescript
56
+ * \@TypedRoute.Post("memo")
57
+ * public store
58
+ * (
59
+ * \@PlainBody() body: string
60
+ * ): void;
61
+ * ```
62
+ *
63
+ * @return Parameter decorator
64
+ * @author Jeongho Nam - https://github.com/samchon
65
+ */
66
+ exports.PlainBody = (0, common_1.createParamDecorator)(function PlainBody(_data, context) {
67
+ return __awaiter(this, void 0, void 0, function () {
68
+ var request, body;
69
+ return __generator(this, function (_a) {
70
+ switch (_a.label) {
71
+ case 0:
72
+ request = context.switchToHttp().getRequest();
73
+ if (!request.readable)
74
+ throw new common_1.BadRequestException("Invalid body");
75
+ return [4 /*yield*/, (0, raw_body_1.default)(request)];
76
+ case 1:
77
+ body = (_a.sent()).toString("utf8").trim();
78
+ return [2 /*return*/, body];
79
+ }
80
+ });
81
+ });
82
+ });
83
83
  //# sourceMappingURL=PlainBody.js.map
@@ -1,16 +1,16 @@
1
- import { IRequestBodyValidator } from "../options/IRequestBodyValidator";
2
- /**
3
- * Type safe body decorator.
4
- *
5
- * `TypedBody` is a decoratur function getting `application/json` typed data from
6
- * request body. Also, it validates the request body data type through
7
- * [typia](https://github.com/samchon/typia) and the validation speed is
8
- * maximum 15,000x times faster than `class-validator`.
9
- *
10
- * For reference, when the request body data is not following the promised type `T`,
11
- * `BadRequestException` error (status code: 400) would be thrown.
12
- *
13
- * @param validator Custom validator if required. Default is `typia.assert()`
14
- * @author Jeongho Nam - https://github.com/samchon
15
- */
16
- export declare function TypedBody<T>(validator?: IRequestBodyValidator<T>): ParameterDecorator;
1
+ import { IRequestBodyValidator } from "../options/IRequestBodyValidator";
2
+ /**
3
+ * Type safe body decorator.
4
+ *
5
+ * `TypedBody` is a decoratur function getting `application/json` typed data from
6
+ * request body. Also, it validates the request body data type through
7
+ * [typia](https://github.com/samchon/typia) and the validation speed is
8
+ * maximum 15,000x times faster than `class-validator`.
9
+ *
10
+ * For reference, when the request body data is not following the promised type `T`,
11
+ * `BadRequestException` error (status code: 400) would be thrown.
12
+ *
13
+ * @param validator Custom validator if required. Default is `typia.assert()`
14
+ * @author Jeongho Nam - https://github.com/samchon
15
+ */
16
+ export declare function TypedBody<T>(validator?: IRequestBodyValidator<T>): ParameterDecorator;
@@ -1,95 +1,95 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.TypedBody = void 0;
43
- var common_1 = require("@nestjs/common");
44
- var raw_body_1 = __importDefault(require("raw-body"));
45
- var typia_1 = require("typia");
46
- var validate_request_body_1 = require("./internal/validate_request_body");
47
- /**
48
- * Type safe body decorator.
49
- *
50
- * `TypedBody` is a decoratur function getting `application/json` typed data from
51
- * request body. Also, it validates the request body data type through
52
- * [typia](https://github.com/samchon/typia) and the validation speed is
53
- * maximum 15,000x times faster than `class-validator`.
54
- *
55
- * For reference, when the request body data is not following the promised type `T`,
56
- * `BadRequestException` error (status code: 400) would be thrown.
57
- *
58
- * @param validator Custom validator if required. Default is `typia.assert()`
59
- * @author Jeongho Nam - https://github.com/samchon
60
- */
61
- function TypedBody(validator) {
62
- var checker = (0, validate_request_body_1.validate_request_body)("TypedBody")(validator);
63
- return (0, common_1.createParamDecorator)(function TypedBody(_unknown, context) {
64
- return __awaiter(this, void 0, void 0, function () {
65
- var request, data, _a, _b, _c;
66
- return __generator(this, function (_d) {
67
- switch (_d.label) {
68
- case 0:
69
- request = context.switchToHttp().getRequest();
70
- if (!request.is("application/json")) {
71
- throw new common_1.BadRequestException("Request body is not the application/json.");
72
- }
73
- if (!request.body) return [3 /*break*/, 1];
74
- _a = request.body;
75
- return [3 /*break*/, 3];
76
- case 1:
77
- _c = (_b = JSON).parse;
78
- return [4 /*yield*/, (0, raw_body_1.default)(request, "utf8")];
79
- case 2:
80
- _a = _c.apply(_b, [(_d.sent()).trim()]);
81
- _d.label = 3;
82
- case 3:
83
- data = _a;
84
- checker(data);
85
- return [2 /*return*/, data];
86
- }
87
- });
88
- });
89
- })();
90
- }
91
- exports.TypedBody = TypedBody;
92
- Object.assign(TypedBody, typia_1.is);
93
- Object.assign(TypedBody, typia_1.assert);
94
- Object.assign(TypedBody, typia_1.validate);
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.TypedBody = void 0;
43
+ var common_1 = require("@nestjs/common");
44
+ var raw_body_1 = __importDefault(require("raw-body"));
45
+ var typia_1 = require("typia");
46
+ var validate_request_body_1 = require("./internal/validate_request_body");
47
+ /**
48
+ * Type safe body decorator.
49
+ *
50
+ * `TypedBody` is a decoratur function getting `application/json` typed data from
51
+ * request body. Also, it validates the request body data type through
52
+ * [typia](https://github.com/samchon/typia) and the validation speed is
53
+ * maximum 15,000x times faster than `class-validator`.
54
+ *
55
+ * For reference, when the request body data is not following the promised type `T`,
56
+ * `BadRequestException` error (status code: 400) would be thrown.
57
+ *
58
+ * @param validator Custom validator if required. Default is `typia.assert()`
59
+ * @author Jeongho Nam - https://github.com/samchon
60
+ */
61
+ function TypedBody(validator) {
62
+ var checker = (0, validate_request_body_1.validate_request_body)("TypedBody")(validator);
63
+ return (0, common_1.createParamDecorator)(function TypedBody(_unknown, context) {
64
+ return __awaiter(this, void 0, void 0, function () {
65
+ var request, data, _a, _b, _c;
66
+ return __generator(this, function (_d) {
67
+ switch (_d.label) {
68
+ case 0:
69
+ request = context.switchToHttp().getRequest();
70
+ if (!request.is("application/json")) {
71
+ throw new common_1.BadRequestException("Request body is not the application/json.");
72
+ }
73
+ if (!request.body) return [3 /*break*/, 1];
74
+ _a = request.body;
75
+ return [3 /*break*/, 3];
76
+ case 1:
77
+ _c = (_b = JSON).parse;
78
+ return [4 /*yield*/, (0, raw_body_1.default)(request, "utf8")];
79
+ case 2:
80
+ _a = _c.apply(_b, [(_d.sent()).trim()]);
81
+ _d.label = 3;
82
+ case 3:
83
+ data = _a;
84
+ checker(data);
85
+ return [2 /*return*/, data];
86
+ }
87
+ });
88
+ });
89
+ })();
90
+ }
91
+ exports.TypedBody = TypedBody;
92
+ Object.assign(TypedBody, typia_1.is);
93
+ Object.assign(TypedBody, typia_1.assert);
94
+ Object.assign(TypedBody, typia_1.validate);
95
95
  //# sourceMappingURL=TypedBody.js.map
@@ -1,25 +1,25 @@
1
- /**
2
- * Type safe URL parameter decorator.
3
- *
4
- * `TypedParam` is a decorator function getting specific typed parameter from the
5
- * HTTP request URL. It's almost same with the {@link nest.Param}, but `TypedParam`
6
- * can specify the parameter type manually. Beside, the {@link nest.Param} always
7
- * parses all of the parameters as string type.
8
- *
9
- * ```typescript
10
- * \@TypedRoute.Get("shopping/sales/:section/:id/:paused")
11
- * public async pause
12
- * (
13
- * \@TypedParam("section", "string") section: string,
14
- * \@TypedParam("id", "number") id: number,
15
- * \@TypedParam("paused", "boolean", true) paused: boolean | null
16
- * ): Promise<void>;
17
- * ```
18
- *
19
- * @param name URL Parameter name
20
- * @param type Type of the URL parameter
21
- * @returns Parameter decorator
22
- *
23
- * @author Jeongho Nam - https://github.com/samchon
24
- */
25
- export declare function TypedParam(name: string, type?: "boolean" | "number" | "string" | "uuid", nullable?: boolean): ParameterDecorator;
1
+ /**
2
+ * Type safe URL parameter decorator.
3
+ *
4
+ * `TypedParam` is a decorator function getting specific typed parameter from the
5
+ * HTTP request URL. It's almost same with the {@link nest.Param}, but `TypedParam`
6
+ * can specify the parameter type manually. Beside, the {@link nest.Param} always
7
+ * parses all of the parameters as string type.
8
+ *
9
+ * ```typescript
10
+ * \@TypedRoute.Get("shopping/sales/:section/:id/:paused")
11
+ * public async pause
12
+ * (
13
+ * \@TypedParam("section", "string") section: string,
14
+ * \@TypedParam("id", "number") id: number,
15
+ * \@TypedParam("paused", "boolean", true) paused: boolean | null
16
+ * ): Promise<void>;
17
+ * ```
18
+ *
19
+ * @param name URL Parameter name
20
+ * @param type Type of the URL parameter
21
+ * @returns Parameter decorator
22
+ *
23
+ * @author Jeongho Nam - https://github.com/samchon
24
+ */
25
+ export declare function TypedParam(name: string, type?: "boolean" | "number" | "string" | "uuid", nullable?: boolean): ParameterDecorator;
@@ -1,62 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypedParam = void 0;
4
- var common_1 = require("@nestjs/common");
5
- /**
6
- * Type safe URL parameter decorator.
7
- *
8
- * `TypedParam` is a decorator function getting specific typed parameter from the
9
- * HTTP request URL. It's almost same with the {@link nest.Param}, but `TypedParam`
10
- * can specify the parameter type manually. Beside, the {@link nest.Param} always
11
- * parses all of the parameters as string type.
12
- *
13
- * ```typescript
14
- * \@TypedRoute.Get("shopping/sales/:section/:id/:paused")
15
- * public async pause
16
- * (
17
- * \@TypedParam("section", "string") section: string,
18
- * \@TypedParam("id", "number") id: number,
19
- * \@TypedParam("paused", "boolean", true) paused: boolean | null
20
- * ): Promise<void>;
21
- * ```
22
- *
23
- * @param name URL Parameter name
24
- * @param type Type of the URL parameter
25
- * @returns Parameter decorator
26
- *
27
- * @author Jeongho Nam - https://github.com/samchon
28
- */
29
- function TypedParam(name, type, nullable) {
30
- if (type === void 0) { type = "string"; }
31
- if (nullable === void 0) { nullable = false; }
32
- return (0, common_1.createParamDecorator)(function TypedParam(_a, ctx) {
33
- var request = ctx.switchToHttp().getRequest();
34
- var str = request.params[name];
35
- if (nullable === true && str === "null")
36
- return null;
37
- else if (type === "boolean") {
38
- if (str === "true" || str === "1")
39
- return true;
40
- else if (str === "false" || str === "0")
41
- return false;
42
- else
43
- throw new common_1.BadRequestException("Value of the URL parameter '".concat(name, "' is not a boolean."));
44
- }
45
- else if (type === "number") {
46
- var value = Number(str);
47
- if (isNaN(value))
48
- throw new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a number."));
49
- return value;
50
- }
51
- else if (type === "uuid") {
52
- if (UUID_PATTERN.test(str) === false)
53
- throw new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a valid UUID."));
54
- return str;
55
- }
56
- else
57
- return str;
58
- })(name);
59
- }
60
- exports.TypedParam = TypedParam;
61
- var UUID_PATTERN = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypedParam = void 0;
4
+ var common_1 = require("@nestjs/common");
5
+ /**
6
+ * Type safe URL parameter decorator.
7
+ *
8
+ * `TypedParam` is a decorator function getting specific typed parameter from the
9
+ * HTTP request URL. It's almost same with the {@link nest.Param}, but `TypedParam`
10
+ * can specify the parameter type manually. Beside, the {@link nest.Param} always
11
+ * parses all of the parameters as string type.
12
+ *
13
+ * ```typescript
14
+ * \@TypedRoute.Get("shopping/sales/:section/:id/:paused")
15
+ * public async pause
16
+ * (
17
+ * \@TypedParam("section", "string") section: string,
18
+ * \@TypedParam("id", "number") id: number,
19
+ * \@TypedParam("paused", "boolean", true) paused: boolean | null
20
+ * ): Promise<void>;
21
+ * ```
22
+ *
23
+ * @param name URL Parameter name
24
+ * @param type Type of the URL parameter
25
+ * @returns Parameter decorator
26
+ *
27
+ * @author Jeongho Nam - https://github.com/samchon
28
+ */
29
+ function TypedParam(name, type, nullable) {
30
+ if (type === void 0) { type = "string"; }
31
+ if (nullable === void 0) { nullable = false; }
32
+ return (0, common_1.createParamDecorator)(function TypedParam(_a, ctx) {
33
+ var request = ctx.switchToHttp().getRequest();
34
+ var str = request.params[name];
35
+ if (nullable === true && str === "null")
36
+ return null;
37
+ else if (type === "boolean") {
38
+ if (str === "true" || str === "1")
39
+ return true;
40
+ else if (str === "false" || str === "0")
41
+ return false;
42
+ else
43
+ throw new common_1.BadRequestException("Value of the URL parameter '".concat(name, "' is not a boolean."));
44
+ }
45
+ else if (type === "number") {
46
+ var value = Number(str);
47
+ if (isNaN(value))
48
+ throw new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a number."));
49
+ return value;
50
+ }
51
+ else if (type === "uuid") {
52
+ if (UUID_PATTERN.test(str) === false)
53
+ throw new common_1.BadRequestException("Value of the URL parameter \"".concat(name, "\" is not a valid UUID."));
54
+ return str;
55
+ }
56
+ else
57
+ return str;
58
+ })(name);
59
+ }
60
+ exports.TypedParam = TypedParam;
61
+ var UUID_PATTERN = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
62
62
  //# sourceMappingURL=TypedParam.js.map
@@ -1,14 +1,14 @@
1
- /**
2
- * Type safe URL query decorator.
3
- *
4
- * `TypedQuery` is a decorator function that can parse URL query string. It is almost
5
- * same with {@link nest.Query}, but it can automatically cast property type following
6
- * its DTO definition. Also, `TypedQuery` performs type validation.
7
- *
8
- * For referecen, when URL query parameters are different with their promised
9
- * type `T`, `BadRequestException` error (status code: 400) would be thrown.
10
- *
11
- * @returns Parameter decorator
12
- * @author Jeongho Nam - https://github.com/samchon
13
- */
14
- export declare function TypedQuery<T>(decoder?: (params: URLSearchParams) => T): ParameterDecorator;
1
+ /**
2
+ * Type safe URL query decorator.
3
+ *
4
+ * `TypedQuery` is a decorator function that can parse URL query string. It is almost
5
+ * same with {@link nest.Query}, but it can automatically cast property type following
6
+ * its DTO definition. Also, `TypedQuery` performs type validation.
7
+ *
8
+ * For referecen, when URL query parameters are different with their promised
9
+ * type `T`, `BadRequestException` error (status code: 400) would be thrown.
10
+ *
11
+ * @returns Parameter decorator
12
+ * @author Jeongho Nam - https://github.com/samchon
13
+ */
14
+ export declare function TypedQuery<T>(decoder?: (params: URLSearchParams) => T): ParameterDecorator;