@nestia/core 1.4.5 → 1.4.6

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 (33) hide show
  1. package/lib/decorators/EncryptedRoute.d.ts +4 -4
  2. package/lib/decorators/EncryptedRoute.js +4 -4
  3. package/lib/decorators/TypedBody.d.ts +1 -1
  4. package/lib/decorators/TypedBody.js +1 -1
  5. package/lib/decorators/TypedHeaders.d.ts +42 -0
  6. package/lib/decorators/TypedHeaders.js +114 -0
  7. package/lib/decorators/TypedHeaders.js.map +1 -0
  8. package/lib/decorators/TypedQuery.d.ts +10 -3
  9. package/lib/decorators/TypedQuery.js +9 -2
  10. package/lib/decorators/TypedQuery.js.map +1 -1
  11. package/lib/decorators/TypedRoute.d.ts +5 -4
  12. package/lib/decorators/TypedRoute.js +5 -4
  13. package/lib/decorators/TypedRoute.js.map +1 -1
  14. package/lib/module.d.ts +1 -0
  15. package/lib/module.js +1 -0
  16. package/lib/module.js.map +1 -1
  17. package/lib/programmers/TypedHeadersProgrammer.d.ts +5 -0
  18. package/lib/programmers/TypedHeadersProgrammer.js +300 -0
  19. package/lib/programmers/TypedHeadersProgrammer.js.map +1 -0
  20. package/lib/programmers/TypedQueryProgrammer.js +11 -8
  21. package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
  22. package/lib/transformers/ParameterDecoratorTransformer.js +6 -0
  23. package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
  24. package/package.json +3 -3
  25. package/src/decorators/EncryptedRoute.ts +4 -4
  26. package/src/decorators/TypedBody.ts +1 -1
  27. package/src/decorators/TypedHeaders.ts +95 -0
  28. package/src/decorators/TypedQuery.ts +10 -3
  29. package/src/decorators/TypedRoute.ts +5 -4
  30. package/src/module.ts +1 -0
  31. package/src/programmers/TypedHeadersProgrammer.ts +304 -0
  32. package/src/programmers/TypedQueryProgrammer.ts +31 -25
  33. package/src/transformers/ParameterDecoratorTransformer.ts +5 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.TypedHeadersProgrammer = void 0;
