typia 6.10.0-dev.20240906 → 6.10.0-dev.20240909

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 (130) hide show
  1. package/README.md +19 -7
  2. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmSchemaSeparator.mjs +142 -0
  3. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmSchemaSeparator.mjs.map +1 -0
  4. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmTypeChecker.mjs +171 -0
  5. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmTypeChecker.mjs.map +1 -0
  6. package/lib/_virtual/LlmSchemaSeparator.mjs +4 -0
  7. package/lib/_virtual/LlmSchemaSeparator.mjs.map +1 -0
  8. package/lib/_virtual/LlmTypeChecker.mjs +4 -0
  9. package/lib/_virtual/LlmTypeChecker.mjs.map +1 -0
  10. package/lib/_virtual/_commonjsHelpers.mjs +3 -1
  11. package/lib/_virtual/_commonjsHelpers.mjs.map +1 -1
  12. package/lib/factories/MetadataFactory.d.ts +1 -0
  13. package/lib/factories/MetadataFactory.js.map +1 -1
  14. package/lib/factories/MetadataTypeTagSchemaFactory.js +1 -1
  15. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  16. package/lib/factories/ProtobufFactory.js +1 -1
  17. package/lib/factories/ProtobufFactory.js.map +1 -1
  18. package/lib/factories/TypeFactory.d.ts +1 -0
  19. package/lib/factories/TypeFactory.js +2 -2
  20. package/lib/factories/TypeFactory.js.map +1 -1
  21. package/lib/factories/internal/metadata/emplace_metadata_object.js +11 -6
  22. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata.js +2 -0
  24. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  25. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +0 -5
  26. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  27. package/lib/factories/internal/metadata/iterate_metadata_function.d.ts +5 -0
  28. package/lib/factories/internal/metadata/iterate_metadata_function.js +89 -0
  29. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -0
  30. package/lib/functional/Namespace/index.d.ts +1 -0
  31. package/lib/functional/Namespace/index.js +2 -1
  32. package/lib/functional/Namespace/index.js.map +1 -1
  33. package/lib/functional/Namespace/index.mjs +1 -0
  34. package/lib/functional/Namespace/index.mjs.map +1 -1
  35. package/lib/functional/Namespace/llm.d.ts +4 -0
  36. package/lib/functional/Namespace/llm.js +44 -0
  37. package/lib/functional/Namespace/llm.js.map +1 -0
  38. package/lib/functional/Namespace/llm.mjs +19 -0
  39. package/lib/functional/Namespace/llm.mjs.map +1 -0
  40. package/lib/llm.d.ts +148 -2
  41. package/lib/llm.js +28 -1
  42. package/lib/llm.js.map +1 -1
  43. package/lib/llm.mjs +6 -1
  44. package/lib/llm.mjs.map +1 -1
  45. package/lib/programmers/CheckerProgrammer.js +1 -1
  46. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  47. package/lib/programmers/RandomProgrammer.js +1 -1
  48. package/lib/programmers/RandomProgrammer.js.map +1 -1
  49. package/lib/programmers/functional/internal/FunctionalGeneralProgrammer.d.ts +1 -1
  50. package/lib/programmers/functional/internal/FunctionalGeneralProgrammer.js.map +1 -1
  51. package/lib/programmers/internal/application_v30_object.js +1 -1
  52. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  53. package/lib/programmers/internal/application_v31_object.js +1 -1
  54. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  55. package/lib/programmers/internal/llm_schema_object.js +1 -1
  56. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  57. package/lib/programmers/internal/llm_schema_tuple.d.ts +1 -6
  58. package/lib/programmers/internal/llm_schema_tuple.js +3 -0
  59. package/lib/programmers/internal/llm_schema_tuple.js.map +1 -1
  60. package/lib/programmers/internal/stringify_regular_properties.js +4 -4
  61. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  62. package/lib/programmers/json/JsonStringifyProgrammer.js +2 -2
  63. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  64. package/lib/programmers/llm/LlmApplicationProgrammer.d.ts +7 -0
  65. package/lib/programmers/llm/LlmApplicationProgrammer.js +211 -0
  66. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -0
  67. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  68. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  69. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  70. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  71. package/lib/schemas/metadata/IMetadata.d.ts +2 -1
  72. package/lib/schemas/metadata/IMetadataFunction.d.ts +7 -0
  73. package/lib/schemas/metadata/IMetadataFunction.js +3 -0
  74. package/lib/schemas/metadata/IMetadataFunction.js.map +1 -0
  75. package/lib/schemas/metadata/IMetadataParameter.d.ts +8 -0
  76. package/lib/schemas/metadata/IMetadataParameter.js +3 -0
  77. package/lib/schemas/metadata/IMetadataParameter.js.map +1 -0
  78. package/lib/schemas/metadata/Metadata.d.ts +2 -1
  79. package/lib/schemas/metadata/Metadata.js +12 -11
  80. package/lib/schemas/metadata/Metadata.js.map +1 -1
  81. package/lib/schemas/metadata/MetadataFunction.d.ts +15 -0
  82. package/lib/schemas/metadata/MetadataFunction.js +38 -0
  83. package/lib/schemas/metadata/MetadataFunction.js.map +1 -0
  84. package/lib/schemas/metadata/MetadataParameter.d.ts +13 -0
  85. package/lib/schemas/metadata/MetadataParameter.js +37 -0
  86. package/lib/schemas/metadata/MetadataParameter.js.map +1 -0
  87. package/lib/transformers/CallExpressionTransformer.js +4 -0
  88. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  89. package/lib/transformers/features/llm/LlmApplicationTransformer.d.ts +5 -0
  90. package/lib/transformers/features/llm/LlmApplicationTransformer.js +86 -0
  91. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -0
  92. package/lib/transformers/features/llm/LlmSchemaTransformer.js +2 -1
  93. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  94. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -0
  95. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  96. package/package.json +3 -3
  97. package/src/factories/MetadataFactory.ts +1 -0
  98. package/src/factories/MetadataTypeTagSchemaFactory.ts +59 -59
  99. package/src/factories/ProtobufFactory.ts +1 -1
  100. package/src/factories/TypeFactory.ts +1 -1
  101. package/src/factories/internal/metadata/emplace_metadata_object.ts +10 -6
  102. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  103. package/src/factories/internal/metadata/iterate_metadata.ts +6 -0
  104. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +0 -5
  105. package/src/factories/internal/metadata/iterate_metadata_function.ts +85 -0
  106. package/src/functional/Namespace/index.ts +1 -0
  107. package/src/functional/Namespace/llm.ts +20 -0
  108. package/src/llm.ts +159 -3
  109. package/src/programmers/CheckerProgrammer.ts +1 -1
  110. package/src/programmers/RandomProgrammer.ts +1 -1
  111. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +3 -1
  112. package/src/programmers/internal/application_escaped.ts +74 -74
  113. package/src/programmers/internal/application_v30_object.ts +1 -1
  114. package/src/programmers/internal/application_v31_object.ts +1 -1
  115. package/src/programmers/internal/llm_schema_object.ts +1 -1
  116. package/src/programmers/internal/stringify_regular_properties.ts +4 -4
  117. package/src/programmers/json/JsonStringifyProgrammer.ts +2 -2
  118. package/src/programmers/llm/LlmApplicationProgrammer.ts +211 -0
  119. package/src/programmers/misc/MiscCloneProgrammer.ts +1 -1
  120. package/src/programmers/notations/NotationGeneralProgrammer.ts +1 -1
  121. package/src/schemas/metadata/IMetadata.ts +2 -1
  122. package/src/schemas/metadata/IMetadataFunction.ts +8 -0
  123. package/src/schemas/metadata/IMetadataParameter.ts +9 -0
  124. package/src/schemas/metadata/Metadata.ts +13 -12
  125. package/src/schemas/metadata/MetadataFunction.ts +49 -0
  126. package/src/schemas/metadata/MetadataParameter.ts +50 -0
  127. package/src/transformers/CallExpressionTransformer.ts +508 -505
  128. package/src/transformers/features/llm/LlmApplicationTransformer.ts +87 -0
  129. package/src/transformers/features/llm/LlmSchemaTransformer.ts +2 -1
  130. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +1 -0
