@nestia/core 3.17.0-dev.20240928 → 4.0.0-dev.20241010

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
@@ -2,55 +2,62 @@ import ts from "typescript";
2
2
  import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
3
  import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
4
  import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
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 { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
9
 
10
10
  export namespace TypedQueryBodyProgrammer {
11
- export const generate =
12
- (project: INestiaTransformProject) =>
13
- (modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type): ts.ObjectLiteralExpression => {
15
- // GENERATE VALIDATION PLAN
16
- const parameter =
17
- (key: IRequestQueryValidator<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.ObjectLiteralExpression => {
16
+ // GENERATE VALIDATION PLAN
17
+ const parameter =
18
+ (key: IRequestQueryValidator<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")(HttpIsQueryProgrammer.write);
47
- else if (
48
- category === "validate" ||
49
- category === "validateEquals" ||
50
- category === "validateClone" ||
51
- category === "validatePrune"
52
- )
53
- return parameter("validate")(HttpValidateQueryProgrammer.write);
54
- return parameter("assert")(HttpAssertQueryProgrammer.write);
55
- };
50
+ // RETURNS
51
+ const category = props.context.options.validate;
52
+ if (category === "is" || category === "equals")
53
+ return parameter("is")(HttpIsQueryProgrammer.write);
54
+ else if (
55
+ category === "validate" ||
56
+ category === "validateEquals" ||
57
+ category === "validateClone" ||
58
+ category === "validatePrune"
59
+ )
60
+ return parameter("validate")(HttpValidateQueryProgrammer.write);
61
+ return parameter("assert")(HttpAssertQueryProgrammer.write);
62
+ };
56
63
  }
@@ -2,59 +2,64 @@ import ts from "typescript";
2
2
  import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
3
  import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
4
  import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
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 { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
9
 
10
10
  export namespace TypedQueryProgrammer {
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: IRequestQueryValidator<any>["type"]) =>
18
- (
19
- programmer: (
20
- project: IProject,
21
- ) => (
22
- modulo: ts.LeftHandSideExpression,
23
- allowOptiona: boolean,
24
- ) => (type: ts.Type) => ts.Expression,
25
- ) =>
26
- ts.factory.createObjectLiteralExpression([
27
- ts.factory.createPropertyAssignment(
28
- ts.factory.createIdentifier("type"),
29
- ts.factory.createStringLiteral(key),
30
- ),
31
- ts.factory.createPropertyAssignment(
32
- ts.factory.createIdentifier(key),
33
- programmer({
34
- ...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: IRequestQueryValidator<any>["type"]) =>
19
+ (
20
+ programmer: (next: {
21
+ context: ITypiaContext;
22
+ modulo: ts.LeftHandSideExpression;
23
+ type: ts.Type;
24
+ name: string | undefined;
25
+ allowOptional: boolean;
26
+ }) => ts.Expression,
27
+ ) =>
28
+ ts.factory.createObjectLiteralExpression([
29
+ ts.factory.createPropertyAssignment(
30
+ ts.factory.createIdentifier("type"),
31
+ ts.factory.createStringLiteral(key),
32
+ ),
33
+ ts.factory.createPropertyAssignment(
34
+ ts.factory.createIdentifier(key),
35
+ programmer({
36
+ context: {
37
+ ...props.context,
35
38
  options: {
36
39
  numeric: false,
37
40
  finite: false,
38
41
  functional: false,
39
42
  },
40
- })(
41
- modulo,
42
- true,
43
- )(type),
44
- ),
45
- ]);
43
+ },
44
+ modulo: props.modulo,
45
+ type: props.type,
46
+ name: undefined,
47
+ allowOptional: true,
48
+ }),
49
+ ),
50
+ ]);
46
51
 
47
- // RETURNS
48
- const category = project.options.validate;
49
- if (category === "is" || category === "equals")
50
- return parameter("is")(HttpIsQueryProgrammer.write);
51
- else if (
52
- category === "validate" ||
53
- category === "validateEquals" ||
54
- category === "validateClone" ||
55
- category === "validatePrune"
56
- )
57
- return parameter("validate")(HttpValidateQueryProgrammer.write);
58
- return parameter("assert")(HttpAssertQueryProgrammer.write);
59
- };
52
+ // RETURNS
53
+ const category = props.context.options.validate;
54
+ if (category === "is" || category === "equals")
55
+ return parameter("is")(HttpIsQueryProgrammer.write);
56
+ else if (
57
+ category === "validate" ||
58
+ category === "validateEquals" ||
59
+ category === "validateClone" ||
60
+ category === "validatePrune"
61
+ )
62
+ return parameter("validate")(HttpValidateQueryProgrammer.write);
63
+ return parameter("assert")(HttpAssertQueryProgrammer.write);
64
+ };
60
65
  }
