typia 7.4.2 → 7.5.0-dev.20241218

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