@@ -1,505 +1,508 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- import { FunctionalAssertFunctionProgrammer } from "../programmers/functional/FunctionalAssertFunctionProgrammer";
5
- import { FunctionalAssertParametersProgrammer } from "../programmers/functional/FunctionalAssertParametersProgrammer";
6
- import { FunctionAssertReturnProgrammer } from "../programmers/functional/FunctionalAssertReturnProgrammer";
7
- import { FunctionalIsFunctionProgrammer } from "../programmers/functional/FunctionalIsFunctionProgrammer";
8
- import { FunctionalIsParametersProgrammer } from "../programmers/functional/FunctionalIsParametersProgrammer";
9
- import { FunctionalIsReturnProgrammer } from "../programmers/functional/FunctionalIsReturnProgrammer";
10
- import { FunctionalValidateFunctionProgrammer } from "../programmers/functional/FunctionalValidateFunctionProgrammer";
11
- import { FunctionalValidateParametersProgrammer } from "../programmers/functional/FunctionalValidateParametersProgrammer";
12
- import { FunctionalValidateReturnProgrammer } from "../programmers/functional/FunctionalValidateReturnProgrammer";
13
- import { FunctionalGenericTransformer } from "./features/functional/FunctionalGenericTransformer";
14
-
15
- import { NamingConvention } from "../utils/NamingConvention";
16
-
17
- import { IProject } from "./IProject";
18
- import { AssertTransformer } from "./features/AssertTransformer";
19
- import { CreateAssertTransformer } from "./features/CreateAssertTransformer";
20
- import { CreateIsTransformer } from "./features/CreateIsTransformer";
21
- import { CreateRandomTransformer } from "./features/CreateRandomTransformer";
22
- import { CreateValidateTransformer } from "./features/CreateValidateTransformer";
23
- import { IsTransformer } from "./features/IsTransformer";
24
- import { RandomTransformer } from "./features/RandomTransformer";
25
- import { ValidateTransformer } from "./features/ValidateTransformer";
26
- import { CreateHttpAssertFormDataTransformer } from "./features/http/CreateHttpAssertFormDataTransformer";
27
- import { CreateHttpAssertHeadersTransformer } from "./features/http/CreateHttpAssertHeadersTransformer";
28
- import { CreateHttpAssertQueryTransformer } from "./features/http/CreateHttpAssertQueryTransformer";
29
- import { CreateHttpFormDataTransformer } from "./features/http/CreateHttpFormDataTransformer";
30
- import { CreateHttpHeadersTransformer } from "./features/http/CreateHttpHeadersTransformer";
31
- import { CreateHttpIsFormDataTransformer } from "./features/http/CreateHttpIsFormDataTransformer";
32
- import { CreateHttpIsHeadersTransformer } from "./features/http/CreateHttpIsHeadersTransformer";
33
- import { CreateHttpIsQueryTransformer } from "./features/http/CreateHttpIsQueryTransformer";
34
- import { CreateHttpParameterTransformer } from "./features/http/CreateHttpParameterTransformer";
35
- import { CreateHttpQueryTransformer } from "./features/http/CreateHttpQueryTransformer";
36
- import { CreateHttpValidateFormDataTransformer } from "./features/http/CreateHttpValidateFormDataTransformer";
37
- import { CreateHttpValidateHeadersTransformer } from "./features/http/CreateHttpValidateHeadersTransformer";
38
- import { CreateHttpValidateQueryTransformer } from "./features/http/CreateHttpValidateQueryTransformer";
39
- import { HttpAssertFormDataTransformer } from "./features/http/HttpAssertFormDataTransformer";
40
- import { HttpAssertHeadersTransformer } from "./features/http/HttpAssertHeadersTransformer";
41
- import { HttpAssertQueryTransformer } from "./features/http/HttpAssertQueryTransformer";
42
- import { HttpFormDataTransformer } from "./features/http/HttpFormDataTransformer";
43
- import { HttpHeadersTransformer } from "./features/http/HttpHeadersTransformer";
44
- import { HttpIsFormDataTransformer } from "./features/http/HttpIsFormDataTransformer";
45
- import { HttpIsHeadersTransformer } from "./features/http/HttpIsHeadersTransformer";
46
- import { HttpIsQueryTransformer } from "./features/http/HttpIsQueryTransformer";
47
- import { HttpParameterTransformer } from "./features/http/HttpParameterTransformer";
48
- import { HttpQueryTransformer } from "./features/http/HttpQueryTransformer";
49
- import { HttpValidateFormDataTransformer } from "./features/http/HttpValidateFormDataTransformer";
50
- import { HttpValidateHeadersTransformer } from "./features/http/HttpValidateHeadersTransformer";
51
- import { HttpValidateQueryTransformer } from "./features/http/HttpValidateQueryTransformer";
52
- import { JsonApplicationTransformer } from "./features/json/JsonApplicationTransformer";
53
- import { JsonAssertParseTransformer } from "./features/json/JsonAssertParseTransformer";
54
- import { JsonAssertStringifyTransformer } from "./features/json/JsonAssertStringifyTransformer";
55
- import { JsonCreateAssertParseTransformer } from "./features/json/JsonCreateAssertParseTransformer";
56
- import { JsonCreateAssertStringifyTransformer } from "./features/json/JsonCreateAssertStringifyTransformer";
57
- import { JsonCreateIsParseTransformer } from "./features/json/JsonCreateIsParseTransformer";
58
- import { JsonCreateIsStringifyTransformer } from "./features/json/JsonCreateIsStringifyTransformer";
59
- import { JsonCreateStringifyTransformer } from "./features/json/JsonCreateStringifyTransformer";
60
- import { JsonCreateValidateParseTransformer } from "./features/json/JsonCreateValidateParseTransformer";
61
- import { JsonCreateValidateStringifyTransformer } from "./features/json/JsonCreateValidateStringifyProgrammer";
62
- import { JsonIsParseTransformer } from "./features/json/JsonIsParseTransformer";
63
- import { JsonIsStringifyTransformer } from "./features/json/JsonIsStringifyTransformer";
64
- import { JsonStringifyTransformer } from "./features/json/JsonStringifyTransformer";
65
- import { JsonValidateParseTransformer } from "./features/json/JsonValidateParseTransformer";
66
- import { JsonValidateStringifyTransformer } from "./features/json/JsonValidateStringifyTransformer";
67
- import { LlmSchemaTransformer } from "./features/llm/LlmSchemaTransformer";
68
- import { MiscAssertCloneTransformer } from "./features/misc/MiscAssertCloneTransformer";
69
- import { MiscAssertPruneTransformer } from "./features/misc/MiscAssertPruneTransformer";
70
- import { MiscCloneTransformer } from "./features/misc/MiscCloneTransformer";
71
- import { MiscCreateAssertCloneTransformer } from "./features/misc/MiscCreateAssertCloneTransformer";
72
- import { MiscCreateAssertPruneTransformer } from "./features/misc/MiscCreateAssertPruneTransformer";
73
- import { MiscCreateCloneTransformer } from "./features/misc/MiscCreateCloneTransformer";
74
- import { MiscCreateIsCloneTransformer } from "./features/misc/MiscCreateIsCloneTransformer";
75
- import { MiscCreateIsPruneTransformer } from "./features/misc/MiscCreateIsPruneTransformer";
76
- import { MiscCreatePruneTransformer } from "./features/misc/MiscCreatePruneTransformer";
77
- import { MiscCreateValidateCloneTransformer } from "./features/misc/MiscCreateValidateCloneTransformer";
78
- import { MiscCreateValidatePruneTransformer } from "./features/misc/MiscCreateValidatePruneTransformer";
79
- import { MiscIsCloneTransformer } from "./features/misc/MiscIsCloneTransformer";
80
- import { MiscIsPruneTransformer } from "./features/misc/MiscIsPruneTransformer";
81
- import { MiscLiteralsTransformer } from "./features/misc/MiscLiteralsTransformer";
82
- import { MiscPruneTransformer } from "./features/misc/MiscPruneTransformer";
83
- import { MiscValidateCloneTransformer } from "./features/misc/MiscValidateCloneTransformer";
84
- import { MiscValidatePruneTransformer } from "./features/misc/MiscValidatePruneTransformer";
85
- import { NotationAssertGeneralTransformer } from "./features/notations/NotationAssertGeneralTransformer";
86
- import { NotationCreateAssertGeneralTransformer } from "./features/notations/NotationCreateAssertGeneralTransformer";
87
- import { NotationCreateGeneralTransformer } from "./features/notations/NotationCreateGeneralTransformer";
88
- import { NotationCreateIsGeneralTransformer } from "./features/notations/NotationCreateIsGeneralTransformer";
89
- import { NotationCreateValidateGeneralTransformer } from "./features/notations/NotationCreateValidateGeneralTransformer";
90
- import { NotationGeneralTransformer } from "./features/notations/NotationGeneralTransformer";
91
- import { NotationIsGeneralTransformer } from "./features/notations/NotationIsGeneralTransformer";
92
- import { NotationValidateGeneralTransformer } from "./features/notations/NotationValidateGeneralTransformer";
93
- import { ProtobufAssertDecodeTransformer } from "./features/protobuf/ProtobufAssertDecodeTransformer";
94
- import { ProtobufAssertEncodeTransformer } from "./features/protobuf/ProtobufAssertEncodeTransformer";
95
- import { ProtobufCreateAssertDecodeTransformer } from "./features/protobuf/ProtobufCreateAssertDecodeTransformer";
96
- import { ProtobufCreateAssertEncodeTransformer } from "./features/protobuf/ProtobufCreateAssertEncodeTransformer";
97
- import { ProtobufCreateDecodeTransformer } from "./features/protobuf/ProtobufCreateDecodeTransformer";
98
- import { ProtobufCreateEncodeTransformer } from "./features/protobuf/ProtobufCreateEncodeTransformer";
99
- import { ProtobufCreateIsDecodeTransformer } from "./features/protobuf/ProtobufCreateIsDecodeTransformer";
100
- import { ProtobufCreateIsEncodeTransformer } from "./features/protobuf/ProtobufCreateIsEncodeTransformer";
101
- import { ProtobufCreateValidateDecodeTransformer } from "./features/protobuf/ProtobufCreateValidateDecodeTransformer";
102
- import { ProtobufCreateValidateEncodeTransformer } from "./features/protobuf/ProtobufCreateValidateEncodeTransformer";
103
- import { ProtobufDecodeTransformer } from "./features/protobuf/ProtobufDecodeTransformer";
104
- import { ProtobufEncodeTransformer } from "./features/protobuf/ProtobufEncodeTransformer";
105
- import { ProtobufIsDecodeTransformer } from "./features/protobuf/ProtobufIsDecodeTransformer";
106
- import { ProtobufIsEncodeTransformer } from "./features/protobuf/ProtobufIsEncodeTransformer";
107
- import { ProtobufMessageTransformer } from "./features/protobuf/ProtobufMessageTransformer";
108
- import { ProtobufValidateDecodeTransformer } from "./features/protobuf/ProtobufValidateDecodeTransformer";
109
- import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufValidateEncodeTransformer";
110
- import { ReflectMetadataTransformer } from "./features/reflect/ReflectMetadataTransformer";
111
- import { ReflectNameTransformer } from "./features/reflect/ReflectNameTransformer";
112
-
113
- export namespace CallExpressionTransformer {
114
- export const transform =
115
- (project: IProject) =>
116
- (expression: ts.CallExpression): ts.Expression | null => {
117
- //----
118
- // VALIDATIONS
119
- //----
120
- // SIGNATURE DECLARATION
121
- const declaration: ts.Declaration | undefined =
122
- project.checker.getResolvedSignature(expression)?.declaration;
123
- if (!declaration) return expression;
124
-
125
- // FILE PATH
126
- const location: string = path.resolve(
127
- declaration.getSourceFile().fileName,
128
- );
129
- if (isTarget(location) === false) return expression;
130
-
131
- //----
132
- // TRANSFORMATION
133
- //----
134
- // FUNCTION NAME
135
- const module: string = location.split(path.sep).at(-1)!.split(".")[0]!;
136
- const { name } = project.checker.getTypeAtLocation(declaration).symbol;
137
-
138
- // FIND TRANSFORMER
139
- const functor: (() => Task) | undefined = FUNCTORS[module]?.[name];
140
- if (functor === undefined) return expression;
141
-
142
- // RETURNS WITH TRANSFORMATION
143
- const result: ts.Expression | null = functor()(project)(
144
- expression.expression,
145
- )(expression);
146
- return result ?? expression;
147
- };
148
-
149
- const isTarget = (location: string): boolean => {
150
- const files: string[] = Object.keys(FUNCTORS);
151
- return files.some((f) =>
152
- location.includes(path.join("typia", "lib", `${f}.d.ts`)),
153
- );
154
- };
155
- }
156
-
157
- type Task = (
158
- project: IProject,
159
- ) => (
160
- modulo: ts.LeftHandSideExpression,
161
- ) => (expression: ts.CallExpression) => ts.Expression | null;
162
-
163
- const FUNCTORS: Record<string, Record<string, () => Task>> = {
164
- module: {
165
- // BASIC
166
- assert: () => AssertTransformer.transform({ equals: false, guard: false }),
167
- assertGuard: () =>
168
- AssertTransformer.transform({ equals: false, guard: true }),
169
- assertType: () =>
170
- AssertTransformer.transform({ equals: false, guard: false }),
171
- is: () => IsTransformer.transform(false),
172
- validate: () => ValidateTransformer.transform(false),
173
-
174
- // STRICT
175
- assertEquals: () =>
176
- AssertTransformer.transform({ equals: true, guard: false }),
177
- assertGuardEquals: () =>
178
- AssertTransformer.transform({ equals: true, guard: true }),
179
- equals: () => IsTransformer.transform(true),
180
- validateEquals: () => ValidateTransformer.transform(true),
181
-
182
- // RANDOM + INTERNAL
183
- random: () => RandomTransformer.transform,
184
- metadata: () => (project) => () =>
185
- ReflectMetadataTransformer.transform(project),
186
-
187
- // FACTORIES
188
- createAssert: () =>
189
- CreateAssertTransformer.transform({ equals: false, guard: false }),
190
- createAssertGuard: () =>
191
- CreateAssertTransformer.transform({ equals: false, guard: true }),
192
- createAssertType: () =>
193
- CreateAssertTransformer.transform({ equals: false, guard: false }),
194
- createIs: () => CreateIsTransformer.transform(false),
195
- createValidate: () => CreateValidateTransformer.transform(false),
196
- createAssertEquals: () =>
197
- CreateAssertTransformer.transform({ equals: true, guard: false }),
198
- createAssertGuardEquals: () =>
199
- CreateAssertTransformer.transform({ equals: true, guard: true }),
200
- createEquals: () => CreateIsTransformer.transform(true),
201
- createValidateEquals: () => CreateValidateTransformer.transform(true),
202
- createRandom: () => CreateRandomTransformer.transform,
203
- },
204
- functional: {
205
- // ASSERTIONS
206
- assertFunction: () =>
207
- FunctionalGenericTransformer.transform({
208
- method: "assertFunction",
209
- equals: false,
210
- programmer: FunctionalAssertFunctionProgrammer.write,
211
- }),
212
- assertParameters: () =>
213
- FunctionalGenericTransformer.transform({
214
- method: "assertParameters",
215
- equals: false,
216
- programmer: FunctionalAssertParametersProgrammer.write,
217
- }),
218
- assertReturn: () =>
219
- FunctionalGenericTransformer.transform({
220
- method: "assertReturn",
221
- equals: false,
222
- programmer: FunctionAssertReturnProgrammer.write,
223
- }),
224
- assertEqualsFunction: () =>
225
- FunctionalGenericTransformer.transform({
226
- method: "assertEqualsFunction",
227
- equals: true,
228
- programmer: FunctionalAssertFunctionProgrammer.write,
229
- }),
230
- assertEqualsParameters: () =>
231
- FunctionalGenericTransformer.transform({
232
- method: "assertEqualsParameters",
233
- equals: true,
234
- programmer: FunctionalAssertParametersProgrammer.write,
235
- }),
236
- assertEqualsReturn: () =>
237
- FunctionalGenericTransformer.transform({
238
- method: "assertEqualsReturn",
239
- equals: true,
240
- programmer: FunctionAssertReturnProgrammer.write,
241
- }),
242
-
243
- // IS
244
- isFunction: () =>
245
- FunctionalGenericTransformer.transform({
246
- method: "isFunction",
247
- equals: false,
248
- programmer: FunctionalIsFunctionProgrammer.write,
249
- }),
250
- isParameters: () =>
251
- FunctionalGenericTransformer.transform({
252
- method: "isParameters",
253
- equals: false,
254
- programmer: FunctionalIsParametersProgrammer.write,
255
- }),
256
- isReturn: () =>
257
- FunctionalGenericTransformer.transform({
258
- method: "isReturn",
259
- equals: false,
260
- programmer: FunctionalIsReturnProgrammer.write,
261
- }),
262
- equalsFunction: () =>
263
- FunctionalGenericTransformer.transform({
264
- method: "equalsFunction",
265
- equals: true,
266
- programmer: FunctionalIsFunctionProgrammer.write,
267
- }),
268
- equalsParameters: () =>
269
- FunctionalGenericTransformer.transform({
270
- method: "equalsParameters",
271
- equals: true,
272
- programmer: FunctionalIsParametersProgrammer.write,
273
- }),
274
- equalsReturn: () =>
275
- FunctionalGenericTransformer.transform({
276
- method: "equalsReturn",
277
- equals: true,
278
- programmer: FunctionalIsReturnProgrammer.write,
279
- }),
280
-
281
- // VALIDATIONS
282
- validateFunction: () =>
283
- FunctionalGenericTransformer.transform({
284
- method: "validateFunction",
285
- equals: false,
286
- programmer: FunctionalValidateFunctionProgrammer.write,
287
- }),
288
- validateParameters: () =>
289
- FunctionalGenericTransformer.transform({
290
- method: "validateParameters",
291
- equals: false,
292
- programmer: FunctionalValidateParametersProgrammer.write,
293
- }),
294
- validateReturn: () =>
295
- FunctionalGenericTransformer.transform({
296
- method: "validateReturn",
297
- equals: false,
298
- programmer: FunctionalValidateReturnProgrammer.write,
299
- }),
300
- validateEqualsFunction: () =>
301
- FunctionalGenericTransformer.transform({
302
- method: "validateEqualsFunction",
303
- equals: true,
304
- programmer: FunctionalValidateFunctionProgrammer.write,
305
- }),
306
- validateEqualsParameters: () =>
307
- FunctionalGenericTransformer.transform({
308
- method: "validateEqualsParameters",
309
- equals: true,
310
- programmer: FunctionalValidateParametersProgrammer.write,
311
- }),
312
- validateEqualsReturn: () =>
313
- FunctionalGenericTransformer.transform({
314
- method: "validateEqualsReturn",
315
- equals: true,
316
- programmer: FunctionalValidateReturnProgrammer.write,
317
- }),
318
- },
319
- http: {
320
- // FORM-DATA
321
- formData: () => HttpFormDataTransformer.transform,
322
- isFormData: () => HttpIsFormDataTransformer.transform,
323
- assertFormData: () => HttpAssertFormDataTransformer.transform,
324
- validateFormData: () => HttpValidateFormDataTransformer.transform,
325
-
326
- // HEADERS
327
- headers: () => HttpHeadersTransformer.transform,
328
- isHeaders: () => HttpIsHeadersTransformer.transform,
329
- assertHeaders: () => HttpAssertHeadersTransformer.transform,
330
- validateHeaders: () => HttpValidateHeadersTransformer.transform,
331
-
332
- // PARAMETER
333
- parameter: () => HttpParameterTransformer.transform,
334
-
335
- // QUERY
336
- query: () => HttpQueryTransformer.transform,
337
- isQuery: () => HttpIsQueryTransformer.transform,
338
- assertQuery: () => HttpAssertQueryTransformer.transform,
339
- validateQuery: () => HttpValidateQueryTransformer.transform,
340
-
341
- // FACTORIES
342
- createFormData: () => CreateHttpFormDataTransformer.transform,
343
- createIsFormData: () => CreateHttpIsFormDataTransformer.transform,
344
- createAssertFormData: () => CreateHttpAssertFormDataTransformer.transform,
345
- createValidateFormData: () =>
346
- CreateHttpValidateFormDataTransformer.transform,
347
- createHeaders: () => CreateHttpHeadersTransformer.transform,
348
- createIsHeaders: () => CreateHttpIsHeadersTransformer.transform,
349
- createAssertHeaders: () => CreateHttpAssertHeadersTransformer.transform,
350
- createValidateHeaders: () => CreateHttpValidateHeadersTransformer.transform,
351
- createParameter: () => CreateHttpParameterTransformer.transform,
352
- createQuery: () => CreateHttpQueryTransformer.transform,
353
- createIsQuery: () => CreateHttpIsQueryTransformer.transform,
354
- createAssertQuery: () => CreateHttpAssertQueryTransformer.transform,
355
- createValidateQuery: () => CreateHttpValidateQueryTransformer.transform,
356
- },
357
- llm: {
358
- schema: () => (project) => () => LlmSchemaTransformer.transform(project),
359
- },
360
- json: {
361
- // SCHEMA
362
- application: () => (project) => () =>
363
- JsonApplicationTransformer.transform(project),
364
-
365
- // PARSER
366
- isParse: () => JsonIsParseTransformer.transform,
367
- assertParse: () => JsonAssertParseTransformer.transform,
368
- validateParse: () => JsonValidateParseTransformer.transform,
369
-
370
- // STRINGIFY
371
- stringify: () => JsonStringifyTransformer.transform,
372
- assertStringify: () => JsonAssertStringifyTransformer.transform,
373
- isStringify: () => JsonIsStringifyTransformer.transform,
374
- validateStringify: () => JsonValidateStringifyTransformer.transform,
375
-
376
- // FACTORIES
377
- createIsParse: () => JsonCreateIsParseTransformer.transform,
378
- createAssertParse: () => JsonCreateAssertParseTransformer.transform,
379
- createValidateParse: () => JsonCreateValidateParseTransformer.transform,
380
- createStringify: () => JsonCreateStringifyTransformer.transform,
381
- createAssertStringify: () => JsonCreateAssertStringifyTransformer.transform,
382
- createIsStringify: () => JsonCreateIsStringifyTransformer.transform,
383
- createValidateStringify: () =>
384
- JsonCreateValidateStringifyTransformer.transform,
385
- },
386
- protobuf: {
387
- // SCHEMA
388
- message: () => ProtobufMessageTransformer.transform,
389
-
390
- // ENCODE
391
- encode: () => ProtobufEncodeTransformer.transform,
392
- assertEncode: () => ProtobufAssertEncodeTransformer.transform,
393
- isEncode: () => ProtobufIsEncodeTransformer.transform,
394
- validateEncode: () => ProtobufValidateEncodeTransformer.transform,
395
-
396
- // DECODE
397
- decode: () => ProtobufDecodeTransformer.transform,
398
- assertDecode: () => ProtobufAssertDecodeTransformer.transform,
399
- isDecode: () => ProtobufIsDecodeTransformer.transform,
400
- validateDecode: () => ProtobufValidateDecodeTransformer.transform,
401
-
402
- // FACTORIES
403
- createEncode: () => ProtobufCreateEncodeTransformer.transform,
404
- createAssertEncode: () => ProtobufCreateAssertEncodeTransformer.transform,
405
- createIsEncode: () => ProtobufCreateIsEncodeTransformer.transform,
406
- createValidateEncode: () =>
407
- ProtobufCreateValidateEncodeTransformer.transform,
408
- createDecode: () => ProtobufCreateDecodeTransformer.transform,
409
- createAssertDecode: () => ProtobufCreateAssertDecodeTransformer.transform,
410
- createIsDecode: () => ProtobufCreateIsDecodeTransformer.transform,
411
- createValidateDecode: () =>
412
- ProtobufCreateValidateDecodeTransformer.transform,
413
- },
414
- reflect: {
415
- metadata: () => (project) => () =>
416
- ReflectMetadataTransformer.transform(project),
417
- name: () => (project) => () => ReflectNameTransformer.transform(project),
418
- },
419
- misc: {
420
- literals: () => (project) => () =>
421
- MiscLiteralsTransformer.transform(project),
422
-
423
- // CLONE
424
- clone: () => MiscCloneTransformer.transform,
425
- assertClone: () => MiscAssertCloneTransformer.transform,
426
- isClone: () => MiscIsCloneTransformer.transform,
427
- validateClone: () => MiscValidateCloneTransformer.transform,
428
-
429
- // PRUNE
430
- prune: () => MiscPruneTransformer.transform,
431
- assertPrune: () => MiscAssertPruneTransformer.transform,
432
- isPrune: () => MiscIsPruneTransformer.transform,
433
- validatePrune: () => MiscValidatePruneTransformer.transform,
434
-
435
- // FACTORIES
436
- createClone: () => MiscCreateCloneTransformer.transform,
437
- createAssertClone: () => MiscCreateAssertCloneTransformer.transform,
438
- createIsClone: () => MiscCreateIsCloneTransformer.transform,
439
- createValidateClone: () => MiscCreateValidateCloneTransformer.transform,
440
- createPrune: () => MiscCreatePruneTransformer.transform,
441
- createAssertPrune: () => MiscCreateAssertPruneTransformer.transform,
442
- createIsPrune: () => MiscCreateIsPruneTransformer.transform,
443
- createValidatePrune: () => MiscCreateValidatePruneTransformer.transform,
444
- },
445
- notations: {
446
- // CAMEL
447
- camel: () => NotationGeneralTransformer.transform(NamingConvention.camel),
448
- assertCamel: () =>
449
- NotationAssertGeneralTransformer.transform(NamingConvention.camel),
450
- isCamel: () =>
451
- NotationIsGeneralTransformer.transform(NamingConvention.camel),
452
- validateCamel: () =>
453
- NotationValidateGeneralTransformer.transform(NamingConvention.camel),
454
-
455
- // PASCAL
456
- pascal: () => NotationGeneralTransformer.transform(NamingConvention.pascal),
457
- assertPascal: () =>
458
- NotationAssertGeneralTransformer.transform(NamingConvention.pascal),
459
- isPascal: () =>
460
- NotationIsGeneralTransformer.transform(NamingConvention.pascal),
461
- validatePascal: () =>
462
- NotationValidateGeneralTransformer.transform(NamingConvention.pascal),
463
-
464
- // SNAKE
465
- snake: () => NotationGeneralTransformer.transform(NamingConvention.snake),
466
- assertSnake: () =>
467
- NotationAssertGeneralTransformer.transform(NamingConvention.snake),
468
- isSnake: () =>
469
- NotationIsGeneralTransformer.transform(NamingConvention.snake),
470
- validateSnake: () =>
471
- NotationValidateGeneralTransformer.transform(NamingConvention.snake),
472
-
473
- // FACTORIES
474
- createCamel: () =>
475
- NotationCreateGeneralTransformer.transform(NamingConvention.camel),
476
- createAssertCamel: () =>
477
- NotationCreateAssertGeneralTransformer.transform(NamingConvention.camel),
478
- createIsCamel: () =>
479
- NotationCreateIsGeneralTransformer.transform(NamingConvention.camel),
480
- createValidateCamel: () =>
481
- NotationCreateValidateGeneralTransformer.transform(
482
- NamingConvention.camel,
483
- ),
484
- createPascal: () =>
485
- NotationCreateGeneralTransformer.transform(NamingConvention.pascal),
486
- createAssertPascal: () =>
487
- NotationCreateAssertGeneralTransformer.transform(NamingConvention.pascal),
488
- createIsPascal: () =>
489
- NotationCreateIsGeneralTransformer.transform(NamingConvention.pascal),
490
- createValidatePascal: () =>
491
- NotationCreateValidateGeneralTransformer.transform(
492
- NamingConvention.pascal,
493
- ),
494
- createSnake: () =>
495
- NotationCreateGeneralTransformer.transform(NamingConvention.snake),
496
- createAssertSnake: () =>
497
- NotationCreateAssertGeneralTransformer.transform(NamingConvention.snake),
498
- createIsSnake: () =>
499
- NotationCreateIsGeneralTransformer.transform(NamingConvention.snake),
500
- createValidateSnake: () =>
501
- NotationCreateValidateGeneralTransformer.transform(
502
- NamingConvention.snake,
503
- ),
504
- },
505
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ import { FunctionalAssertFunctionProgrammer } from "../programmers/functional/FunctionalAssertFunctionProgrammer";
5
+ import { FunctionalAssertParametersProgrammer } from "../programmers/functional/FunctionalAssertParametersProgrammer";
6
+ import { FunctionAssertReturnProgrammer } from "../programmers/functional/FunctionalAssertReturnProgrammer";
7
+ import { FunctionalIsFunctionProgrammer } from "../programmers/functional/FunctionalIsFunctionProgrammer";
8
+ import { FunctionalIsParametersProgrammer } from "../programmers/functional/FunctionalIsParametersProgrammer";
9
+ import { FunctionalIsReturnProgrammer } from "../programmers/functional/FunctionalIsReturnProgrammer";
10
+ import { FunctionalValidateFunctionProgrammer } from "../programmers/functional/FunctionalValidateFunctionProgrammer";
11
+ import { FunctionalValidateParametersProgrammer } from "../programmers/functional/FunctionalValidateParametersProgrammer";
12
+ import { FunctionalValidateReturnProgrammer } from "../programmers/functional/FunctionalValidateReturnProgrammer";
13
+ import { FunctionalGenericTransformer } from "./features/functional/FunctionalGenericTransformer";
14
+
15
+ import { NamingConvention } from "../utils/NamingConvention";
16
+
17
+ import { IProject } from "./IProject";
18
+ import { AssertTransformer } from "./features/AssertTransformer";
19
+ import { CreateAssertTransformer } from "./features/CreateAssertTransformer";
20
+ import { CreateIsTransformer } from "./features/CreateIsTransformer";
21
+ import { CreateRandomTransformer } from "./features/CreateRandomTransformer";
22
+ import { CreateValidateTransformer } from "./features/CreateValidateTransformer";
23
+ import { IsTransformer } from "./features/IsTransformer";
24
+ import { RandomTransformer } from "./features/RandomTransformer";
25
+ import { ValidateTransformer } from "./features/ValidateTransformer";
26
+ import { CreateHttpAssertFormDataTransformer } from "./features/http/CreateHttpAssertFormDataTransformer";
27
+ import { CreateHttpAssertHeadersTransformer } from "./features/http/CreateHttpAssertHeadersTransformer";
28
+ import { CreateHttpAssertQueryTransformer } from "./features/http/CreateHttpAssertQueryTransformer";
29
+ import { CreateHttpFormDataTransformer } from "./features/http/CreateHttpFormDataTransformer";
30
+ import { CreateHttpHeadersTransformer } from "./features/http/CreateHttpHeadersTransformer";
31
+ import { CreateHttpIsFormDataTransformer } from "./features/http/CreateHttpIsFormDataTransformer";
32
+ import { CreateHttpIsHeadersTransformer } from "./features/http/CreateHttpIsHeadersTransformer";
33
+ import { CreateHttpIsQueryTransformer } from "./features/http/CreateHttpIsQueryTransformer";
34
+ import { CreateHttpParameterTransformer } from "./features/http/CreateHttpParameterTransformer";
35
+ import { CreateHttpQueryTransformer } from "./features/http/CreateHttpQueryTransformer";
36
+ import { CreateHttpValidateFormDataTransformer } from "./features/http/CreateHttpValidateFormDataTransformer";
37
+ import { CreateHttpValidateHeadersTransformer } from "./features/http/CreateHttpValidateHeadersTransformer";
38
+ import { CreateHttpValidateQueryTransformer } from "./features/http/CreateHttpValidateQueryTransformer";
39
+ import { HttpAssertFormDataTransformer } from "./features/http/HttpAssertFormDataTransformer";
40
+ import { HttpAssertHeadersTransformer } from "./features/http/HttpAssertHeadersTransformer";
41
+ import { HttpAssertQueryTransformer } from "./features/http/HttpAssertQueryTransformer";
42
+ import { HttpFormDataTransformer } from "./features/http/HttpFormDataTransformer";
43
+ import { HttpHeadersTransformer } from "./features/http/HttpHeadersTransformer";
44
+ import { HttpIsFormDataTransformer } from "./features/http/HttpIsFormDataTransformer";
45
+ import { HttpIsHeadersTransformer } from "./features/http/HttpIsHeadersTransformer";
46
+ import { HttpIsQueryTransformer } from "./features/http/HttpIsQueryTransformer";
47
+ import { HttpParameterTransformer } from "./features/http/HttpParameterTransformer";
48
+ import { HttpQueryTransformer } from "./features/http/HttpQueryTransformer";
49
+ import { HttpValidateFormDataTransformer } from "./features/http/HttpValidateFormDataTransformer";
50
+ import { HttpValidateHeadersTransformer } from "./features/http/HttpValidateHeadersTransformer";
51
+ import { HttpValidateQueryTransformer } from "./features/http/HttpValidateQueryTransformer";
52
+ import { JsonApplicationTransformer } from "./features/json/JsonApplicationTransformer";
53
+ import { JsonAssertParseTransformer } from "./features/json/JsonAssertParseTransformer";
54
+ import { JsonAssertStringifyTransformer } from "./features/json/JsonAssertStringifyTransformer";
55
+ import { JsonCreateAssertParseTransformer } from "./features/json/JsonCreateAssertParseTransformer";
56
+ import { JsonCreateAssertStringifyTransformer } from "./features/json/JsonCreateAssertStringifyTransformer";
57
+ import { JsonCreateIsParseTransformer } from "./features/json/JsonCreateIsParseTransformer";
58
+ import { JsonCreateIsStringifyTransformer } from "./features/json/JsonCreateIsStringifyTransformer";
59
+ import { JsonCreateStringifyTransformer } from "./features/json/JsonCreateStringifyTransformer";
60
+ import { JsonCreateValidateParseTransformer } from "./features/json/JsonCreateValidateParseTransformer";
61
+ import { JsonCreateValidateStringifyTransformer } from "./features/json/JsonCreateValidateStringifyProgrammer";
62
+ import { JsonIsParseTransformer } from "./features/json/JsonIsParseTransformer";
63
+ import { JsonIsStringifyTransformer } from "./features/json/JsonIsStringifyTransformer";
64
+ import { JsonStringifyTransformer } from "./features/json/JsonStringifyTransformer";
65
+ import { JsonValidateParseTransformer } from "./features/json/JsonValidateParseTransformer";
66
+ import { JsonValidateStringifyTransformer } from "./features/json/JsonValidateStringifyTransformer";
67
+ import { LlmApplicationTransformer } from "./features/llm/LlmApplicationTransformer";
68
+ import { LlmSchemaTransformer } from "./features/llm/LlmSchemaTransformer";
69
+ import { MiscAssertCloneTransformer } from "./features/misc/MiscAssertCloneTransformer";
70
+ import { MiscAssertPruneTransformer } from "./features/misc/MiscAssertPruneTransformer";
71
+ import { MiscCloneTransformer } from "./features/misc/MiscCloneTransformer";
72
+ import { MiscCreateAssertCloneTransformer } from "./features/misc/MiscCreateAssertCloneTransformer";
73
+ import { MiscCreateAssertPruneTransformer } from "./features/misc/MiscCreateAssertPruneTransformer";
74
+ import { MiscCreateCloneTransformer } from "./features/misc/MiscCreateCloneTransformer";
75
+ import { MiscCreateIsCloneTransformer } from "./features/misc/MiscCreateIsCloneTransformer";
76
+ import { MiscCreateIsPruneTransformer } from "./features/misc/MiscCreateIsPruneTransformer";
77
+ import { MiscCreatePruneTransformer } from "./features/misc/MiscCreatePruneTransformer";
78
+ import { MiscCreateValidateCloneTransformer } from "./features/misc/MiscCreateValidateCloneTransformer";
79
+ import { MiscCreateValidatePruneTransformer } from "./features/misc/MiscCreateValidatePruneTransformer";
80
+ import { MiscIsCloneTransformer } from "./features/misc/MiscIsCloneTransformer";
81
+ import { MiscIsPruneTransformer } from "./features/misc/MiscIsPruneTransformer";
82
+ import { MiscLiteralsTransformer } from "./features/misc/MiscLiteralsTransformer";
83
+ import { MiscPruneTransformer } from "./features/misc/MiscPruneTransformer";
84
+ import { MiscValidateCloneTransformer } from "./features/misc/MiscValidateCloneTransformer";
85
+ import { MiscValidatePruneTransformer } from "./features/misc/MiscValidatePruneTransformer";
86
+ import { NotationAssertGeneralTransformer } from "./features/notations/NotationAssertGeneralTransformer";
87
+ import { NotationCreateAssertGeneralTransformer } from "./features/notations/NotationCreateAssertGeneralTransformer";
88
+ import { NotationCreateGeneralTransformer } from "./features/notations/NotationCreateGeneralTransformer";
89
+ import { NotationCreateIsGeneralTransformer } from "./features/notations/NotationCreateIsGeneralTransformer";
90
+ import { NotationCreateValidateGeneralTransformer } from "./features/notations/NotationCreateValidateGeneralTransformer";
91
+ import { NotationGeneralTransformer } from "./features/notations/NotationGeneralTransformer";
92
+ import { NotationIsGeneralTransformer } from "./features/notations/NotationIsGeneralTransformer";
93
+ import { NotationValidateGeneralTransformer } from "./features/notations/NotationValidateGeneralTransformer";
94
+ import { ProtobufAssertDecodeTransformer } from "./features/protobuf/ProtobufAssertDecodeTransformer";
95
+ import { ProtobufAssertEncodeTransformer } from "./features/protobuf/ProtobufAssertEncodeTransformer";
96
+ import { ProtobufCreateAssertDecodeTransformer } from "./features/protobuf/ProtobufCreateAssertDecodeTransformer";
97
+ import { ProtobufCreateAssertEncodeTransformer } from "./features/protobuf/ProtobufCreateAssertEncodeTransformer";
98
+ import { ProtobufCreateDecodeTransformer } from "./features/protobuf/ProtobufCreateDecodeTransformer";
99
+ import { ProtobufCreateEncodeTransformer } from "./features/protobuf/ProtobufCreateEncodeTransformer";
100
+ import { ProtobufCreateIsDecodeTransformer } from "./features/protobuf/ProtobufCreateIsDecodeTransformer";
101
+ import { ProtobufCreateIsEncodeTransformer } from "./features/protobuf/ProtobufCreateIsEncodeTransformer";
102
+ import { ProtobufCreateValidateDecodeTransformer } from "./features/protobuf/ProtobufCreateValidateDecodeTransformer";
103
+ import { ProtobufCreateValidateEncodeTransformer } from "./features/protobuf/ProtobufCreateValidateEncodeTransformer";
104
+ import { ProtobufDecodeTransformer } from "./features/protobuf/ProtobufDecodeTransformer";
105
+ import { ProtobufEncodeTransformer } from "./features/protobuf/ProtobufEncodeTransformer";
106
+ import { ProtobufIsDecodeTransformer } from "./features/protobuf/ProtobufIsDecodeTransformer";
107
+ import { ProtobufIsEncodeTransformer } from "./features/protobuf/ProtobufIsEncodeTransformer";
108
+ import { ProtobufMessageTransformer } from "./features/protobuf/ProtobufMessageTransformer";
109
+ import { ProtobufValidateDecodeTransformer } from "./features/protobuf/ProtobufValidateDecodeTransformer";
110
+ import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufValidateEncodeTransformer";
111
+ import { ReflectMetadataTransformer } from "./features/reflect/ReflectMetadataTransformer";
112
+ import { ReflectNameTransformer } from "./features/reflect/ReflectNameTransformer";
113
+
114
+ export namespace CallExpressionTransformer {
115
+ export const transform =
116
+ (project: IProject) =>
117
+ (expression: ts.CallExpression): ts.Expression | null => {
118
+ //----
119
+ // VALIDATIONS
120
+ //----
121
+ // SIGNATURE DECLARATION
122
+ const declaration: ts.Declaration | undefined =
123
+ project.checker.getResolvedSignature(expression)?.declaration;
124
+ if (!declaration) return expression;
125
+
126
+ // FILE PATH
127
+ const location: string = path.resolve(
128
+ declaration.getSourceFile().fileName,
129
+ );
130
+ if (isTarget(location) === false) return expression;
131
+
132
+ //----
133
+ // TRANSFORMATION
134
+ //----
135
+ // FUNCTION NAME
136
+ const module: string = location.split(path.sep).at(-1)!.split(".")[0]!;
137
+ const { name } = project.checker.getTypeAtLocation(declaration).symbol;
138
+
139
+ // FIND TRANSFORMER
140
+ const functor: (() => Task) | undefined = FUNCTORS[module]?.[name];
141
+ if (functor === undefined) return expression;
142
+
143
+ // RETURNS WITH TRANSFORMATION
144
+ const result: ts.Expression | null = functor()(project)(
145
+ expression.expression,
146
+ )(expression);
147
+ return result ?? expression;
148
+ };
149
+
150
+ const isTarget = (location: string): boolean => {
151
+ const files: string[] = Object.keys(FUNCTORS);
152
+ return files.some((f) =>
153
+ location.includes(path.join("typia", "lib", `${f}.d.ts`)),
154
+ );
155
+ };
156
+ }
157
+
158
+ type Task = (
159
+ project: IProject,
160
+ ) => (
161
+ modulo: ts.LeftHandSideExpression,
162
+ ) => (expression: ts.CallExpression) => ts.Expression | null;
163
+
164
+ const FUNCTORS: Record<string, Record<string, () => Task>> = {
165
+ module: {
166
+ // BASIC
167
+ assert: () => AssertTransformer.transform({ equals: false, guard: false }),
168
+ assertGuard: () =>
169
+ AssertTransformer.transform({ equals: false, guard: true }),
170
+ assertType: () =>
171
+ AssertTransformer.transform({ equals: false, guard: false }),
172
+ is: () => IsTransformer.transform(false),
173
+ validate: () => ValidateTransformer.transform(false),
174
+
175
+ // STRICT
176
+ assertEquals: () =>
177
+ AssertTransformer.transform({ equals: true, guard: false }),
178
+ assertGuardEquals: () =>
179
+ AssertTransformer.transform({ equals: true, guard: true }),
180
+ equals: () => IsTransformer.transform(true),
181
+ validateEquals: () => ValidateTransformer.transform(true),
182
+
183
+ // RANDOM + INTERNAL
184
+ random: () => RandomTransformer.transform,
185
+ metadata: () => (project) => () =>
186
+ ReflectMetadataTransformer.transform(project),
187
+
188
+ // FACTORIES
189
+ createAssert: () =>
190
+ CreateAssertTransformer.transform({ equals: false, guard: false }),
191
+ createAssertGuard: () =>
192
+ CreateAssertTransformer.transform({ equals: false, guard: true }),
193
+ createAssertType: () =>
194
+ CreateAssertTransformer.transform({ equals: false, guard: false }),
195
+ createIs: () => CreateIsTransformer.transform(false),
196
+ createValidate: () => CreateValidateTransformer.transform(false),
197
+ createAssertEquals: () =>
198
+ CreateAssertTransformer.transform({ equals: true, guard: false }),
199
+ createAssertGuardEquals: () =>
200
+ CreateAssertTransformer.transform({ equals: true, guard: true }),
201
+ createEquals: () => CreateIsTransformer.transform(true),
202
+ createValidateEquals: () => CreateValidateTransformer.transform(true),
203
+ createRandom: () => CreateRandomTransformer.transform,
204
+ },
205
+ functional: {
206
+ // ASSERTIONS
207
+ assertFunction: () =>
208
+ FunctionalGenericTransformer.transform({
209
+ method: "assertFunction",
210
+ equals: false,
211
+ programmer: FunctionalAssertFunctionProgrammer.write,
212
+ }),
213
+ assertParameters: () =>
214
+ FunctionalGenericTransformer.transform({
215
+ method: "assertParameters",
216
+ equals: false,
217
+ programmer: FunctionalAssertParametersProgrammer.write,
218
+ }),
219
+ assertReturn: () =>
220
+ FunctionalGenericTransformer.transform({
221
+ method: "assertReturn",
222
+ equals: false,
223
+ programmer: FunctionAssertReturnProgrammer.write,
224
+ }),
225
+ assertEqualsFunction: () =>
226
+ FunctionalGenericTransformer.transform({
227
+ method: "assertEqualsFunction",
228
+ equals: true,
229
+ programmer: FunctionalAssertFunctionProgrammer.write,
230
+ }),
231
+ assertEqualsParameters: () =>
232
+ FunctionalGenericTransformer.transform({
233
+ method: "assertEqualsParameters",
234
+ equals: true,
235
+ programmer: FunctionalAssertParametersProgrammer.write,
236
+ }),
237
+ assertEqualsReturn: () =>
238
+ FunctionalGenericTransformer.transform({
239
+ method: "assertEqualsReturn",
240
+ equals: true,
241
+ programmer: FunctionAssertReturnProgrammer.write,
242
+ }),
243
+
244
+ // IS
245
+ isFunction: () =>
246
+ FunctionalGenericTransformer.transform({
247
+ method: "isFunction",
248
+ equals: false,
249
+ programmer: FunctionalIsFunctionProgrammer.write,
250
+ }),
251
+ isParameters: () =>
252
+ FunctionalGenericTransformer.transform({
253
+ method: "isParameters",
254
+ equals: false,
255
+ programmer: FunctionalIsParametersProgrammer.write,
256
+ }),
257
+ isReturn: () =>
258
+ FunctionalGenericTransformer.transform({
259
+ method: "isReturn",
260
+ equals: false,
261
+ programmer: FunctionalIsReturnProgrammer.write,
262
+ }),
263
+ equalsFunction: () =>
264
+ FunctionalGenericTransformer.transform({
265
+ method: "equalsFunction",
266
+ equals: true,
267
+ programmer: FunctionalIsFunctionProgrammer.write,
268
+ }),
269
+ equalsParameters: () =>
270
+ FunctionalGenericTransformer.transform({
271
+ method: "equalsParameters",
272
+ equals: true,
273
+ programmer: FunctionalIsParametersProgrammer.write,
274
+ }),
275
+ equalsReturn: () =>
276
+ FunctionalGenericTransformer.transform({
277
+ method: "equalsReturn",
278
+ equals: true,
279
+ programmer: FunctionalIsReturnProgrammer.write,
280
+ }),
281
+
282
+ // VALIDATIONS
283
+ validateFunction: () =>
284
+ FunctionalGenericTransformer.transform({
285
+ method: "validateFunction",
286
+ equals: false,
287
+ programmer: FunctionalValidateFunctionProgrammer.write,
288
+ }),
289
+ validateParameters: () =>
290
+ FunctionalGenericTransformer.transform({
291
+ method: "validateParameters",
292
+ equals: false,
293
+ programmer: FunctionalValidateParametersProgrammer.write,
294
+ }),
295
+ validateReturn: () =>
296
+ FunctionalGenericTransformer.transform({
297
+ method: "validateReturn",
298
+ equals: false,
299
+ programmer: FunctionalValidateReturnProgrammer.write,
300
+ }),
301
+ validateEqualsFunction: () =>
302
+ FunctionalGenericTransformer.transform({
303
+ method: "validateEqualsFunction",
304
+ equals: true,
305
+ programmer: FunctionalValidateFunctionProgrammer.write,
306
+ }),
307
+ validateEqualsParameters: () =>
308
+ FunctionalGenericTransformer.transform({
309
+ method: "validateEqualsParameters",
310
+ equals: true,
311
+ programmer: FunctionalValidateParametersProgrammer.write,
312
+ }),
313
+ validateEqualsReturn: () =>
314
+ FunctionalGenericTransformer.transform({
315
+ method: "validateEqualsReturn",
316
+ equals: true,
317
+ programmer: FunctionalValidateReturnProgrammer.write,
318
+ }),
319
+ },
320
+ http: {
321
+ // FORM-DATA
322
+ formData: () => HttpFormDataTransformer.transform,
323
+ isFormData: () => HttpIsFormDataTransformer.transform,
324
+ assertFormData: () => HttpAssertFormDataTransformer.transform,
325
+ validateFormData: () => HttpValidateFormDataTransformer.transform,
326
+
327
+ // HEADERS
328
+ headers: () => HttpHeadersTransformer.transform,
329
+ isHeaders: () => HttpIsHeadersTransformer.transform,
330
+ assertHeaders: () => HttpAssertHeadersTransformer.transform,
331
+ validateHeaders: () => HttpValidateHeadersTransformer.transform,
332
+
333
+ // PARAMETER
334
+ parameter: () => HttpParameterTransformer.transform,
335
+
336
+ // QUERY
337
+ query: () => HttpQueryTransformer.transform,
338
+ isQuery: () => HttpIsQueryTransformer.transform,
339
+ assertQuery: () => HttpAssertQueryTransformer.transform,
340
+ validateQuery: () => HttpValidateQueryTransformer.transform,
341
+
342
+ // FACTORIES
343
+ createFormData: () => CreateHttpFormDataTransformer.transform,
344
+ createIsFormData: () => CreateHttpIsFormDataTransformer.transform,
345
+ createAssertFormData: () => CreateHttpAssertFormDataTransformer.transform,
346
+ createValidateFormData: () =>
347
+ CreateHttpValidateFormDataTransformer.transform,
348
+ createHeaders: () => CreateHttpHeadersTransformer.transform,
349
+ createIsHeaders: () => CreateHttpIsHeadersTransformer.transform,
350
+ createAssertHeaders: () => CreateHttpAssertHeadersTransformer.transform,
351
+ createValidateHeaders: () => CreateHttpValidateHeadersTransformer.transform,
352
+ createParameter: () => CreateHttpParameterTransformer.transform,
353
+ createQuery: () => CreateHttpQueryTransformer.transform,
354
+ createIsQuery: () => CreateHttpIsQueryTransformer.transform,
355
+ createAssertQuery: () => CreateHttpAssertQueryTransformer.transform,
356
+ createValidateQuery: () => CreateHttpValidateQueryTransformer.transform,
357
+ },
358
+ llm: {
359
+ application: () => (project) =>
360
+ LlmApplicationTransformer.transform(project),
361
+ schema: () => (project) => () => LlmSchemaTransformer.transform(project),
362
+ },
363
+ json: {
364
+ // SCHEMA
365
+ application: () => (project) => () =>
366
+ JsonApplicationTransformer.transform(project),
367
+
368
+ // PARSER
369
+ isParse: () => JsonIsParseTransformer.transform,
370
+ assertParse: () => JsonAssertParseTransformer.transform,
371
+ validateParse: () => JsonValidateParseTransformer.transform,
372
+
373
+ // STRINGIFY
374
+ stringify: () => JsonStringifyTransformer.transform,
375
+ assertStringify: () => JsonAssertStringifyTransformer.transform,
376
+ isStringify: () => JsonIsStringifyTransformer.transform,
377
+ validateStringify: () => JsonValidateStringifyTransformer.transform,
378
+
379
+ // FACTORIES
380
+ createIsParse: () => JsonCreateIsParseTransformer.transform,
381
+ createAssertParse: () => JsonCreateAssertParseTransformer.transform,
382
+ createValidateParse: () => JsonCreateValidateParseTransformer.transform,
383
+ createStringify: () => JsonCreateStringifyTransformer.transform,
384
+ createAssertStringify: () => JsonCreateAssertStringifyTransformer.transform,
385
+ createIsStringify: () => JsonCreateIsStringifyTransformer.transform,
386
+ createValidateStringify: () =>
387
+ JsonCreateValidateStringifyTransformer.transform,
388
+ },
389
+ protobuf: {
390
+ // SCHEMA
391
+ message: () => ProtobufMessageTransformer.transform,
392
+
393
+ // ENCODE
394
+ encode: () => ProtobufEncodeTransformer.transform,
395
+ assertEncode: () => ProtobufAssertEncodeTransformer.transform,
396
+ isEncode: () => ProtobufIsEncodeTransformer.transform,
397
+ validateEncode: () => ProtobufValidateEncodeTransformer.transform,
398
+
399
+ // DECODE
400
+ decode: () => ProtobufDecodeTransformer.transform,
401
+ assertDecode: () => ProtobufAssertDecodeTransformer.transform,
402
+ isDecode: () => ProtobufIsDecodeTransformer.transform,
403
+ validateDecode: () => ProtobufValidateDecodeTransformer.transform,
404
+
405
+ // FACTORIES
406
+ createEncode: () => ProtobufCreateEncodeTransformer.transform,
407
+ createAssertEncode: () => ProtobufCreateAssertEncodeTransformer.transform,
408
+ createIsEncode: () => ProtobufCreateIsEncodeTransformer.transform,
409
+ createValidateEncode: () =>
410
+ ProtobufCreateValidateEncodeTransformer.transform,
411
+ createDecode: () => ProtobufCreateDecodeTransformer.transform,
412
+ createAssertDecode: () => ProtobufCreateAssertDecodeTransformer.transform,
413
+ createIsDecode: () => ProtobufCreateIsDecodeTransformer.transform,
414
+ createValidateDecode: () =>
415
+ ProtobufCreateValidateDecodeTransformer.transform,
416
+ },
417
+ reflect: {
418
+ metadata: () => (project) => () =>
419
+ ReflectMetadataTransformer.transform(project),
420
+ name: () => (project) => () => ReflectNameTransformer.transform(project),
421
+ },
422
+ misc: {
423
+ literals: () => (project) => () =>
424
+ MiscLiteralsTransformer.transform(project),
425
+
426
+ // CLONE
427
+ clone: () => MiscCloneTransformer.transform,
428
+ assertClone: () => MiscAssertCloneTransformer.transform,
429
+ isClone: () => MiscIsCloneTransformer.transform,
430
+ validateClone: () => MiscValidateCloneTransformer.transform,
431
+
432
+ // PRUNE
433
+ prune: () => MiscPruneTransformer.transform,
434
+ assertPrune: () => MiscAssertPruneTransformer.transform,
435
+ isPrune: () => MiscIsPruneTransformer.transform,
436
+ validatePrune: () => MiscValidatePruneTransformer.transform,
437
+
438
+ // FACTORIES
439
+ createClone: () => MiscCreateCloneTransformer.transform,
440
+ createAssertClone: () => MiscCreateAssertCloneTransformer.transform,
441
+ createIsClone: () => MiscCreateIsCloneTransformer.transform,
442
+ createValidateClone: () => MiscCreateValidateCloneTransformer.transform,
443
+ createPrune: () => MiscCreatePruneTransformer.transform,
444
+ createAssertPrune: () => MiscCreateAssertPruneTransformer.transform,
445
+ createIsPrune: () => MiscCreateIsPruneTransformer.transform,
446
+ createValidatePrune: () => MiscCreateValidatePruneTransformer.transform,
447
+ },
448
+ notations: {
449
+ // CAMEL
450
+ camel: () => NotationGeneralTransformer.transform(NamingConvention.camel),
451
+ assertCamel: () =>
452
+ NotationAssertGeneralTransformer.transform(NamingConvention.camel),
453
+ isCamel: () =>
454
+ NotationIsGeneralTransformer.transform(NamingConvention.camel),
455
+ validateCamel: () =>
456
+ NotationValidateGeneralTransformer.transform(NamingConvention.camel),
457
+
458
+ // PASCAL
459
+ pascal: () => NotationGeneralTransformer.transform(NamingConvention.pascal),
460
+ assertPascal: () =>
461
+ NotationAssertGeneralTransformer.transform(NamingConvention.pascal),
462
+ isPascal: () =>
463
+ NotationIsGeneralTransformer.transform(NamingConvention.pascal),
464
+ validatePascal: () =>
465
+ NotationValidateGeneralTransformer.transform(NamingConvention.pascal),
466
+
467
+ // SNAKE
468
+ snake: () => NotationGeneralTransformer.transform(NamingConvention.snake),
469
+ assertSnake: () =>
470
+ NotationAssertGeneralTransformer.transform(NamingConvention.snake),
471
+ isSnake: () =>
472
+ NotationIsGeneralTransformer.transform(NamingConvention.snake),
473
+ validateSnake: () =>
474
+ NotationValidateGeneralTransformer.transform(NamingConvention.snake),
475
+
476
+ // FACTORIES
477
+ createCamel: () =>
478
+ NotationCreateGeneralTransformer.transform(NamingConvention.camel),
479
+ createAssertCamel: () =>
480
+ NotationCreateAssertGeneralTransformer.transform(NamingConvention.camel),
481
+ createIsCamel: () =>
482
+ NotationCreateIsGeneralTransformer.transform(NamingConvention.camel),
483
+ createValidateCamel: () =>
484
+ NotationCreateValidateGeneralTransformer.transform(
485
+ NamingConvention.camel,
486
+ ),
487
+ createPascal: () =>
488
+ NotationCreateGeneralTransformer.transform(NamingConvention.pascal),
489
+ createAssertPascal: () =>
490
+ NotationCreateAssertGeneralTransformer.transform(NamingConvention.pascal),
491
+ createIsPascal: () =>
492
+ NotationCreateIsGeneralTransformer.transform(NamingConvention.pascal),
493
+ createValidatePascal: () =>
494
+ NotationCreateValidateGeneralTransformer.transform(
495
+ NamingConvention.pascal,
496
+ ),
497
+ createSnake: () =>
498
+ NotationCreateGeneralTransformer.transform(NamingConvention.snake),
499
+ createAssertSnake: () =>
500
+ NotationCreateAssertGeneralTransformer.transform(NamingConvention.snake),
501
+ createIsSnake: () =>
502
+ NotationCreateIsGeneralTransformer.transform(NamingConvention.snake),
503
+ createValidateSnake: () =>
504
+ NotationCreateValidateGeneralTransformer.transform(
505
+ NamingConvention.snake,
506
+ ),
507
+ },
508
+ };