@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.
Files changed (87) hide show
  1. package/README.md +0 -1
  2. package/lib/options/INestiaTransformProject.d.ts +2 -2
  3. package/lib/programmers/PlainBodyProgrammer.d.ts +6 -2
  4. package/lib/programmers/PlainBodyProgrammer.js +31 -13
  5. package/lib/programmers/PlainBodyProgrammer.js.map +1 -1
  6. package/lib/programmers/TypedBodyProgrammer.d.ts +6 -2
  7. package/lib/programmers/TypedBodyProgrammer.js +32 -13
  8. package/lib/programmers/TypedBodyProgrammer.js.map +1 -1
  9. package/lib/programmers/TypedFormDataBodyProgrammer.d.ts +6 -2
  10. package/lib/programmers/TypedFormDataBodyProgrammer.js +30 -17
  11. package/lib/programmers/TypedFormDataBodyProgrammer.js.map +1 -1
  12. package/lib/programmers/TypedHeadersProgrammer.d.ts +6 -2
  13. package/lib/programmers/TypedHeadersProgrammer.js +12 -7
  14. package/lib/programmers/TypedHeadersProgrammer.js.map +1 -1
  15. package/lib/programmers/TypedParamProgrammer.d.ts +7 -2
  16. package/lib/programmers/TypedParamProgrammer.js +12 -7
  17. package/lib/programmers/TypedParamProgrammer.js.map +1 -1
  18. package/lib/programmers/TypedQueryBodyProgrammer.d.ts +6 -2
  19. package/lib/programmers/TypedQueryBodyProgrammer.js +12 -7
  20. package/lib/programmers/TypedQueryBodyProgrammer.js.map +1 -1
  21. package/lib/programmers/TypedQueryProgrammer.d.ts +6 -2
  22. package/lib/programmers/TypedQueryProgrammer.js +13 -7
  23. package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
  24. package/lib/programmers/TypedQueryRouteProgrammer.d.ts +6 -2
  25. package/lib/programmers/TypedQueryRouteProgrammer.js +10 -6
  26. package/lib/programmers/TypedQueryRouteProgrammer.js.map +1 -1
  27. package/lib/programmers/TypedRouteProgrammer.d.ts +6 -2
  28. package/lib/programmers/TypedRouteProgrammer.js +14 -9
  29. package/lib/programmers/TypedRouteProgrammer.js.map +1 -1
  30. package/lib/programmers/http/HttpAssertQuerifyProgrammer.d.ts +6 -2
  31. package/lib/programmers/http/HttpAssertQuerifyProgrammer.js +22 -3
  32. package/lib/programmers/http/HttpAssertQuerifyProgrammer.js.map +1 -1
  33. package/lib/programmers/http/HttpIsQuerifyProgrammer.d.ts +6 -2
  34. package/lib/programmers/http/HttpIsQuerifyProgrammer.js +21 -3
  35. package/lib/programmers/http/HttpIsQuerifyProgrammer.js.map +1 -1
  36. package/lib/programmers/http/HttpQuerifyProgrammer.d.ts +6 -2
  37. package/lib/programmers/http/HttpQuerifyProgrammer.js +27 -15
  38. package/lib/programmers/http/HttpQuerifyProgrammer.js.map +1 -1
  39. package/lib/programmers/http/HttpValidateQuerifyProgrammer.d.ts +6 -2
  40. package/lib/programmers/http/HttpValidateQuerifyProgrammer.js +25 -4
  41. package/lib/programmers/http/HttpValidateQuerifyProgrammer.js.map +1 -1
  42. package/lib/transform.d.ts +2 -2
  43. package/lib/transform.js.map +1 -1
  44. package/lib/transformers/FileTransformer.d.ts +2 -2
  45. package/lib/transformers/FileTransformer.js +24 -10
  46. package/lib/transformers/FileTransformer.js.map +1 -1
  47. package/lib/transformers/MethodTransformer.d.ts +5 -2
  48. package/lib/transformers/MethodTransformer.js +21 -14
  49. package/lib/transformers/MethodTransformer.js.map +1 -1
  50. package/lib/transformers/NodeTransformer.d.ts +5 -2
  51. package/lib/transformers/NodeTransformer.js +11 -5
  52. package/lib/transformers/NodeTransformer.js.map +1 -1
  53. package/lib/transformers/ParameterDecoratorTransformer.d.ts +6 -2
  54. package/lib/transformers/ParameterDecoratorTransformer.js +49 -40
  55. package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
  56. package/lib/transformers/ParameterTransformer.d.ts +5 -2
  57. package/lib/transformers/ParameterTransformer.js +17 -9
  58. package/lib/transformers/ParameterTransformer.js.map +1 -1
  59. package/lib/transformers/TypedRouteTransformer.d.ts +6 -2
  60. package/lib/transformers/TypedRouteTransformer.js +20 -16
  61. package/lib/transformers/TypedRouteTransformer.js.map +1 -1
  62. package/lib/transformers/WebSocketRouteTransformer.d.ts +6 -2
  63. package/lib/transformers/WebSocketRouteTransformer.js +11 -11
  64. package/lib/transformers/WebSocketRouteTransformer.js.map +1 -1
  65. package/package.json +5 -5
  66. package/src/options/INestiaTransformProject.ts +3 -2
  67. package/src/programmers/PlainBodyProgrammer.ts +32 -13
  68. package/src/programmers/TypedBodyProgrammer.ts +106 -82
  69. package/src/programmers/TypedFormDataBodyProgrammer.ts +87 -77
  70. package/src/programmers/TypedHeadersProgrammer.ts +48 -41
  71. package/src/programmers/TypedParamProgrammer.ts +21 -15
  72. package/src/programmers/TypedQueryBodyProgrammer.ts +48 -41
  73. package/src/programmers/TypedQueryProgrammer.ts +50 -45
  74. package/src/programmers/TypedQueryRouteProgrammer.ts +44 -39
  75. package/src/programmers/TypedRouteProgrammer.ts +63 -61
  76. package/src/programmers/http/HttpAssertQuerifyProgrammer.ts +54 -40
  77. package/src/programmers/http/HttpIsQuerifyProgrammer.ts +54 -41
  78. package/src/programmers/http/HttpQuerifyProgrammer.ts +60 -48
  79. package/src/programmers/http/HttpValidateQuerifyProgrammer.ts +54 -41
  80. package/src/transform.ts +2 -2
  81. package/src/transformers/FileTransformer.ts +68 -46
  82. package/src/transformers/MethodTransformer.ts +56 -51
  83. package/src/transformers/NodeTransformer.ts +16 -9
  84. package/src/transformers/ParameterDecoratorTransformer.ts +100 -91
  85. package/src/transformers/ParameterTransformer.ts +47 -38
  86. package/src/transformers/TypedRouteTransformer.ts +58 -55
  87. package/src/transformers/WebSocketRouteTransformer.ts +81 -78
