@typia/transform 12.0.0-dev.20260309 → 12.0.0-dev.20260310

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 (117) hide show
  1. package/package.json +4 -4
  2. package/src/CallExpressionTransformer.ts +579 -579
  3. package/src/FileTransformer.ts +143 -143
  4. package/src/ITransformProps.ts +20 -20
  5. package/src/ImportTransformer.ts +262 -262
  6. package/src/NodeTransformer.ts +25 -25
  7. package/src/TransformerError.ts +85 -85
  8. package/src/TypiaGenerator.ts +172 -172
  9. package/src/features/AssertTransformer.ts +24 -24
  10. package/src/features/CreateAssertTransformer.ts +24 -24
  11. package/src/features/CreateIsTransformer.ts +18 -18
  12. package/src/features/CreateRandomTransformer.ts +42 -42
  13. package/src/features/CreateValidateTransformer.ts +18 -18
  14. package/src/features/IsTransformer.ts +18 -18
  15. package/src/features/RandomTransformer.ts +40 -40
  16. package/src/features/ValidateTransformer.ts +18 -18
  17. package/src/features/functional/FunctionalGenericTransformer.ts +55 -55
  18. package/src/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  19. package/src/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  20. package/src/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  21. package/src/features/http/CreateHttpFormDataTransformer.ts +13 -13
  22. package/src/features/http/CreateHttpHeadersTransformer.ts +13 -13
  23. package/src/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  24. package/src/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  25. package/src/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  26. package/src/features/http/CreateHttpParameterTransformer.ts +13 -13
  27. package/src/features/http/CreateHttpQueryTransformer.ts +13 -13
  28. package/src/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  29. package/src/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  30. package/src/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  31. package/src/features/http/HttpAssertFormDataTransformer.ts +13 -13
  32. package/src/features/http/HttpAssertHeadersTransformer.ts +13 -13
  33. package/src/features/http/HttpAssertQueryTransformer.ts +13 -13
  34. package/src/features/http/HttpFormDataTransformer.ts +13 -13
  35. package/src/features/http/HttpHeadersTransformer.ts +13 -13
  36. package/src/features/http/HttpIsFormDataTransformer.ts +13 -13
  37. package/src/features/http/HttpIsHeadersTransformer.ts +13 -13
  38. package/src/features/http/HttpIsQueryTransformer.ts +13 -13
  39. package/src/features/http/HttpParameterTransformer.ts +13 -13
  40. package/src/features/http/HttpQueryTransformer.ts +13 -13
  41. package/src/features/http/HttpValidateFormDataTransformer.ts +13 -13
  42. package/src/features/http/HttpValidateHeadersTransformer.ts +13 -13
  43. package/src/features/http/HttpValidateQueryTransformer.ts +13 -13
  44. package/src/features/json/JsonApplicationTransformer.ts +99 -99
  45. package/src/features/json/JsonAssertParseTransformer.ts +13 -13
  46. package/src/features/json/JsonAssertStringifyTransformer.ts +13 -13
  47. package/src/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  48. package/src/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  49. package/src/features/json/JsonCreateIsParseTransformer.ts +13 -13
  50. package/src/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  51. package/src/features/json/JsonCreateStringifyTransformer.ts +13 -13
  52. package/src/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  53. package/src/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  54. package/src/features/json/JsonIsParseTransformer.ts +13 -13
  55. package/src/features/json/JsonIsStringifyTransformer.ts +13 -13
  56. package/src/features/json/JsonSchemaTransformer.ts +120 -120
  57. package/src/features/json/JsonSchemasTransformer.ts +130 -130
  58. package/src/features/json/JsonStringifyTransformer.ts +13 -13
  59. package/src/features/json/JsonValidateParseTransformer.ts +13 -13
  60. package/src/features/json/JsonValidateStringifyTransformer.ts +13 -13
  61. package/src/features/llm/LlmApplicationTransformer.ts +224 -224
  62. package/src/features/llm/LlmCoerceTransformer.ts +95 -95
  63. package/src/features/llm/LlmControllerTransformer.ts +81 -81
  64. package/src/features/llm/LlmCreateCoerceTransformer.ts +84 -84
  65. package/src/features/llm/LlmCreateParseTransformer.ts +84 -84
  66. package/src/features/llm/LlmParametersTransformer.ts +76 -76
  67. package/src/features/llm/LlmParseTransformer.ts +95 -95
  68. package/src/features/llm/LlmSchemaTransformer.ts +87 -87
  69. package/src/features/misc/MiscAssertCloneTransformer.ts +13 -13
  70. package/src/features/misc/MiscAssertPruneTransformer.ts +13 -13
  71. package/src/features/misc/MiscCloneTransformer.ts +13 -13
  72. package/src/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  73. package/src/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  74. package/src/features/misc/MiscCreateCloneTransformer.ts +13 -13
  75. package/src/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  76. package/src/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  77. package/src/features/misc/MiscCreatePruneTransformer.ts +13 -13
  78. package/src/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  79. package/src/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  80. package/src/features/misc/MiscIsCloneTransformer.ts +13 -13
  81. package/src/features/misc/MiscIsPruneTransformer.ts +13 -13
  82. package/src/features/misc/MiscLiteralsTransformer.ts +34 -34
  83. package/src/features/misc/MiscPruneTransformer.ts +13 -13
  84. package/src/features/misc/MiscValidateCloneTransformer.ts +13 -13
  85. package/src/features/misc/MiscValidatePruneTransformer.ts +13 -13
  86. package/src/features/notations/NotationAssertGeneralTransformer.ts +19 -19
  87. package/src/features/notations/NotationCreateAssertGeneralTransformer.ts +19 -19
  88. package/src/features/notations/NotationCreateGeneralTransformer.ts +19 -19
  89. package/src/features/notations/NotationCreateIsGeneralTransformer.ts +19 -19
  90. package/src/features/notations/NotationCreateValidateGeneralTransformer.ts +19 -19
  91. package/src/features/notations/NotationGeneralTransformer.ts +18 -18
  92. package/src/features/notations/NotationIsGeneralTransformer.ts +19 -19
  93. package/src/features/notations/NotationValidateGeneralTransformer.ts +19 -19
  94. package/src/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  95. package/src/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  96. package/src/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  97. package/src/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  98. package/src/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  99. package/src/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  100. package/src/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  101. package/src/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  102. package/src/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  103. package/src/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  104. package/src/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  105. package/src/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  106. package/src/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  107. package/src/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  108. package/src/features/protobuf/ProtobufMessageTransformer.ts +34 -34
  109. package/src/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  110. package/src/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  111. package/src/features/reflect/ReflectMetadataTransformer.ts +69 -69
  112. package/src/features/reflect/ReflectNameTransformer.ts +81 -81
  113. package/src/features/reflect/ReflectSchemaTransformer.ts +65 -65
  114. package/src/features/reflect/ReflectSchemasTransformer.ts +69 -69
  115. package/src/index.ts +7 -7
  116. package/src/internal/GenericTransformer.ts +101 -101
  117. package/src/transform.ts +68 -68
