@nestia/core 3.17.0 → 4.0.0-dev.20241010-2
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 +0 -1
- package/lib/options/INestiaTransformProject.d.ts +2 -2
- package/lib/programmers/PlainBodyProgrammer.d.ts +6 -2
- package/lib/programmers/PlainBodyProgrammer.js +31 -13
- package/lib/programmers/PlainBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedBodyProgrammer.d.ts +6 -2
- package/lib/programmers/TypedBodyProgrammer.js +32 -13
- package/lib/programmers/TypedBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedFormDataBodyProgrammer.d.ts +6 -2
- package/lib/programmers/TypedFormDataBodyProgrammer.js +30 -17
- package/lib/programmers/TypedFormDataBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedHeadersProgrammer.d.ts +6 -2
- package/lib/programmers/TypedHeadersProgrammer.js +12 -7
- package/lib/programmers/TypedHeadersProgrammer.js.map +1 -1
- package/lib/programmers/TypedParamProgrammer.d.ts +7 -2
- package/lib/programmers/TypedParamProgrammer.js +12 -7
- package/lib/programmers/TypedParamProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryBodyProgrammer.d.ts +6 -2
- package/lib/programmers/TypedQueryBodyProgrammer.js +12 -7
- package/lib/programmers/TypedQueryBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryProgrammer.d.ts +6 -2
- package/lib/programmers/TypedQueryProgrammer.js +13 -7
- package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryRouteProgrammer.d.ts +6 -2
- package/lib/programmers/TypedQueryRouteProgrammer.js +10 -6
- package/lib/programmers/TypedQueryRouteProgrammer.js.map +1 -1
- package/lib/programmers/TypedRouteProgrammer.d.ts +6 -2
- package/lib/programmers/TypedRouteProgrammer.js +14 -9
- package/lib/programmers/TypedRouteProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpAssertQuerifyProgrammer.d.ts +6 -2
- package/lib/programmers/http/HttpAssertQuerifyProgrammer.js +22 -3
- package/lib/programmers/http/HttpAssertQuerifyProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpIsQuerifyProgrammer.d.ts +6 -2
- package/lib/programmers/http/HttpIsQuerifyProgrammer.js +21 -3
- package/lib/programmers/http/HttpIsQuerifyProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQuerifyProgrammer.d.ts +6 -2
- package/lib/programmers/http/HttpQuerifyProgrammer.js +27 -15
- package/lib/programmers/http/HttpQuerifyProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpValidateQuerifyProgrammer.d.ts +6 -2
- package/lib/programmers/http/HttpValidateQuerifyProgrammer.js +25 -4
- package/lib/programmers/http/HttpValidateQuerifyProgrammer.js.map +1 -1
- package/lib/transform.d.ts +2 -2
- package/lib/transform.js.map +1 -1
- package/lib/transformers/FileTransformer.d.ts +2 -2
- package/lib/transformers/FileTransformer.js +24 -10
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/MethodTransformer.d.ts +5 -2
- package/lib/transformers/MethodTransformer.js +21 -14
- package/lib/transformers/MethodTransformer.js.map +1 -1
- package/lib/transformers/NodeTransformer.d.ts +5 -2
- package/lib/transformers/NodeTransformer.js +11 -5
- package/lib/transformers/NodeTransformer.js.map +1 -1
- package/lib/transformers/ParameterDecoratorTransformer.d.ts +6 -2
- package/lib/transformers/ParameterDecoratorTransformer.js +49 -40
- package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
- package/lib/transformers/ParameterTransformer.d.ts +5 -2
- package/lib/transformers/ParameterTransformer.js +17 -9
- package/lib/transformers/ParameterTransformer.js.map +1 -1
- package/lib/transformers/TypedRouteTransformer.d.ts +6 -2
- package/lib/transformers/TypedRouteTransformer.js +20 -16
- package/lib/transformers/TypedRouteTransformer.js.map +1 -1
- package/lib/transformers/WebSocketRouteTransformer.d.ts +6 -2
- package/lib/transformers/WebSocketRouteTransformer.js +11 -11
- package/lib/transformers/WebSocketRouteTransformer.js.map +1 -1
- package/package.json +5 -5
- package/src/options/INestiaTransformProject.ts +3 -2
- package/src/programmers/PlainBodyProgrammer.ts +32 -13
- package/src/programmers/TypedBodyProgrammer.ts +106 -82
- package/src/programmers/TypedFormDataBodyProgrammer.ts +87 -77
- package/src/programmers/TypedHeadersProgrammer.ts +48 -41
- package/src/programmers/TypedParamProgrammer.ts +21 -15
- package/src/programmers/TypedQueryBodyProgrammer.ts +48 -41
- package/src/programmers/TypedQueryProgrammer.ts +50 -45
- package/src/programmers/TypedQueryRouteProgrammer.ts +44 -39
- package/src/programmers/TypedRouteProgrammer.ts +63 -61
- package/src/programmers/http/HttpAssertQuerifyProgrammer.ts +54 -40
- package/src/programmers/http/HttpIsQuerifyProgrammer.ts +54 -41
- package/src/programmers/http/HttpQuerifyProgrammer.ts +60 -48
- package/src/programmers/http/HttpValidateQuerifyProgrammer.ts +54 -41
- package/src/transform.ts +2 -2
- package/src/transformers/FileTransformer.ts +68 -46
- package/src/transformers/MethodTransformer.ts +56 -51
- package/src/transformers/NodeTransformer.ts +16 -9
- package/src/transformers/ParameterDecoratorTransformer.ts +100 -91
- package/src/transformers/ParameterTransformer.ts +47 -38
- package/src/transformers/TypedRouteTransformer.ts +58 -55
- package/src/transformers/WebSocketRouteTransformer.ts +81 -78
|
@@ -15,67 +15,76 @@ const TypedQueryBodyProgrammer_1 = require("../programmers/TypedQueryBodyProgram
|
|
|
15
15
|
const TypedQueryProgrammer_1 = require("../programmers/TypedQueryProgrammer");
|
|
16
16
|
var ParameterDecoratorTransformer;
|
|
17
17
|
(function (ParameterDecoratorTransformer) {
|
|
18
|
-
ParameterDecoratorTransformer.transform = (
|
|
18
|
+
ParameterDecoratorTransformer.transform = (props) => {
|
|
19
19
|
var _a;
|
|
20
20
|
//----
|
|
21
21
|
// VALIDATIONS
|
|
22
22
|
//----
|
|
23
23
|
// CHECK DECORATOR
|
|
24
|
-
if (!typescript_1.default.isCallExpression(decorator.expression))
|
|
25
|
-
return decorator;
|
|
24
|
+
if (!typescript_1.default.isCallExpression(props.decorator.expression))
|
|
25
|
+
return props.decorator;
|
|
26
26
|
// SIGNATURE DECLARATION
|
|
27
|
-
const declaration = (_a =
|
|
27
|
+
const declaration = (_a = props.context.checker.getResolvedSignature(props.decorator.expression)) === null || _a === void 0 ? void 0 : _a.declaration;
|
|
28
28
|
if (declaration === undefined)
|
|
29
|
-
return decorator;
|
|
29
|
+
return props.decorator;
|
|
30
30
|
// FILE PATH
|
|
31
31
|
const file = path_1.default.resolve(declaration.getSourceFile().fileName);
|
|
32
32
|
if (file.indexOf(LIB_PATH) === -1 && file.indexOf(SRC_PATH) === -1)
|
|
33
|
-
return decorator;
|
|
33
|
+
return props.decorator;
|
|
34
34
|
//----
|
|
35
35
|
// TRANSFORMATION
|
|
36
36
|
//----
|
|
37
37
|
// FIND PROGRAMMER
|
|
38
|
-
const programmer = FUNCTORS[getName(
|
|
38
|
+
const programmer = FUNCTORS[getName(props.context.checker.getTypeAtLocation(declaration).symbol)];
|
|
39
39
|
if (programmer === undefined)
|
|
40
|
-
return decorator;
|
|
40
|
+
return props.decorator;
|
|
41
41
|
// GET TYPE INFO
|
|
42
|
-
const typeNode =
|
|
42
|
+
const typeNode = props.context.checker.typeToTypeNode(props.type, undefined, undefined);
|
|
43
43
|
if (typeNode === undefined)
|
|
44
|
-
return decorator;
|
|
44
|
+
return props.decorator;
|
|
45
45
|
// DO TRANSFORM
|
|
46
|
-
return typescript_1.default.factory.createDecorator(typescript_1.default.factory.updateCallExpression(decorator.expression, decorator.expression.expression, decorator.expression.typeArguments, programmer(
|
|
46
|
+
return typescript_1.default.factory.createDecorator(typescript_1.default.factory.updateCallExpression(props.decorator.expression, props.decorator.expression.expression, props.decorator.expression.typeArguments, programmer({
|
|
47
|
+
context: props.context,
|
|
48
|
+
modulo: props.decorator.expression.expression,
|
|
49
|
+
arguments: props.decorator.expression.arguments,
|
|
50
|
+
type: props.type,
|
|
51
|
+
})));
|
|
47
52
|
};
|
|
48
53
|
})(ParameterDecoratorTransformer || (exports.ParameterDecoratorTransformer = ParameterDecoratorTransformer = {}));
|
|
49
54
|
const FUNCTORS = {
|
|
50
|
-
EncryptedBody: (
|
|
51
|
-
?
|
|
52
|
-
: [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(
|
|
53
|
-
TypedBody: (
|
|
54
|
-
?
|
|
55
|
-
: [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(
|
|
56
|
-
TypedHeaders: (
|
|
57
|
-
?
|
|
58
|
-
: [TypedHeadersProgrammer_1.TypedHeadersProgrammer.generate(
|
|
59
|
-
TypedParam: (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
55
|
+
EncryptedBody: (props) => props.arguments.length
|
|
56
|
+
? props.arguments
|
|
57
|
+
: [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(props)],
|
|
58
|
+
TypedBody: (props) => props.arguments.length
|
|
59
|
+
? props.arguments
|
|
60
|
+
: [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(props)],
|
|
61
|
+
TypedHeaders: (props) => props.arguments.length
|
|
62
|
+
? props.arguments
|
|
63
|
+
: [TypedHeadersProgrammer_1.TypedHeadersProgrammer.generate(props)],
|
|
64
|
+
TypedParam: (props) => props.arguments.length !== 1
|
|
65
|
+
? props.arguments
|
|
66
|
+
: TypedParamProgrammer_1.TypedParamProgrammer.generate(props),
|
|
67
|
+
TypedQuery: (props) => props.arguments.length
|
|
68
|
+
? props.arguments
|
|
69
|
+
: [TypedQueryProgrammer_1.TypedQueryProgrammer.generate(props)],
|
|
70
|
+
"TypedQuery.Body": (props) => props.arguments.length
|
|
71
|
+
? props.arguments
|
|
72
|
+
: [TypedQueryBodyProgrammer_1.TypedQueryBodyProgrammer.generate(props)],
|
|
73
|
+
"TypedFormData.Body": (props) => props.arguments.length
|
|
74
|
+
? props.arguments
|
|
75
|
+
: [TypedFormDataBodyProgrammer_1.TypedFormDataBodyProgrammer.generate(props)],
|
|
76
|
+
PlainBody: (props) => props.arguments.length
|
|
77
|
+
? props.arguments
|
|
78
|
+
: [PlainBodyProgrammer_1.PlainBodyProgrammer.generate(props)],
|
|
79
|
+
"WebSocketRoute.Header": (props) => props.arguments.length
|
|
80
|
+
? props.arguments
|
|
81
|
+
: [TypedBodyProgrammer_1.TypedBodyProgrammer.generate(props)],
|
|
82
|
+
"WebSocketRoute.Param": (props) => props.arguments.length !== 1
|
|
83
|
+
? props.arguments
|
|
84
|
+
: TypedParamProgrammer_1.TypedParamProgrammer.generate(props),
|
|
85
|
+
"WebSocketRoute.Query": (props) => props.arguments.length
|
|
86
|
+
? props.arguments
|
|
87
|
+
: [TypedQueryProgrammer_1.TypedQueryProgrammer.generate(props)],
|
|
79
88
|
};
|
|
80
89
|
const LIB_PATH = path_1.default.join("@nestia", "core", "lib", "decorators");
|
|
81
90
|
const SRC_PATH = path_1.default.resolve(path_1.default.join(__dirname, "..", "decorators"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;AAG5B,4EAAyE;AACzE,4EAAyE;AACzE,4FAAyF;AACzF,kFAA+E;AAC/E,8EAA2E;AAC3E,sFAAmF;AACnF,8EAA2E;AAE3E,IAAiB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
import {
|
|
2
|
+
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
3
3
|
export declare namespace ParameterTransformer {
|
|
4
|
-
const transform: (
|
|
4
|
+
const transform: (props: {
|
|
5
|
+
context: INestiaTransformContext;
|
|
6
|
+
param: ts.ParameterDeclaration;
|
|
7
|
+
}) => ts.ParameterDeclaration;
|
|
5
8
|
}
|
|
@@ -8,22 +8,30 @@ const typescript_1 = __importDefault(require("typescript"));
|
|
|
8
8
|
const ParameterDecoratorTransformer_1 = require("./ParameterDecoratorTransformer");
|
|
9
9
|
var ParameterTransformer;
|
|
10
10
|
(function (ParameterTransformer) {
|
|
11
|
-
ParameterTransformer.transform = (
|
|
11
|
+
ParameterTransformer.transform = (props) => {
|
|
12
12
|
// CHECK DECORATOR
|
|
13
13
|
const decorators = typescript_1.default.getDecorators
|
|
14
|
-
? typescript_1.default.getDecorators(param)
|
|
15
|
-
: param.decorators;
|
|
14
|
+
? typescript_1.default.getDecorators(props.param)
|
|
15
|
+
: props.param.decorators;
|
|
16
16
|
if (!(decorators === null || decorators === void 0 ? void 0 : decorators.length))
|
|
17
|
-
return param;
|
|
17
|
+
return props.param;
|
|
18
18
|
// GET TYPE INFO
|
|
19
|
-
const type =
|
|
19
|
+
const type = props.context.checker.getTypeAtLocation(props.param);
|
|
20
20
|
// WHEN LATEST TS VERSION
|
|
21
21
|
if (typescript_1.default.getDecorators !== undefined)
|
|
22
|
-
return typescript_1.default.factory.updateParameterDeclaration(param, (param.modifiers || []).map((mod) => typescript_1.default.isDecorator(mod)
|
|
23
|
-
? ParameterDecoratorTransformer_1.ParameterDecoratorTransformer.transform(
|
|
24
|
-
|
|
22
|
+
return typescript_1.default.factory.updateParameterDeclaration(props.param, (props.param.modifiers || []).map((mod) => typescript_1.default.isDecorator(mod)
|
|
23
|
+
? ParameterDecoratorTransformer_1.ParameterDecoratorTransformer.transform({
|
|
24
|
+
context: props.context,
|
|
25
|
+
decorator: mod,
|
|
26
|
+
type,
|
|
27
|
+
})
|
|
28
|
+
: mod), props.param.dotDotDotToken, props.param.name, props.param.questionToken, props.param.type, props.param.initializer);
|
|
25
29
|
// eslint-disable-next-line
|
|
26
|
-
return typescript_1.default.factory.updateParameterDeclaration(param, decorators.map((deco) => ParameterDecoratorTransformer_1.ParameterDecoratorTransformer.transform(
|
|
30
|
+
return typescript_1.default.factory.updateParameterDeclaration(props.param, decorators.map((deco) => ParameterDecoratorTransformer_1.ParameterDecoratorTransformer.transform({
|
|
31
|
+
context: props.context,
|
|
32
|
+
decorator: deco,
|
|
33
|
+
type,
|
|
34
|
+
})), props.param.modifiers, props.param.dotDotDotToken, props.param.name, props.param.questionToken, props.param.type, props.param.initializer);
|
|
27
35
|
};
|
|
28
36
|
})(ParameterTransformer || (exports.ParameterTransformer = ParameterTransformer = {}));
|
|
29
37
|
//# sourceMappingURL=ParameterTransformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAG5B,mFAAgF;AAEhF,IAAiB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ParameterTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAG5B,mFAAgF;AAEhF,IAAiB,oBAAoB,CAmDpC;AAnDD,WAAiB,oBAAoB;IACtB,8BAAS,GAAG,CAAC,KAGzB,EAA2B,EAAE;QAC5B,kBAAkB;QAClB,MAAM,UAAU,GAAwC,oBAAE,CAAC,aAAa;YACtE,CAAC,CAAC,oBAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B,CAAC,CAAE,KAAK,CAAC,KAAa,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC;QAE5C,gBAAgB;QAChB,MAAM,IAAI,GAAY,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3E,yBAAyB;QACzB,IAAI,oBAAE,CAAC,aAAa,KAAK,SAAS;YAChC,OAAO,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAC1C,KAAK,CAAC,KAAK,EACX,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACxC,oBAAE,CAAC,WAAW,CAAC,GAAG,CAAC;gBACjB,CAAC,CAAC,6DAA6B,CAAC,SAAS,CAAC;oBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,GAAG;oBACd,IAAI;iBACL,CAAC;gBACJ,CAAC,CAAC,GAAG,CACR,EACD,KAAK,CAAC,KAAK,CAAC,cAAc,EAC1B,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,KAAK,CAAC,KAAK,CAAC,aAAa,EACzB,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,KAAK,CAAC,KAAK,CAAC,WAAW,CACxB,CAAC;QACJ,2BAA2B;QAC3B,OAAQ,oBAAE,CAAC,OAAO,CAAC,0BAAkC,CACnD,KAAK,CAAC,KAAK,EACX,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,6DAA6B,CAAC,SAAS,CAAC;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,IAAI;YACf,IAAI;SACL,CAAC,CACH,EACA,KAAK,CAAC,KAAa,CAAC,SAAS,EAC9B,KAAK,CAAC,KAAK,CAAC,cAAc,EAC1B,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,KAAK,CAAC,KAAK,CAAC,aAAa,EACzB,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,KAAK,CAAC,KAAK,CAAC,WAAW,CACxB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,EAnDgB,oBAAoB,oCAApB,oBAAoB,QAmDpC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
import {
|
|
2
|
+
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
3
3
|
export declare namespace TypedRouteTransformer {
|
|
4
|
-
const transform: (
|
|
4
|
+
const transform: (props: {
|
|
5
|
+
context: INestiaTransformContext;
|
|
6
|
+
decorator: ts.Decorator;
|
|
7
|
+
type: ts.Type;
|
|
8
|
+
}) => ts.Decorator;
|
|
5
9
|
}
|
|
@@ -10,13 +10,13 @@ const TypedQueryRouteProgrammer_1 = require("../programmers/TypedQueryRouteProgr
|
|
|
10
10
|
const TypedRouteProgrammer_1 = require("../programmers/TypedRouteProgrammer");
|
|
11
11
|
var TypedRouteTransformer;
|
|
12
12
|
(function (TypedRouteTransformer) {
|
|
13
|
-
TypedRouteTransformer.transform = (
|
|
14
|
-
if (!typescript_1.default.isCallExpression(decorator.expression))
|
|
15
|
-
return decorator;
|
|
13
|
+
TypedRouteTransformer.transform = (props) => {
|
|
14
|
+
if (!typescript_1.default.isCallExpression(props.decorator.expression))
|
|
15
|
+
return props.decorator;
|
|
16
16
|
// CHECK SIGNATURE
|
|
17
|
-
const signature =
|
|
17
|
+
const signature = props.context.checker.getResolvedSignature(props.decorator.expression);
|
|
18
18
|
if (!signature || !signature.declaration)
|
|
19
|
-
return decorator;
|
|
19
|
+
return props.decorator;
|
|
20
20
|
// CHECK TO BE TRANSFORMED
|
|
21
21
|
const modulo = (() => {
|
|
22
22
|
var _a;
|
|
@@ -25,12 +25,12 @@ var TypedRouteTransformer;
|
|
|
25
25
|
if (LIB_PATHS.every((str) => location.indexOf(str) === -1))
|
|
26
26
|
return null;
|
|
27
27
|
// CHECK DUPLICATE BOOSTER
|
|
28
|
-
if (decorator.expression.arguments.length >= 2)
|
|
28
|
+
if (props.decorator.expression.arguments.length >= 2)
|
|
29
29
|
return false;
|
|
30
|
-
else if (decorator.expression.arguments.length === 1) {
|
|
31
|
-
const last = decorator.expression.arguments[decorator.expression.arguments.length - 1];
|
|
32
|
-
const type =
|
|
33
|
-
if (isObject(
|
|
30
|
+
else if (props.decorator.expression.arguments.length === 1) {
|
|
31
|
+
const last = props.decorator.expression.arguments[props.decorator.expression.arguments.length - 1];
|
|
32
|
+
const type = props.context.checker.getTypeAtLocation(last);
|
|
33
|
+
if (isObject(props.context.checker)(type))
|
|
34
34
|
return false;
|
|
35
35
|
}
|
|
36
36
|
return ((_a = location.split(path_1.default.sep).at(-1)) === null || _a === void 0 ? void 0 : _a.split(".")[0]) === "TypedQuery"
|
|
@@ -38,17 +38,21 @@ var TypedRouteTransformer;
|
|
|
38
38
|
: "TypedRoute";
|
|
39
39
|
})();
|
|
40
40
|
if (modulo === null)
|
|
41
|
-
return decorator;
|
|
41
|
+
return props.decorator;
|
|
42
42
|
// CHECK TYPE NODE
|
|
43
|
-
const typeNode =
|
|
43
|
+
const typeNode = props.context.checker.typeToTypeNode(props.type, undefined, undefined);
|
|
44
44
|
if (typeNode === undefined)
|
|
45
|
-
return decorator;
|
|
45
|
+
return props.decorator;
|
|
46
46
|
// DO TRANSFORM
|
|
47
|
-
return typescript_1.default.factory.createDecorator(typescript_1.default.factory.updateCallExpression(decorator.expression, decorator.expression.expression, decorator.expression.typeArguments, [
|
|
48
|
-
...decorator.expression.arguments,
|
|
47
|
+
return typescript_1.default.factory.createDecorator(typescript_1.default.factory.updateCallExpression(props.decorator.expression, props.decorator.expression.expression, props.decorator.expression.typeArguments, [
|
|
48
|
+
...props.decorator.expression.arguments,
|
|
49
49
|
(modulo === "TypedQuery"
|
|
50
50
|
? TypedQueryRouteProgrammer_1.TypedQueryRouteProgrammer
|
|
51
|
-
: TypedRouteProgrammer_1.TypedRouteProgrammer).generate(
|
|
51
|
+
: TypedRouteProgrammer_1.TypedRouteProgrammer).generate({
|
|
52
|
+
context: props.context,
|
|
53
|
+
type: props.type,
|
|
54
|
+
modulo: props.decorator.expression.expression,
|
|
55
|
+
}),
|
|
52
56
|
]));
|
|
53
57
|
};
|
|
54
58
|
const isObject = (checker) => (type) => (type.getFlags() & typescript_1.default.TypeFlags.Object) !== 0 &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedRouteTransformer.js","sourceRoot":"","sources":["../../src/transformers/TypedRouteTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;AAG5B,wFAAqF;AACrF,8EAA2E;AAE3E,IAAiB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"TypedRouteTransformer.js","sourceRoot":"","sources":["../../src/transformers/TypedRouteTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
import {
|
|
2
|
+
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
3
3
|
export declare namespace WebSocketRouteTransformer {
|
|
4
|
-
const validate: (
|
|
4
|
+
const validate: (props: {
|
|
5
|
+
context: INestiaTransformContext;
|
|
6
|
+
decorator: ts.Decorator;
|
|
7
|
+
method: ts.MethodDeclaration;
|
|
8
|
+
}) => ts.Decorator;
|
|
5
9
|
}
|
|
@@ -8,15 +8,15 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const typescript_1 = __importDefault(require("typescript"));
|
|
9
9
|
var WebSocketRouteTransformer;
|
|
10
10
|
(function (WebSocketRouteTransformer) {
|
|
11
|
-
WebSocketRouteTransformer.validate = (
|
|
12
|
-
if (!typescript_1.default.isCallExpression(decorator.expression))
|
|
13
|
-
return decorator;
|
|
11
|
+
WebSocketRouteTransformer.validate = (props) => {
|
|
12
|
+
if (!typescript_1.default.isCallExpression(props.decorator.expression))
|
|
13
|
+
return props.decorator;
|
|
14
14
|
// CHECK SIGNATURE
|
|
15
|
-
const signature =
|
|
15
|
+
const signature = props.context.checker.getResolvedSignature(props.decorator.expression);
|
|
16
16
|
if (!signature || !signature.declaration)
|
|
17
|
-
return decorator;
|
|
17
|
+
return props.decorator;
|
|
18
18
|
else if (isLocated(signature) === false)
|
|
19
|
-
return decorator;
|
|
19
|
+
return props.decorator;
|
|
20
20
|
const errors = [];
|
|
21
21
|
let accepted = false;
|
|
22
22
|
const report = (node, message) => {
|
|
@@ -27,7 +27,7 @@ var WebSocketRouteTransformer;
|
|
|
27
27
|
message,
|
|
28
28
|
}));
|
|
29
29
|
};
|
|
30
|
-
method.parameters.forEach((param) => {
|
|
30
|
+
props.method.parameters.forEach((param) => {
|
|
31
31
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
32
32
|
const paramDecos = ((_a = param.modifiers) !== null && _a !== void 0 ? _a : []).filter((m) => typescript_1.default.isDecorator(m));
|
|
33
33
|
const category = (() => {
|
|
@@ -36,7 +36,7 @@ var WebSocketRouteTransformer;
|
|
|
36
36
|
return null;
|
|
37
37
|
const decorator = paramDecos[0];
|
|
38
38
|
const signature = typescript_1.default.isCallExpression(decorator.expression)
|
|
39
|
-
?
|
|
39
|
+
? props.context.checker.getResolvedSignature(decorator.expression)
|
|
40
40
|
: undefined;
|
|
41
41
|
if (signature === undefined || isLocated(signature) === false)
|
|
42
42
|
return null;
|
|
@@ -55,10 +55,10 @@ var WebSocketRouteTransformer;
|
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
57
|
if (accepted === false)
|
|
58
|
-
report(method, `method ${JSON.stringify(method.name.getText())} must have at least one parameter decorated by @WebSocketRoute.Acceptor().`);
|
|
58
|
+
report(props.method, `method ${JSON.stringify(props.method.name.getText())} must have at least one parameter decorated by @WebSocketRoute.Acceptor().`);
|
|
59
59
|
for (const e of errors)
|
|
60
|
-
|
|
61
|
-
return decorator;
|
|
60
|
+
props.context.extras.addDiagnostic(e);
|
|
61
|
+
return props.decorator;
|
|
62
62
|
};
|
|
63
63
|
})(WebSocketRouteTransformer || (exports.WebSocketRouteTransformer = WebSocketRouteTransformer = {}));
|
|
64
64
|
const isLocated = (signature) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketRouteTransformer.js","sourceRoot":"","sources":["../../src/transformers/WebSocketRouteTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;AAI5B,IAAiB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"WebSocketRouteTransformer.js","sourceRoot":"","sources":["../../src/transformers/WebSocketRouteTransformer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-dev.20241010-2",
|
|
4
4
|
"description": "Super-fast validation decorators of NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://nestia.io",
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@nestia/fetcher": "^
|
|
39
|
+
"@nestia/fetcher": "^4.0.0-dev.20241010-2",
|
|
40
40
|
"@nestjs/common": ">=7.0.1",
|
|
41
41
|
"@nestjs/core": ">=7.0.1",
|
|
42
42
|
"@samchon/openapi": "^1.1.0",
|
|
@@ -49,16 +49,16 @@
|
|
|
49
49
|
"reflect-metadata": ">=0.1.12",
|
|
50
50
|
"rxjs": ">=6.0.3",
|
|
51
51
|
"tgrid": "^1.0.0",
|
|
52
|
-
"typia": "^
|
|
52
|
+
"typia": "^7.0.0-dev.20241010-2",
|
|
53
53
|
"ws": "^7.5.3"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@nestia/fetcher": ">=
|
|
56
|
+
"@nestia/fetcher": ">=4.0.0-dev.20241010-2",
|
|
57
57
|
"@nestjs/common": ">=7.0.1",
|
|
58
58
|
"@nestjs/core": ">=7.0.1",
|
|
59
59
|
"reflect-metadata": ">=0.1.12",
|
|
60
60
|
"rxjs": ">=6.0.3",
|
|
61
|
-
"typia": ">=
|
|
61
|
+
"typia": ">=7.0.0-dev.20241010-2 <8.0.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@fastify/multipart": "^8.1.0",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
|
|
2
2
|
|
|
3
3
|
import { INestiaTransformOptions } from "./INestiaTransformOptions";
|
|
4
4
|
|
|
5
|
-
export interface
|
|
5
|
+
export interface INestiaTransformContext
|
|
6
|
+
extends Omit<ITypiaContext, "options"> {
|
|
6
7
|
options: INestiaTransformOptions;
|
|
7
8
|
}
|
|
@@ -5,30 +5,49 @@ import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
|
|
|
5
5
|
import { Metadata } from "typia/lib/schemas/metadata/Metadata";
|
|
6
6
|
import { TransformerError } from "typia/lib/transformers/TransformerError";
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
9
9
|
|
|
10
10
|
export namespace PlainBodyProgrammer {
|
|
11
|
-
export const generate =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export const generate = (props: {
|
|
12
|
+
context: INestiaTransformContext;
|
|
13
|
+
modulo: ts.LeftHandSideExpression;
|
|
14
|
+
type: ts.Type;
|
|
15
|
+
}): ts.Expression => {
|
|
16
|
+
const result = MetadataFactory.analyze({
|
|
17
|
+
checker: props.context.checker,
|
|
18
|
+
transformer: props.context.transformer,
|
|
19
|
+
options: {
|
|
16
20
|
escape: false,
|
|
17
21
|
constant: true,
|
|
18
22
|
absorb: true,
|
|
19
23
|
validate,
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
},
|
|
25
|
+
collection: new MetadataCollection(),
|
|
26
|
+
type: props.type,
|
|
27
|
+
});
|
|
28
|
+
if (result.success === false)
|
|
29
|
+
throw TransformerError.from({
|
|
30
|
+
code: "nestia.core.TypedParam",
|
|
31
|
+
errors: result.errors,
|
|
32
|
+
});
|
|
33
|
+
return AssertProgrammer.write({
|
|
34
|
+
context: {
|
|
35
|
+
...props.context,
|
|
25
36
|
options: {
|
|
26
37
|
numeric: false,
|
|
27
38
|
finite: false,
|
|
28
39
|
functional: false,
|
|
29
40
|
},
|
|
30
|
-
}
|
|
31
|
-
|
|
41
|
+
},
|
|
42
|
+
modulo: props.modulo,
|
|
43
|
+
config: {
|
|
44
|
+
equals: false,
|
|
45
|
+
guard: false,
|
|
46
|
+
},
|
|
47
|
+
type: props.type,
|
|
48
|
+
name: undefined,
|
|
49
|
+
});
|
|
50
|
+
};
|
|
32
51
|
}
|
|
33
52
|
|
|
34
53
|
const validate = (metadata: Metadata): string[] => {
|