@@ -7,102 +7,126 @@ import { MiscAssertCloneProgrammer } from "typia/lib/programmers/misc/MiscAssert
7
7
  import { MiscAssertPruneProgrammer } from "typia/lib/programmers/misc/MiscAssertPruneProgrammer";
8
8
  import { MiscValidateCloneProgrammer } from "typia/lib/programmers/misc/MiscValidateCloneProgrammer";
9
9
  import { MiscValidatePruneProgrammer } from "typia/lib/programmers/misc/MiscValidatePruneProgrammer";
10
- import { IProject } from "typia/lib/transformers/IProject";
10
+ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
11
11
 
12
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
12
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
13
13
  import { IRequestBodyValidator } from "../options/IRequestBodyValidator";
14
14
 
15
15
  export namespace TypedBodyProgrammer {
16
- export const generate =
17
- (project: INestiaTransformProject) =>
18
- (modulo: ts.LeftHandSideExpression) =>
19
- (type: ts.Type): ts.ObjectLiteralExpression => {
20
- // VALIDATE TYPE
21
- JsonMetadataFactory.analyze("@nestia.core.TypedBody")(project.checker)(
22
- type,
23
- );
16
+ export const generate = (props: {
17
+ context: INestiaTransformContext;
18
+ modulo: ts.LeftHandSideExpression;
19
+ type: ts.Type;
20
+ }): ts.ObjectLiteralExpression => {
21
+ // VALIDATE TYPE
22
+ JsonMetadataFactory.analyze({
23
+ method: "@nestia.core.TypedBody",
24
+ checker: props.context.checker,
25
+ transformer: props.context.transformer,
26
+ type: props.type,
27
+ });
24
28
 
25
- // GENERATE VALIDATION PLAN
26
- const check =
27
- (key: IRequestBodyValidator<any>["type"]) =>
28
- (equals: boolean) =>
29
- (
30
- programmer: (
31
- project: IProject,
32
- ) => (
33
- modulo: ts.LeftHandSideExpression,
34
- ) => (equals: boolean) => (type: ts.Type) => ts.Expression,
35
- ) =>
36
- ts.factory.createObjectLiteralExpression([
37
- ts.factory.createPropertyAssignment(
38
- ts.factory.createIdentifier("type"),
39
- ts.factory.createStringLiteral(key),
40
- ),
41
- ts.factory.createPropertyAssignment(
42
- ts.factory.createIdentifier(key),
43
- programmer({
44
- ...project,
29
+ // GENERATE VALIDATION PLAN
30
+ const check =
31
+ (key: IRequestBodyValidator<any>["type"]) =>
32
+ (equals: boolean) =>
33
+ (
34
+ programmer: (next: {
35
+ context: ITypiaContext;
36
+ modulo: ts.LeftHandSideExpression;
37
+ config: {
38
+ equals: boolean;
39
+ guard: boolean;
40
+ };
41
+ type: ts.Type;
42
+ name: string | undefined;
43
+ }) => ts.Expression,
44
+ ) =>
45
+ ts.factory.createObjectLiteralExpression([
46
+ ts.factory.createPropertyAssignment(
47
+ ts.factory.createIdentifier("type"),
48
+ ts.factory.createStringLiteral(key),
49
+ ),
50
+ ts.factory.createPropertyAssignment(
51
+ ts.factory.createIdentifier(key),
52
+ programmer({
53
+ context: {
54
+ ...props.context,
45
55
  options: {
46
56
  numeric: false,
47
57
  finite: false,
48
58
  functional: false,
49
59
  },
50
- })(modulo)(equals)(type),
51
- ),
52
- ]);
53
- const misc =
54
- (key: IRequestBodyValidator<any>["type"]) =>
55
- (
56
- programmer: (
57
- project: IProject,
58
- ) => (
59
- modulo: ts.LeftHandSideExpression,
60
- ) => (type: ts.Type) => ts.Expression,
61
- ) =>
62
- ts.factory.createObjectLiteralExpression([
63
- ts.factory.createPropertyAssignment(
64
- ts.factory.createIdentifier("type"),
65
- ts.factory.createStringLiteral(key),
66
- ),
67
- ts.factory.createPropertyAssignment(
68
- ts.factory.createIdentifier(key),
69
- programmer({
70
- ...project,
60
+ },
61
+ modulo: props.modulo,
62
+ config: {
63
+ equals,
64
+ guard: false,
65
+ },
66
+ type: props.type,
67
+ name: undefined,
68
+ }),
69
+ ),
70
+ ]);
71
+ const misc =
72
+ (key: IRequestBodyValidator<any>["type"]) =>
73
+ (
74
+ programmer: (next: {
75
+ context: ITypiaContext;
76
+ modulo: ts.LeftHandSideExpression;
77
+ type: ts.Type;
78
+ name: string | undefined;
79
+ }) => ts.Expression,
80
+ ) =>
81
+ ts.factory.createObjectLiteralExpression([
82
+ ts.factory.createPropertyAssignment(
83
+ ts.factory.createIdentifier("type"),
84
+ ts.factory.createStringLiteral(key),
85
+ ),
86
+ ts.factory.createPropertyAssignment(
87
+ ts.factory.createIdentifier(key),
88
+ programmer({
89
+ context: {
90
+ ...props.context,
71
91
  options: {
72
92
  numeric: false,
73
93
  finite: false,
74
94
  functional: false,
75
95
  },
76
- })(modulo)(type),
77
- ),
78
- ]);
96
+ },
97
+ modulo: props.modulo,
98
+ type: props.type,
99
+ name: undefined,
100
+ }),
101
+ ),
102
+ ]);
79
103
 
80
- //----
81
- // RETURNS
82
- //----
83
- const category = project.options.validate;
84
- // NORMAL
85
- if (category === "is") return check("is")(false)(IsProgrammer.write);
86
- else if (category === "validate")
87
- return check("validate")(false)(ValidateProgrammer.write);
88
- // STRICT
89
- else if (category === "validateEquals")
90
- return check("validate")(true)(ValidateProgrammer.write);
91
- else if (category === "equals")
92
- return check("is")(true)(IsProgrammer.write);
93
- else if (category === "assertEquals")
94
- return check("assert")(true)(AssertProgrammer.write);
95
- // CLONE
96
- else if (category === "assertClone")
97
- return misc("assert")(MiscAssertCloneProgrammer.write);
98
- else if (category === "validateClone")
99
- return misc("validate")(MiscValidateCloneProgrammer.write);
100
- // PRUNE
101
- else if (category === "assertPrune")
102
- return misc("assert")(MiscAssertPruneProgrammer.write);
103
- else if (category === "validatePrune")
104
- return misc("validate")(MiscValidatePruneProgrammer.write);
105
- // DEFAULT
106
- return check("assert")(false)(AssertProgrammer.write);
107
- };
104
+ //----
105
+ // RETURNS
106
+ //----
107
+ const category = props.context.options.validate;
108
+ // NORMAL
109
+ if (category === "is") return check("is")(false)(IsProgrammer.write);
110
+ else if (category === "validate")
111
+ return check("validate")(false)(ValidateProgrammer.write);
112
+ // STRICT
113
+ else if (category === "validateEquals")
114
+ return check("validate")(true)(ValidateProgrammer.write);
115
+ else if (category === "equals")
116
+ return check("is")(true)(IsProgrammer.write);
117
+ else if (category === "assertEquals")
118
+ return check("assert")(true)(AssertProgrammer.write);
119
+ // CLONE
120
+ else if (category === "assertClone")
121
+ return misc("assert")(MiscAssertCloneProgrammer.write);
122
+ else if (category === "validateClone")
123
+ return misc("validate")(MiscValidateCloneProgrammer.write);
124
+ // PRUNE
125
+ else if (category === "assertPrune")
126
+ return misc("assert")(MiscAssertPruneProgrammer.write);
127
+ else if (category === "validatePrune")
128
+ return misc("validate")(MiscValidatePruneProgrammer.write);
129
+ // DEFAULT
130
+ return check("assert")(false)(AssertProgrammer.write);
131
+ };
108
132
  }