@@ -1,51 +1,56 @@
1
1
  import ts from "typescript";
2
- import { IProject } from "typia/lib/transformers/IProject";
2
+ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
3
3
 
4
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
4
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
5
5
  import { HttpAssertQuerifyProgrammer } from "./http/HttpAssertQuerifyProgrammer";
6
6
  import { HttpIsQuerifyProgrammer } from "./http/HttpIsQuerifyProgrammer";
7
7
  import { HttpQuerifyProgrammer } from "./http/HttpQuerifyProgrammer";
8
8
  import { HttpValidateQuerifyProgrammer } from "./http/HttpValidateQuerifyProgrammer";
9
9
 
10
10
  export namespace TypedQueryRouteProgrammer {
11
- export const generate =
12
- (project: INestiaTransformProject) =>
13
- (modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type): ts.Expression => {
15
- // GENERATE STRINGIFY PLAN
16
- const parameter = (
17
- key: string,
18
- programmer: (
19
- project: IProject,
20
- ) => (
21
- modulo: ts.LeftHandSideExpression,
22
- ) => (type: ts.Type) => ts.ArrowFunction,
23
- ) =>
24
- ts.factory.createObjectLiteralExpression([
25
- ts.factory.createPropertyAssignment(
26
- ts.factory.createIdentifier("type"),
27
- ts.factory.createStringLiteral(key),
28
- ),
29
- ts.factory.createPropertyAssignment(
30
- ts.factory.createIdentifier(key),
31
- programmer({
32
- ...project,
11
+ export const generate = (props: {
12
+ context: INestiaTransformContext;
13
+ modulo: ts.LeftHandSideExpression;
14
+ type: ts.Type;
15
+ }): ts.Expression => {
16
+ // GENERATE STRINGIFY PLAN
17
+ const parameter = (
18
+ key: string,
19
+ programmer: (next: {
20
+ context: ITypiaContext;
21
+ modulo: ts.LeftHandSideExpression;
22
+ type: ts.Type;
23
+ }) => ts.ArrowFunction,
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
+ context: {
34
+ ...props.context,
33
35
  options: {}, // use default option
34
- })(modulo)(type),
35
- ),
36
- ]);
36
+ },
37
+ modulo: props.modulo,
38
+ type: props.type,
39
+ }),
40
+ ),
41
+ ]);
37
42
 
38
- // RETURNS
39
- if (project.options.stringify === "is")
40
- return parameter("is", HttpIsQuerifyProgrammer.write);
41
- else if (project.options.stringify === "validate")
42
- return parameter("validate", HttpValidateQuerifyProgrammer.write);
43
- else if (project.options.stringify === "stringify")
44
- return parameter("stringify", HttpQuerifyProgrammer.write);
45
- else if (project.options.stringify === null)
46
- return ts.factory.createNull();
43
+ // RETURNS
44
+ if (props.context.options.stringify === "is")
45
+ return parameter("is", HttpIsQuerifyProgrammer.write);
46
+ else if (props.context.options.stringify === "validate")
47
+ return parameter("validate", HttpValidateQuerifyProgrammer.write);
48
+ else if (props.context.options.stringify === "stringify")
49
+ return parameter("stringify", HttpQuerifyProgrammer.write);
50
+ else if (props.context.options.stringify === null)
51
+ return ts.factory.createNull();
47
52
 
48
- // ASSERT IS DEFAULT
49
- return parameter("assert", HttpAssertQuerifyProgrammer.write);
50
- };
53
+ // ASSERT IS DEFAULT
54
+ return parameter("assert", HttpAssertQuerifyProgrammer.write);
55
+ };
51
56
  }
