@nestia/core 1.0.7 → 1.0.9

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 (51) hide show
  1. package/README.md +24 -0
  2. package/lib/decorators/EncryptedBody.js +1 -1
  3. package/lib/decorators/EncryptedBody.js.map +1 -1
  4. package/lib/decorators/EncryptedRoute.js +1 -1
  5. package/lib/decorators/EncryptedRoute.js.map +1 -1
  6. package/lib/decorators/TypedBody.js +1 -8
  7. package/lib/decorators/TypedBody.js.map +1 -1
  8. package/lib/decorators/TypedQuery.d.ts +1 -0
  9. package/lib/decorators/TypedQuery.js +83 -0
  10. package/lib/decorators/TypedQuery.js.map +1 -0
  11. package/lib/module.d.ts +1 -0
  12. package/lib/module.js +1 -0
  13. package/lib/module.js.map +1 -1
  14. package/lib/programmers/TypedBodyProgrammer.d.ts +5 -0
  15. package/lib/programmers/TypedBodyProgrammer.js +46 -0
  16. package/lib/programmers/TypedBodyProgrammer.js.map +1 -0
  17. package/lib/programmers/TypedQueryProgrammer.d.ts +5 -0
  18. package/lib/programmers/TypedQueryProgrammer.js +166 -0
  19. package/lib/programmers/TypedQueryProgrammer.js.map +1 -0
  20. package/lib/programmers/TypedRouteProgrammer.d.ts +5 -0
  21. package/lib/programmers/TypedRouteProgrammer.js +47 -0
  22. package/lib/programmers/TypedRouteProgrammer.js.map +1 -0
  23. package/lib/transformers/{BodyTransformer.d.ts → MethodDecoratorTransformer.d.ts} +1 -1
  24. package/lib/transformers/MethodDecoratorTransformer.js +88 -0
  25. package/lib/transformers/MethodDecoratorTransformer.js.map +1 -0
  26. package/lib/transformers/MethodTransformer.js +3 -3
  27. package/lib/transformers/MethodTransformer.js.map +1 -1
  28. package/lib/transformers/{RouteTransformer.d.ts → ParameterDecoratorTransformer.d.ts} +1 -1
  29. package/lib/transformers/ParameterDecoratorTransformer.js +54 -0
  30. package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -0
  31. package/lib/transformers/ParameterTransformer.js +6 -3
  32. package/lib/transformers/ParameterTransformer.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/decorators/EncryptedBody.ts +1 -1
  35. package/src/decorators/EncryptedRoute.ts +1 -1
  36. package/src/decorators/TypedBody.ts +1 -8
  37. package/src/decorators/TypedQuery.ts +42 -0
  38. package/src/module.ts +1 -0
  39. package/src/programmers/TypedBodyProgrammer.ts +50 -0
  40. package/src/programmers/TypedQueryProgrammer.ts +181 -0
  41. package/src/programmers/TypedRouteProgrammer.ts +54 -0
  42. package/src/transformers/MethodDecoratorTransformer.ts +91 -0
  43. package/src/transformers/MethodTransformer.ts +7 -3
  44. package/src/transformers/ParameterDecoratorTransformer.ts +79 -0
  45. package/src/transformers/ParameterTransformer.ts +11 -3
  46. package/lib/transformers/BodyTransformer.js +0 -84
  47. package/lib/transformers/BodyTransformer.js.map +0 -1
  48. package/lib/transformers/RouteTransformer.js +0 -127
  49. package/lib/transformers/RouteTransformer.js.map +0 -1
  50. package/src/transformers/BodyTransformer.ts +0 -116
  51. package/src/transformers/RouteTransformer.ts +0 -139
package/README.md CHANGED
@@ -176,6 +176,30 @@ Also, it supports safe and fast JSON stringify function pipe, which is maximum 1
176
176
  - `TypedRoute.Patch()`
177
177
  - `TypedRoute.Delete()`
178
178
 
179
+ ### TypedQuery
180
+ `TypedQuery` is a decorator function for `URLSearchParams` of `path`.
181
+
182
+ Also, it supports automatic type casting for property types and super-fast validation pipe.
183
+
184
+ ```typescript
185
+ interface SomeSearchParams {
186
+ page: number; // automatic casting
187
+ limit?: number; // does not allow null, but undefined does
188
+
189
+ extension?: string; // only atomic or constant typed properties
190
+ status: "alive" | "erased" | "both"; // properties are allowed
191
+ }
192
+
193
+ @Controller("some-path")
194
+ export class SomeController {
195
+ @TypedRoute.Get()
196
+ public async index(
197
+ // automatic type casting and validation
198
+ @TypedQuery() query: SomeSearchParams
199
+ ): Promise<SomeEntity[]>;
200
+ }
201
+ ```
202
+
179
203
  ### Encryption
180
204
  `@nestia/core` supports special decorator functions `EncryptedBody` and `EncryptedRout`. They're almost same with [TypedBody](#typedbody) and [TypedRoute](#typedroute), but there's only one thing different - it encrypts JSON data through AES-128/256 algorithm.
181
205
 
