typia 7.5.1 → 7.6.0-dev.20241229

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