typia 7.0.1 → 7.0.2-dev.20241204

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 (447) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +123 -122
  3. package/lib/executable/TypiaPatchWizard.js +10 -6
  4. package/lib/executable/TypiaPatchWizard.js.map +1 -1
  5. package/lib/executable/typia.js +17 -7
  6. package/lib/executable/typia.js.map +1 -1
  7. package/lib/index.js +17 -7
  8. package/lib/index.js.map +1 -1
  9. package/lib/module.js +17 -7
  10. package/lib/module.js.map +1 -1
  11. package/package.json +3 -3
  12. package/src/IRandomGenerator.ts +49 -49
  13. package/src/IReadableURLSearchParams.ts +9 -9
  14. package/src/IValidation.ts +20 -20
  15. package/src/executable/TypiaGenerateWizard.ts +83 -83
  16. package/src/executable/TypiaPatchWizard.ts +17 -15
  17. package/src/executable/TypiaSetupWizard.ts +179 -179
  18. package/src/executable/setup/ArgumentParser.ts +42 -42
  19. package/src/executable/setup/FileRetriever.ts +19 -19
  20. package/src/executable/setup/PackageManager.ts +87 -87
  21. package/src/factories/ExpressionFactory.ts +216 -216
  22. package/src/factories/IdentifierFactory.ts +89 -89
  23. package/src/factories/JsonMetadataFactory.ts +76 -76
  24. package/src/factories/LiteralFactory.ts +50 -50
  25. package/src/factories/MetadataCollection.ts +278 -278
  26. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  27. package/src/factories/MetadataFactory.ts +404 -404
  28. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  29. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  30. package/src/factories/NumericRangeFactory.ts +72 -72
  31. package/src/factories/ProtobufFactory.ts +875 -875
  32. package/src/factories/StatementFactory.ts +90 -90
  33. package/src/factories/TemplateFactory.ts +64 -64
  34. package/src/factories/TypeFactory.ts +140 -140
  35. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  36. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  37. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  38. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  39. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  40. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  41. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  42. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  43. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  44. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  45. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  46. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  47. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  48. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  49. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  50. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  51. package/src/factories/internal/metadata/iterate_metadata_function.ts +90 -90
  52. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  53. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  54. package/src/factories/internal/metadata/iterate_metadata_native.ts +254 -254
  55. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  56. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  57. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  58. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  59. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  60. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  61. package/src/functional.ts +750 -750
  62. package/src/http.ts +1047 -1047
  63. package/src/internal/_IProtobufWriter.ts +18 -18
  64. package/src/internal/_ProtobufReader.ts +194 -194
  65. package/src/internal/_ProtobufSizer.ts +145 -145
  66. package/src/internal/_ProtobufWriter.ts +145 -145
  67. package/src/internal/_accessExpressionAsString.ts +46 -46
  68. package/src/internal/_assertGuard.ts +13 -13
  69. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  70. package/src/internal/_httpFormDataReadArray.ts +4 -4
  71. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  72. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  73. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  74. package/src/internal/_httpFormDataReadFile.ts +10 -10
  75. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  76. package/src/internal/_httpFormDataReadString.ts +10 -10
  77. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  78. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  79. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  80. package/src/internal/_httpParameterReadBigint.ts +10 -10
  81. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  82. package/src/internal/_httpParameterReadNumber.ts +7 -7
  83. package/src/internal/_httpParameterReadString.ts +2 -2
  84. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  85. package/src/internal/_httpQueryReadArray.ts +4 -4
  86. package/src/internal/_httpQueryReadBigint.ts +12 -12
  87. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  88. package/src/internal/_httpQueryReadNumber.ts +9 -9
  89. package/src/internal/_httpQueryReadString.ts +4 -4
  90. package/src/internal/_isBetween.ts +2 -2
  91. package/src/internal/_isBigintString.ts +8 -8
  92. package/src/internal/_isFormatByte.ts +7 -7
  93. package/src/internal/_isFormatDate.ts +3 -3
  94. package/src/internal/_isFormatDateTime.ts +4 -4
  95. package/src/internal/_isFormatDuration.ts +4 -4
  96. package/src/internal/_isFormatEmail.ts +4 -4
  97. package/src/internal/_isFormatHostname.ts +4 -4
  98. package/src/internal/_isFormatIdnEmail.ts +4 -4
  99. package/src/internal/_isFormatIdnHostname.ts +4 -4
  100. package/src/internal/_isFormatIpv4.ts +4 -4
  101. package/src/internal/_isFormatIpv6.ts +4 -4
  102. package/src/internal/_isFormatIri.ts +3 -3
  103. package/src/internal/_isFormatIriReference.ts +4 -4
  104. package/src/internal/_isFormatJsonPointer.ts +3 -3
  105. package/src/internal/_isFormatPassword.ts +1 -1
  106. package/src/internal/_isFormatRegex.ts +8 -8
  107. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  108. package/src/internal/_isFormatTime.ts +4 -4
  109. package/src/internal/_isFormatUri.ts +6 -6
  110. package/src/internal/_isFormatUriReference.ts +5 -5
  111. package/src/internal/_isFormatUriTemplate.ts +4 -4
  112. package/src/internal/_isFormatUrl.ts +4 -4
  113. package/src/internal/_isFormatUuid.ts +3 -3
  114. package/src/internal/_isTypeFloat.ts +5 -5
  115. package/src/internal/_isTypeInt32.ts +5 -5
  116. package/src/internal/_isTypeInt64.ts +5 -5
  117. package/src/internal/_isTypeUint32.ts +5 -5
  118. package/src/internal/_isTypeUint64.ts +5 -5
  119. package/src/internal/_isUniqueItems.ts +159 -159
  120. package/src/internal/_jsonStringifyNumber.ts +12 -12
  121. package/src/internal/_jsonStringifyRest.ts +3 -3
  122. package/src/internal/_jsonStringifyString.ts +42 -42
  123. package/src/internal/_jsonStringifyTail.ts +2 -2
  124. package/src/internal/_llmApplicationFinalize.ts +20 -20
  125. package/src/internal/_miscCloneAny.ts +46 -46
  126. package/src/internal/_notationAny.ts +37 -37
  127. package/src/internal/_notationCamel.ts +13 -13
  128. package/src/internal/_notationPascal.ts +8 -8
  129. package/src/internal/_notationSnake.ts +43 -43
  130. package/src/internal/_randomArray.ts +21 -21
  131. package/src/internal/_randomBigint.ts +6 -6
  132. package/src/internal/_randomBoolean.ts +1 -1
  133. package/src/internal/_randomFormatByte.ts +3 -3
  134. package/src/internal/_randomFormatDate.ts +18 -18
  135. package/src/internal/_randomFormatDatetime.ts +16 -16
  136. package/src/internal/_randomFormatDuration.ts +27 -27
  137. package/src/internal/_randomFormatEmail.ts +11 -11
  138. package/src/internal/_randomFormatHostname.ts +6 -6
  139. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  140. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  141. package/src/internal/_randomFormatIpv4.ts +11 -11
  142. package/src/internal/_randomFormatIpv6.ts +11 -11
  143. package/src/internal/_randomFormatIri.ts +3 -3
  144. package/src/internal/_randomFormatIriReference.ts +3 -3
  145. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  146. package/src/internal/_randomFormatPassword.ts +8 -8
  147. package/src/internal/_randomFormatRegex.ts +4 -4
  148. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  149. package/src/internal/_randomFormatTime.ts +14 -14
  150. package/src/internal/_randomFormatUri.ts +3 -3
  151. package/src/internal/_randomFormatUriReference.ts +3 -3
  152. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  153. package/src/internal/_randomFormatUrl.ts +11 -11
  154. package/src/internal/_randomFormatUuid.ts +6 -6
  155. package/src/internal/_randomInteger.ts +47 -47
  156. package/src/internal/_randomNumber.ts +74 -74
  157. package/src/internal/_randomPattern.ts +10 -10
  158. package/src/internal/_randomPick.ts +9 -9
  159. package/src/internal/_randomString.ts +24 -24
  160. package/src/internal/_throwTypeGuardError.ts +5 -5
  161. package/src/internal/_validateReport.ts +13 -13
  162. package/src/internal/private/__notationCapitalize.ts +2 -2
  163. package/src/internal/private/__notationUnsnake.ts +24 -24
  164. package/src/json.ts +752 -752
  165. package/src/llm.ts +342 -342
  166. package/src/misc.ts +658 -658
  167. package/src/module.ts +935 -935
  168. package/src/notations.ts +827 -827
  169. package/src/programmers/AssertProgrammer.ts +454 -454
  170. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  171. package/src/programmers/FeatureProgrammer.ts +622 -622
  172. package/src/programmers/ImportProgrammer.ts +185 -185
  173. package/src/programmers/IsProgrammer.ts +273 -273
  174. package/src/programmers/RandomProgrammer.ts +1190 -1190
  175. package/src/programmers/TypiaProgrammer.ts +174 -174
  176. package/src/programmers/ValidateProgrammer.ts +434 -434
  177. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  178. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  179. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  180. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  181. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  182. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  183. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  184. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  185. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  186. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  187. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  188. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  189. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  190. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  191. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  192. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  193. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  194. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  195. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  196. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  197. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  198. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  199. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  200. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  201. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  202. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  203. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  204. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  205. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  206. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  207. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  208. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  209. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  210. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  211. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  212. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  213. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  214. package/src/programmers/internal/check_array_length.ts +47 -47
  215. package/src/programmers/internal/check_bigint.ts +50 -50
  216. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  217. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  218. package/src/programmers/internal/check_everything.ts +23 -23
  219. package/src/programmers/internal/check_native.ts +27 -27
  220. package/src/programmers/internal/check_number.ts +112 -112
  221. package/src/programmers/internal/check_object.ts +75 -75
  222. package/src/programmers/internal/check_string.ts +50 -50
  223. package/src/programmers/internal/check_template.ts +48 -48
  224. package/src/programmers/internal/check_union_array_like.ts +335 -335
  225. package/src/programmers/internal/decode_union_object.ts +116 -116
  226. package/src/programmers/internal/feature_object_entries.ts +61 -61
  227. package/src/programmers/internal/json_schema_alias.ts +47 -47
  228. package/src/programmers/internal/json_schema_array.ts +45 -45
  229. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  230. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  231. package/src/programmers/internal/json_schema_constant.ts +26 -26
  232. package/src/programmers/internal/json_schema_description.ts +12 -12
  233. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  234. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  235. package/src/programmers/internal/json_schema_native.ts +33 -33
  236. package/src/programmers/internal/json_schema_number.ts +15 -15
  237. package/src/programmers/internal/json_schema_object.ts +158 -158
  238. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  239. package/src/programmers/internal/json_schema_station.ts +182 -182
  240. package/src/programmers/internal/json_schema_string.ts +15 -15
  241. package/src/programmers/internal/json_schema_template.ts +55 -55
  242. package/src/programmers/internal/json_schema_title.ts +20 -20
  243. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  244. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  245. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  246. package/src/programmers/internal/prune_object_properties.ts +71 -71
  247. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  248. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  249. package/src/programmers/internal/template_to_pattern.ts +23 -23
  250. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  251. package/src/programmers/json/JsonApplicationProgrammer.ts +276 -276
  252. package/src/programmers/json/JsonAssertParseProgrammer.ts +106 -106
  253. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  254. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  255. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  256. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  257. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  258. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  259. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  260. package/src/programmers/llm/LlmApplicationProgrammer.ts +276 -276
  261. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  262. package/src/programmers/llm/LlmParametersProgrammer.ts +90 -90
  263. package/src/programmers/llm/LlmSchemaProgrammer.ts +143 -143
  264. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  265. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  266. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  267. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  268. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  269. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  270. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  271. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  272. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  273. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  274. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  275. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  276. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  277. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  278. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  279. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  280. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  281. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  282. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  283. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  284. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  285. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  286. package/src/protobuf.ts +868 -868
  287. package/src/reflect.ts +57 -57
  288. package/src/schemas/json/IJsonApplication.ts +73 -73
  289. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  290. package/src/schemas/json/__IJsonApplication.ts +63 -63
  291. package/src/schemas/metadata/IMetadata.ts +35 -35
  292. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  293. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  294. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  295. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  296. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  297. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  298. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  299. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  300. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  301. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  302. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  303. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  304. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  305. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  306. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  307. package/src/schemas/metadata/Metadata.ts +669 -669
  308. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  309. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  310. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  311. package/src/schemas/metadata/MetadataArray.ts +49 -49
  312. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  313. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  314. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  315. package/src/schemas/metadata/MetadataMap.ts +48 -48
  316. package/src/schemas/metadata/MetadataNative.ts +44 -44
  317. package/src/schemas/metadata/MetadataObject.ts +48 -48
  318. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  319. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  320. package/src/schemas/metadata/MetadataSet.ts +45 -45
  321. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  322. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  323. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  324. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  325. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  326. package/src/tags/Example.ts +24 -24
  327. package/src/tags/Examples.ts +16 -16
  328. package/src/tags/Format.ts +50 -50
  329. package/src/tags/JsonSchemaPlugin.ts +8 -8
  330. package/src/tags/Sequence.ts +10 -10
  331. package/src/tags/TagBase.ts +82 -82
  332. package/src/tags/Type.ts +32 -32
  333. package/src/tags/UniqueItems.ts +14 -14
  334. package/src/tags/index.ts +21 -21
  335. package/src/transform.ts +35 -35
  336. package/src/transformers/CallExpressionTransformer.ts +545 -545
  337. package/src/transformers/FileTransformer.ts +136 -136
  338. package/src/transformers/IProgrammerProps.ts +11 -11
  339. package/src/transformers/ITransformOptions.ts +62 -62
  340. package/src/transformers/ITransformProps.ts +9 -9
  341. package/src/transformers/ITypiaContext.ts +18 -18
  342. package/src/transformers/ImportTransformer.ts +81 -81
  343. package/src/transformers/NodeTransformer.ts +17 -17
  344. package/src/transformers/TransformerError.ts +60 -60
  345. package/src/transformers/features/AssertTransformer.ts +24 -24
  346. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  347. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  348. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  349. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  350. package/src/transformers/features/IsTransformer.ts +18 -18
  351. package/src/transformers/features/RandomTransformer.ts +41 -41
  352. package/src/transformers/features/ValidateTransformer.ts +18 -18
  353. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  354. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  355. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  356. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  357. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  358. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  359. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  360. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  361. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  362. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  363. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  364. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  365. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  366. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  367. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  368. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  369. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  370. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  371. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  372. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  373. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  374. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  375. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  376. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  377. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  378. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  379. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  380. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  381. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  382. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  383. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  384. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  385. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  386. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  387. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  388. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  389. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  390. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  391. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  392. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  393. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  394. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  395. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  396. package/src/transformers/features/llm/LlmApplicationTransformer.ts +113 -113
  397. package/src/transformers/features/llm/LlmParametersTransformer.ts +89 -89
  398. package/src/transformers/features/llm/LlmSchemaTransformer.ts +130 -130
  399. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  400. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  401. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  402. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  403. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  404. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  405. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  406. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  407. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  408. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  409. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  410. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  411. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  412. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  413. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  414. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  415. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  416. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  417. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  418. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  419. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  420. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  421. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  422. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  423. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  424. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  425. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  426. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  427. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  428. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  429. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  430. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  431. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  432. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  433. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  434. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  435. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  436. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  437. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  438. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  439. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  440. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  441. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  442. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  443. package/src/transformers/internal/GenericTransformer.ts +101 -101
  444. package/src/utils/MapUtil.ts +14 -14
  445. package/src/utils/NamingConvention.ts +94 -94
  446. package/src/utils/ProtobufNameEncoder.ts +32 -32
  447. package/src/utils/StringUtil.ts +16 -16