@@ -81,7 +81,7 @@ function EncryptedBody(validator) {
81
81
  throw new common_1.BadRequestException("Request body is not the text/plain.");
82
82
  param = Reflect.getMetadata(EncryptedConstant_1.ENCRYPTION_METADATA_KEY, ctx.getClass());
83
83
  if (!param)
84
- throw new Error("Error on EncryptedBody(): no encryption password is given.");
84
+ throw new Error("Error on nestia.core.EncryptedBody(): no encryption password is given.");
85
85
  headers = new Singleton_1.Singleton(function () {
86
86
  return (0, headers_to_object_1.headers_to_object)(request.headers);
87
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedBody.js","sourceRoot":"","sources":["../../src/decorators/EncryptedBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,yCAIwB;AAExB,sDAA2B;AAC3B,+BAA6C;AAG7C,gDAA+C;AAC/C,kEAAuE;AACvE,kEAAiE;AACjE,0EAAyE;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,aAAa,CAAI,SAAoC;IACjE,IAAM,OAAO,GAAG,IAAA,6CAAqB,EAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,IAAA,6BAAoB,EAAC,SAAe,aAAa,CACpD,QAAa,EACb,GAAqB;;;;;;wBAEf,OAAO,GAAoB,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;wBACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;4BAC1B,MAAM,IAAI,4BAAmB,CACzB,qCAAqC,CACxC,CAAC;wBAEA,KAAK,GAGO,OAAO,CAAC,WAAW,CACjC,2CAAuB,EACvB,GAAG,CAAC,QAAQ,EAAE,CACjB,CAAC;wBACF,IAAI,CAAC,KAAK;4BACN,MAAM,IAAI,KAAK,CACX,4DAA4D,CAC/D,CAAC;wBAGA,OAAO,GAAsC,IAAI,qBAAS,CAAC;4BAC7D,OAAA,IAAA,qCAAiB,EAAC,OAAO,CAAC,OAAO,CAAC;wBAAlC,CAAkC,CACrC,CAAC;wBACoB,qBAAM,IAAA,kBAAG,EAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAA1C,IAAI,GAAW,CAAC,SAA0B,CAAC,CAAC,IAAI,EAAE;wBAClD,QAAQ,GACV,OAAO,KAAK,KAAK,UAAU;4BACvB,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,MAAA,EAAE,EAAE,KAAK,CAAC;4BAChD,CAAC,CAAC,KAAK,CAAC;wBACV,QAAQ,GACV,QAAQ,CAAC,QAAQ,KAAK,SAAS;4BAC3B,CAAC,CAAC,KAAK;4BACP,CAAC,CAAC,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU;gCACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,MAAA,EAAE,EAAE,IAAI,CAAC;gCAC3D,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAGtB,IAAI,GAAQ,IAAI,CAAC,KAAK,CACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC7D,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,sBAAO,IAAI,EAAC;;;;KACf,CAAC,EAAE,CAAC;AACT,CAAC;AA/CD,sCA+CC;AACD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,cAAM,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAE,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAQ,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU;IAClD,IAAI;QACA,OAAO,kBAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1C;IAAC,OAAO,GAAG,EAAE;QACV,IAAI,GAAG,YAAY,KAAK;YACpB,MAAM,IAAI,4BAAmB,CACzB,qFAAqF,CACxF,CAAC;;YACD,MAAM,GAAG,CAAC;KAClB;AACL,CAAC"}
1
+ {"version":3,"file":"EncryptedBody.js","sourceRoot":"","sources":["../../src/decorators/EncryptedBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,yCAIwB;AAExB,sDAA2B;AAC3B,+BAA6C;AAG7C,gDAA+C;AAC/C,kEAAuE;AACvE,kEAAiE;AACjE,0EAAyE;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,aAAa,CAAI,SAAoC;IACjE,IAAM,OAAO,GAAG,IAAA,6CAAqB,EAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,IAAA,6BAAoB,EAAC,SAAe,aAAa,CACpD,QAAa,EACb,GAAqB;;;;;;wBAEf,OAAO,GAAoB,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;wBACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;4BAC1B,MAAM,IAAI,4BAAmB,CACzB,qCAAqC,CACxC,CAAC;wBAEA,KAAK,GAGO,OAAO,CAAC,WAAW,CACjC,2CAAuB,EACvB,GAAG,CAAC,QAAQ,EAAE,CACjB,CAAC;wBACF,IAAI,CAAC,KAAK;4BACN,MAAM,IAAI,KAAK,CACX,wEAAwE,CAC3E,CAAC;wBAGA,OAAO,GAAsC,IAAI,qBAAS,CAAC;4BAC7D,OAAA,IAAA,qCAAiB,EAAC,OAAO,CAAC,OAAO,CAAC;wBAAlC,CAAkC,CACrC,CAAC;wBACoB,qBAAM,IAAA,kBAAG,EAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAA1C,IAAI,GAAW,CAAC,SAA0B,CAAC,CAAC,IAAI,EAAE;wBAClD,QAAQ,GACV,OAAO,KAAK,KAAK,UAAU;4BACvB,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,MAAA,EAAE,EAAE,KAAK,CAAC;4BAChD,CAAC,CAAC,KAAK,CAAC;wBACV,QAAQ,GACV,QAAQ,CAAC,QAAQ,KAAK,SAAS;4BAC3B,CAAC,CAAC,KAAK;4BACP,CAAC,CAAC,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU;gCACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,MAAA,EAAE,EAAE,IAAI,CAAC;gCAC3D,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAGtB,IAAI,GAAQ,IAAI,CAAC,KAAK,CACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAC7D,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,sBAAO,IAAI,EAAC;;;;KACf,CAAC,EAAE,CAAC;AACT,CAAC;AA/CD,sCA+CC;AACD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,cAAM,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAE,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAQ,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU;IAClD,IAAI;QACA,OAAO,kBAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1C;IAAC,OAAO,GAAG,EAAE;QACV,IAAI,GAAG,YAAY,KAAK;YACpB,MAAM,IAAI,4BAAmB,CACzB,qFAAqF,CACxF,CAAC;;YACD,MAAM,GAAG,CAAC;KAClB;AACL,CAAC"}
@@ -179,7 +179,7 @@ var EncryptedRouteInterceptor = /** @class */ (function () {
179
179
  return next.handle().pipe((0, rxjs_1.map)(function (value) {
180
180
  var param = Reflect.getMetadata(EncryptedConstant_1.ENCRYPTION_METADATA_KEY, context.getClass());
181
181
  if (!param)
182
- throw new Error("Error on EncryptedRoute.".concat(_this.method, "(): no encryption password is given."));
182
+ throw new Error("Error on nestia.core.EncryptedRoute.".concat(_this.method, "(): no encryption password is given."));
183
183
  var headers = new Singleton_1.Singleton(function () {
184
184
  var request = http.getRequest();
185
185
  return (0, headers_to_object_1.headers_to_object)(request.headers);
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedRoute.js","sourceRoot":"","sources":["../../src/decorators/EncryptedRoute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EncryptedRoute.js","sourceRoot":"","sources":["../../src/decorators/EncryptedRoute.ts"],"names":[],"mappings":"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"}
@@ -65,7 +65,7 @@ function TypedBody(validator) {
65
65
  switch (_d.label) {
66
66
  case 0:
67
67
  request = context.switchToHttp().getRequest();
68
- if (isApplicationJson(request.headers["content-type"]) === false) {
68
+ if (!request.is("application/json")) {
69
69
  throw new common_1.BadRequestException("Request body is not the application/json.");
70
70
  }
71
71
  if (!request.body) return [3 /*break*/, 1];
@@ -90,11 +90,4 @@ exports.TypedBody = TypedBody;
90
90
  Object.assign(TypedBody, typia_1.assert);
91
91
  Object.assign(TypedBody, typia_1.is);
92
92
  Object.assign(TypedBody, typia_1.validate);
93
- var isApplicationJson = function (text) {
94
- return text !== undefined &&
95
- text
96
- .split(";")
97
- .map(function (str) { return str.trim(); })
98
- .some(function (str) { return str === "application/json"; });
99
- };
100
93
  //# sourceMappingURL=TypedBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypedBody.js","sourceRoot":"","sources":["../../src/decorators/TypedBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAIwB;AAExB,sDAA2B;AAC3B,+BAA6C;AAG7C,0EAAyE;AAEzE;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CACrB,SAAoC;IAEpC,IAAM,OAAO,GAAG,IAAA,6CAAqB,EAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,OAAO,IAAA,6BAAoB,EAAC,SAAe,SAAS,CAChD,QAAa,EACb,OAAyB;;;;;;wBAEnB,OAAO,GAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,KAAK,EAAE;4BAC9D,MAAM,IAAI,4BAAmB,CACzB,2CAA2C,CAC9C,CAAC;yBACL;6BACiB,OAAO,CAAC,IAAI,EAAZ,wBAAY;wBACxB,KAAA,OAAO,CAAC,IAAI,CAAA;;;wBACZ,KAAA,CAAA,KAAA,IAAI,CAAA,CAAC,KAAK,CAAA;wBAAE,qBAAM,IAAA,kBAAG,EAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAAtC,KAAA,cAAW,CAAC,SAA0B,CAAC,CAAC,IAAI,EAAE,EAAC,CAAA;;;wBAF/C,IAAI,KAE2C;wBACrD,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,sBAAO,IAAI,EAAC;;;;KACf,CAAC,EAAE,CAAC;AACT,CAAC;AApBD,8BAoBC;AAED,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,cAAM,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAE,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAQ,CAAC,CAAC;AAEnC,IAAM,iBAAiB,GAAG,UAAC,IAAa;IACpC,OAAA,IAAI,KAAK,SAAS;QAClB,IAAI;aACC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACxB,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,KAAK,kBAAkB,EAA1B,CAA0B,CAAC;AAJ9C,CAI8C,CAAC"}
1
+ {"version":3,"file":"TypedBody.js","sourceRoot":"","sources":["../../src/decorators/TypedBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAIwB;AAExB,sDAA2B;AAC3B,+BAA6C;AAG7C,0EAAyE;AAEzE;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CACrB,SAAoC;IAEpC,IAAM,OAAO,GAAG,IAAA,6CAAqB,EAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,OAAO,IAAA,6BAAoB,EAAC,SAAe,SAAS,CAChD,QAAa,EACb,OAAyB;;;;;;wBAEnB,OAAO,GAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;wBACrE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE;4BACjC,MAAM,IAAI,4BAAmB,CACzB,2CAA2C,CAC9C,CAAC;yBACL;6BACiB,OAAO,CAAC,IAAI,EAAZ,wBAAY;wBACxB,KAAA,OAAO,CAAC,IAAI,CAAA;;;wBACZ,KAAA,CAAA,KAAA,IAAI,CAAA,CAAC,KAAK,CAAA;wBAAE,qBAAM,IAAA,kBAAG,EAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAAtC,KAAA,cAAW,CAAC,SAA0B,CAAC,CAAC,IAAI,EAAE,EAAC,CAAA;;;wBAF/C,IAAI,KAE2C;wBACrD,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,sBAAO,IAAI,EAAC;;;;KACf,CAAC,EAAE,CAAC;AACT,CAAC;AApBD,8BAoBC;AAED,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,cAAM,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAE,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAQ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function TypedQuery(decoder?: (params: URLSearchParams) => any): ParameterDecorator;
@@ -0,0 +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
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TypedQuery = void 0;
40
+ var common_1 = require("@nestjs/common");
41
+ var typia_1 = require("typia");
42
+ function TypedQuery(decoder) {
43
+ if (decoder === undefined)
44
+ throw new Error("Error on TypedQuery(): no decoder function provided.");
45
+ return (0, common_1.createParamDecorator)(function TypedQuery(_unknown, ctx) {
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ var request, params;
48
+ return __generator(this, function (_a) {
49
+ request = ctx.switchToHttp().getRequest();
50
+ params = new URLSearchParams(tail(request.url));
51
+ return [2 /*return*/, decoder(params)];
52
+ });
53
+ });
54
+ })();
55
+ }
56
+ exports.TypedQuery = TypedQuery;
57
+ /**
58
+ * @internal
59
+ */
60
+ (function (TypedQuery) {
61
+ function boolean(str) {
62
+ return str !== null ? Boolean(str) : undefined;
63
+ }
64
+ TypedQuery.boolean = boolean;
65
+ function number(str) {
66
+ return str !== null ? Number(str) : undefined;
67
+ }
68
+ TypedQuery.number = number;
69
+ function bigint(str) {
70
+ return str !== null ? BigInt(str) : undefined;
71
+ }
72
+ TypedQuery.bigint = bigint;
73
+ function string(str) {
74
+ return str !== null && str !== void 0 ? str : undefined;
75
+ }
76
+ TypedQuery.string = string;
77
+ })(TypedQuery = exports.TypedQuery || (exports.TypedQuery = {}));
78
+ Object.assign(TypedQuery, typia_1.assert);
79
+ function tail(url) {
80
+ var index = url.indexOf("?");
81
+ return index === -1 ? "" : url.substring(index + 1);
82
+ }
83
+ //# sourceMappingURL=TypedQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedQuery.js","sourceRoot":"","sources":["../../src/decorators/TypedQuery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAwE;AAGxE,+BAA+B;AAE/B,SAAgB,UAAU,CAAC,OAA0C;IACjE,IAAI,OAAO,KAAK,SAAS;QACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE5E,OAAO,IAAA,6BAAoB,EAAC,SAAe,UAAU,CACjD,QAAa,EACb,GAAqB;;;;gBAEf,OAAO,GAAoB,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC3D,MAAM,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvE,sBAAO,OAAO,CAAC,MAAM,CAAC,EAAC;;;KAC1B,CAAC,EAAE,CAAC;AACT,CAAC;AAZD,gCAYC;AAED;;GAEG;AACH,WAAiB,UAAU;IACvB,SAAgB,OAAO,CAAC,GAAkB;QACtC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAFe,kBAAO,UAEtB,CAAA;IACD,SAAgB,MAAM,CAAC,GAAkB;QACrC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;IACD,SAAgB,MAAM,CAAC,GAAkB;QACrC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAFe,iBAAM,SAErB,CAAA;IACD,SAAgB,MAAM,CAAC,GAAkB;QACrC,OAAO,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,SAAS,CAAC;IAC5B,CAAC;IAFe,iBAAM,SAErB,CAAA;AACL,CAAC,EAbgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAa1B;AACD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,cAAM,CAAC,CAAC;AAElC,SAAS,IAAI,CAAC,GAAW;IACrB,IAAM,KAAK,GAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
package/lib/module.d.ts CHANGED
@@ -8,4 +8,5 @@ export * from "./decorators/PlainBody";
8
8
  export * from "./decorators/TypedBody";
9
9
  export * from "./decorators/TypedParam";
10
10
  export * from "./decorators/TypedRoute";
11
+ export * from "./decorators/TypedQuery";
11
12
  export * from "./options/INestiaTransformOptions";
package/lib/module.js CHANGED
@@ -24,5 +24,6 @@ __exportStar(require("./decorators/PlainBody"), exports);
24
24
  __exportStar(require("./decorators/TypedBody"), exports);
25
25
  __exportStar(require("./decorators/TypedParam"), exports);
26
26
  __exportStar(require("./decorators/TypedRoute"), exports);
27
+ __exportStar(require("./decorators/TypedQuery"), exports);
27
28
  __exportStar(require("./options/INestiaTransformOptions"), exports);
28
29
  //# sourceMappingURL=module.js.map
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,6DAA2C;AAC3C,mEAAiD;AACjD,+DAA6C;AAC7C,8DAA4C;AAC5C,2DAAyC;AACzC,yDAAuC;AACvC,yDAAuC;AACvC,0DAAwC;AACxC,0DAAwC;AACxC,oEAAkD"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,6DAA2C;AAC3C,mEAAiD;AACjD,+DAA6C;AAC7C,8DAA4C;AAC5C,2DAAyC;AACzC,yDAAuC;AACvC,yDAAuC;AACvC,0DAAwC;AACxC,0DAAwC;AACxC,0DAAwC;AACxC,oEAAkD"}
@@ -0,0 +1,5 @@
1
+ import ts from "typescript";
2
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
3
+ export declare namespace TypedBodyProgrammer {
4
+ const generate: (project: INestiaTransformProject, modulo: ts.LeftHandSideExpression) => (type: ts.Type) => ts.ObjectLiteralExpression;
5
+ }
@@ -0,0 +1,46 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TypedBodyProgrammer = void 0;
18
+ var typescript_1 = __importDefault(require("typescript"));
19
+ var AssertProgrammer_1 = require("typia/lib/programmers/AssertProgrammer");
20
+ var IsProgrammer_1 = require("typia/lib/programmers/IsProgrammer");
21
+ var ValidateProgrammer_1 = require("typia/lib/programmers/ValidateProgrammer");
22
+ var TypedBodyProgrammer;
23
+ (function (TypedBodyProgrammer) {
24
+ TypedBodyProgrammer.generate = function (project, modulo) {
25
+ return function (type) {
26
+ // GENERATE VALIDATION PLAN
27
+ var parameter = function (key, programmer) {
28
+ return typescript_1.default.factory.createObjectLiteralExpression([
29
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(key)),
30
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), programmer(__assign(__assign({}, project), { options: {
31
+ numeric: false,
32
+ finite: false,
33
+ functional: false,
34
+ } }), modulo)(type)),
35
+ ]);
36
+ };
37
+ // RETURNS
38
+ if (project.options.validate === "is")
39
+ return parameter("is", IsProgrammer_1.IsProgrammer.generate);
40
+ else if (project.options.validate === "validate")
41
+ return parameter("validate", ValidateProgrammer_1.ValidateProgrammer.generate);
42
+ return parameter("assert", AssertProgrammer_1.AssertProgrammer.generate);
43
+ };
44
+ };
45
+ })(TypedBodyProgrammer = exports.TypedBodyProgrammer || (exports.TypedBodyProgrammer = {}));
46
+ //# sourceMappingURL=TypedBodyProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedBodyProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,2EAA0E;AAC1E,mEAAkE;AAClE,+EAA8E;AAK9E,IAAiB,mBAAmB,CAwCnC;AAxCD,WAAiB,mBAAmB;IACnB,4BAAQ,GACjB,UAAC,OAAgC,EAAE,MAAiC;QACpE,OAAA,UAAC,IAAa;YACV,2BAA2B;YAC3B,IAAM,SAAS,GAAG,UACd,GAAW,EACX,UAGwC;gBAExC,OAAA,oBAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC;oBACrC,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CAC/B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACnC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CACtC;oBACD,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CAC/B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAChC,UAAU,uBAEC,OAAO,KACV,OAAO,EAAE;4BACL,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,KAAK;4BACb,UAAU,EAAE,KAAK;yBACpB,KAEL,MAAM,CACT,CAAC,IAAI,CAAC,CACV;iBACJ,CAAC;YAnBF,CAmBE,CAAC;YAEP,UAAU;YACV,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;gBACjC,OAAO,SAAS,CAAC,IAAI,EAAE,2BAAY,CAAC,QAAQ,CAAC,CAAC;iBAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU;gBAC5C,OAAO,SAAS,CAAC,UAAU,EAAE,uCAAkB,CAAC,QAAQ,CAAC,CAAC;YAC9D,OAAO,SAAS,CAAC,QAAQ,EAAE,mCAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;IApCD,CAoCC,CAAC;AACV,CAAC,EAxCgB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAwCnC"}
@@ -0,0 +1,5 @@
1
+ import ts from "typescript";
2
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
3
+ export declare namespace TypedQueryProgrammer {
4
+ const generate: (project: INestiaTransformProject, modulo: ts.LeftHandSideExpression) => (type: ts.Type) => ts.Expression;
5
+ }
@@ -0,0 +1,166 @@
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.TypedQueryProgrammer = 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 TypedQueryProgrammer;
62
+ (function (TypedQueryProgrammer) {
63
+ TypedQueryProgrammer.generate = function (project, modulo) {
64
+ return function (type) {
65
+ var object = getObject(project.checker)(type);
66
+ return decode(project, modulo)(type, object);
67
+ };
68
+ };
69
+ var getObject = function (checker) {
70
+ return function (type) {
71
+ var e_1, _a;
72
+ var collection = new MetadataCollection_1.MetadataCollection();
73
+ var metadata = MetadataFactory_1.MetadataFactory.generate(checker, collection, type, {
74
+ resolve: false,
75
+ constant: true,
76
+ });
77
+ if (metadata.objects.length !== 1 || metadata.bucket() !== 1)
78
+ throw new Error(ErrorMessages.object(metadata)("only one object type is allowed."));
79
+ else if (metadata.nullable === true)
80
+ throw new Error(ErrorMessages.object(metadata)("target type T cannot be null."));
81
+ else if (metadata.required === false)
82
+ throw new Error(ErrorMessages.object(metadata)("target type T cannot be undefined."));
83
+ var object = metadata.objects[0];
84
+ try {
85
+ for (var _b = __values(object.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
86
+ var property = _c.value;
87
+ var key = property.key;
88
+ var value = property.value;
89
+ if ((value.atomics.length ? 1 : 0) +
90
+ (value.constants.length ? 1 : 0) +
91
+ (value.templates.length ? 1 : 0) !==
92
+ value.bucket())
93
+ throw new Error(ErrorMessages.property(object)(key)("only atomic typed propertie are allowed."));
94
+ else if (value.atomics.length > 1 || value.constants.length > 1)
95
+ throw new Error(ErrorMessages.property(object)(key)("union type is not allowed."));
96
+ else if (value.nullable === true)
97
+ throw new Error(ErrorMessages.property(object)(key)("property type cannot be null. Use undefined instead."));
98
+ }
99
+ }
100
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
101
+ finally {
102
+ try {
103
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
104
+ }
105
+ finally { if (e_1) throw e_1.error; }
106
+ }
107
+ return object;
108
+ };
109
+ };
110
+ var decode = function (project, modulo) {
111
+ return function (type, object) {
112
+ return typescript_1.default.factory.createArrowFunction(undefined, undefined, [IdentifierFactory_1.IdentifierFactory.parameter("input")], undefined, undefined, decode_object(project, modulo)(type, object));
113
+ };
114
+ };
115
+ var decode_object = function (project, modulo) {
116
+ return function (type, object) {
117
+ var assert = AssertProgrammer_1.AssertProgrammer.generate(__assign(__assign({}, project), { options: {
118
+ numeric: true,
119
+ } }), modulo)(type);
120
+ var output = typescript_1.default.factory.createIdentifier("output");
121
+ var importer = new FunctionImporeter_1.FunctionImporter();
122
+ var statements = [
123
+ StatementFactory_1.StatementFactory.constant("output", typescript_1.default.factory.createObjectLiteralExpression(object.properties
124
+ .filter(function (prop) { return prop.key.isSoleLiteral(); })
125
+ .map(function (prop) {
126
+ return decode_regular_property(importer)(prop);
127
+ }), true)),
128
+ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createCallExpression(assert, undefined, [
129
+ output,
130
+ ])),
131
+ ];
132
+ return typescript_1.default.factory.createBlock(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(statements), false), true);
133
+ };
134
+ };
135
+ var decode_regular_property = function (importer) {
136
+ return function (property) {
137
+ var key = property.key.constants[0].values[0];
138
+ var value = property.value;
139
+ var type = value.atomics.length
140
+ ? value.atomics[0]
141
+ : value.constants.length
142
+ ? value.constants[0].type
143
+ : "string";
144
+ return typescript_1.default.factory.createPropertyAssignment(key, decode_value(importer)(type)(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("input.get"), undefined, [typescript_1.default.factory.createStringLiteral(key)])));
145
+ };
146
+ };
147
+ var decode_value = function (importer) {
148
+ return function (type) {
149
+ return function (value) {
150
+ return typescript_1.default.factory.createCallExpression(importer.use(type), undefined, [
151
+ value,
152
+ ]);
153
+ };
154
+ };
155
+ };
156
+ })(TypedQueryProgrammer = exports.TypedQueryProgrammer || (exports.TypedQueryProgrammer = {}));
157
+ var ErrorMessages;
158
+ (function (ErrorMessages) {
159
+ ErrorMessages.object = function (type) { return function (message) {
160
+ return "Error on nestia.core.TypedQuery<".concat(type, ">(): ").concat(message);
161
+ }; };
162
+ ErrorMessages.property = function (obj) { return function (key) { return function (message) {
163
+ return "Error on nestia.core.TypedQuery<".concat(obj.name, ">(): property ").concat(key.getName(), " - ").concat(message);
164
+ }; }; };
165
+ })(ErrorMessages || (ErrorMessages = {}));
166
+ //# sourceMappingURL=TypedQueryProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,2EAA0E;AAC1E,6EAA4E;AAC5E,uEAAsE;AACtE,yEAAwE;AAIxE,2EAA0E;AAC1E,qFAAmF;AAKnF,IAAiB,oBAAoB,CA0JpC;AA1JD,WAAiB,oBAAoB;IACpB,6BAAQ,GACjB,UAAC,OAAgC,EAAE,MAAiC;QACpE,OAAA,UAAC,IAAa;YACV,IAAM,MAAM,GAAmB,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;IAHD,CAGC,CAAC;IAEN,IAAM,SAAS,GACX,UAAC,OAAuB;QACxB,OAAA,UAAC,IAAa;;YACV,IAAM,UAAU,GAAuB,IAAI,uCAAkB,EAAE,CAAC;YAChE,IAAM,QAAQ,GAAa,iCAAe,CAAC,QAAQ,CAC/C,OAAO,EACP,UAAU,EACV,IAAI,EACJ;gBACI,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,IAAI;aACjB,CACJ,CAAC;YACF,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxD,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1B,kCAAkC,CACrC,CACJ,CAAC;iBACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;gBAC/B,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1B,+BAA+B,CAClC,CACJ,CAAC;iBACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK;gBAChC,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1B,oCAAoC,CACvC,CACJ,CAAC;YAEN,IAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;;gBACpC,KAAuB,IAAA,KAAA,SAAA,MAAM,CAAC,UAAU,CAAA,gBAAA,4BAAE;oBAArC,IAAM,QAAQ,WAAA;oBACf,IAAM,GAAG,GAAa,QAAQ,CAAC,GAAG,CAAC;oBACnC,IAAM,KAAK,GAAa,QAAQ,CAAC,KAAK,CAAC;oBAEvC,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1B,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpC,KAAK,CAAC,MAAM,EAAE;wBAEd,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAC/B,0CAA0C,CAC7C,CACJ,CAAC;yBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;wBAC3D,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAC/B,4BAA4B,CAC/B,CACJ,CAAC;yBACD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;wBAC5B,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAC/B,sDAAsD,CACzD,CACJ,CAAC;iBACT;;;;;;;;;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;IA5DD,CA4DC,CAAC;IAEN,IAAM,MAAM,GACR,UAAC,OAAgC,EAAE,MAAiC;QACpE,OAAA,UAAC,IAAa,EAAE,MAAsB;YAClC,OAAA,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAC1B,SAAS,EACT,SAAS,EACT,CAAC,qCAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACtC,SAAS,EACT,SAAS,EACT,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAC/C;QAPD,CAOC;IARL,CAQK,CAAC;IAEV,IAAM,aAAa,GACf,UAAC,OAAgC,EAAE,MAAiC;QACpE,OAAA,UAAC,IAAa,EAAE,MAAsB;YAClC,IAAM,MAAM,GAAqB,mCAAgB,CAAC,QAAQ,uBAE/C,OAAO,KACV,OAAO,EAAE;oBACL,OAAO,EAAE,IAAI;iBAChB,KAEL,MAAM,CACT,CAAC,IAAI,CAAC,CAAC;YACR,IAAM,MAAM,GAAG,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAErD,IAAM,QAAQ,GAAG,IAAI,oCAAgB,EAAE,CAAC;YACxC,IAAM,UAAU,GAAmB;gBAC/B,mCAAgB,CAAC,QAAQ,CACrB,QAAQ,EACR,oBAAE,CAAC,OAAO,CAAC,6BAA6B,CACpC,MAAM,CAAC,UAAU;qBACZ,MAAM,CAAC,UAAC,IAAI,IAAK,OAAC,IAAI,CAAC,GAAW,CAAC,aAAa,EAAE,EAAjC,CAAiC,CAAC;qBACnD,GAAG,CAAC,UAAC,IAAI;oBACN,OAAA,uBAAuB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBAAvC,CAAuC,CAC1C,EACL,IAAI,CACP,CACJ;gBACD,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAC5B,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE;oBAC/C,MAAM;iBACT,CAAC,CACL;aACJ,CAAC;YAEF,OAAO,oBAAE,CAAC,OAAO,CAAC,WAAW,wCACrB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAK,UAAU,WAC3C,IAAI,CACP,CAAC;QACN,CAAC;IApCD,CAoCC,CAAC;IAEN,IAAM,uBAAuB,GACzB,UAAC,QAA0B;QAC3B,OAAA,UAAC,QAA0B;YACvB,IAAM,GAAG,GAAW,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC;YACnE,IAAM,KAAK,GAAa,QAAQ,CAAC,KAAK,CAAC;YAEvC,IAAM,IAAI,GAAmB,KAAK,CAAC,OAAO,CAAC,MAAM;gBAC7C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE;gBACnB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;oBACxB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI;oBAC1B,CAAC,CAAC,QAAQ,CAAC;YACf,OAAO,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CACtC,GAAG,EACH,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CACxB,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,EACxC,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CACxC,CACJ,CACJ,CAAC;QACN,CAAC;IAnBD,CAmBC,CAAC;IAEN,IAAM,YAAY,GACd,UAAC,QAA0B;QAC3B,OAAA,UAAC,IAAoB;YACrB,OAAA,UAAC,KAAoB;gBACjB,OAAA,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE;oBAC3D,KAAK;iBACR,CAAC;YAFF,CAEE;QAHN,CAGM;IAJN,CAIM,CAAC;AACf,CAAC,EA1JgB,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QA0JpC;AAED,IAAU,aAAa,CAStB;AATD,WAAU,aAAa;IACN,oBAAM,GAAG,UAAC,IAAc,IAAK,OAAA,UAAC,OAAe;QACtD,OAAA,0CAAmC,IAAI,kBAAQ,OAAO,CAAE;IAAxD,CAAwD,EADlB,CACkB,CAAC;IAEhD,sBAAQ,GACjB,UAAC,GAAmB,IAAK,OAAA,UAAC,GAAa,IAAK,OAAA,UAAC,OAAe;QACxD,OAAA,0CACI,GAAG,CAAC,IAAI,2BACK,GAAG,CAAC,OAAO,EAAE,gBAAM,OAAO,CAAE;IAF7C,CAE6C,EAHL,CAGK,EAHxB,CAGwB,CAAC;AAC1D,CAAC,EATS,aAAa,KAAb,aAAa,QAStB"}
@@ -0,0 +1,5 @@
1
+ import ts from "typescript";
2
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
3
+ export declare namespace TypedRouteProgrammer {
4
+ const generate: (project: INestiaTransformProject, modulo: ts.LeftHandSideExpression) => (type: ts.Type) => ts.Expression;
5
+ }
@@ -0,0 +1,47 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TypedRouteProgrammer = void 0;
18
+ var typescript_1 = __importDefault(require("typescript"));
19
+ var AssertStringifyProgrammer_1 = require("typia/lib/programmers/AssertStringifyProgrammer");
20
+ var IsStringifyProgrammer_1 = require("typia/lib/programmers/IsStringifyProgrammer");
21
+ var StringifyProgrammer_1 = require("typia/lib/programmers/StringifyProgrammer");
22
+ var ValidateStringifyProgrammer_1 = require("typia/lib/programmers/ValidateStringifyProgrammer");
23
+ var TypedRouteProgrammer;
24
+ (function (TypedRouteProgrammer) {
25
+ TypedRouteProgrammer.generate = function (project, modulo) {
26
+ return function (type) {
27
+ // GENERATE STRINGIFY PLAN
28
+ var parameter = function (key, programmer) {
29
+ return typescript_1.default.factory.createObjectLiteralExpression([
30
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(key)),
31
+ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), programmer(__assign(__assign({}, project), { options: {} }), modulo)(type)),
32
+ ]);
33
+ };
34
+ // RETURNS
35
+ if (project.options.stringify === "stringify")
36
+ return parameter("stringify", StringifyProgrammer_1.StringifyProgrammer.generate);
37
+ else if (project.options.stringify === "assert")
38
+ return parameter("assert", AssertStringifyProgrammer_1.AssertStringifyProgrammer.generate);
39
+ else if (project.options.stringify === "validate")
40
+ return parameter("validate", ValidateStringifyProgrammer_1.ValidateStringifyProgrammer.generate);
41
+ else if (project.options.stringify === null)
42
+ return typescript_1.default.factory.createNull();
43
+ return parameter("is", IsStringifyProgrammer_1.IsStringifyProgrammer.generate);
44
+ };
45
+ };
46
+ })(TypedRouteProgrammer = exports.TypedRouteProgrammer || (exports.TypedRouteProgrammer = {}));
47
+ //# sourceMappingURL=TypedRouteProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedRouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedRouteProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,6FAA4F;AAC5F,qFAAoF;AACpF,iFAAgF;AAChF,iGAAgG;AAKhG,IAAiB,oBAAoB,CA2CpC;AA3CD,WAAiB,oBAAoB;IACpB,6BAAQ,GACjB,UAAC,OAAgC,EAAE,MAAiC;QACpE,OAAA,UAAC,IAAa;YACV,0BAA0B;YAC1B,IAAM,SAAS,GAAG,UACd,GAAW,EACX,UAGwC;gBAExC,OAAA,oBAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC;oBACrC,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CAC/B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,EACnC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CACtC;oBACD,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CAC/B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAChC,UAAU,uBAEC,OAAO,KACV,OAAO,EAAE,EAAE,KAEf,MAAM,CACT,CAAC,IAAI,CAAC,CACV;iBACJ,CAAC;YAfF,CAeE,CAAC;YAEP,UAAU;YACV,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,WAAW;gBACzC,OAAO,SAAS,CAAC,WAAW,EAAE,yCAAmB,CAAC,QAAQ,CAAC,CAAC;iBAC3D,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;gBAC3C,OAAO,SAAS,CAAC,QAAQ,EAAE,qDAAyB,CAAC,QAAQ,CAAC,CAAC;iBAC9D,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,UAAU;gBAC7C,OAAO,SAAS,CACZ,UAAU,EACV,yDAA2B,CAAC,QAAQ,CACvC,CAAC;iBACD,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI;gBACvC,OAAO,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;IAvCD,CAuCC,CAAC;AACV,CAAC,EA3CgB,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QA2CpC"}
@@ -1,5 +1,5 @@
1
1
  import ts from "typescript";
2
2
  import { INestiaTransformProject } from "../options/INestiaTransformProject";
3
- export declare namespace BodyTransformer {
3
+ export declare namespace MethodDecoratorTransformer {
4
4
  function transform(project: INestiaTransformProject, type: ts.Type, decorator: ts.Decorator): ts.Decorator;
5
5
  }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.MethodDecoratorTransformer = void 0;
32
+ var path_1 = __importDefault(require("path"));
33
+ var typescript_1 = __importDefault(require("typescript"));
34
+ var TypedRouteProgrammer_1 = require("../programmers/TypedRouteProgrammer");
35
+ var MethodDecoratorTransformer;
36
+ (function (MethodDecoratorTransformer) {
37
+ function transform(project, type, decorator) {
38
+ if (!typescript_1.default.isCallExpression(decorator.expression))
39
+ return decorator;
40
+ // CHECK SIGNATURE
41
+ var signature = project.checker.getResolvedSignature(decorator.expression);
42
+ if (!signature || !signature.declaration)
43
+ return decorator;
44
+ // CHECK TO BE TRANSFORMED
45
+ var done = (function () {
46
+ // CHECK FILENAME
47
+ var location = path_1.default.resolve(signature.declaration.getSourceFile().fileName);
48
+ if (LIB_PATHS.every(function (str) { return location.indexOf(str) === -1; }) &&
49
+ SRC_PATHS.every(function (str) { return location !== str; }))
50
+ return false;
51
+ // CHECK DUPLICATE BOOSTER
52
+ if (decorator.expression.arguments.length >= 2)
53
+ return false;
54
+ else if (decorator.expression.arguments.length === 1) {
55
+ var last = decorator.expression.arguments[decorator.expression.arguments.length - 1];
56
+ var type_1 = project.checker.getTypeAtLocation(last);
57
+ if (isObject(project.checker, type_1))
58
+ return false;
59
+ }
60
+ return true;
61
+ })();
62
+ if (done === false)
63
+ return decorator;
64
+ // CHECK TYPE NODE
65
+ var typeNode = project.checker.typeToTypeNode(type, undefined, undefined);
66
+ if (typeNode === undefined)
67
+ return decorator;
68
+ // DO TRANSFORM
69
+ return typescript_1.default.factory.createDecorator(typescript_1.default.factory.updateCallExpression(decorator.expression, decorator.expression.expression, decorator.expression.typeArguments, __spreadArray(__spreadArray([], __read(decorator.expression.arguments), false), [
70
+ TypedRouteProgrammer_1.TypedRouteProgrammer.generate(project, decorator.expression.expression)(type),
71
+ ], false)));
72
+ }
73
+ MethodDecoratorTransformer.transform = transform;
74
+ function isObject(checker, type) {
75
+ return ((type.getFlags() & typescript_1.default.TypeFlags.Object) !== 0 &&
76
+ !checker.isTupleType(type) &&
77
+ !checker.isArrayType(type) &&
78
+ !checker.isArrayLikeType(type));
79
+ }
80
+ var CLASSES = ["EncryptedRoute", "TypedRoute"];
81
+ var LIB_PATHS = CLASSES.map(function (cla) {
82
+ return path_1.default.join("node_modules", "@nestia", "core", "lib", "decorators", "".concat(cla, ".d.ts"));
83
+ });
84
+ var SRC_PATHS = CLASSES.map(function (cla) {
85
+ return path_1.default.resolve(path_1.default.join(__dirname, "..", "decorators", "".concat(cla, ".ts")));
86
+ });
87
+ })(MethodDecoratorTransformer = exports.MethodDecoratorTransformer || (exports.MethodDecoratorTransformer = {}));
88
+ //# sourceMappingURL=MethodDecoratorTransformer.js.map