@@ -1,120 +1,120 @@
1
- import {
2
- JsonSchemaProgrammer,
3
- JsonSchemasProgrammer,
4
- MetadataCollection,
5
- MetadataFactory,
6
- MetadataSchema,
7
- } from "@typia/core";
8
- import { ValidationPipe } from "@typia/interface";
9
- import ts from "typescript";
10
-
11
- import { ITransformProps } from "../../ITransformProps";
12
- import { TransformerError } from "../../TransformerError";
13
-
14
- export namespace JsonSchemaTransformer {
15
- export const transform = (
16
- props: Pick<ITransformProps, "context" | "expression">,
17
- ): ts.Expression => {
18
- if (!props.expression.typeArguments?.length)
19
- throw new TransformerError({
20
- code: "typia.json.schema",
21
- message: "no generic argument.",
22
- });
23
-
24
- //----
25
- // GET ARGUMENTS
26
- //----
27
- // VALIDATE TUPLE ARGUMENTS
28
- const top: ts.Node | undefined = props.expression.typeArguments[0];
29
- if (top === undefined || ts.isTypeNode(top) === false)
30
- return props.expression;
31
-
32
- // GET TYPES
33
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(top);
34
- if (type.isTypeParameter())
35
- throw new TransformerError({
36
- code: "typia.json.schema",
37
- message: "non-specified generic argument.",
38
- });
39
-
40
- // ADDITIONAL PARAMETERS
41
- const version: "3.0" | "3.1" = getParameter<"3.0" | "3.1">({
42
- checker: props.context.checker,
43
- name: "Version",
44
- is: (str) => str === "3.0" || str === "3.1",
45
- cast: (str) => str as "3.0" | "3.1",
46
- default: () => "3.1",
47
- })(props.expression.typeArguments[1]);
48
-
49
- //----
50
- // GENERATORS
51
- //----
52
- // METADATA
53
- const analyze = (validate: boolean): MetadataSchema => {
54
- const results: ValidationPipe<MetadataSchema, MetadataFactory.IError> =
55
- MetadataFactory.analyze({
56
- checker: props.context.checker,
57
- transformer: props.context.transformer,
58
- options: {
59
- absorb: validate,
60
- constant: true,
61
- escape: true,
62
- validate:
63
- validate === true ? JsonSchemasProgrammer.validate : undefined,
64
- },
65
- components: new MetadataCollection({
66
- replace: MetadataCollection.replace,
67
- }),
68
- type,
69
- });
70
- if (results.success === false)
71
- throw TransformerError.from({
72
- code: "typia.json.schema",
73
- errors: results.errors,
74
- });
75
- return results.data;
76
- };
77
- analyze(true);
78
-
79
- // APPLICATION
80
- return JsonSchemaProgrammer.write({
81
- context: props.context,
82
- version,
83
- metadata: analyze(false),
84
- });
85
- };
86
-
87
- const getParameter =
88
- <Value>(props: {
89
- checker: ts.TypeChecker;
90
- name: string;
91
- is: (value: string) => boolean;
92
- cast: (value: string) => Value;
93
- default: () => Value;
94
- }) =>
95
- (node: ts.TypeNode | undefined): Value => {
96
- if (!node) return props.default();
97
-
98
- // CHECK LITERAL TYPE
99
- const type: ts.Type = props.checker.getTypeFromTypeNode(node);
100
- if (
101
- !type.isLiteral() &&
102
- (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
103
- )
104
- throw new TransformerError({
105
- code: "typia.json.schema",
106
- message: `generic argument "${props.name}" must be constant.`,
107
- });
108
-
109
- // GET VALUE AND VALIDATE IT
110
- const value = type.isLiteral()
111
- ? type.value
112
- : props.checker.typeToString(type);
113
- if (typeof value !== "string" || props.is(value) === false)
114
- throw new TransformerError({
115
- code: "typia.json.schema",
116
- message: `invalid value on generic argument "${props.name}".`,
117
- });
118
- return props.cast(value);
119
- };
120
- }
1
+ import {
2
+ JsonSchemaProgrammer,
3
+ JsonSchemasProgrammer,
4
+ MetadataCollection,
5
+ MetadataFactory,
6
+ MetadataSchema,
7
+ } from "@typia/core";
8
+ import { ValidationPipe } from "@typia/interface";
9
+ import ts from "typescript";
10
+
11
+ import { ITransformProps } from "../../ITransformProps";
12
+ import { TransformerError } from "../../TransformerError";
13
+
14
+ export namespace JsonSchemaTransformer {
15
+ export const transform = (
16
+ props: Pick<ITransformProps, "context" | "expression">,
17
+ ): ts.Expression => {
18
+ if (!props.expression.typeArguments?.length)
19
+ throw new TransformerError({
20
+ code: "typia.json.schema",
21
+ message: "no generic argument.",
22
+ });
23
+
24
+ //----
25
+ // GET ARGUMENTS
26
+ //----
27
+ // VALIDATE TUPLE ARGUMENTS
28
+ const top: ts.Node | undefined = props.expression.typeArguments[0];
29
+ if (top === undefined || ts.isTypeNode(top) === false)
30
+ return props.expression;
31
+
32
+ // GET TYPES
33
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(top);
34
+ if (type.isTypeParameter())
35
+ throw new TransformerError({
36
+ code: "typia.json.schema",
37
+ message: "non-specified generic argument.",
38
+ });
39
+
40
+ // ADDITIONAL PARAMETERS
41
+ const version: "3.0" | "3.1" = getParameter<"3.0" | "3.1">({
42
+ checker: props.context.checker,
43
+ name: "Version",
44
+ is: (str) => str === "3.0" || str === "3.1",
45
+ cast: (str) => str as "3.0" | "3.1",
46
+ default: () => "3.1",
47
+ })(props.expression.typeArguments[1]);
48
+
49
+ //----
50
+ // GENERATORS
51
+ //----
52
+ // METADATA
53
+ const analyze = (validate: boolean): MetadataSchema => {
54
+ const results: ValidationPipe<MetadataSchema, MetadataFactory.IError> =
55
+ MetadataFactory.analyze({
56
+ checker: props.context.checker,
57
+ transformer: props.context.transformer,
58
+ options: {
59
+ absorb: validate,
60
+ constant: true,
61
+ escape: true,
62
+ validate:
63
+ validate === true ? JsonSchemasProgrammer.validate : undefined,
64
+ },
65
+ components: new MetadataCollection({
66
+ replace: MetadataCollection.replace,
67
+ }),
68
+ type,
69
+ });
70
+ if (results.success === false)
71
+ throw TransformerError.from({
72
+ code: "typia.json.schema",
73
+ errors: results.errors,
74
+ });
75
+ return results.data;
76
+ };
77
+ analyze(true);
78
+
79
+ // APPLICATION
80
+ return JsonSchemaProgrammer.write({
81
+ context: props.context,
82
+ version,
83
+ metadata: analyze(false),
84
+ });
85
+ };
86
+
87
+ const getParameter =
88
+ <Value>(props: {
89
+ checker: ts.TypeChecker;
90
+ name: string;
91
+ is: (value: string) => boolean;
92
+ cast: (value: string) => Value;
93
+ default: () => Value;
94
+ }) =>
95
+ (node: ts.TypeNode | undefined): Value => {
96
+ if (!node) return props.default();
97
+
98
+ // CHECK LITERAL TYPE
99
+ const type: ts.Type = props.checker.getTypeFromTypeNode(node);
100
+ if (
101
+ !type.isLiteral() &&
102
+ (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
103
+ )
104
+ throw new TransformerError({
105
+ code: "typia.json.schema",
106
+ message: `generic argument "${props.name}" must be constant.`,
107
+ });
108
+
109
+ // GET VALUE AND VALIDATE IT
110
+ const value = type.isLiteral()
111
+ ? type.value
112
+ : props.checker.typeToString(type);
113
+ if (typeof value !== "string" || props.is(value) === false)
114
+ throw new TransformerError({
115
+ code: "typia.json.schema",
116
+ message: `invalid value on generic argument "${props.name}".`,
117
+ });
118
+ return props.cast(value);
119
+ };
120
+ }
@@ -1,130 +1,130 @@
1
- import {
2
- JsonSchemasProgrammer,
3
- MetadataCollection,
4
- MetadataFactory,
5
- MetadataSchema,
6
- } from "@typia/core";
7
- import { ValidationPipe } from "@typia/interface";
8
- import ts from "typescript";
9
-
10
- import { ITransformProps } from "../../ITransformProps";
11
- import { TransformerError } from "../../TransformerError";
12
-
13
- export namespace JsonSchemasTransformer {
14
- export const transform = (
15
- props: Pick<ITransformProps, "context" | "expression">,
16
- ): ts.Expression => {
17
- if (!props.expression.typeArguments?.length)
18
- throw new TransformerError({
19
- code: "typia.json.schemas",
20
- message: "no generic argument.",
21
- });
22
-
23
- //----
24
- // GET ARGUMENTS
25
- //----
26
- // VALIDATE TUPLE ARGUMENTS
27
- const top: ts.Node = props.expression.typeArguments[0]!;
28
- if (!ts.isTupleTypeNode(top)) return props.expression;
29
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
30
- return props.expression;
31
-
32
- // GET TYPES
33
- const types: ts.Type[] = top.elements.map((child) =>
34
- props.context.checker.getTypeFromTypeNode(child as ts.TypeNode),
35
- );
36
- if (types.some((t) => t.isTypeParameter()))
37
- throw new TransformerError({
38
- code: "typia.json.schemas",
39
- message: "non-specified generic argument(s).",
40
- });
41
-
42
- // ADDITIONAL PARAMETERS
43
- const version: "3.0" | "3.1" = getParameter<"3.0" | "3.1">({
44
- checker: props.context.checker,
45
- name: "Version",
46
- is: (str) => str === "3.0" || str === "3.1",
47
- cast: (str) => str as "3.0" | "3.1",
48
- default: () => "3.1",
49
- })(props.expression.typeArguments[1]);
50
-
51
- //----
52
- // GENERATORS
53
- //----
54
- // METADATA
55
- const analyze = (validate: boolean): MetadataSchema[] => {
56
- const results: ValidationPipe<MetadataSchema, MetadataFactory.IError>[] =
57
- types.map((type) =>
58
- MetadataFactory.analyze({
59
- checker: props.context.checker,
60
- transformer: props.context.transformer,
61
- options: {
62
- absorb: validate,
63
- constant: true,
64
- escape: true,
65
- validate:
66
- validate === true ? JsonSchemasProgrammer.validate : undefined,
67
- },
68
- components: new MetadataCollection({
69
- replace: MetadataCollection.replace,
70
- }),
71
- type,
72
- }),
73
- );
74
- const metadatas: MetadataSchema[] = [];
75
- const errors: MetadataFactory.IError[] = [];
76
- for (const r of results) {
77
- if (r.success === false) errors.push(...r.errors);
78
- else metadatas.push(r.data);
79
- }
80
- if (errors.length)
81
- throw TransformerError.from({
82
- code: "typia.json.schemas",
83
- errors,
84
- });
85
- return metadatas;
86
- };
87
- analyze(true);
88
-
89
- // APPLICATION
90
- return JsonSchemasProgrammer.write({
91
- context: props.context,
92
- version,
93
- metadatas: analyze(false),
94
- });
95
- };
96
-
97
- const getParameter =
98
- <Value>(props: {
99
- checker: ts.TypeChecker;
100
- name: string;
101
- is: (value: string) => boolean;
102
- cast: (value: string) => Value;
103
- default: () => Value;
104
- }) =>
105
- (node: ts.TypeNode | undefined): Value => {
106
- if (!node) return props.default();
107
-
108
- // CHECK LITERAL TYPE
109
- const type: ts.Type = props.checker.getTypeFromTypeNode(node);
110
- if (
111
- !type.isLiteral() &&
112
- (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
113
- )
114
- throw new TransformerError({
115
- code: "typia.json.schemas",
116
- message: `generic argument "${props.name}" must be constant.`,
117
- });
118
-
119
- // GET VALUE AND VALIDATE IT
120
- const value = type.isLiteral()
121
- ? type.value
122
- : props.checker.typeToString(type);
123
- if (typeof value !== "string" || props.is(value) === false)
124
- throw new TransformerError({
125
- code: "typia.json.schemas",
126
- message: `invalid value on generic argument "${props.name}".`,
127
- });
128
- return props.cast(value);
129
- };
130
- }
1
+ import {
2
+ JsonSchemasProgrammer,
3
+ MetadataCollection,
4
+ MetadataFactory,
5
+ MetadataSchema,
6
+ } from "@typia/core";
7
+ import { ValidationPipe } from "@typia/interface";
8
+ import ts from "typescript";
9
+
10
+ import { ITransformProps } from "../../ITransformProps";
11
+ import { TransformerError } from "../../TransformerError";
12
+
13
+ export namespace JsonSchemasTransformer {
14
+ export const transform = (
15
+ props: Pick<ITransformProps, "context" | "expression">,
16
+ ): ts.Expression => {
17
+ if (!props.expression.typeArguments?.length)
18
+ throw new TransformerError({
19
+ code: "typia.json.schemas",
20
+ message: "no generic argument.",
21
+ });
22
+
23
+ //----
24
+ // GET ARGUMENTS
25
+ //----
26
+ // VALIDATE TUPLE ARGUMENTS
27
+ const top: ts.Node = props.expression.typeArguments[0]!;
28
+ if (!ts.isTupleTypeNode(top)) return props.expression;
29
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
30
+ return props.expression;
31
+
32
+ // GET TYPES
33
+ const types: ts.Type[] = top.elements.map((child) =>
34
+ props.context.checker.getTypeFromTypeNode(child as ts.TypeNode),
35
+ );
36
+ if (types.some((t) => t.isTypeParameter()))
37
+ throw new TransformerError({
38
+ code: "typia.json.schemas",
39
+ message: "non-specified generic argument(s).",
40
+ });
41
+
42
+ // ADDITIONAL PARAMETERS
43
+ const version: "3.0" | "3.1" = getParameter<"3.0" | "3.1">({
44
+ checker: props.context.checker,
45
+ name: "Version",
46
+ is: (str) => str === "3.0" || str === "3.1",
47
+ cast: (str) => str as "3.0" | "3.1",
48
+ default: () => "3.1",
49
+ })(props.expression.typeArguments[1]);
50
+
51
+ //----
52
+ // GENERATORS
53
+ //----
54
+ // METADATA
55
+ const analyze = (validate: boolean): MetadataSchema[] => {
56
+ const results: ValidationPipe<MetadataSchema, MetadataFactory.IError>[] =
57
+ types.map((type) =>
58
+ MetadataFactory.analyze({
59
+ checker: props.context.checker,
60
+ transformer: props.context.transformer,
61
+ options: {
62
+ absorb: validate,
63
+ constant: true,
64
+ escape: true,
65
+ validate:
66
+ validate === true ? JsonSchemasProgrammer.validate : undefined,
67
+ },
68
+ components: new MetadataCollection({
69
+ replace: MetadataCollection.replace,
70
+ }),
71
+ type,
72
+ }),
73
+ );
74
+ const metadatas: MetadataSchema[] = [];
75
+ const errors: MetadataFactory.IError[] = [];
76
+ for (const r of results) {
77
+ if (r.success === false) errors.push(...r.errors);
78
+ else metadatas.push(r.data);
79
+ }
80
+ if (errors.length)
81
+ throw TransformerError.from({
82
+ code: "typia.json.schemas",
83
+ errors,
84
+ });
85
+ return metadatas;
86
+ };
87
+ analyze(true);
88
+
89
+ // APPLICATION
90
+ return JsonSchemasProgrammer.write({
91
+ context: props.context,
92
+ version,
93
+ metadatas: analyze(false),
94
+ });
95
+ };
96
+
97
+ const getParameter =
98
+ <Value>(props: {
99
+ checker: ts.TypeChecker;
100
+ name: string;
101
+ is: (value: string) => boolean;
102
+ cast: (value: string) => Value;
103
+ default: () => Value;
104
+ }) =>
105
+ (node: ts.TypeNode | undefined): Value => {
106
+ if (!node) return props.default();
107
+
108
+ // CHECK LITERAL TYPE
109
+ const type: ts.Type = props.checker.getTypeFromTypeNode(node);
110
+ if (
111
+ !type.isLiteral() &&
112
+ (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
113
+ )
114
+ throw new TransformerError({
115
+ code: "typia.json.schemas",
116
+ message: `generic argument "${props.name}" must be constant.`,
117
+ });
118
+
119
+ // GET VALUE AND VALIDATE IT
120
+ const value = type.isLiteral()
121
+ ? type.value
122
+ : props.checker.typeToString(type);
123
+ if (typeof value !== "string" || props.is(value) === false)
124
+ throw new TransformerError({
125
+ code: "typia.json.schemas",
126
+ message: `invalid value on generic argument "${props.name}".`,
127
+ });
128
+ return props.cast(value);
129
+ };
130
+ }
@@ -1,13 +1,13 @@
1
- import { JsonStringifyProgrammer } from "@typia/core";
2
-
3
- import { ITransformProps } from "../../ITransformProps";
4
- import { GenericTransformer } from "../../internal/GenericTransformer";
5
-
6
- export namespace JsonStringifyTransformer {
7
- export const transform = (props: ITransformProps) =>
8
- GenericTransformer.scalar({
9
- ...props,
10
- method: "json.stringify",
11
- write: JsonStringifyProgrammer.write,
12
- });
13
- }
1
+ import { JsonStringifyProgrammer } from "@typia/core";
2
+
3
+ import { ITransformProps } from "../../ITransformProps";
4
+ import { GenericTransformer } from "../../internal/GenericTransformer";
5
+
6
+ export namespace JsonStringifyTransformer {
7
+ export const transform = (props: ITransformProps) =>
8
+ GenericTransformer.scalar({
9
+ ...props,
10
+ method: "json.stringify",
11
+ write: JsonStringifyProgrammer.write,
12
+ });
13
+ }
@@ -1,13 +1,13 @@
1
- import { JsonValidateParseProgrammer } from "@typia/core";
2
-
3
- import { ITransformProps } from "../../ITransformProps";
4
- import { GenericTransformer } from "../../internal/GenericTransformer";
5
-
6
- export namespace JsonValidateParseTransformer {
7
- export const transform = (props: ITransformProps) =>
8
- GenericTransformer.scalar({
9
- ...props,
10
- method: "json.validateParse",
11
- write: JsonValidateParseProgrammer.write,
12
- });
13
- }
1
+ import { JsonValidateParseProgrammer } from "@typia/core";
2
+
3
+ import { ITransformProps } from "../../ITransformProps";
4
+ import { GenericTransformer } from "../../internal/GenericTransformer";
5
+
6
+ export namespace JsonValidateParseTransformer {
7
+ export const transform = (props: ITransformProps) =>
8
+ GenericTransformer.scalar({
9
+ ...props,
10
+ method: "json.validateParse",
11
+ write: JsonValidateParseProgrammer.write,
12
+ });
13
+ }
@@ -1,13 +1,13 @@
1
- import { JsonValidateStringifyProgrammer } from "@typia/core";
2
-
3
- import { ITransformProps } from "../../ITransformProps";
4
- import { GenericTransformer } from "../../internal/GenericTransformer";
5
-
6
- export namespace JsonValidateStringifyTransformer {
7
- export const transform = (props: ITransformProps) =>
8
- GenericTransformer.scalar({
9
- ...props,
10
- method: "json.validateStringify",
11
- write: JsonValidateStringifyProgrammer.write,
12
- });
13
- }
1
+ import { JsonValidateStringifyProgrammer } from "@typia/core";
2
+
3
+ import { ITransformProps } from "../../ITransformProps";
4
+ import { GenericTransformer } from "../../internal/GenericTransformer";
5
+
6
+ export namespace JsonValidateStringifyTransformer {
7
+ export const transform = (props: ITransformProps) =>
8
+ GenericTransformer.scalar({
9
+ ...props,
10
+ method: "json.validateStringify",
11
+ write: JsonValidateStringifyProgrammer.write,
12
+ });
13
+ }