typia 7.0.0-dev.20241011 → 7.0.0-dev.20241012

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 (250) hide show
  1. package/lib/factories/MetadataCollection.d.ts +4 -4
  2. package/lib/factories/MetadataCollection.js +6 -4
  3. package/lib/factories/MetadataCollection.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +2 -2
  5. package/lib/factories/MetadataFactory.js +8 -2
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/MetadataTypeTagFactory.d.ts +2 -2
  8. package/lib/factories/MetadataTypeTagFactory.js +6 -6
  9. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  10. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +2 -2
  11. package/lib/factories/MetadataTypeTagSchemaFactory.js +1 -1
  12. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  13. package/lib/factories/ProtobufFactory.js +12 -22
  14. package/lib/factories/ProtobufFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -2
  16. package/lib/factories/internal/metadata/iterate_metadata_collection.js +2 -1
  17. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -2
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +5 -2
  20. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_object.js +5 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_sort.js +6 -2
  24. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  25. package/lib/internal/$ProtobufSizer.js +1 -8
  26. package/lib/internal/$ProtobufSizer.js.map +1 -1
  27. package/lib/json.d.ts +1 -1
  28. package/lib/module.d.ts +1 -1
  29. package/lib/module.js +1 -1
  30. package/lib/module.js.map +1 -1
  31. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  32. package/lib/programmers/CheckerProgrammer.js +5 -3
  33. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  34. package/lib/programmers/FeatureProgrammer.d.ts +5 -5
  35. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  36. package/lib/programmers/IsProgrammer.d.ts +2 -2
  37. package/lib/programmers/RandomProgrammer.js +1 -1
  38. package/lib/programmers/RandomProgrammer.js.map +1 -1
  39. package/lib/programmers/helpers/ProtobufUtil.d.ts +2 -2
  40. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  41. package/lib/programmers/helpers/PruneJoiner.d.ts +2 -2
  42. package/lib/programmers/helpers/RandomJoiner.d.ts +2 -2
  43. package/lib/programmers/helpers/UnionExplorer.d.ts +3 -3
  44. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  45. package/lib/programmers/helpers/UnionPredicator.d.ts +3 -3
  46. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  47. package/lib/programmers/http/HttpFormDataProgrammer.js +1 -1
  48. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  49. package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
  50. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  51. package/lib/programmers/http/HttpQueryProgrammer.js +2 -2
  52. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  53. package/lib/programmers/internal/application_union_discriminator.js +2 -2
  54. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  55. package/lib/programmers/internal/application_v30_alias.js +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  57. package/lib/programmers/internal/application_v30_schema.js +1 -1
  58. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  59. package/lib/programmers/internal/application_v31_alias.js +1 -1
  60. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  61. package/lib/programmers/internal/application_v31_schema.js +1 -1
  62. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  63. package/lib/programmers/internal/llm_schema_object.js +1 -1
  64. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  65. package/lib/programmers/internal/llm_schema_station.js +2 -2
  66. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  67. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  68. package/lib/programmers/json/JsonApplicationProgrammer.js +6 -5
  69. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  70. package/lib/programmers/json/JsonSchemasProgrammer.d.ts +1 -1
  71. package/lib/programmers/json/JsonStringifyProgrammer.js +3 -3
  72. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  73. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -6
  74. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  75. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -1
  76. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  77. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  78. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  79. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  80. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  81. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  82. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  83. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  84. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  85. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  86. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  87. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +3 -3
  88. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  89. package/lib/schemas/json/IJsonSchemaCollection.js +3 -0
  90. package/lib/schemas/json/IJsonSchemaCollection.js.map +1 -0
  91. package/lib/schemas/metadata/IMetadata.d.ts +4 -1
  92. package/lib/schemas/metadata/IMetadataArray.d.ts +1 -2
  93. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  94. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  95. package/lib/schemas/metadata/IMetadataObject.d.ts +2 -8
  96. package/lib/schemas/metadata/IMetadataObjectType.d.ts +11 -0
  97. package/lib/schemas/{json/IJsonSchemaList.js → metadata/IMetadataObjectType.js} +1 -1
  98. package/lib/schemas/metadata/IMetadataObjectType.js.map +1 -0
  99. package/lib/schemas/metadata/IMetadataTuple.d.ts +1 -2
  100. package/lib/schemas/metadata/Metadata.js +14 -15
  101. package/lib/schemas/metadata/Metadata.js.map +1 -1
  102. package/lib/schemas/metadata/MetadataArray.js +1 -1
  103. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  104. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  105. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  106. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  107. package/lib/schemas/metadata/MetadataObject.d.ts +8 -12
  108. package/lib/schemas/metadata/MetadataObject.js +44 -82
  109. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  110. package/lib/schemas/metadata/MetadataObjectType.d.ts +20 -0
  111. package/lib/schemas/metadata/MetadataObjectType.js +106 -0
  112. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -0
  113. package/lib/schemas/metadata/MetadataTuple.js +1 -1
  114. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  115. package/lib/transformers/TransformerError.js.map +1 -1
  116. package/package.json +2 -2
  117. package/src/executable/TypiaGenerateWizard.ts +83 -83
  118. package/src/executable/TypiaSetupWizard.ts +174 -174
  119. package/src/executable/setup/ArgumentParser.ts +42 -42
  120. package/src/executable/setup/FileRetriever.ts +19 -19
  121. package/src/executable/setup/PackageManager.ts +87 -87
  122. package/src/factories/IdentifierFactory.ts +89 -89
  123. package/src/factories/MetadataCollection.ts +280 -278
  124. package/src/factories/MetadataFactory.ts +11 -5
  125. package/src/factories/MetadataTypeTagFactory.ts +386 -385
  126. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  127. package/src/factories/NumericRangeFactory.ts +72 -72
  128. package/src/factories/ProtobufFactory.ts +14 -28
  129. package/src/factories/StatementFactory.ts +90 -90
  130. package/src/factories/TemplateFactory.ts +64 -64
  131. package/src/factories/TypeFactory.ts +140 -140
  132. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  133. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  134. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  135. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  136. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  137. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  138. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  139. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  140. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  141. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  142. package/src/factories/internal/metadata/iterate_metadata_collection.ts +4 -3
  143. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +2 -2
  144. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  145. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  146. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +219 -216
  147. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  148. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  149. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -27
  150. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  151. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -83
  152. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  153. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  154. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  155. package/src/internal/$ProtobufSizer.ts +1 -7
  156. package/src/json.ts +1 -1
  157. package/src/module.ts +1 -1
  158. package/src/programmers/CheckerProgrammer.ts +7 -5
  159. package/src/programmers/FeatureProgrammer.ts +9 -6
  160. package/src/programmers/IsProgrammer.ts +2 -2
  161. package/src/programmers/RandomProgrammer.ts +3 -3
  162. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  163. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  164. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  165. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  166. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  167. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  168. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  169. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  170. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  171. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  172. package/src/programmers/helpers/RandomJoiner.ts +2 -2
  173. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  174. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  175. package/src/programmers/helpers/UnionPredicator.ts +79 -77
  176. package/src/programmers/http/HttpFormDataProgrammer.ts +3 -3
  177. package/src/programmers/http/HttpHeadersProgrammer.ts +3 -3
  178. package/src/programmers/http/HttpQueryProgrammer.ts +4 -4
  179. package/src/programmers/internal/application_array.ts +56 -56
  180. package/src/programmers/internal/application_bigint.ts +25 -25
  181. package/src/programmers/internal/application_boolean.ts +25 -25
  182. package/src/programmers/internal/application_escaped.ts +96 -96
  183. package/src/programmers/internal/application_number.ts +25 -25
  184. package/src/programmers/internal/application_plugin.ts +19 -19
  185. package/src/programmers/internal/application_string.ts +25 -25
  186. package/src/programmers/internal/application_templates.ts +64 -64
  187. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  188. package/src/programmers/internal/application_v30_alias.ts +59 -59
  189. package/src/programmers/internal/application_v30_native.ts +29 -29
  190. package/src/programmers/internal/application_v30_object.ts +165 -165
  191. package/src/programmers/internal/application_v30_schema.ts +220 -220
  192. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  193. package/src/programmers/internal/application_v31_alias.ts +47 -47
  194. package/src/programmers/internal/application_v31_constant.ts +29 -29
  195. package/src/programmers/internal/application_v31_native.ts +25 -25
  196. package/src/programmers/internal/application_v31_object.ts +147 -147
  197. package/src/programmers/internal/application_v31_schema.ts +215 -215
  198. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  199. package/src/programmers/internal/check_array_length.ts +46 -46
  200. package/src/programmers/internal/check_bigint.ts +49 -49
  201. package/src/programmers/internal/check_everything.ts +23 -23
  202. package/src/programmers/internal/check_native.ts +27 -27
  203. package/src/programmers/internal/check_number.ts +111 -111
  204. package/src/programmers/internal/check_string.ts +49 -49
  205. package/src/programmers/internal/check_template.ts +48 -48
  206. package/src/programmers/internal/check_union_array_like.ts +334 -334
  207. package/src/programmers/internal/decode_union_object.ts +116 -116
  208. package/src/programmers/internal/feature_object_entries.ts +2 -2
  209. package/src/programmers/internal/llm_schema_array.ts +22 -22
  210. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  211. package/src/programmers/internal/llm_schema_object.ts +132 -132
  212. package/src/programmers/internal/llm_schema_station.ts +190 -190
  213. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  214. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  215. package/src/programmers/internal/prune_object_properties.ts +2 -2
  216. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  217. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  218. package/src/programmers/internal/template_to_pattern.ts +23 -23
  219. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  220. package/src/programmers/json/JsonApplicationProgrammer.ts +3 -3
  221. package/src/programmers/json/JsonSchemasProgrammer.ts +1 -1
  222. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  223. package/src/programmers/llm/LlmApplicationProgrammer.ts +4 -4
  224. package/src/programmers/llm/LlmSchemaProgrammer.ts +1 -1
  225. package/src/programmers/misc/MiscCloneProgrammer.ts +3 -3
  226. package/src/programmers/misc/MiscPruneProgrammer.ts +3 -3
  227. package/src/programmers/notations/NotationGeneralProgrammer.ts +3 -3
  228. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +11 -11
  229. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +8 -8
  230. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  231. package/src/schemas/json/{IJsonSchemaList.ts → IJsonSchemaCollection.ts} +22 -22
  232. package/src/schemas/metadata/IMetadata.ts +4 -1
  233. package/src/schemas/metadata/IMetadataArray.ts +1 -2
  234. package/src/schemas/metadata/IMetadataComponents.ts +2 -2
  235. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  236. package/src/schemas/metadata/IMetadataObject.ts +6 -13
  237. package/src/schemas/metadata/IMetadataObjectType.ts +13 -0
  238. package/src/schemas/metadata/IMetadataTuple.ts +1 -2
  239. package/src/schemas/metadata/Metadata.ts +616 -616
  240. package/src/schemas/metadata/MetadataArray.ts +1 -1
  241. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  242. package/src/schemas/metadata/MetadataObject.ts +48 -139
  243. package/src/schemas/metadata/MetadataObjectType.ts +149 -0
  244. package/src/schemas/metadata/MetadataTuple.ts +1 -1
  245. package/src/transformers/TransformerError.ts +8 -7
  246. package/src/transformers/features/json/JsonSchemasTransformer.ts +1 -1
  247. package/src/utils/MapUtil.ts +14 -14
  248. package/src/utils/NameEncoder.ts +32 -32
  249. package/lib/schemas/json/IJsonSchemaList.js.map +0 -1
  250. /package/lib/schemas/json/{IJsonSchemaList.d.ts → IJsonSchemaCollection.d.ts} +0 -0