@@ -7,101 +7,111 @@ import { HttpFormDataProgrammer } from "typia/lib/programmers/http/HttpFormDataP
7
7
  import { HttpIsFormDataProgrammer } from "typia/lib/programmers/http/HttpIsFormDataProgrammer";
8
8
  import { HttpValidateFormDataProgrammer } from "typia/lib/programmers/http/HttpValidateFormDataProgrammer";
9
9
  import { Metadata } from "typia/lib/schemas/metadata/Metadata";
10
- import { IProject } from "typia/lib/transformers/IProject";
10
+ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
11
11
  import { TransformerError } from "typia/lib/transformers/TransformerError";
12
12
 
13
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
13
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
14
14
  import { IRequestFormDataProps } from "../options/IRequestFormDataProps";
15
15
 
16
16
  export namespace TypedFormDataBodyProgrammer {
17
- export const generate =
18
- (project: INestiaTransformProject) =>
19
- (modulo: ts.LeftHandSideExpression) =>
20
- (type: ts.Type): ts.ObjectLiteralExpression => {
21
- // VALIDATE TYPE
22
- const collection: MetadataCollection = new MetadataCollection();
23
- const result = MetadataFactory.analyze(
24
- project.checker,
25
- project.context,
26
- )({
17
+ export const generate = (props: {
18
+ context: INestiaTransformContext;
19
+ modulo: ts.LeftHandSideExpression;
20
+ type: ts.Type;
21
+ }): ts.ObjectLiteralExpression => {
22
+ // VALIDATE TYPE
23
+ const collection: MetadataCollection = new MetadataCollection();
24
+ const result = MetadataFactory.analyze({
25
+ checker: props.context.checker,
26
+ transformer: props.context.transformer,
27
+ options: {
27
28
  escape: false,
28
29
  constant: true,
29
30
  absorb: true,
30
31
  validate: HttpFormDataProgrammer.validate,
31
- })(collection)(type);
32
- if (result.success === false)
33
- throw TransformerError.from("nestia.core.TypedFormData.Body")(
34
- result.errors,
35
- );
32
+ },
33
+ type: props.type,
34
+ collection,
35
+ });
36
+ if (result.success === false)
37
+ throw TransformerError.from({
38
+ code: "nestia.core.TypedFormData.Body",
39
+ errors: result.errors,
40
+ });
36
41
 
37
- const files: IRequestFormDataProps.IFile[] =
38
- result.data.objects[0].properties
39
- .filter(
40
- (p) =>
41
- isFile(p.value) ||
42
- p.value.arrays.some((a) => isFile(a.type.value)),
43
- )
44
- .map((p) => ({
45
- name: p.key.constants[0].values[0].value as string,
46
- limit: !!p.value.natives.length ? 1 : null,
47
- }));
42
+ const files: IRequestFormDataProps.IFile[] =
43
+ result.data.objects[0].properties
44
+ .filter(
45
+ (p) =>
46
+ isFile(p.value) || p.value.arrays.some((a) => isFile(a.type.value)),
47
+ )
48
+ .map((p) => ({
49
+ name: p.key.constants[0].values[0].value as string,
50
+ limit: !!p.value.natives.length ? 1 : null,
51
+ }));
48
52
 
49
- // GENERATE VALIDATION PLAN
50
- const parameter =
51
- (key: IRequestFormDataProps<any>["validator"]["type"]) =>
52
- (
53
- programmer: (
54
- project: IProject,
55
- ) => (
56
- modulo: ts.LeftHandSideExpression,
57
- ) => (type: ts.Type) => ts.Expression,
58
- ) =>
59
- ts.factory.createObjectLiteralExpression(
60
- [
61
- ts.factory.createPropertyAssignment(
62
- ts.factory.createIdentifier("files"),
63
- LiteralFactory.generate(files),
64
- ),
65
- ts.factory.createPropertyAssignment(
66
- ts.factory.createIdentifier("validator"),
67
- ts.factory.createObjectLiteralExpression(
68
- [
69
- ts.factory.createPropertyAssignment(
70
- ts.factory.createIdentifier("type"),
71
- ts.factory.createStringLiteral(key),
72
- ),
73
- ts.factory.createPropertyAssignment(
74
- ts.factory.createIdentifier(key),
75
- programmer({
76
- ...project,
53
+ // GENERATE VALIDATION PLAN
54
+ const parameter =
55
+ (key: IRequestFormDataProps<any>["validator"]["type"]) =>
56
+ (
57
+ programmer: (next: {
58
+ context: ITypiaContext;
59
+ modulo: ts.LeftHandSideExpression;
60
+ type: ts.Type;
61
+ name: string | undefined;
62
+ }) => ts.Expression,
63
+ ) =>
64
+ ts.factory.createObjectLiteralExpression(
65
+ [
66
+ ts.factory.createPropertyAssignment(
67
+ ts.factory.createIdentifier("files"),
68
+ LiteralFactory.write(files),
69
+ ),
70
+ ts.factory.createPropertyAssignment(
71
+ ts.factory.createIdentifier("validator"),
72
+ ts.factory.createObjectLiteralExpression(
73
+ [
74
+ ts.factory.createPropertyAssignment(
75
+ ts.factory.createIdentifier("type"),
76
+ ts.factory.createStringLiteral(key),
77
+ ),
78
+ ts.factory.createPropertyAssignment(
79
+ ts.factory.createIdentifier(key),
80
+ programmer({
81
+ context: {
82
+ ...props.context,
77
83
  options: {
78
84
  numeric: false,
79
85
  finite: false,
80
86
  functional: false,
81
87
  },
82
- })(modulo)(type),
83
- ),
84
- ],
85
- true,
86
- ),
88
+ },
89
+ modulo: props.modulo,
90
+ type: props.type,
91
+ name: undefined,
92
+ }),
93
+ ),
94
+ ],
95
+ true,
87
96
  ),
88
- ],
89
- true,
90
- );
97
+ ),
98
+ ],
99
+ true,
100
+ );
91
101
 
92
- // RETURNS
93
- const category = project.options.validate;
94
- if (category === "is" || category === "equals")
95
- return parameter("is")(HttpIsFormDataProgrammer.write);
96
- else if (
97
- category === "validate" ||
98
- category === "validateEquals" ||
99
- category === "validateClone" ||
100
- category === "validatePrune"
101
- )
102
- return parameter("validate")(HttpValidateFormDataProgrammer.write);
103
- return parameter("assert")(HttpAssertFormDataProgrammer.write);
104
- };
102
+ // RETURNS
103
+ const category = props.context.options.validate;
104
+ if (category === "is" || category === "equals")
105
+ return parameter("is")(HttpIsFormDataProgrammer.write);
106
+ else if (
107
+ category === "validate" ||
108
+ category === "validateEquals" ||
109
+ category === "validateClone" ||
110
+ category === "validatePrune"
111
+ )
112
+ return parameter("validate")(HttpValidateFormDataProgrammer.write);
113
+ return parameter("assert")(HttpAssertFormDataProgrammer.write);
114
+ };
105
115
  }
106
116
 
107
117
  const isFile = (meta: Metadata) =>
@@ -2,55 +2,62 @@ import ts from "typescript";
2
2
  import { HttpAssertHeadersProgrammer } from "typia/lib/programmers/http/HttpAssertHeadersProgrammer";
3
3
  import { HttpIsHeadersProgrammer } from "typia/lib/programmers/http/HttpIsHeadersProgrammer";
4
4
  import { HttpValidateHeadersProgrammer } from "typia/lib/programmers/http/HttpValidateHeadersProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
5
+ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
6
6
 
7
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
7
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
8
8
  import { IRequestHeadersValidator } from "../options/IRequestHeadersValidator";
9
9
 
10
10
  export namespace TypedHeadersProgrammer {
11
- export const generate =
12
- (project: INestiaTransformProject) =>
13
- (modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type): ts.Expression => {
15
- // GENERATE VALIDATION PLAN
16
- const parameter =
17
- (key: IRequestHeadersValidator<any>["type"]) =>
18
- (
19
- programmer: (
20
- project: IProject,
21
- ) => (
22
- modulo: ts.LeftHandSideExpression,
23
- ) => (type: ts.Type) => ts.Expression,
24
- ) =>
25
- ts.factory.createObjectLiteralExpression([
26
- ts.factory.createPropertyAssignment(
27
- ts.factory.createIdentifier("type"),
28
- ts.factory.createStringLiteral(key),
29
- ),
30
- ts.factory.createPropertyAssignment(
31
- ts.factory.createIdentifier(key),
32
- programmer({
33
- ...project,
11
+ export const generate = (props: {
12
+ context: INestiaTransformContext;
13
+ modulo: ts.LeftHandSideExpression;
14
+ type: ts.Type;
15
+ }): ts.Expression => {
16
+ // GENERATE VALIDATION PLAN
17
+ const parameter =
18
+ (key: IRequestHeadersValidator<any>["type"]) =>
19
+ (
20
+ programmer: (next: {
21
+ context: ITypiaContext;
22
+ modulo: ts.LeftHandSideExpression;
23
+ type: ts.Type;
24
+ name: string | undefined;
25
+ }) => ts.Expression,
26
+ ) =>
27
+ ts.factory.createObjectLiteralExpression([
28
+ ts.factory.createPropertyAssignment(
29
+ ts.factory.createIdentifier("type"),
30
+ ts.factory.createStringLiteral(key),
31
+ ),
32
+ ts.factory.createPropertyAssignment(
33
+ ts.factory.createIdentifier(key),
34
+ programmer({
35
+ context: {
36
+ ...props.context,
34
37
  options: {
35
38
  numeric: false,
36
39
  finite: false,
37
40
  functional: false,
38
41
  },
39
- })(modulo)(type),
40
- ),
41
- ]);
42
+ },
43
+ modulo: props.modulo,
44
+ type: props.type,
45
+ name: undefined,
46
+ }),
47
+ ),
48
+ ]);
42
49
 
43
- // RETURNS
44
- const category = project.options.validate;
45
- if (category === "is" || category === "equals")
46
- return parameter("is")(HttpIsHeadersProgrammer.write);
47
- else if (
48
- category === "validate" ||
49
- category === "validateEquals" ||
50
- category === "validateClone" ||
51
- category === "validatePrune"
52
- )
53
- return parameter("validate")(HttpValidateHeadersProgrammer.write);
54
- return parameter("assert")(HttpAssertHeadersProgrammer.write);
55
- };
50
+ // RETURNS
51
+ const category = props.context.options.validate;
52
+ if (category === "is" || category === "equals")
53
+ return parameter("is")(HttpIsHeadersProgrammer.write);
54
+ else if (
55
+ category === "validate" ||
56
+ category === "validateEquals" ||
57
+ category === "validateClone" ||
58
+ category === "validatePrune"
59
+ )
60
+ return parameter("validate")(HttpValidateHeadersProgrammer.write);
61
+ return parameter("assert")(HttpAssertHeadersProgrammer.write);
62
+ };
56
63
  }
@@ -1,24 +1,30 @@
1
1
  import ts from "typescript";
2
2
  import { HttpParameterProgrammer } from "typia/lib/programmers/http/HttpParameterProgrammer";
3
3
 
4
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
4
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
5
5
 
6
6
  export namespace TypedParamProgrammer {
7
- export const generate =
8
- (project: INestiaTransformProject) =>
9
- (modulo: ts.LeftHandSideExpression) =>
10
- (parameters: readonly ts.Expression[]) =>
11
- (type: ts.Type): readonly ts.Expression[] => {
12
- // ALREADY BEING TRANSFORMED
13
- if (parameters.length !== 1) return parameters;
14
- return [
15
- parameters[0],
16
- HttpParameterProgrammer.write({
17
- ...project,
7
+ export const generate = (props: {
8
+ context: INestiaTransformContext;
9
+ modulo: ts.LeftHandSideExpression;
10
+ arguments: readonly ts.Expression[];
11
+ type: ts.Type;
12
+ }): readonly ts.Expression[] => {
13
+ // ALREADY BEING TRANSFORMED
14
+ if (props.arguments.length !== 1) return props.arguments;
15
+ return [
16
+ props.arguments[0],
17
+ HttpParameterProgrammer.write({
18
+ context: {
19
+ ...props.context,
18
20
  options: {
19
21
  numeric: true,
20
22
  },
21
- })(modulo)(type),
22
- ];
23
- };
23
+ },
24
+ modulo: props.modulo,
25
+ type: props.type,
26
+ name: undefined,
27
+ }),
28
+ ];
29
+ };
24
30
  }