@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.
Files changed (32) hide show
  1. package/lib/decorators/TypedParam.js +2 -2
  2. package/lib/decorators/TypedParam.js.map +1 -1
  3. package/lib/transform.d.ts +2 -1
  4. package/lib/transform.js +7 -8
  5. package/lib/transform.js.map +1 -1
  6. package/lib/transformers/FileTransformer.d.ts +1 -1
  7. package/lib/transformers/FileTransformer.js +28 -20
  8. package/lib/transformers/FileTransformer.js.map +1 -1
  9. package/lib/transformers/MethodDecoratorTransformer.d.ts +1 -1
  10. package/lib/transformers/MethodDecoratorTransformer.js +48 -43
  11. package/lib/transformers/MethodDecoratorTransformer.js.map +1 -1
  12. package/lib/transformers/MethodTransformer.d.ts +1 -1
  13. package/lib/transformers/MethodTransformer.js +51 -43
  14. package/lib/transformers/MethodTransformer.js.map +1 -1
  15. package/lib/transformers/NodeTransformer.d.ts +1 -1
  16. package/lib/transformers/NodeTransformer.js +9 -8
  17. package/lib/transformers/NodeTransformer.js.map +1 -1
  18. package/lib/transformers/ParameterDecoratorTransformer.d.ts +1 -1
  19. package/lib/transformers/ParameterDecoratorTransformer.js +41 -38
  20. package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
  21. package/lib/transformers/ParameterTransformer.d.ts +1 -1
  22. package/lib/transformers/ParameterTransformer.js +23 -22
  23. package/lib/transformers/ParameterTransformer.js.map +1 -1
  24. package/package.json +2 -4
  25. package/src/decorators/TypedParam.ts +2 -3
  26. package/src/transform.ts +5 -8
  27. package/src/transformers/FileTransformer.ts +35 -39
  28. package/src/transformers/MethodDecoratorTransformer.ts +57 -58
  29. package/src/transformers/MethodTransformer.ts +72 -68
  30. package/src/transformers/NodeTransformer.ts +8 -10
  31. package/src/transformers/ParameterDecoratorTransformer.ts +50 -49
  32. 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 function transform(
11
- project: INestiaTransformProject,
12
- type: ts.Type,
13
- decorator: ts.Decorator,
14
- ): ts.Decorator {
15
- //----
16
- // VALIDATIONS
17
- //----
18
- // CHECK DECORATOR
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
- // SIGNATURE DECLARATION
22
- const declaration: ts.Declaration | undefined =
23
- project.checker.getResolvedSignature(
24
- decorator.expression,
25
- )?.declaration;
26
- if (declaration === undefined) return decorator;
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
- // FILE PATH
29
- const file: string = path.resolve(declaration.getSourceFile().fileName);
30
- if (file.indexOf(LIB_PATH) === -1 && file.indexOf(SRC_PATH) === -1)
31
- return decorator;
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
- // TRANSFORMATION
35
- //----
36
- // FIND PROGRAMMER
37
- const programmer: Programmer | undefined =
38
- FUNCTORS[
39
- project.checker.getTypeAtLocation(declaration).symbol.name
40
- ];
41
- if (programmer === undefined) return decorator;
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
- // GET TYPE INFO
44
- const typeNode: ts.TypeNode | undefined =
45
- project.checker.typeToTypeNode(type, undefined, undefined);
46
- if (typeNode === undefined) return decorator;
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
- // DO TRANSFORM
49
- return ts.factory.createDecorator(
50
- ts.factory.updateCallExpression(
51
- decorator.expression,
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
- )(decorator.expression.arguments)(type),
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, modulo) => (parameters) => (type) =>
72
+ EncryptedBody: (project) => (modulo) => (parameters) => (type) =>
72
73
  parameters.length
73
74
  ? parameters
74
75
  : [TypedBodyProgrammer.generate(project)(modulo)(type)],
75
- TypedBody: (project, modulo) => (parameters) => (type) =>
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, modulo) => (parameters) => (type) =>
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 function transform(
8
- project: INestiaTransformProject,
9
- param: ts.ParameterDeclaration,
10
- ): ts.ParameterDeclaration {
11
- // CHECK DECORATOR
12
- const decorators: readonly ts.Decorator[] | undefined = ts.getDecorators
13
- ? ts.getDecorators(param)
14
- : (param as any).decorators;
15
- if (!decorators?.length) return param;
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
- // GET TYPE INFO
18
- const type: ts.Type = project.checker.getTypeAtLocation(param);
17
+ // GET TYPE INFO
18
+ const type: ts.Type = project.checker.getTypeAtLocation(param);
19
19
 
20
- // WHEN LATEST TS VERSION
21
- if (ts.getDecorators !== undefined)
22
- return ts.factory.updateParameterDeclaration(
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
- (param.modifiers || []).map((mod) =>
25
- ts.isDecorator(mod)
26
- ? ParameterDecoratorTransformer.transform(
27
- project,
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
- // eslint-disable-next-line
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
  }