@@ -3,72 +3,74 @@ import { JsonAssertStringifyProgrammer } from "typia/lib/programmers/json/JsonAs
3
3
  import { JsonIsStringifyProgrammer } from "typia/lib/programmers/json/JsonIsStringifyProgrammer";
4
4
  import { JsonStringifyProgrammer } from "typia/lib/programmers/json/JsonStringifyProgrammer";
5
5
  import { JsonValidateStringifyProgrammer } from "typia/lib/programmers/json/JsonValidateStringifyProgrammer";
6
- import { IProject } from "typia/lib/transformers/IProject";
6
+ import { IProgrammerProps } from "typia/lib/transformers/IProgrammerProps";
7
7
 
8
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
8
+ import { INestiaTransformContext } from "../options/INestiaTransformProject";
9
9
 
10
10
  export namespace TypedRouteProgrammer {
11
- export const generate =
12
- (project: INestiaTransformProject) =>
13
- (modulo: ts.LeftHandSideExpression) =>
14
- (type: ts.Type): ts.Expression => {
15
- // GENERATE STRINGIFY PLAN
16
- const parameter = (props: {
17
- type: string;
18
- key: string;
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(props.type),
29
- ),
30
- ts.factory.createPropertyAssignment(
31
- ts.factory.createIdentifier(props.key),
32
- props.programmer({
33
- ...project,
11
+ export const generate = (props: {
12
+ context: INestiaTransformContext;
13
+ modulo: ts.LeftHandSideExpression;
14
+ type: ts.Type;
15
+ }): ts.Expression => {
16
+ // GENERATE STRINGIFY PLAN
17
+ const parameter = (next: {
18
+ type: string;
19
+ key: string;
20
+ programmer: (next: IProgrammerProps) => ts.Expression;
21
+ }) =>
22
+ ts.factory.createObjectLiteralExpression([
23
+ ts.factory.createPropertyAssignment(
24
+ ts.factory.createIdentifier("type"),
25
+ ts.factory.createStringLiteral(next.type),
26
+ ),
27
+ ts.factory.createPropertyAssignment(
28
+ ts.factory.createIdentifier(next.key),
29
+ next.programmer({
30
+ context: {
31
+ ...props.context,
34
32
  options: {}, // use default option
35
- })(modulo)(type),
36
- ),
37
- ]);
33
+ },
34
+ modulo: props.modulo,
35
+ type: props.type,
36
+ name: undefined,
37
+ }),
38
+ ),
39
+ ]);
38
40
 
39
- // RETURNS
40
- if (project.options.stringify === "is")
41
- return parameter({
42
- type: "is",
43
- key: "is",
44
- programmer: JsonIsStringifyProgrammer.write,
45
- });
46
- else if (project.options.stringify === "validate")
47
- return parameter({
48
- type: "validate",
49
- key: "validate",
50
- programmer: JsonValidateStringifyProgrammer.write,
51
- });
52
- else if (project.options.stringify === "stringify")
53
- return parameter({
54
- type: "stringify",
55
- key: "stringify",
56
- programmer: JsonStringifyProgrammer.write,
57
- });
58
- else if (project.options.stringify === "validate.log")
59
- return parameter({
60
- type: "validate.log",
61
- key: "validate",
62
- programmer: JsonValidateStringifyProgrammer.write,
63
- });
64
- else if (project.options.stringify === null)
65
- return ts.factory.createNull();
66
-
67
- // ASSERT IS DEFAULT
41
+ // RETURNS
42
+ if (props.context.options.stringify === "is")
43
+ return parameter({
44
+ type: "is",
45
+ key: "is",
46
+ programmer: JsonIsStringifyProgrammer.write,
47
+ });
48
+ else if (props.context.options.stringify === "validate")
49
+ return parameter({
50
+ type: "validate",
51
+ key: "validate",
52
+ programmer: JsonValidateStringifyProgrammer.write,
53
+ });
54
+ else if (props.context.options.stringify === "stringify")
55
+ return parameter({
56
+ type: "stringify",
57
+ key: "stringify",
58
+ programmer: JsonStringifyProgrammer.write,
59
+ });
60
+ else if (props.context.options.stringify === "validate.log")
68
61
  return parameter({
69
- type: "assert",
70
- key: "assert",
71
- programmer: JsonAssertStringifyProgrammer.write,
62
+ type: "validate.log",
63
+ key: "validate",
64
+ programmer: JsonValidateStringifyProgrammer.write,
72
65
  });
73
- };
66
+ else if (props.context.options.stringify === null)
67
+ return ts.factory.createNull();
68
+
69
+ // ASSERT IS DEFAULT
70
+ return parameter({
71
+ type: "assert",
72
+ key: "assert",
73
+ programmer: JsonAssertStringifyProgrammer.write,
74
+ });
75
+ };
74
76
  }