@@ -1,127 +1,127 @@
1
- import { ILlmSchema } from "@samchon/openapi";
2
- import { LlmSchemaComposer } from "@samchon/openapi/lib/composers/LlmSchemaComposer";
3
- import ts from "typescript";
4
-
5
- import { MetadataCollection } from "../../factories/MetadataCollection";
6
- import { MetadataFactory } from "../../factories/MetadataFactory";
7
-
8
- import { Metadata } from "../../schemas/metadata/Metadata";
9
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
10
-
11
- import { ITypiaContext } from "../../transformers/ITypiaContext";
12
- import { TransformerError } from "../../transformers/TransformerError";
13
-
14
- import { ValidationPipe } from "../../typings/ValidationPipe";
15
-
16
- export namespace LlmModelPredicator {
17
- export const getConfig = (props: {
18
- context: ITypiaContext;
19
- method: string;
20
- model: ILlmSchema.Model;
21
- node: ts.TypeNode | undefined;
22
- }): Partial<ILlmSchema.ModelConfig[ILlmSchema.Model]> | undefined => {
23
- if (props.node === undefined) return undefined;
24
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(props.node);
25
- const collection: MetadataCollection = new MetadataCollection();
26
- const result: ValidationPipe<Metadata, MetadataFactory.IError> =
27
- MetadataFactory.analyze({
28
- checker: props.context.checker,
29
- transformer: props.context.transformer,
30
- options: {
31
- escape: false,
32
- constant: true,
33
- absorb: false,
34
- functional: false,
35
- },
36
- collection,
37
- type,
38
- });
39
- if (result.success === false)
40
- throw new TransformerError({
41
- code: `typia.llm.${props.method}`,
42
- message: `Failed to analyze generic argument "Config".`,
43
- });
44
-
45
- const meta: Metadata = result.data;
46
- if (
47
- meta.size() !== 1 ||
48
- meta.objects.length !== 1 ||
49
- meta.nullable === true ||
50
- meta.isRequired() === false
51
- )
52
- throw new TransformerError({
53
- code: `typia.llm.${props.method}`,
54
- message: `Invalid generic argument "Config". It must be a literal object type.`,
55
- });
56
-
57
- const obj: MetadataObject = meta.objects[0]!;
58
- if (obj.type.properties.some((p) => p.key.isSoleLiteral() === false))
59
- throw new TransformerError({
60
- code: `typia.llm.${props.method}`,
61
- message: `Invalid generic argument "Config". It must be a literal object type. Do not allow dynamic properties.`,
62
- });
63
- else if (
64
- obj.type.properties.some(
65
- (p) =>
66
- p.value.size() !== 1 ||
67
- p.value.constants.length !== 1 ||
68
- p.value.nullable === true ||
69
- p.value.isRequired() === false,
70
- )
71
- )
72
- throw new TransformerError({
73
- code: `typia.llm.${props.method}`,
74
- message: `Invalid generic argument "Config". It must be a literal object type. Do not allow variable type.`,
75
- });
76
- const config: Partial<ILlmSchema.ModelConfig[ILlmSchema.Model]> = {};
77
- for (const prop of obj.type.properties) {
78
- const key: string = prop.key.getSoleLiteral()!;
79
- const value: boolean | bigint | number | string =
80
- prop.value.constants[0]!.values[0]!.value;
81
- if (typeof value === "bigint")
82
- throw new TransformerError({
83
- code: `typia.llm.${props.method}`,
84
- message: `Invalid generic argument "Config". It must be a literal object type. Do not allow bigint.`,
85
- });
86
- (config as any)[key] = value;
87
- }
88
- return config;
89
- };
90
-
91
- export const getModel = (props: {
92
- checker: ts.TypeChecker;
93
- method: string;
94
- node: ts.TypeNode | undefined;
95
- }): ILlmSchema.Model => {
96
- if (props.node === undefined)
97
- throw new TransformerError({
98
- code: `typia.llm.${props.method}`,
99
- message: `generic argument "Model" must be specified.`,
100
- });
101
-
102
- // CHECK LITERAL TYPE
103
- const type: ts.Type = props.checker.getTypeFromTypeNode(props.node);
104
- if (
105
- !type.isLiteral() &&
106
- (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
107
- )
108
- throw new TransformerError({
109
- code: `typia.llm.${props.method}`,
110
- message: `generic argument "Model" must be constant.`,
111
- });
112
-
113
- // GET VALUE AND VALIDATE IT
114
- const value = type.isLiteral()
115
- ? type.value
116
- : props.checker.typeToString(type);
117
- if (
118
- typeof value !== "string" ||
119
- LlmSchemaComposer.defaultConfig(value as "3.0") === undefined
120
- )
121
- throw new TransformerError({
122
- code: "typia.llm.schema",
123
- message: `invalid value on generic argument "Model".`,
124
- });
125
- return value as ILlmSchema.Model;
126
- };
127
- }
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+ import { LlmSchemaComposer } from "@samchon/openapi/lib/composers/LlmSchemaComposer";
3
+ import ts from "typescript";
4
+
5
+ import { MetadataCollection } from "../../factories/MetadataCollection";
6
+ import { MetadataFactory } from "../../factories/MetadataFactory";
7
+
8
+ import { Metadata } from "../../schemas/metadata/Metadata";
9
+ import { MetadataObject } from "../../schemas/metadata/MetadataObject";
10
+
11
+ import { ITypiaContext } from "../../transformers/ITypiaContext";
12
+ import { TransformerError } from "../../transformers/TransformerError";
13
+
14
+ import { ValidationPipe } from "../../typings/ValidationPipe";
15
+
16
+ export namespace LlmModelPredicator {
17
+ export const getConfig = (props: {
18
+ context: ITypiaContext;
19
+ method: string;
20
+ model: ILlmSchema.Model;
21
+ node: ts.TypeNode | undefined;
22
+ }): Partial<ILlmSchema.ModelConfig[ILlmSchema.Model]> | undefined => {
23
+ if (props.node === undefined) return undefined;
24
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(props.node);
25
+ const collection: MetadataCollection = new MetadataCollection();
26
+ const result: ValidationPipe<Metadata, MetadataFactory.IError> =
27
+ MetadataFactory.analyze({
28
+ checker: props.context.checker,
29
+ transformer: props.context.transformer,
30
+ options: {
31
+ escape: false,
32
+ constant: true,
33
+ absorb: false,
34
+ functional: false,
35
+ },
36
+ collection,
37
+ type,
38
+ });
39
+ if (result.success === false)
40
+ throw new TransformerError({
41
+ code: `typia.llm.${props.method}`,
42
+ message: `Failed to analyze generic argument "Config".`,
43
+ });
44
+
45
+ const meta: Metadata = result.data;
46
+ if (
47
+ meta.size() !== 1 ||
48
+ meta.objects.length !== 1 ||
49
+ meta.nullable === true ||
50
+ meta.isRequired() === false
51
+ )
52
+ throw new TransformerError({
53
+ code: `typia.llm.${props.method}`,
54
+ message: `Invalid generic argument "Config". It must be a literal object type.`,
55
+ });
56
+
57
+ const obj: MetadataObject = meta.objects[0]!;
58
+ if (obj.type.properties.some((p) => p.key.isSoleLiteral() === false))
59
+ throw new TransformerError({
60
+ code: `typia.llm.${props.method}`,
61
+ message: `Invalid generic argument "Config". It must be a literal object type. Do not allow dynamic properties.`,
62
+ });
63
+ else if (
64
+ obj.type.properties.some(
65
+ (p) =>
66
+ p.value.size() !== 1 ||
67
+ p.value.constants.length !== 1 ||
68
+ p.value.nullable === true ||
69
+ p.value.isRequired() === false,
70
+ )
71
+ )
72
+ throw new TransformerError({
73
+ code: `typia.llm.${props.method}`,
74
+ message: `Invalid generic argument "Config". It must be a literal object type. Do not allow variable type.`,
75
+ });
76
+ const config: Partial<ILlmSchema.ModelConfig[ILlmSchema.Model]> = {};
77
+ for (const prop of obj.type.properties) {
78
+ const key: string = prop.key.getSoleLiteral()!;
79
+ const value: boolean | bigint | number | string =
80
+ prop.value.constants[0]!.values[0]!.value;
81
+ if (typeof value === "bigint")
82
+ throw new TransformerError({
83
+ code: `typia.llm.${props.method}`,
84
+ message: `Invalid generic argument "Config". It must be a literal object type. Do not allow bigint.`,
85
+ });
86
+ (config as any)[key] = value;
87
+ }
88
+ return config;
89
+ };
90
+
91
+ export const getModel = (props: {
92
+ checker: ts.TypeChecker;
93
+ method: string;
94
+ node: ts.TypeNode | undefined;
95
+ }): ILlmSchema.Model => {
96
+ if (props.node === undefined)
97
+ throw new TransformerError({
98
+ code: `typia.llm.${props.method}`,
99
+ message: `generic argument "Model" must be specified.`,
100
+ });
101
+
102
+ // CHECK LITERAL TYPE
103
+ const type: ts.Type = props.checker.getTypeFromTypeNode(props.node);
104
+ if (
105
+ !type.isLiteral() &&
106
+ (type.getFlags() & ts.TypeFlags.BooleanLiteral) === 0
107
+ )
108
+ throw new TransformerError({
109
+ code: `typia.llm.${props.method}`,
110
+ message: `generic argument "Model" must be constant.`,
111
+ });
112
+
113
+ // GET VALUE AND VALIDATE IT
114
+ const value = type.isLiteral()
115
+ ? type.value
116
+ : props.checker.typeToString(type);
117
+ if (
118
+ typeof value !== "string" ||
119
+ LlmSchemaComposer.defaultConfig(value as "3.0") === undefined
120
+ )
121
+ throw new TransformerError({
122
+ code: "typia.llm.schema",
123
+ message: `invalid value on generic argument "Model".`,
124
+ });
125
+ return value as ILlmSchema.Model;
126
+ };
127
+ }
@@ -1,90 +1,90 @@
1
- import {
2
- ILlmSchema,
3
- IOpenApiSchemaError,
4
- IResult,
5
- OpenApi,
6
- OpenApiTypeChecker,
7
- } from "@samchon/openapi";
8
- import { LlmSchemaComposer } from "@samchon/openapi/lib/composers/LlmSchemaComposer";
9
-
10
- import { MetadataFactory } from "../../factories/MetadataFactory";
11
-
12
- import { Metadata } from "../../schemas/metadata/Metadata";
13
-
14
- import { TransformerError } from "../../transformers/TransformerError";
15
-
16
- import { IJsonSchemaCollection } from "../../module";
17
- import { JsonSchemasProgrammer } from "../json/JsonSchemasProgrammer";
18
- import { LlmSchemaProgrammer } from "./LlmSchemaProgrammer";
19
-
20
- export namespace LlmParametersProgrammer {
21
- export const write = <Model extends ILlmSchema.Model>(props: {
22
- model: Model;
23
- metadata: Metadata;
24
- config?: Partial<ILlmSchema.ModelConfig[Model]>;
25
- }): ILlmSchema.ModelParameters[Model] => {
26
- const collection: IJsonSchemaCollection<"3.1"> =
27
- JsonSchemasProgrammer.write({
28
- version: "3.1",
29
- metadatas: [props.metadata],
30
- });
31
- const schema: OpenApi.IJsonSchema.IObject = (() => {
32
- const schema: OpenApi.IJsonSchema = collection.schemas[0]!;
33
- if (OpenApiTypeChecker.isObject(schema)) return schema;
34
- else if (OpenApiTypeChecker.isReference(schema)) {
35
- const last =
36
- collection.components.schemas?.[schema.$ref.split("/").pop()!];
37
- if (last && OpenApiTypeChecker.isObject(last)) return last;
38
- }
39
- throw new Error("Unreachable code. Failed to find the object schema.");
40
- })();
41
-
42
- const result: IResult<
43
- ILlmSchema.ModelParameters[Model],
44
- IOpenApiSchemaError
45
- > = LlmSchemaComposer.parameters(props.model)({
46
- config: {
47
- ...LlmSchemaComposer.defaultConfig(props.model),
48
- ...props.config,
49
- } as any,
50
- components: collection.components,
51
- schema,
52
- }) as IResult<ILlmSchema.ModelParameters[Model], IOpenApiSchemaError>;
53
- if (result.success === false)
54
- throw new TransformerError({
55
- code: "typia.llm.parameters",
56
- message:
57
- "failed to convert JSON schema to LLM schema.\n\n" +
58
- result.error.reasons
59
- .map((r) => ` - ${r.accessor}: ${r.message}`)
60
- .join("\n"),
61
- });
62
- return result.value;
63
- };
64
-
65
- export const validate =
66
- (model: ILlmSchema.Model) =>
67
- (metadata: Metadata, explore: MetadataFactory.IExplore): string[] => {
68
- const output: string[] = [];
69
- if (explore.top === true) {
70
- if (metadata.objects.length === 0)
71
- output.push("LLM parameters must be an objec type.");
72
- else if (metadata.objects.length !== 1 || metadata.size() > 1)
73
- output.push("LLM parameters must be a single object type.");
74
- else {
75
- if (
76
- metadata.objects[0]!.type.properties.some(
77
- (p) => p.key.isSoleLiteral() === false,
78
- )
79
- )
80
- output.push("LLM parameters must not have dynamic keys.");
81
- if (metadata.nullable)
82
- output.push("LLM parameters must be a non-nullable object type.");
83
- if (metadata.isRequired() === false)
84
- output.push("LLM parameters must be a non-undefined object type.");
85
- }
86
- }
87
- output.push(...LlmSchemaProgrammer.validate(model)(metadata));
88
- return output;
89
- };
90
- }
1
+ import {
2
+ ILlmSchema,
3
+ IOpenApiSchemaError,
4
+ IResult,
5
+ OpenApi,
6
+ OpenApiTypeChecker,
7
+ } from "@samchon/openapi";
8
+ import { LlmSchemaComposer } from "@samchon/openapi/lib/composers/LlmSchemaComposer";
9
+
10
+ import { MetadataFactory } from "../../factories/MetadataFactory";
11
+
12
+ import { Metadata } from "../../schemas/metadata/Metadata";
13
+
14
+ import { TransformerError } from "../../transformers/TransformerError";
15
+
16
+ import { IJsonSchemaCollection } from "../../module";
17
+ import { JsonSchemasProgrammer } from "../json/JsonSchemasProgrammer";
18
+ import { LlmSchemaProgrammer } from "./LlmSchemaProgrammer";
19
+
20
+ export namespace LlmParametersProgrammer {
21
+ export const write = <Model extends ILlmSchema.Model>(props: {
22
+ model: Model;
23
+ metadata: Metadata;
24
+ config?: Partial<ILlmSchema.ModelConfig[Model]>;
25
+ }): ILlmSchema.ModelParameters[Model] => {
26
+ const collection: IJsonSchemaCollection<"3.1"> =
27
+ JsonSchemasProgrammer.write({
28
+ version: "3.1",
29
+ metadatas: [props.metadata],
30
+ });
31
+ const schema: OpenApi.IJsonSchema.IObject = (() => {
32
+ const schema: OpenApi.IJsonSchema = collection.schemas[0]!;
33
+ if (OpenApiTypeChecker.isObject(schema)) return schema;
34
+ else if (OpenApiTypeChecker.isReference(schema)) {
35
+ const last =
36
+ collection.components.schemas?.[schema.$ref.split("/").pop()!];
37
+ if (last && OpenApiTypeChecker.isObject(last)) return last;
38
+ }
39
+ throw new Error("Unreachable code. Failed to find the object schema.");
40
+ })();
41
+
42
+ const result: IResult<
43
+ ILlmSchema.ModelParameters[Model],
44
+ IOpenApiSchemaError
45
+ > = LlmSchemaComposer.parameters(props.model)({
46
+ config: {
47
+ ...LlmSchemaComposer.defaultConfig(props.model),
48
+ ...props.config,
49
+ } as any,
50
+ components: collection.components,
51
+ schema,
52
+ }) as IResult<ILlmSchema.ModelParameters[Model], IOpenApiSchemaError>;
53
+ if (result.success === false)
54
+ throw new TransformerError({
55
+ code: "typia.llm.parameters",
56
+ message:
57
+ "failed to convert JSON schema to LLM schema.\n\n" +
58
+ result.error.reasons
59
+ .map((r) => ` - ${r.accessor}: ${r.message}`)
60
+ .join("\n"),
61
+ });
62
+ return result.value;
63
+ };
64
+
65
+ export const validate =
66
+ (model: ILlmSchema.Model) =>
67
+ (metadata: Metadata, explore: MetadataFactory.IExplore): string[] => {
68
+ const output: string[] = [];
69
+ if (explore.top === true) {
70
+ if (metadata.objects.length === 0)
71
+ output.push("LLM parameters must be an objec type.");
72
+ else if (metadata.objects.length !== 1 || metadata.size() > 1)
73
+ output.push("LLM parameters must be a single object type.");
74
+ else {
75
+ if (
76
+ metadata.objects[0]!.type.properties.some(
77
+ (p) => p.key.isSoleLiteral() === false,
78
+ )
79
+ )
80
+ output.push("LLM parameters must not have dynamic keys.");
81
+ if (metadata.nullable)
82
+ output.push("LLM parameters must be a non-nullable object type.");
83
+ if (metadata.isRequired() === false)
84
+ output.push("LLM parameters must be a non-undefined object type.");
85
+ }
86
+ }
87
+ output.push(...LlmSchemaProgrammer.validate(model)(metadata));
88
+ return output;
89
+ };
90
+ }