54
+ var typescript_1 = __importDefault(require("typescript"));
55
+ var IdentifierFactory_1 = require("typia/lib/factories/IdentifierFactory");
56
+ var MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
57
+ var MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
58
+ var StatementFactory_1 = require("typia/lib/factories/StatementFactory");
59
+ var AssertProgrammer_1 = require("typia/lib/programmers/AssertProgrammer");
60
+ var FunctionImporeter_1 = require("typia/lib/programmers/helpers/FunctionImporeter");
61
+ var Escaper_1 = require("typia/lib/utils/Escaper");
62
+ var TypedHeadersProgrammer;
63
+ (function (TypedHeadersProgrammer) {
64
+ TypedHeadersProgrammer.generate = function (project) {
65
+ return function (modulo) {
66
+ return function (type) {
67
+ var object = getObject(project.checker)(type);
68
+ return decode(project, modulo)(type, object);
69
+ };
70
+ };
71
+ };
72
+ var getObject = function (checker) {
73
+ return function (type) {
74
+ var e_1, _a;
75
+ var collection = new MetadataCollection_1.MetadataCollection();
76
+ var metadata = MetadataFactory_1.MetadataFactory.analyze(checker)({
77
+ resolve: false,
78
+ constant: true,
79
+ absorb: true,
80
+ })(collection)(type);
81
+ if (metadata.objects.length !== 1 || metadata.bucket() !== 1)
82
+ throw new Error(ErrorMessages.object(metadata)("only one object type is allowed."));
83
+ else if (metadata.nullable === true)
84
+ throw new Error(ErrorMessages.object(metadata)("query parameter cannot be null."));
85
+ else if (metadata.isRequired() === false)
86
+ throw new Error(ErrorMessages.object(metadata)("query parameter cannot be undefined."));
87
+ var object = metadata.objects[0];
88
+ if (object.properties.some(function (p) { return !p.key.isSoleLiteral(); }))
89
+ throw new Error(ErrorMessages.object(metadata)("dynamic property is not allowed."));
90
+ try {
91
+ for (var _b = __values(object.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
92
+ var property = _c.value;
93
+ var key = property.key.constants[0]
94
+ .values[0];
95
+ var value = property.value;
96
+ validate(object)(key)(value, 0);
97
+ }
98
+ }
99
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
100
+ finally {
101
+ try {
102
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
103
+ }
104
+ finally { if (e_1) throw e_1.error; }
105
+ }
106
+ return object;
107
+ };
108
+ };
109
+ var validate = function (obj) {
110
+ return function (key) {
111
+ return function (value, depth) {
112
+ var e_2, _a, e_3, _b, e_4, _c, e_5, _d, e_6, _e;
113
+ if (depth === 1 && value.isRequired() === false)
114
+ throw new Error(ErrorMessages.property(obj)(key)("optional type is not allowed in array."));
115
+ else if (value.nullable === true)
116
+ throw new Error(ErrorMessages.property(obj)(key)("nullable type is not allowed."));
117
+ else if (value.maps.length ||
118
+ value.sets.length ||
119
+ value.objects.length)
120
+ throw new Error(ErrorMessages.property(obj)(key)("object type is not allowed"));
121
+ var atom = [];
122
+ try {
123
+ for (var _f = __values(value.atomics), _g = _f.next(); !_g.done; _g = _f.next()) {
124
+ var type = _g.value;
125
+ atom.push(type);
126
+ }
127
+ }
128
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
129
+ finally {
130
+ try {
131
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
132
+ }
133
+ finally { if (e_2) throw e_2.error; }
134
+ }
135
+ try {
136
+ for (var _h = __values(value.constants), _j = _h.next(); !_j.done; _j = _h.next()) {
137
+ var type = _j.value.type;
138
+ atom.push(type);
139
+ }
140
+ }
141
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
142
+ finally {
143
+ try {
144
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
145
+ }
146
+ finally { if (e_3) throw e_3.error; }
147
+ }
148
+ if (depth === 0 && (value.arrays.length || value.arrays.length)) {
149
+ if (atom.length)
150
+ throw new Error(ErrorMessages.property(obj)(key)("union type is not allowed"));
151
+ try {
152
+ for (var _k = __values(value.arrays), _l = _k.next(); !_l.done; _l = _k.next()) {
153
+ var array = _l.value;
154
+ atom.push.apply(atom, __spreadArray([], __read(validate(obj)(key)(array.value, depth + 1)), false));
155
+ }
156
+ }
157
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
158
+ finally {
159
+ try {
160
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
161
+ }
162
+ finally { if (e_4) throw e_4.error; }
163
+ }
164
+ try {
165
+ for (var _m = __values(value.tuples), _o = _m.next(); !_o.done; _o = _m.next()) {
166
+ var tuple = _o.value;
167
+ try {
168
+ for (var _p = (e_6 = void 0, __values(tuple.elements)), _q = _p.next(); !_q.done; _q = _p.next()) {
169
+ var elem = _q.value;
170
+ atom.push.apply(atom, __spreadArray([], __read(validate(obj)(key)(elem, depth + 1)), false));
171
+ }
172
+ }
173
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
174
+ finally {
175
+ try {
176
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
177
+ }
178
+ finally { if (e_6) throw e_6.error; }
179
+ }
180
+ }
181
+ }
182
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
183
+ finally {
184
+ try {
185
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
186
+ }
187
+ finally { if (e_5) throw e_5.error; }
188
+ }
189
+ }
190
+ else if (value.arrays.length || value.tuples.length)
191
+ throw new Error(ErrorMessages.property(obj)(key)("double-array type is not allowed"));
192
+ var size = new Set(atom).size;
193
+ if (size === 0)
194
+ throw new Error(ErrorMessages.property(obj)(key)("unknown type"));
195
+ else if (size > 1)
196
+ throw new Error(ErrorMessages.property(obj)(key)("union type is not allowed"));
197
+ return atom;
198
+ };
199
+ };
200
+ };
201
+ var decode = function (project, modulo) {
202
+ return function (type, object) {
203
+ return typescript_1.default.factory.createArrowFunction(undefined, undefined, [IdentifierFactory_1.IdentifierFactory.parameter("input")], undefined, undefined, decode_object(project, modulo)(type, object));
204
+ };
205
+ };
206
+ var decode_object = function (project, modulo) {
207
+ return function (type, object) {
208
+ var assert = AssertProgrammer_1.AssertProgrammer.write(__assign(__assign({}, project), { options: {
209
+ numeric: true,
210
+ finite: true,
211
+ } }))(modulo)(false)(type);
212
+ var output = typescript_1.default.factory.createIdentifier("output");
213
+ var importer = new FunctionImporeter_1.FunctionImporter();
214
+ var statements = [
215
+ StatementFactory_1.StatementFactory.constant("output", typescript_1.default.factory.createObjectLiteralExpression(object.properties.map(function (prop) {
216
+ return decode_regular_property(importer)(object)(prop);
217
+ }), true)),
218
+ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createCallExpression(assert, undefined, [
219
+ output,
220
+ ])),
221
+ ];
222
+ return typescript_1.default.factory.createBlock(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(statements), false), true);
223
+ };
224
+ };
225
+ var decode_regular_property = function (importer) {
226
+ return function (object) {
227
+ return function (property) {
228
+ var key = property.key.constants[0].values[0];
229
+ var value = property.value;
230
+ var _a = __read(value.atomics
231
+ .length
232
+ ? [value.atomics[0], false]
233
+ : value.constants.length
234
+ ? [value.constants[0].type, false]
235
+ : (function () {
236
+ var _a, _b;
237
+ var meta = (_b = (_a = value.arrays[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : value.tuples[0].elements[0];
238
+ return meta.atomics.length
239
+ ? [meta.atomics[0], true]
240
+ : [meta.constants[0].type, true];
241
+ })(), 2), type = _a[0], isArray = _a[1];
242
+ if (key.toLowerCase() !== key)
243
+ throw new Error(ErrorMessages.property(object)(key)("property \"".concat(key, "\" must be lower case.")));
244
+ else if (isArray && SINGULAR.has(key))
245
+ throw new Error(ErrorMessages.property(object)(key)("property \"".concat(key, "\" cannot be array.")));
246
+ else if (!isArray && key === "set-cookie")
247
+ throw new Error(ErrorMessages.property(object)(key)("property \"".concat(key, "\" must be array.")));
248
+ var accessor = IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("input"))(key);
249
+ return typescript_1.default.factory.createPropertyAssignment(Escaper_1.Escaper.variable(key)
250
+ ? key
251
+ : typescript_1.default.factory.createStringLiteral(key), isArray
252
+ ? key === "set-cookie"
253
+ ? accessor
254
+ : typescript_1.default.factory.createCallChain(typescript_1.default.factory.createPropertyAccessChain(typescript_1.default.factory.createCallChain(typescript_1.default.factory.createPropertyAccessChain(accessor, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionDotToken), typescript_1.default.factory.createIdentifier("split")), undefined, undefined, [
255
+ typescript_1.default.factory.createStringLiteral(key === "cookie" ? "; " : ", "),
256
+ ]), typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionDotToken), typescript_1.default.factory.createIdentifier("map")), undefined, undefined, [importer.use(type)])
257
+ : decode_value(importer)(type)(accessor));
258
+ };
259
+ };
260
+ };
261
+ var decode_value = function (importer) {
262
+ return function (type) {
263
+ return function (value) {
264
+ return type === "string"
265
+ ? value
266
+ : typescript_1.default.factory.createCallExpression(importer.use(type), undefined, [value]);
267
+ };
268
+ };
269
+ };
270
+ })(TypedHeadersProgrammer || (exports.TypedHeadersProgrammer = TypedHeadersProgrammer = {}));
271
+ var ErrorMessages;
272
+ (function (ErrorMessages) {
273
+ ErrorMessages.object = function (type) { return function (message) {
274
+ return "Error on nestia.core.TypedHeaders<".concat(type.getName(), ">(): ").concat(message);
275
+ }; };
276
+ ErrorMessages.property = function (obj) { return function (key) { return function (message) {
277
+ return "Error on nestia.core.TypedHeaders<".concat(obj.name, ">(): property \"").concat(key, "\" - ").concat(message);
278
+ }; }; };
279
+ })(ErrorMessages || (ErrorMessages = {}));
280
+ var SINGULAR = new Set([
281
+ "age",
282
+ "authorization",
283
+ "content-length",
284
+ "content-type",
285
+ "etag",
286
+ "expires",
287
+ "from",
288
+ "host",
289
+ "if-modified-since",
290
+ "if-unmodified-since",
291
+ "last-modified",
292
+ "location",
293
+ "max-forwards",
294
+ "proxy-authorization",
295
+ "referer",
296
+ "retry-after",
297
+ "server",
298
+ "user-agent",
299
+ ]);
300
+ //# sourceMappingURL=TypedHeadersProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedHeadersProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedHeadersProgrammer.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ var MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
58
58
  var StatementFactory_1 = require("typia/lib/factories/StatementFactory");