@@ -1,116 +1,116 @@
1
- import ts from "typescript";
2
-
3
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
4
-
5
- import { FeatureProgrammer } from "../FeatureProgrammer";
6
-
7
- /**
8
- * @internal
9
- */
10
- export const decode_union_object = (props: {
11
- checker: (next: {
12
- input: ts.Expression;
13
- object: MetadataObject;
14
- explore: FeatureProgrammer.IExplore;
15
- }) => ts.Expression;
16
- decoder: (next: {
17
- input: ts.Expression;
18
- object: MetadataObject;
19
- explore: FeatureProgrammer.IExplore;
20
- }) => ts.Expression;
21
- success: (exp: ts.Expression) => ts.Expression;
22
- escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
23
- objects: MetadataObject[];
24
- input: ts.Expression;
25
- explore: FeatureProgrammer.IExplore;
26
- }): ts.CallExpression =>
27
- ts.factory.createCallExpression(
28
- ts.factory.createArrowFunction(
29
- undefined,
30
- undefined,
31
- [],
32
- undefined,
33
- undefined,
34
- iterate({
35
- escaper: props.escaper,
36
- input: props.input,
37
- unions: props.objects.map((object) => ({
38
- type: "object",
39
- is: () =>
40
- props.success(
41
- props.checker({
42
- input: props.input,
43
- explore: props.explore,
44
- object,
45
- }),
46
- ),
47
- value: () =>
48
- props.decoder({
49
- input: props.input,
50
- explore: props.explore,
51
- object,
52
- }),
53
- })),
54
- expected: `(${props.objects.map((t) => t.name).join(" | ")})`,
55
- }),
56
- ),
57
- undefined,
58
- undefined,
59
- );
60
-
61
- /**
62
- * @internal
63
- */
64
- const iterate = (props: {
65
- escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
66
- unions: IUnion[];
67
- expected: string;
68
- input: ts.Expression;
69
- }) => {
70
- interface IBranch {
71
- condition: null | ts.Expression;
72
- value: ts.Expression;
73
- }
74
- const branches: IBranch[] = [];
75
-
76
- for (const u of props.unions) {
77
- const condition: ts.Expression = u.is();
78
- if (condition.kind === ts.SyntaxKind.TrueKeyword) {
79
- branches.push({
80
- condition: null,
81
- value: u.value(),
82
- });
83
- break;
84
- }
85
- branches.push({
86
- condition,
87
- value: u.value(),
88
- });
89
- }
90
- if (branches.length === 0)
91
- return ts.factory.createBlock([props.escaper(props)], true);
92
- else if (branches.length === 1 && branches[0]!.condition === null)
93
- return branches[0]!.value;
94
-
95
- const statements: ts.Statement[] = branches.map((b) =>
96
- b.condition !== null
97
- ? ts.factory.createIfStatement(
98
- b.condition,
99
- ts.factory.createReturnStatement(b.value),
100
- undefined,
101
- )
102
- : ts.factory.createReturnStatement(b.value),
103
- );
104
- if (branches.at(-1)!.condition !== null)
105
- statements.push(props.escaper(props));
106
- return ts.factory.createBlock(statements, true);
107
- };
108
-
109
- /**
110
- * @internal
111
- */
112
- interface IUnion {
113
- type: string;
114
- is: () => ts.Expression;
115
- value: () => ts.Expression;
116
- }
1
+ import ts from "typescript";
2
+
3
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
4
+
5
+ import { FeatureProgrammer } from "../FeatureProgrammer";
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ export const decode_union_object = (props: {
11
+ checker: (next: {
12
+ input: ts.Expression;
13
+ object: MetadataObjectType;
14
+ explore: FeatureProgrammer.IExplore;
15
+ }) => ts.Expression;
16
+ decoder: (next: {
17
+ input: ts.Expression;
18
+ object: MetadataObjectType;
19
+ explore: FeatureProgrammer.IExplore;
20
+ }) => ts.Expression;
21
+ success: (exp: ts.Expression) => ts.Expression;
22
+ escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
23
+ objects: MetadataObjectType[];
24
+ input: ts.Expression;
25
+ explore: FeatureProgrammer.IExplore;
26
+ }): ts.CallExpression =>
27
+ ts.factory.createCallExpression(
28
+ ts.factory.createArrowFunction(
29
+ undefined,
30
+ undefined,
31
+ [],
32
+ undefined,
33
+ undefined,
34
+ iterate({
35
+ escaper: props.escaper,
36
+ input: props.input,
37
+ unions: props.objects.map((object) => ({
38
+ type: "object",
39
+ is: () =>
40
+ props.success(
41
+ props.checker({
42
+ input: props.input,
43
+ explore: props.explore,
44
+ object,
45
+ }),
46
+ ),
47
+ value: () =>
48
+ props.decoder({
49
+ input: props.input,
50
+ explore: props.explore,
51
+ object,
52
+ }),
53
+ })),
54
+ expected: `(${props.objects.map((t) => t.name).join(" | ")})`,
55
+ }),
56
+ ),
57
+ undefined,
58
+ undefined,
59
+ );
60
+
61
+ /**
62
+ * @internal
63
+ */
64
+ const iterate = (props: {
65
+ escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
66
+ unions: IUnion[];
67
+ expected: string;
68
+ input: ts.Expression;
69
+ }) => {
70
+ interface IBranch {
71
+ condition: null | ts.Expression;
72
+ value: ts.Expression;
73
+ }
74
+ const branches: IBranch[] = [];
75
+
76
+ for (const u of props.unions) {
77
+ const condition: ts.Expression = u.is();
78
+ if (condition.kind === ts.SyntaxKind.TrueKeyword) {
79
+ branches.push({
80
+ condition: null,
81
+ value: u.value(),
82
+ });
83
+ break;
84
+ }
85
+ branches.push({
86
+ condition,
87
+ value: u.value(),
88
+ });
89
+ }
90
+ if (branches.length === 0)
91
+ return ts.factory.createBlock([props.escaper(props)], true);
92
+ else if (branches.length === 1 && branches[0]!.condition === null)
93
+ return branches[0]!.value;
94
+
95
+ const statements: ts.Statement[] = branches.map((b) =>
96
+ b.condition !== null
97
+ ? ts.factory.createIfStatement(
98
+ b.condition,
99
+ ts.factory.createReturnStatement(b.value),
100
+ undefined,
101
+ )
102
+ : ts.factory.createReturnStatement(b.value),
103
+ );
104
+ if (branches.at(-1)!.condition !== null)
105
+ statements.push(props.escaper(props));
106
+ return ts.factory.createBlock(statements, true);
107
+ };
108
+
109
+ /**
110
+ * @internal
111
+ */
112
+ interface IUnion {
113
+ type: string;
114
+ is: () => ts.Expression;
115
+ value: () => ts.Expression;
116
+ }
@@ -2,7 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
 
