@nestia/core 1.1.2-dev.20230503-2 → 1.2.0-dev.20230504
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/lib/decorators/TypedParam.js +2 -2
- package/lib/decorators/TypedParam.js.map +1 -1
- package/lib/transform.d.ts +2 -1
- package/lib/transform.js +7 -8
- package/lib/transform.js.map +1 -1
- package/lib/transformers/FileTransformer.d.ts +1 -1
- package/lib/transformers/FileTransformer.js +28 -20
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/MethodDecoratorTransformer.d.ts +1 -1
- package/lib/transformers/MethodDecoratorTransformer.js +48 -43
- package/lib/transformers/MethodDecoratorTransformer.js.map +1 -1
- package/lib/transformers/MethodTransformer.d.ts +1 -1
- package/lib/transformers/MethodTransformer.js +51 -43
- package/lib/transformers/MethodTransformer.js.map +1 -1
- package/lib/transformers/NodeTransformer.d.ts +1 -1
- package/lib/transformers/NodeTransformer.js +9 -8
- package/lib/transformers/NodeTransformer.js.map +1 -1
- package/lib/transformers/ParameterDecoratorTransformer.d.ts +1 -1
- package/lib/transformers/ParameterDecoratorTransformer.js +41 -38
- package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
- package/lib/transformers/ParameterTransformer.d.ts +1 -1
- package/lib/transformers/ParameterTransformer.js +23 -22
- package/lib/transformers/ParameterTransformer.js.map +1 -1
- package/package.json +2 -4
- package/src/decorators/TypedParam.ts +2 -3
- package/src/transform.ts +5 -8
- package/src/transformers/FileTransformer.ts +35 -39
- package/src/transformers/MethodDecoratorTransformer.ts +57 -58
- package/src/transformers/MethodTransformer.ts +72 -68
- package/src/transformers/NodeTransformer.ts +8 -10
- package/src/transformers/ParameterDecoratorTransformer.ts +50 -49
- package/src/transformers/ParameterTransformer.ts +36 -36
|
@@ -7,77 +7,78 @@ import { TypedParamProgrammer } from "../programmers/TypedParamProgrammer";
|
|
|
7
7
|
import { TypedQueryProgrammer } from "../programmers/TypedQueryProgrammer";
|
|
8
8
|
|
|
9
9
|
export namespace ParameterDecoratorTransformer {
|
|
10
|
-
export
|
|
11
|
-
project: INestiaTransformProject
|
|
12
|
-
type: ts.Type
|
|
13
|
-
decorator: ts.Decorator
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (!ts.isCallExpression(decorator.expression)) return decorator;
|
|
10
|
+
export const transform =
|
|
11
|
+
(project: INestiaTransformProject) =>
|
|
12
|
+
(type: ts.Type) =>
|
|
13
|
+
(decorator: ts.Decorator): ts.Decorator => {
|
|
14
|
+
//----
|
|
15
|
+
// VALIDATIONS
|
|
16
|
+
//----
|
|
17
|
+
// CHECK DECORATOR
|
|
18
|
+
if (!ts.isCallExpression(decorator.expression)) return decorator;
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
// SIGNATURE DECLARATION
|
|
21
|
+
const declaration: ts.Declaration | undefined =
|
|
22
|
+
project.checker.getResolvedSignature(
|
|
23
|
+
decorator.expression,
|
|
24
|
+
)?.declaration;
|
|
25
|
+
if (declaration === undefined) return decorator;
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
// FILE PATH
|
|
28
|
+
const file: string = path.resolve(
|
|
29
|
+
declaration.getSourceFile().fileName,
|
|
30
|
+
);
|
|
31
|
+
if (file.indexOf(LIB_PATH) === -1 && file.indexOf(SRC_PATH) === -1)
|
|
32
|
+
return decorator;
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
//----
|
|
35
|
+
// TRANSFORMATION
|
|
36
|
+
//----
|
|
37
|
+
// FIND PROGRAMMER
|
|
38
|
+
const programmer: Programmer | undefined =
|
|
39
|
+
FUNCTORS[
|
|
40
|
+
project.checker.getTypeAtLocation(declaration).symbol.name
|
|
41
|
+
];
|
|
42
|
+
if (programmer === undefined) return decorator;
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
// GET TYPE INFO
|
|
45
|
+
const typeNode: ts.TypeNode | undefined =
|
|
46
|
+
project.checker.typeToTypeNode(type, undefined, undefined);
|
|
47
|
+
if (typeNode === undefined) return decorator;
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
decorator.expression.expression,
|
|
53
|
-
decorator.expression.typeArguments,
|
|
54
|
-
programmer(
|
|
55
|
-
project,
|
|
49
|
+
// DO TRANSFORM
|
|
50
|
+
return ts.factory.createDecorator(
|
|
51
|
+
ts.factory.updateCallExpression(
|
|
52
|
+
decorator.expression,
|
|
56
53
|
decorator.expression.expression,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
decorator.expression.typeArguments,
|
|
55
|
+
programmer(project)(decorator.expression.expression)(
|
|
56
|
+
decorator.expression.arguments,
|
|
57
|
+
)(type),
|
|
58
|
+
),
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
type Programmer = (
|
|
64
64
|
project: INestiaTransformProject,
|
|
65
|
+
) => (
|
|
65
66
|
modulo: ts.LeftHandSideExpression,
|
|
66
67
|
) => (
|
|
67
68
|
parameters: readonly ts.Expression[],
|
|
68
69
|
) => (type: ts.Type) => readonly ts.Expression[];
|
|
69
70
|
|
|
70
71
|
const FUNCTORS: Record<string, Programmer> = {
|
|
71
|
-
EncryptedBody: (project
|
|
72
|
+
EncryptedBody: (project) => (modulo) => (parameters) => (type) =>
|
|
72
73
|
parameters.length
|
|
73
74
|
? parameters
|
|
74
75
|
: [TypedBodyProgrammer.generate(project)(modulo)(type)],
|
|
75
|
-
TypedBody: (project
|
|
76
|
+
TypedBody: (project) => (modulo) => (parameters) => (type) =>
|
|
76
77
|
parameters.length
|
|
77
78
|
? parameters
|
|
78
79
|
: [TypedBodyProgrammer.generate(project)(modulo)(type)],
|
|
79
|
-
TypedParam: TypedParamProgrammer.generate,
|
|
80
|
-
TypedQuery: (project
|
|
80
|
+
TypedParam: (project) => () => TypedParamProgrammer.generate(project),
|
|
81
|
+
TypedQuery: (project) => (modulo) => (parameters) => (type) =>
|
|
81
82
|
parameters.length
|
|
82
83
|
? parameters
|
|
83
84
|
: [TypedQueryProgrammer.generate(project)(modulo)(type)],
|
|
@@ -4,50 +4,50 @@ import { INestiaTransformProject } from "../options/INestiaTransformProject";
|
|
|
4
4
|
import { ParameterDecoratorTransformer } from "./ParameterDecoratorTransformer";
|
|
5
5
|
|
|
6
6
|
export namespace ParameterTransformer {
|
|
7
|
-
export
|
|
8
|
-
project: INestiaTransformProject
|
|
9
|
-
param: ts.ParameterDeclaration
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
export const transform =
|
|
8
|
+
(project: INestiaTransformProject) =>
|
|
9
|
+
(param: ts.ParameterDeclaration): ts.ParameterDeclaration => {
|
|
10
|
+
// CHECK DECORATOR
|
|
11
|
+
const decorators: readonly ts.Decorator[] | undefined =
|
|
12
|
+
ts.getDecorators
|
|
13
|
+
? ts.getDecorators(param)
|
|
14
|
+
: (param as any).decorators;
|
|
15
|
+
if (!decorators?.length) return param;
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
// GET TYPE INFO
|
|
18
|
+
const type: ts.Type = project.checker.getTypeAtLocation(param);
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
// WHEN LATEST TS VERSION
|
|
21
|
+
if (ts.getDecorators !== undefined)
|
|
22
|
+
return ts.factory.updateParameterDeclaration(
|
|
23
|
+
param,
|
|
24
|
+
(param.modifiers || []).map((mod) =>
|
|
25
|
+
ts.isDecorator(mod)
|
|
26
|
+
? ParameterDecoratorTransformer.transform(project)(
|
|
27
|
+
type,
|
|
28
|
+
)(mod)
|
|
29
|
+
: mod,
|
|
30
|
+
),
|
|
31
|
+
param.dotDotDotToken,
|
|
32
|
+
param.name,
|
|
33
|
+
param.questionToken,
|
|
34
|
+
param.type,
|
|
35
|
+
param.initializer,
|
|
36
|
+
);
|
|
37
|
+
// eslint-disable-next-line
|
|
38
|
+
return (ts.factory.updateParameterDeclaration as any)(
|
|
23
39
|
param,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
type,
|
|
29
|
-
mod,
|
|
30
|
-
)
|
|
31
|
-
: mod,
|
|
40
|
+
decorators.map((deco) =>
|
|
41
|
+
ParameterDecoratorTransformer.transform(project)(type)(
|
|
42
|
+
deco,
|
|
43
|
+
),
|
|
32
44
|
),
|
|
45
|
+
(param as any).modifiers,
|
|
33
46
|
param.dotDotDotToken,
|
|
34
47
|
param.name,
|
|
35
48
|
param.questionToken,
|
|
36
49
|
param.type,
|
|
37
50
|
param.initializer,
|
|
38
51
|
);
|
|
39
|
-
|
|
40
|
-
return (ts.factory.updateParameterDeclaration as any)(
|
|
41
|
-
param,
|
|
42
|
-
decorators.map((deco) =>
|
|
43
|
-
ParameterDecoratorTransformer.transform(project, type, deco),
|
|
44
|
-
),
|
|
45
|
-
(param as any).modifiers,
|
|
46
|
-
param.dotDotDotToken,
|
|
47
|
-
param.name,
|
|
48
|
-
param.questionToken,
|
|
49
|
-
param.type,
|
|
50
|
-
param.initializer,
|
|
51
|
-
);
|
|
52
|
-
}
|
|
52
|
+
};
|
|
53
53
|
}
|