@@ -2,57 +2,71 @@ import ts from "typescript";
2
2
  import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
3
  import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
4
  import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
5
+ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
6
6
 
7
7
  import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
8
 
9
9
  export namespace HttpAssertQuerifyProgrammer {
10
- export const write =
11
- (project: IProject) =>
12
- (modulo: ts.LeftHandSideExpression) =>
13
- (type: ts.Type, name?: string): ts.ArrowFunction =>
14
- ts.factory.createArrowFunction(
15
- undefined,
16
- undefined,
17
- [IdentifierFactory.parameter("input")],
18
- undefined,
19
- undefined,
20
- ts.factory.createBlock([
21
- StatementFactory.constant(
22
- "assert",
23
- AssertProgrammer.write({
24
- ...project,
10
+ export const write = (props: {
11
+ context: ITypiaContext;
12
+ modulo: ts.LeftHandSideExpression;
13
+ type: ts.Type;
14
+ }): ts.ArrowFunction =>
15
+ ts.factory.createArrowFunction(
16
+ undefined,
17
+ undefined,
18
+ [IdentifierFactory.parameter("input")],
19
+ undefined,
20
+ undefined,
21
+ ts.factory.createBlock([
22
+ StatementFactory.constant({
23
+ name: "assert",
24
+ value: AssertProgrammer.write({
25
+ context: {
26
+ ...props.context,
25
27
  options: {
26
- ...project.options,
28
+ ...props.context.options,
27
29
  functional: false,
28
30
  numeric: false,
29
31
  },
30
- })(modulo)(false)(type, name),
31
- ),
32
- StatementFactory.constant(
33
- "stringify",
34
- HttpQuerifyProgrammer.write({
35
- ...project,
32
+ },
33
+ modulo: props.modulo,
34
+ config: {
35
+ equals: false,
36
+ guard: false,
37
+ },
38
+ type: props.type,
39
+ name: undefined,
40
+ }),
41
+ }),
42
+ StatementFactory.constant({
43
+ name: "stringify",
44
+ value: HttpQuerifyProgrammer.write({
45
+ context: {
46
+ ...props.context,
36
47
  options: {
37
- ...project.options,
48
+ ...props.context.options,
38
49
  functional: false,
39
50
  numeric: false,
40
51
  },
41
- })(modulo)(type),
42
- ),
43
- ts.factory.createReturnStatement(
44
- ts.factory.createCallExpression(
45
- ts.factory.createIdentifier("stringify"),
46
- undefined,
47
- [
48
- ts.factory.createCallExpression(
49
- ts.factory.createIdentifier("assert"),
50
- undefined,
51
- [ts.factory.createIdentifier("input")],
52
- ),
53
- ],
54
- ),
52
+ },
53
+ modulo: props.modulo,
54
+ type: props.type,
55
+ }),
56
+ }),
57
+ ts.factory.createReturnStatement(
58
+ ts.factory.createCallExpression(
59
+ ts.factory.createIdentifier("stringify"),
60
+ undefined,
61
+ [
62
+ ts.factory.createCallExpression(
63
+ ts.factory.createIdentifier("assert"),
64
+ undefined,
65
+ [ts.factory.createIdentifier("input")],
66
+ ),
67
+ ],
55
68
  ),
56
- ]),
57
- );
69
+ ),
70
+ ]),
71
+ );
58
72
  }