@nestia/core 2.4.3 → 3.0.0-dev.20231209

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 (67) hide show
  1. package/lib/decorators/EncryptedBody.js +13 -11
  2. package/lib/decorators/EncryptedBody.js.map +1 -1
  3. package/lib/decorators/EncryptedRoute.js +29 -12
  4. package/lib/decorators/EncryptedRoute.js.map +1 -1
  5. package/lib/decorators/internal/get_binary_body.d.ts +1 -0
  6. package/lib/decorators/internal/get_binary_body.js +66 -0
  7. package/lib/decorators/internal/get_binary_body.js.map +1 -0
  8. package/package.json +3 -3
  9. package/src/decorators/DynamicModule.ts +39 -39
  10. package/src/decorators/EncryptedBody.ts +17 -12
  11. package/src/decorators/EncryptedController.ts +38 -38
  12. package/src/decorators/EncryptedModule.ts +79 -79
  13. package/src/decorators/EncryptedRoute.ts +38 -14
  14. package/src/decorators/PlainBody.ts +72 -72
  15. package/src/decorators/TypedBody.ts +59 -59
  16. package/src/decorators/TypedException.ts +89 -89
  17. package/src/decorators/TypedHeaders.ts +69 -69
  18. package/src/decorators/TypedParam.ts +65 -65
  19. package/src/decorators/TypedQuery.ts +246 -246
  20. package/src/decorators/TypedRoute.ts +144 -144
  21. package/src/decorators/internal/EncryptedConstant.ts +4 -4
  22. package/src/decorators/internal/NoTransformConfigureError.ts +8 -8
  23. package/src/decorators/internal/get_binary_body.ts +18 -0
  24. package/src/decorators/internal/get_path_and_querify.ts +103 -103
  25. package/src/decorators/internal/get_path_and_stringify.ts +91 -91
  26. package/src/decorators/internal/get_text_body.ts +20 -20
  27. package/src/decorators/internal/headers_to_object.ts +13 -13
  28. package/src/decorators/internal/load_controller.ts +51 -51
  29. package/src/decorators/internal/route_error.ts +45 -45
  30. package/src/decorators/internal/validate_request_body.ts +57 -57
  31. package/src/decorators/internal/validate_request_headers.ts +68 -68
  32. package/src/decorators/internal/validate_request_query.ts +56 -56
  33. package/src/index.ts +5 -5
  34. package/src/module.ts +14 -14
  35. package/src/options/INestiaTransformOptions.ts +17 -17
  36. package/src/options/INestiaTransformProject.ts +7 -7
  37. package/src/options/IRequestBodyValidator.ts +20 -20
  38. package/src/options/IRequestHeadersValidator.ts +22 -22
  39. package/src/options/IRequestQueryValidator.ts +20 -20
  40. package/src/options/IResponseBodyQuerifier.ts +25 -25
  41. package/src/options/IResponseBodyStringifier.ts +25 -25
  42. package/src/programmers/PlainBodyProgrammer.ts +52 -52
  43. package/src/programmers/TypedBodyProgrammer.ts +108 -108
  44. package/src/programmers/TypedExceptionProgrammer.ts +72 -72
  45. package/src/programmers/TypedHeadersProgrammer.ts +56 -56
  46. package/src/programmers/TypedParamProgrammer.ts +24 -24
  47. package/src/programmers/TypedQueryBodyProgrammer.ts +56 -56
  48. package/src/programmers/TypedQueryProgrammer.ts +56 -56
  49. package/src/programmers/TypedQueryRouteProgrammer.ts +51 -51
  50. package/src/programmers/TypedRouteProgrammer.ts +51 -51
  51. package/src/programmers/http/HttpAssertQuerifyProgrammer.ts +58 -58
  52. package/src/programmers/http/HttpIsQuerifyProgrammer.ts +62 -62
  53. package/src/programmers/http/HttpQuerifyProgrammer.ts +96 -96
  54. package/src/programmers/http/HttpValidateQuerifyProgrammer.ts +63 -63
  55. package/src/programmers/internal/CoreMetadataUtil.ts +21 -21
  56. package/src/transform.ts +35 -35
  57. package/src/transformers/FileTransformer.ts +66 -66
  58. package/src/transformers/MethodTransformer.ts +94 -94
  59. package/src/transformers/NodeTransformer.ts +16 -16
  60. package/src/transformers/ParameterDecoratorTransformer.ts +121 -121
  61. package/src/transformers/ParameterTransformer.ts +48 -48
  62. package/src/transformers/TypedExceptionTransformer.ts +49 -49
  63. package/src/transformers/TypedRouteTransformer.ts +95 -95
  64. package/src/typings/Creator.ts +3 -3
  65. package/src/utils/ExceptionManager.ts +112 -112
  66. package/src/utils/Singleton.ts +20 -20
  67. package/src/utils/SourceFinder.ts +57 -57
