@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.
- package/README.md +24 -0
- package/lib/decorators/EncryptedBody.js +1 -1
- package/lib/decorators/EncryptedBody.js.map +1 -1
- package/lib/decorators/EncryptedRoute.js +1 -1
- package/lib/decorators/EncryptedRoute.js.map +1 -1
- package/lib/decorators/TypedBody.js +1 -8
- package/lib/decorators/TypedBody.js.map +1 -1
- package/lib/decorators/TypedQuery.d.ts +1 -0
- package/lib/decorators/TypedQuery.js +83 -0
- package/lib/decorators/TypedQuery.js.map +1 -0
- package/lib/module.d.ts +1 -0
- package/lib/module.js +1 -0
- package/lib/module.js.map +1 -1
- package/lib/programmers/TypedBodyProgrammer.d.ts +5 -0
- package/lib/programmers/TypedBodyProgrammer.js +46 -0
- package/lib/programmers/TypedBodyProgrammer.js.map +1 -0
- package/lib/programmers/TypedQueryProgrammer.d.ts +5 -0
- package/lib/programmers/TypedQueryProgrammer.js +166 -0
- package/lib/programmers/TypedQueryProgrammer.js.map +1 -0
- package/lib/programmers/TypedRouteProgrammer.d.ts +5 -0
- package/lib/programmers/TypedRouteProgrammer.js +47 -0
- package/lib/programmers/TypedRouteProgrammer.js.map +1 -0
- package/lib/transformers/{BodyTransformer.d.ts → MethodDecoratorTransformer.d.ts} +1 -1
- package/lib/transformers/MethodDecoratorTransformer.js +88 -0
- package/lib/transformers/MethodDecoratorTransformer.js.map +1 -0
- package/lib/transformers/MethodTransformer.js +3 -3
- package/lib/transformers/MethodTransformer.js.map +1 -1
- package/lib/transformers/{RouteTransformer.d.ts → ParameterDecoratorTransformer.d.ts} +1 -1
- package/lib/transformers/ParameterDecoratorTransformer.js +54 -0
- package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -0
- package/lib/transformers/ParameterTransformer.js +6 -3
- package/lib/transformers/ParameterTransformer.js.map +1 -1
- package/package.json +1 -1
- package/src/decorators/EncryptedBody.ts +1 -1
- package/src/decorators/EncryptedRoute.ts +1 -1
- package/src/decorators/TypedBody.ts +1 -8
- package/src/decorators/TypedQuery.ts +42 -0
- package/src/module.ts +1 -0
- package/src/programmers/TypedBodyProgrammer.ts +50 -0
- package/src/programmers/TypedQueryProgrammer.ts +181 -0
- package/src/programmers/TypedRouteProgrammer.ts +54 -0
- package/src/transformers/MethodDecoratorTransformer.ts +91 -0
- package/src/transformers/MethodTransformer.ts +7 -3
- package/src/transformers/ParameterDecoratorTransformer.ts +79 -0
- package/src/transformers/ParameterTransformer.ts +11 -3
- package/lib/transformers/BodyTransformer.js +0 -84
- package/lib/transformers/BodyTransformer.js.map +0 -1
- package/lib/transformers/RouteTransformer.js +0 -127
- package/lib/transformers/RouteTransformer.js.map +0 -1
- package/src/transformers/BodyTransformer.ts +0 -116
- 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,
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,yCAWwB;AAGxB,6BAAmD;AACnD,+BAKe;AAGf,gDAA+C;AAC/C,kEAAuE;AACvE,4EAA2E;AAC3E,kEAAiE;AACjE,sDAAqD;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,IAAiB,cAAc,CAgE9B;AAhED,WAAiB,cAAc;IAC3B;;;;;OAKG;IACU,kBAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,mBAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;;OAKG;IACU,oBAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;OAKG;IACU,kBAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC;;;;;OAKG;IACU,qBAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1C,SAAS,SAAS,CAAC,MAAmD;QAUlE,SAAS,KAAK;YAAC,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACnB,IAAA,KAAA,OAAoB,IAAA,+CAAsB,EAC5C,yBAAkB,MAAM,CAAE,CAC7B,wCAAI,IAAI,cAAC,EAFH,IAAI,QAAA,EAAE,SAAS,QAEZ,CAAC;YACX,OAAO,IAAA,wBAAe,EAClB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EACrB,IAAA,wBAAe,EACX,IAAI,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CACnD,CACJ,CAAC;QACN,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,EAhEgB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAgE9B;;IAED,KAAqB,IAAA,KAAA,SAAA;QACjB,uBAAe;QACf,mBAAW;QACX,iBAAS;QACT,yBAAiB;KACpB,CAAA,gBAAA;QALI,IAAM,MAAM,WAAA;;YAMb,KAA2B,IAAA,oBAAA,SAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAA,gBAAA;gBAAtC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;;oBAClB,KAAmB,IAAA,oBAAA,SAAA;wBACf,cAAc,CAAC,GAAG;wBAClB,cAAc,CAAC,MAAM;wBACrB,cAAc,CAAC,IAAI;wBACnB,cAAc,CAAC,GAAG;wBAClB,cAAc,CAAC,KAAK;qBACvB,CAAA,CAAA,gBAAA;wBANI,IAAM,IAAI,WAAA;wBAOV,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBAAA;;;;;;;;;aAAA;;;;;;;;;KAAA;;;;;;;;;AAEvC;;GAEG;AACH;IACI,mCACqB,MAAc,EACd,SAAiC;QADjC,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAwB;IACnD,CAAC;IAEG,6CAAS,GAAhB,UACI,OAAyB,EACzB,IAAiB;QAFrB,iBAmDC;QA/CG,IAAM,IAAI,GAAsB,OAAO,CAAC,YAAY,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACrB,IAAA,UAAG,EAAC,UAAC,KAAK;YACN,IAAM,KAAK,GAGO,OAAO,CAAC,WAAW,CACjC,2CAAuB,EACvB,OAAO,CAAC,QAAQ,EAAE,CACrB,CAAC;YACF,IAAI,CAAC,KAAK;gBACN,MAAM,IAAI,KAAK,CACX,
|
|
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 (
|
|
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,
|
|
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
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":"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"}
|
|
@@ -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
|
|
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
|