5
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
5
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
6
6
 
7
7
  import { ITypiaContext } from "../../transformers/ITypiaContext";
8
8
 
@@ -16,7 +16,7 @@ import { FeatureProgrammer } from "../FeatureProgrammer";
16
16
  export const feature_object_entries = <Output extends ts.ConciseBody>(props: {
17
17
  config: Pick<FeatureProgrammer.IConfig<Output>, "decoder" | "path" | "trace">;
18
18
  context: ITypiaContext;
19
- object: MetadataObject;
19
+ object: MetadataObjectType;
20
20
  input: ts.Expression;
21
21
  from?: "object" | "top" | "array";
22
22
  }) =>
@@ -1,22 +1,22 @@
1
- import { ILlmSchema } from "@samchon/openapi";
2
-
3
- import { MetadataArray } from "../../schemas/metadata/MetadataArray";
4
-
5
- import { application_plugin } from "./application_plugin";
6
- import { llm_schema_station } from "./llm_schema_station";
7
-
8
- /**
9
- * @internal
10
- */
11
- export const llm_schema_array = (array: MetadataArray): ILlmSchema.IArray[] =>
12
- application_plugin({
13
- schema: {
14
- type: "array",
15
- items: llm_schema_station({
16
- metadata: array.type.value,
17
- blockNever: false,
18
- attribute: {},
19
- }),
20
- },
21
- tags: array.tags,
22
- });
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+
3
+ import { MetadataArray } from "../../schemas/metadata/MetadataArray";
4
+
5
+ import { application_plugin } from "./application_plugin";
6
+ import { llm_schema_station } from "./llm_schema_station";
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ export const llm_schema_array = (array: MetadataArray): ILlmSchema.IArray[] =>
12
+ application_plugin({
13
+ schema: {
14
+ type: "array",
15
+ items: llm_schema_station({
16
+ metadata: array.type.value,
17
+ blockNever: false,
18
+ attribute: {},
19
+ }),
20
+ },
21
+ tags: array.tags,
22
+ });
@@ -1,84 +1,84 @@
1
- import { ILlmSchema } from "@samchon/openapi";
2
-
3
- import { Metadata } from "../../schemas/metadata/Metadata";
4
- import { MetadataEscaped } from "../../schemas/metadata/MetadataEscaped";
5
-
6
- import { llm_schema_station } from "./llm_schema_station";
7
-
8
- /**
9
- * @internal
10
- */
11
- export const llm_schema_escaped = (escaped: MetadataEscaped): ILlmSchema[] => {
12
- const output: ILlmSchema | null = llm_schema_station({
13
- metadata: escaped.returns,
14
- blockNever: false,
15
- attribute: {},
16
- });
17
- if (output === null) return [];
18
- else if (
19
- is_date({
20
- visited: new Set(),
21
- metadata: escaped.original,
22
- })
23
- ) {
24
- const string: ILlmSchema.IString | undefined = is_string(output)
25
- ? output
26
- : is_one_of(output)
27
- ? (output.oneOf.find(is_string) as ILlmSchema.IString)
28
- : undefined;
29
- if (
30
- string !== undefined &&
31
- string.format !== "date" &&
32
- string.format !== "date-time"
33
- )
34
- string.format = "date-time";
35
- }
36
- return is_one_of(output) ? (output.oneOf as ILlmSchema[]) : [output];
37
- };
38
-
39
- /**
40
- * @internal
41
- */
42
- const is_string = (elem: ILlmSchema): elem is ILlmSchema.IString =>
43
- (elem as ILlmSchema.IString).type === "string";
44
-
45
- /**
46
- * @internal
47
- */
48
- const is_one_of = (elem: ILlmSchema): elem is ILlmSchema.IOneOf =>
49
- Array.isArray((elem as ILlmSchema.IOneOf).oneOf);
50
-
51
- /**
52
- * @internal
53
- */
54
- const is_date = (props: {
55
- visited: Set<Metadata>;
56
- metadata: Metadata;
57
- }): boolean => {
58
- if (props.visited.has(props.metadata)) return false;
59
- props.visited.add(props.metadata);
60
-
61
- return (
62
- props.metadata.natives.some((name) => name === "Date") ||
63
- props.metadata.arrays.some((array) =>
64
- is_date({
65
- visited: props.visited,
66
- metadata: array.type.value,
67
- }),
68
- ) ||
69
- props.metadata.tuples.some((tuple) =>
70
- tuple.type.elements.some((elem) =>
71
- is_date({
72
- visited: props.visited,
73
- metadata: elem,
74
- }),
75
- ),
76
- ) ||
77
- props.metadata.aliases.some((alias) =>
78
- is_date({
79
- visited: props.visited,
80
- metadata: alias.value,
81
- }),
82
- )
83
- );
84
- };
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+
3
+ import { Metadata } from "../../schemas/metadata/Metadata";
4
+ import { MetadataEscaped } from "../../schemas/metadata/MetadataEscaped";
5
+
6
+ import { llm_schema_station } from "./llm_schema_station";
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ export const llm_schema_escaped = (escaped: MetadataEscaped): ILlmSchema[] => {
12
+ const output: ILlmSchema | null = llm_schema_station({
13
+ metadata: escaped.returns,
14
+ blockNever: false,
15
+ attribute: {},
16
+ });
17
+ if (output === null) return [];
18
+ else if (
19
+ is_date({
20
+ visited: new Set(),
21
+ metadata: escaped.original,
22
+ })
23
+ ) {
24
+ const string: ILlmSchema.IString | undefined = is_string(output)
25
+ ? output
26
+ : is_one_of(output)
27
+ ? (output.oneOf.find(is_string) as ILlmSchema.IString)
28
+ : undefined;
29
+ if (
30
+ string !== undefined &&
31
+ string.format !== "date" &&
32
+ string.format !== "date-time"
33
+ )
34
+ string.format = "date-time";
35
+ }
36
+ return is_one_of(output) ? (output.oneOf as ILlmSchema[]) : [output];
37
+ };
38
+
39
+ /**
40
+ * @internal
41
+ */
42
+ const is_string = (elem: ILlmSchema): elem is ILlmSchema.IString =>
43
+ (elem as ILlmSchema.IString).type === "string";
44
+
45
+ /**
46
+ * @internal
47
+ */
48
+ const is_one_of = (elem: ILlmSchema): elem is ILlmSchema.IOneOf =>
49
+ Array.isArray((elem as ILlmSchema.IOneOf).oneOf);
50
+
51
+ /**
52
+ * @internal
53
+ */
54
+ const is_date = (props: {
55
+ visited: Set<Metadata>;
56
+ metadata: Metadata;
57
+ }): boolean => {
58
+ if (props.visited.has(props.metadata)) return false;
59
+ props.visited.add(props.metadata);
60
+
61
+ return (
62
+ props.metadata.natives.some((name) => name === "Date") ||
63
+ props.metadata.arrays.some((array) =>
64
+ is_date({
65
+ visited: props.visited,
66
+ metadata: array.type.value,
67
+ }),
68
+ ) ||
69
+ props.metadata.tuples.some((tuple) =>
70
+ tuple.type.elements.some((elem) =>
71
+ is_date({
72
+ visited: props.visited,
73
+ metadata: elem,
74
+ }),
75
+ ),
76
+ ) ||
77
+ props.metadata.aliases.some((alias) =>
78
+ is_date({
79
+ visited: props.visited,
80
+ metadata: alias.value,
81
+ }),
82
+ )
83
+ );
84
+ };