@@ -1,56 +1,56 @@
1
- import ts from "typescript";
2
- import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
- import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
- import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
6
-
7
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
8
- import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
-
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.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
- ...project,
34
- options: {
35
- numeric: false,
36
- finite: false,
37
- functional: false,
38
- },
39
- })(modulo)(type),
40
- ),
41
- ]);
42
-
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
- };
56
- }
1
+ import ts from "typescript";
2
+ import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
+ import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
+ import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
5
+ import { IProject } from "typia/lib/transformers/IProject";
6
+
7
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
8
+ import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
+
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.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
+ ...project,
34
+ options: {
35
+ numeric: false,
36
+ finite: false,
37
+ functional: false,
38
+ },
39
+ })(modulo)(type),
40
+ ),
41
+ ]);
42
+
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
+ };
56
+ }
@@ -1,56 +1,56 @@
1
- import ts from "typescript";
2
- import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
- import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
- import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
6
-
7
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
8
- import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
-
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
- ) => (type: ts.Type) => 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
- ...project,
34
- options: {
35
- numeric: false,
36
- finite: false,
37
- functional: false,
38
- },
39
- })(modulo)(type),
40
- ),
41
- ]);
42
-
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
- };
56
- }
1
+ import ts from "typescript";
2
+ import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
3
+ import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
4
+ import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
5
+ import { IProject } from "typia/lib/transformers/IProject";
6
+
7
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
8
+ import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
9
+
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
+ ) => (type: ts.Type) => 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
+ ...project,
34
+ options: {
35
+ numeric: false,
36
+ finite: false,
37
+ functional: false,
38
+ },
39
+ })(modulo)(type),
40
+ ),
41
+ ]);
42
+
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
+ };
56
+ }
@@ -1,51 +1,51 @@
1
- import ts from "typescript";
2
- import { IProject } from "typia/lib/transformers/IProject";
3
-
4
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
5
- import { HttpAssertQuerifyProgrammer } from "./http/HttpAssertQuerifyProgrammer";
6
- import { HttpIsQuerifyProgrammer } from "./http/HttpIsQuerifyProgrammer";
7
- import { HttpQuerifyProgrammer } from "./http/HttpQuerifyProgrammer";
8
- import { HttpValidateQuerifyProgrammer } from "./http/HttpValidateQuerifyProgrammer";
9
-
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,
33
- options: {}, // use default option
34
- })(modulo)(type),
35
- ),
36
- ]);
37
-
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();
47
-
48
- // ASSERT IS DEFAULT
49
- return parameter("assert", HttpAssertQuerifyProgrammer.write);
50
- };
51
- }
1
+ import ts from "typescript";
2
+ import { IProject } from "typia/lib/transformers/IProject";
3
+
4
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
5
+ import { HttpAssertQuerifyProgrammer } from "./http/HttpAssertQuerifyProgrammer";
6
+ import { HttpIsQuerifyProgrammer } from "./http/HttpIsQuerifyProgrammer";
7
+ import { HttpQuerifyProgrammer } from "./http/HttpQuerifyProgrammer";
8
+ import { HttpValidateQuerifyProgrammer } from "./http/HttpValidateQuerifyProgrammer";
9
+
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,
33
+ options: {}, // use default option
34
+ })(modulo)(type),
35
+ ),
36
+ ]);
37
+
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();
47
+
48
+ // ASSERT IS DEFAULT
49
+ return parameter("assert", HttpAssertQuerifyProgrammer.write);
50
+ };
51
+ }
@@ -1,51 +1,51 @@
1
- import ts from "typescript";
2
- import { JsonAssertStringifyProgrammer } from "typia/lib/programmers/json/JsonAssertStringifyProgrammer";
3
- import { JsonIsStringifyProgrammer } from "typia/lib/programmers/json/JsonIsStringifyProgrammer";
4
- import { JsonStringifyProgrammer } from "typia/lib/programmers/json/JsonStringifyProgrammer";
5
- import { JsonValidateStringifyProgrammer } from "typia/lib/programmers/json/JsonValidateStringifyProgrammer";
6
- import { IProject } from "typia/lib/transformers/IProject";
7
-
8
- import { INestiaTransformProject } from "../options/INestiaTransformProject";
9
-
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 = (
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,
33
- options: {}, // use default option
34
- })(modulo)(type),
35
- ),
36
- ]);
37
-
38
- // RETURNS
39
- if (project.options.stringify === "is")
40
- return parameter("is", JsonIsStringifyProgrammer.write);
41
- else if (project.options.stringify === "validate")
42
- return parameter("validate", JsonValidateStringifyProgrammer.write);
43
- else if (project.options.stringify === "stringify")
44
- return parameter("stringify", JsonStringifyProgrammer.write);
45
- else if (project.options.stringify === null)
46
- return ts.factory.createNull();
47
-
48
- // ASSERT IS DEFAULT
49
- return parameter("assert", JsonAssertStringifyProgrammer.write);
50
- };
51
- }
1
+ import ts from "typescript";
2
+ import { JsonAssertStringifyProgrammer } from "typia/lib/programmers/json/JsonAssertStringifyProgrammer";
3
+ import { JsonIsStringifyProgrammer } from "typia/lib/programmers/json/JsonIsStringifyProgrammer";
4
+ import { JsonStringifyProgrammer } from "typia/lib/programmers/json/JsonStringifyProgrammer";
5
+ import { JsonValidateStringifyProgrammer } from "typia/lib/programmers/json/JsonValidateStringifyProgrammer";
6
+ import { IProject } from "typia/lib/transformers/IProject";
7
+
8
+ import { INestiaTransformProject } from "../options/INestiaTransformProject";
9
+
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 = (
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,
33
+ options: {}, // use default option
34
+ })(modulo)(type),
35
+ ),
36
+ ]);
37
+
38
+ // RETURNS
39
+ if (project.options.stringify === "is")
40
+ return parameter("is", JsonIsStringifyProgrammer.write);
41
+ else if (project.options.stringify === "validate")
42
+ return parameter("validate", JsonValidateStringifyProgrammer.write);
43
+ else if (project.options.stringify === "stringify")
44
+ return parameter("stringify", JsonStringifyProgrammer.write);
45
+ else if (project.options.stringify === null)
46
+ return ts.factory.createNull();
47
+
48
+ // ASSERT IS DEFAULT
49
+ return parameter("assert", JsonAssertStringifyProgrammer.write);
50
+ };
51
+ }
@@ -1,58 +1,58 @@
1
- import ts from "typescript";
2
- import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
- import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
- import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
6
-
7
- import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
-
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,
25
- options: {
26
- ...project.options,
27
- functional: false,
28
- numeric: false,
29
- },
30
- })(modulo)(false)(type, name),
31
- ),
32
- StatementFactory.constant(
33
- "stringify",
34
- HttpQuerifyProgrammer.write({
35
- ...project,
36
- options: {
37
- ...project.options,
38
- functional: false,
39
- numeric: false,
40
- },
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
- ),
55
- ),
56
- ]),
57
- );
58
- }
1
+ import ts from "typescript";
2
+ import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
+ import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
+ import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
5
+ import { IProject } from "typia/lib/transformers/IProject";
6
+
7
+ import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
+
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,
25
+ options: {
26
+ ...project.options,
27
+ functional: false,
28
+ numeric: false,
29
+ },
30
+ })(modulo)(false)(type, name),
31
+ ),
32
+ StatementFactory.constant(
33
+ "stringify",
34
+ HttpQuerifyProgrammer.write({
35
+ ...project,
36
+ options: {
37
+ ...project.options,
38
+ functional: false,
39
+ numeric: false,
40
+ },
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
+ ),
55
+ ),
56
+ ]),
57
+ );
58
+ }