59
59
  var AssertProgrammer_1 = require("typia/lib/programmers/AssertProgrammer");
60
60
  var FunctionImporeter_1 = require("typia/lib/programmers/helpers/FunctionImporeter");
61
+ var Escaper_1 = require("typia/lib/utils/Escaper");
61
62
  var TypedQueryProgrammer;
62
63
  (function (TypedQueryProgrammer) {
63
64
  TypedQueryProgrammer.generate = function (project) {
@@ -84,10 +85,13 @@ var TypedQueryProgrammer;
84
85
  else if (metadata.isRequired() === false)
85
86
  throw new Error(ErrorMessages.object(metadata)("query parameter cannot be undefined."));
86
87
  var object = metadata.objects[0];
88
+ if (object.properties.some(function (p) { return !p.key.isSoleLiteral(); }))
89
+ throw new Error(ErrorMessages.object(metadata)("dynamic property is not allowed."));
87
90
  try {
88
91
  for (var _b = __values(object.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
89
92
  var property = _c.value;
90
- var key = property.key;
93
+ var key = property.key.constants[0]
94
+ .values[0];
91
95
  var value = property.value;
92
96
  validate(object)(key)(value, 0);
93
97
  }
@@ -207,15 +211,12 @@ var TypedQueryProgrammer;
207
211
  var importer = new FunctionImporeter_1.FunctionImporter();
208
212
  var optionalArrays = [];
209
213
  var statements = __spreadArray(__spreadArray([
210
- StatementFactory_1.StatementFactory.constant("output", typescript_1.default.factory.createObjectLiteralExpression(object.properties
211
- .filter(function (prop) { return prop.key.isSoleLiteral(); })
212
- .map(function (prop) {
214
+ StatementFactory_1.StatementFactory.constant("output", typescript_1.default.factory.createObjectLiteralExpression(object.properties.map(function (prop) {
213
215
  if (!prop.value.isRequired() &&
214
216
  prop.value.arrays.length +
215
217
  prop.value.tuples.length >
216
218
  0)
217
- optionalArrays.push(prop.key.constants[0]
218
- .values[0]);
219
+ optionalArrays.push(prop.key.constants[0].values[0]);
219
220
  return decode_regular_property(importer)(prop);
220
221
  }), true))
221
222
  ], __read(optionalArrays.map(function (key) {
@@ -245,7 +246,9 @@ var TypedQueryProgrammer;
245
246
  ? [meta.atomics[0], true]
246
247
  : [meta.constants[0].type, true];
247
248
  })(), 2), type = _a[0], isArray = _a[1];
248
- return typescript_1.default.factory.createPropertyAssignment(key, isArray
249
+ return typescript_1.default.factory.createPropertyAssignment(Escaper_1.Escaper.variable(key)
250
+ ? key
251
+ : typescript_1.default.factory.createStringLiteral(key), isArray
249
252
  ? typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("input.getAll"), undefined, [typescript_1.default.factory.createStringLiteral(key)]))("map"), undefined, [
250
253
  typescript_1.default.factory.createArrowFunction(undefined, undefined, [IdentifierFactory_1.IdentifierFactory.parameter("elem")], undefined, undefined, decode_value(importer)(type)(typescript_1.default.factory.createIdentifier("elem"))),
251
254
  ])
@@ -268,7 +271,7 @@ var ErrorMessages;
268
271
  return "Error on nestia.core.TypedQuery<".concat(type.getName(), ">(): ").concat(message);
269
272
  }; };
270
273
  ErrorMessages.property = function (obj) { return function (key) { return function (message) {
271
- return "Error on nestia.core.TypedQuery<".concat(obj.name, ">(): property ").concat(key.getName(), " - ").concat(message);
274
+ return "Error on nestia.core.TypedQuery<".concat(obj.name, ">(): property \"").concat(key, "\" - ").concat(message);
272
275
  }; }; };
273
276
  })(ErrorMessages || (ErrorMessages = {}));
274
277
  //# sourceMappingURL=TypedQueryProgrammer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ var path_1 = __importDefault(require("path"));
8
8
  var typescript_1 = __importDefault(require("typescript"));
9
9
  var PlainBodyProgrammer_1 = require("../programmers/PlainBodyProgrammer");
10
10
  var TypedBodyProgrammer_1 = require("../programmers/TypedBodyProgrammer");
11
+ var TypedHeadersProgrammer_1 = require("../programmers/TypedHeadersProgrammer");
11
12
  var TypedParamProgrammer_1 = require("../programmers/TypedParamProgrammer");
12
13
  var TypedQueryProgrammer_1 = require("../programmers/TypedQueryProgrammer");
13
14
  var ParameterDecoratorTransformer;
@@ -58,6 +59,11 @@ var FUNCTORS = {
58
59
  ? parameters
59
60
  : [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(project)(modulo)(type)];
60
61
  }; }; }; },
62
+ TypedHeaders: function (project) { return function (modulo) { return function (parameters) { return function (type) {
63
+ return parameters.length
64
+ ? parameters
65
+ : [TypedHeadersProgrammer_1.TypedHeadersProgrammer.generate(project)(modulo)(type)];
66
+ }; }; }; },
61
67
  TypedParam: function (project) { return function () { return TypedParamProgrammer_1.TypedParamProgrammer.generate(project); }; },
62
68
  TypedQuery: function (project) { return function (modulo) { return function (parameters) { return function (type) {
63
69
  return parameters.length
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/core",
3
- "version": "1.4.5",
3
+ "version": "1.4.6",
4
4
  "description": "Super-fast validation decorators of NestJS",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -44,7 +44,7 @@
44
44
  "raw-body": ">= 2.0.0",
45
45
  "reflect-metadata": ">= 0.1.12",
46
46
  "rxjs": ">= 6.0.0",
47
- "typia": "^4.1.8"
47
+ "typia": "^4.1.12"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@nestia/fetcher": ">= 1.4.0",
@@ -56,7 +56,7 @@
56
56
  "reflect-metadata": ">= 0.1.12",
57
57
  "rxjs": ">= 6.0.0",
58
58
  "typescript": ">= 4.7.4",
59
- "typia": ">= 4.1.6"
59
+ "typia": ">= 4.1.12"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@trivago/prettier-plugin-sort-imports": "^4.0.0",
@@ -38,10 +38,10 @@ import { route_error } from "./internal/route_error";
38
38
  * up JSON string conversion speed about 50x times faster than `class-transformer`,
39
39
  * even type safe through [typia](https://github.com/samchon/typia).
40
40
  *
41
- * For reference, router functions of `EncryptedRoute` can convert custom error classes
42
- * to regular {@link nest.HttpException} class automatically, through
43
- * {@link ExceptionManager}. Also, `EncryptedRoute` encrypts response body using those
44
- * options.
41
+ * For reference, if you try to invalid data that is not following the promised
42
+ * type `T`, 500 internal server error would be thrown. Also, as `EncryptedRoute`
43
+ * composes JSON string through `typia.assertStringify<T>()` function, it is not
44
+ * possible to modify response data through interceptors.
45
45
  *
46
46
  * - AES-128/256
47
47
  * - CBC mode
@@ -17,7 +17,7 @@ import { validate_request_body } from "./internal/validate_request_body";
17
17
  * `TypedBody` is a decoratur function getting `application/json` typed data from
18
18
  * request body. Also, it validates the request body data type through
19
19
  * [typia](https://github.com/samchon/typia) and the validation speed is
20
- * maximum 15,000x times faster than `class-validator`.
20
+ * maximum 20,000x times faster than `class-validator`.
21
21
  *
22
22
  * For reference, when the request body data is not following the promised type `T`,
23
23
  * `BadRequestException` error (status code: 400) would be thrown.
@@ -0,0 +1,95 @@
1
+ import {
2
+ BadRequestException,
3
+ ExecutionContext,
4
+ createParamDecorator,
5
+ } from "@nestjs/common";
6
+ import type express from "express";
7
+ import type { FastifyRequest } from "fastify";
8
+
9
+ import typia, { TypeGuardError, assert } from "typia";
10
+
11
+ import { TransformError } from "./internal/TransformError";
12
+
13
+ /**
14
+ * Type safe HTTP headers decorator.
15
+ *
16
+ * `TypedHeaders` is a decorator function that can parse HTTP headers. It is almost
17
+ * same with {@link nest.Headers}, but it can automatically cast property type following
18
+ * its DTO definition. Also, `TypedHeaders` performs type validation.
19
+ *
20
+ * For reference, target type `T` must follow such restrictions. Also, if actual HTTP
21
+ * header values are different with their promised type `T`, `BadRequestException`
22
+ * error (status code: 400) would be thrown.
23
+ *
24
+ * 1. Type `T` must be an object type
25
+ * 2. Do not allow dynamic property
26
+ * 3. Property key must be lower case
27
+ * 4. Property value cannot be `null`, but `undefined` is possible
28
+ * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
29
+ * 6. By the way, union type never be not allowed
30
+ * 7. Property `set-cookie` must be array type
31
+ * 8. Those properties cannot be array type
32
+ * - age
33
+ * - authorization
34
+ * - content-length
35
+ * - content-type
36
+ * - etag
37
+ * - expires
38
+ * - from
39
+ * - host
40
+ * - if-modified-since
41
+ * - if-unmodified-since
42
+ * - last-modified
43
+ * - location
44
+ * - max-forwards
45
+ * - proxy-authorization
46
+ * - referer
47
+ * - retry-after
48
+ * - server
49
+ * - user-agent
50
+ *
51
+ * @returns Parameter decorator
52
+ * @author Jeongho Nam - https://github.com/samchon
53
+ */
54
+ export function TypedHeaders<T extends object>(
55
+ decoder?: (headers: Record<string, string | string[] | undefined>) => T,
56
+ ): ParameterDecorator {
57
+ if (decoder === undefined) throw TransformError("TypedHeaders");
58
+
59
+ return createParamDecorator(function TypedHeaders(
60
+ _unknown: any,
61
+ context: ExecutionContext,
62
+ ) {
63
+ const request: express.Request | FastifyRequest = context
64
+ .switchToHttp()
65
+ .getRequest();
66
+ try {
67
+ return decoder(request.headers);
68
+ } catch (exp) {
69
+ if (typia.is<TypeGuardError>(exp))
70
+ throw new BadRequestException({
71
+ path: exp.path,
72
+ reason: exp.message,
73
+ expected: exp.expected,
74
+ value: exp.value,
75
+ message:
76
+ "Request query parameters are not following the promised type.",
77
+ });
78
+ throw exp;
79
+ }
80
+ })();
81
+ }
82
+
83
+ /**
84
+ * @internal
85
+ */
86
+ export namespace TypedHeaders {
87
+ export const boolean = (value: string | undefined) =>
88
+ value !== undefined ? value === "true" : undefined;
89
+ export const bigint = (value: string | undefined) =>
90
+ value !== undefined ? BigInt(value) : undefined;
91
+ export const number = (value: string | undefined) =>
92
+ value !== undefined ? Number(value) : undefined;
93
+ export const string = (value: string | undefined) => value;
94
+ }
95
+ Object.assign(TypedHeaders, assert);
@@ -17,13 +17,20 @@ import { TransformError } from "./internal/TransformError";
17
17
  * same with {@link nest.Query}, but it can automatically cast property type following
18
18
  * its DTO definition. Also, `TypedQuery` performs type validation.
19
19
  *
20
- * For referecen, when URL query parameters are different with their promised
21
- * type `T`, `BadRequestException` error (status code: 400) would be thrown.
20
+ * For reference, target type `T` must follw such restriction. Also, if actual URL
21
+ * query parameter values are different with their promised type `T`,
22
+ * `BadRequestException` error (status code: 400) would be thrown.
23
+ *
24
+ * 1. Type `T` must be an object type
25
+ * 2. Do not allow dynamic property
26
+ * 3. Prpoerty value cannot be `undefined`, but `null` is possible
27
+ * 4. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
28
+ * 5. By the way, union type never be not allowed
22
29
  *
23
30
  * @returns Parameter decorator
24
31
  * @author Jeongho Nam - https://github.com/samchon
25
32
  */
26
- export function TypedQuery<T>(
33
+ export function TypedQuery<T extends object>(
27
34
  decoder?: (params: URLSearchParams) => T,
28
35
  ): ParameterDecorator {
29
36
  if (decoder === undefined) throw TransformError("TypedQuery");