typia 9.5.0 → 9.6.0-dev.20250719

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 (524) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +153 -153
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/llm.d.mts +24 -2
  8. package/lib/llm.d.ts +24 -2
  9. package/lib/llm.js.map +1 -1
  10. package/lib/programmers/llm/LlmApplicationProgrammer.d.mts +3 -1
  11. package/lib/programmers/llm/LlmApplicationProgrammer.d.ts +3 -1
  12. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -5
  13. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  14. package/lib/programmers/llm/LlmApplicationProgrammer.mjs +6 -4
  15. package/lib/programmers/llm/LlmModelPredicator.d.mts +3 -1
  16. package/lib/programmers/llm/LlmModelPredicator.d.ts +3 -1
  17. package/lib/programmers/llm/LlmModelPredicator.js.map +1 -1
  18. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/AssertionGuard.ts +39 -39
  21. package/src/CamelCase.ts +75 -75
  22. package/src/IRandomGenerator.ts +49 -49
  23. package/src/IReadableURLSearchParams.ts +9 -9
  24. package/src/IValidation.ts +1 -1
  25. package/src/PascalCase.ts +71 -71
  26. package/src/Primitive.ts +92 -92
  27. package/src/Resolved.ts +74 -74
  28. package/src/SnakeCase.ts +126 -126
  29. package/src/TypeGuardError.ts +179 -179
  30. package/src/executable/TypiaGenerateWizard.ts +83 -83
  31. package/src/executable/TypiaPatchWizard.ts +45 -45
  32. package/src/executable/TypiaSetupWizard.ts +171 -171
  33. package/src/executable/setup/ArgumentParser.ts +42 -42
  34. package/src/executable/setup/CommandExecutor.ts +8 -8
  35. package/src/executable/setup/FileRetriever.ts +19 -19
  36. package/src/executable/setup/PackageManager.ts +87 -87
  37. package/src/executable/setup/PluginConfigurator.ts +74 -74
  38. package/src/executable/typia.ts +55 -55
  39. package/src/factories/CommentFactory.ts +79 -79
  40. package/src/factories/ExpressionFactory.ts +219 -219
  41. package/src/factories/IdentifierFactory.ts +89 -89
  42. package/src/factories/JsonMetadataFactory.ts +83 -83
  43. package/src/factories/LiteralFactory.ts +52 -52
  44. package/src/factories/MetadataCollection.ts +278 -278
  45. package/src/factories/MetadataCommentTagFactory.ts +648 -648
  46. package/src/factories/MetadataFactory.ts +404 -404
  47. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  48. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  49. package/src/factories/NumericRangeFactory.ts +72 -72
  50. package/src/factories/ProtobufFactory.ts +875 -875
  51. package/src/factories/StatementFactory.ts +90 -90
  52. package/src/factories/TemplateFactory.ts +64 -64
  53. package/src/factories/TypeFactory.ts +140 -140
  54. package/src/factories/ValueFactory.ts +12 -12
  55. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  56. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  57. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  58. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  59. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  60. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  61. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  62. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  63. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  64. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  65. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  66. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  67. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  68. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  69. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  70. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  71. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  72. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  73. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  74. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  75. package/src/factories/internal/metadata/iterate_metadata_native.ts +264 -264
  76. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  77. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  78. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  79. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  80. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  81. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  82. package/src/functional.ts +740 -740
  83. package/src/http.ts +1040 -1040
  84. package/src/index.ts +4 -4
  85. package/src/internal/_IProtobufWriter.ts +18 -18
  86. package/src/internal/_ProtobufReader.ts +194 -194
  87. package/src/internal/_ProtobufSizer.ts +145 -145
  88. package/src/internal/_ProtobufWriter.ts +145 -145
  89. package/src/internal/_accessExpressionAsString.ts +46 -46
  90. package/src/internal/_assertGuard.ts +13 -13
  91. package/src/internal/_createStandardSchema.ts +134 -134
  92. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  93. package/src/internal/_httpFormDataReadArray.ts +4 -4
  94. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  95. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  96. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  97. package/src/internal/_httpFormDataReadFile.ts +10 -10
  98. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  99. package/src/internal/_httpFormDataReadString.ts +10 -10
  100. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  101. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  102. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  103. package/src/internal/_httpParameterReadBigint.ts +10 -10
  104. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  105. package/src/internal/_httpParameterReadNumber.ts +7 -7
  106. package/src/internal/_httpParameterReadString.ts +2 -2
  107. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  108. package/src/internal/_httpQueryReadArray.ts +4 -4
  109. package/src/internal/_httpQueryReadBigint.ts +12 -12
  110. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  111. package/src/internal/_httpQueryReadNumber.ts +9 -9
  112. package/src/internal/_httpQueryReadString.ts +4 -4
  113. package/src/internal/_isBetween.ts +2 -2
  114. package/src/internal/_isBigintString.ts +8 -8
  115. package/src/internal/_isFormatByte.ts +7 -7
  116. package/src/internal/_isFormatDate.ts +3 -3
  117. package/src/internal/_isFormatDateTime.ts +4 -4
  118. package/src/internal/_isFormatDuration.ts +4 -4
  119. package/src/internal/_isFormatEmail.ts +4 -4
  120. package/src/internal/_isFormatHostname.ts +4 -4
  121. package/src/internal/_isFormatIdnEmail.ts +4 -4
  122. package/src/internal/_isFormatIdnHostname.ts +4 -4
  123. package/src/internal/_isFormatIpv4.ts +4 -4
  124. package/src/internal/_isFormatIpv6.ts +4 -4
  125. package/src/internal/_isFormatIri.ts +3 -3
  126. package/src/internal/_isFormatIriReference.ts +4 -4
  127. package/src/internal/_isFormatJsonPointer.ts +3 -3
  128. package/src/internal/_isFormatPassword.ts +1 -1
  129. package/src/internal/_isFormatRegex.ts +8 -8
  130. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  131. package/src/internal/_isFormatTime.ts +4 -4
  132. package/src/internal/_isFormatUri.ts +6 -6
  133. package/src/internal/_isFormatUriReference.ts +5 -5
  134. package/src/internal/_isFormatUriTemplate.ts +4 -4
  135. package/src/internal/_isFormatUrl.ts +4 -4
  136. package/src/internal/_isFormatUuid.ts +3 -3
  137. package/src/internal/_isTypeFloat.ts +5 -5
  138. package/src/internal/_isTypeInt32.ts +5 -5
  139. package/src/internal/_isTypeInt64.ts +5 -5
  140. package/src/internal/_isTypeUint32.ts +5 -5
  141. package/src/internal/_isTypeUint64.ts +5 -5
  142. package/src/internal/_isUniqueItems.ts +159 -159
  143. package/src/internal/_jsonStringifyNumber.ts +12 -12
  144. package/src/internal/_jsonStringifyRest.ts +3 -3
  145. package/src/internal/_jsonStringifyString.ts +42 -42
  146. package/src/internal/_jsonStringifyTail.ts +2 -2
  147. package/src/internal/_llmApplicationFinalize.ts +20 -20
  148. package/src/internal/_miscCloneAny.ts +46 -46
  149. package/src/internal/_notationAny.ts +37 -37
  150. package/src/internal/_notationCamel.ts +13 -13
  151. package/src/internal/_notationPascal.ts +8 -8
  152. package/src/internal/_notationSnake.ts +43 -43
  153. package/src/internal/_randomArray.ts +21 -21
  154. package/src/internal/_randomBigint.ts +6 -6
  155. package/src/internal/_randomBoolean.ts +1 -1
  156. package/src/internal/_randomFormatByte.ts +3 -3
  157. package/src/internal/_randomFormatDate.ts +18 -18
  158. package/src/internal/_randomFormatDatetime.ts +16 -16
  159. package/src/internal/_randomFormatDuration.ts +27 -27
  160. package/src/internal/_randomFormatEmail.ts +11 -11
  161. package/src/internal/_randomFormatHostname.ts +6 -6
  162. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  163. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  164. package/src/internal/_randomFormatIpv4.ts +11 -11
  165. package/src/internal/_randomFormatIpv6.ts +11 -11
  166. package/src/internal/_randomFormatIri.ts +3 -3
  167. package/src/internal/_randomFormatIriReference.ts +3 -3
  168. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  169. package/src/internal/_randomFormatPassword.ts +8 -8
  170. package/src/internal/_randomFormatRegex.ts +4 -4
  171. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  172. package/src/internal/_randomFormatTime.ts +14 -14
  173. package/src/internal/_randomFormatUri.ts +3 -3
  174. package/src/internal/_randomFormatUriReference.ts +3 -3
  175. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  176. package/src/internal/_randomFormatUrl.ts +11 -11
  177. package/src/internal/_randomFormatUuid.ts +6 -6
  178. package/src/internal/_randomInteger.ts +53 -53
  179. package/src/internal/_randomNumber.ts +80 -80
  180. package/src/internal/_randomPattern.ts +10 -10
  181. package/src/internal/_randomPick.ts +9 -9
  182. package/src/internal/_randomString.ts +24 -24
  183. package/src/internal/_throwTypeGuardError.ts +5 -5
  184. package/src/internal/_validateReport.ts +13 -13
  185. package/src/internal/private/__notationCapitalize.ts +2 -2
  186. package/src/internal/private/__notationUnsnake.ts +24 -24
  187. package/src/json.ts +696 -696
  188. package/src/llm.ts +532 -506
  189. package/src/misc.ts +651 -651
  190. package/src/module.ts +936 -936
  191. package/src/notations.ts +820 -820
  192. package/src/programmers/AssertProgrammer.ts +454 -454
  193. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  194. package/src/programmers/FeatureProgrammer.ts +627 -627
  195. package/src/programmers/ImportProgrammer.ts +185 -185
  196. package/src/programmers/IsProgrammer.ts +273 -273
  197. package/src/programmers/RandomProgrammer.ts +1190 -1190
  198. package/src/programmers/TypiaProgrammer.ts +175 -175
  199. package/src/programmers/ValidateProgrammer.ts +448 -448
  200. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  201. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  202. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  203. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  204. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  205. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  206. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  207. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  208. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  209. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  210. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  211. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  212. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  213. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  214. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  215. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  216. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  217. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  218. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  219. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  220. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  221. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  222. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  223. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  224. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  225. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  226. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  227. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  228. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  229. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  230. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  231. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  232. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  233. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  234. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  235. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  236. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  237. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  238. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  239. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  240. package/src/programmers/internal/check_array_length.ts +47 -47
  241. package/src/programmers/internal/check_bigint.ts +50 -50
  242. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  243. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  244. package/src/programmers/internal/check_everything.ts +23 -23
  245. package/src/programmers/internal/check_native.ts +27 -27
  246. package/src/programmers/internal/check_number.ts +112 -112
  247. package/src/programmers/internal/check_object.ts +75 -75
  248. package/src/programmers/internal/check_string.ts +50 -50
  249. package/src/programmers/internal/check_template.ts +48 -48
  250. package/src/programmers/internal/check_union_array_like.ts +335 -335
  251. package/src/programmers/internal/decode_union_object.ts +116 -116
  252. package/src/programmers/internal/feature_object_entries.ts +61 -61
  253. package/src/programmers/internal/json_schema_alias.ts +47 -47
  254. package/src/programmers/internal/json_schema_array.ts +45 -45
  255. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  256. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  257. package/src/programmers/internal/json_schema_constant.ts +26 -26
  258. package/src/programmers/internal/json_schema_description.ts +12 -12
  259. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  260. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  261. package/src/programmers/internal/json_schema_native.ts +33 -33
  262. package/src/programmers/internal/json_schema_number.ts +15 -15
  263. package/src/programmers/internal/json_schema_object.ts +158 -158
  264. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  265. package/src/programmers/internal/json_schema_station.ts +185 -185
  266. package/src/programmers/internal/json_schema_string.ts +15 -15
  267. package/src/programmers/internal/json_schema_template.ts +55 -55
  268. package/src/programmers/internal/json_schema_title.ts +13 -13
  269. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  270. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  271. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  272. package/src/programmers/internal/prune_object_properties.ts +71 -71
  273. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  274. package/src/programmers/internal/stringify_native.ts +7 -7
  275. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  276. package/src/programmers/internal/template_to_pattern.ts +23 -23
  277. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  278. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  279. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  280. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  281. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  282. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  283. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -26
  284. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  285. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  286. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  287. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  288. package/src/programmers/llm/LlmApplicationProgrammer.ts +415 -401
  289. package/src/programmers/llm/LlmModelPredicator.ts +133 -127
  290. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  291. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  292. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  293. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  294. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  295. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  296. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  297. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  298. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  299. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  300. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  301. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  302. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  303. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  304. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  305. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  306. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  307. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  308. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  309. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  310. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  311. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  312. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  313. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  314. package/src/protobuf.ts +861 -861
  315. package/src/reflect.ts +50 -50
  316. package/src/schemas/json/IJsonApplication.ts +77 -77
  317. package/src/schemas/json/IJsonSchemaCollection.ts +195 -195
  318. package/src/schemas/json/IJsonSchemaUnit.ts +250 -250
  319. package/src/schemas/json/__IJsonApplication.ts +63 -63
  320. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  321. package/src/schemas/metadata/IMetadata.ts +35 -35
  322. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  323. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  324. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  325. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  326. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  327. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  328. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  329. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  330. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  331. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  332. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  333. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  334. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  335. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  336. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  337. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  338. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  339. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  340. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  341. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  342. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  343. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  344. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  345. package/src/schemas/metadata/Metadata.ts +687 -687
  346. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  347. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  348. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  349. package/src/schemas/metadata/MetadataArray.ts +49 -49
  350. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  351. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  352. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  353. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  354. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  355. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  356. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  357. package/src/schemas/metadata/MetadataMap.ts +48 -48
  358. package/src/schemas/metadata/MetadataNative.ts +44 -44
  359. package/src/schemas/metadata/MetadataObject.ts +48 -48
  360. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  361. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  362. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  363. package/src/schemas/metadata/MetadataSet.ts +45 -45
  364. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  365. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  366. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  367. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  368. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  369. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  370. package/src/tags/Constant.ts +15 -15
  371. package/src/tags/ContentMediaType.ts +10 -10
  372. package/src/tags/Default.ts +22 -22
  373. package/src/tags/Example.ts +24 -24
  374. package/src/tags/Examples.ts +16 -16
  375. package/src/tags/ExclusiveMaximum.ts +23 -23
  376. package/src/tags/ExclusiveMinimum.ts +23 -23
  377. package/src/tags/Format.ts +50 -50
  378. package/src/tags/JsonSchemaPlugin.ts +8 -8
  379. package/src/tags/MaxItems.ts +12 -12
  380. package/src/tags/MaxLength.ts +12 -12
  381. package/src/tags/Maximum.ts +19 -19
  382. package/src/tags/MinItems.ts +12 -12
  383. package/src/tags/MinLength.ts +12 -12
  384. package/src/tags/Minimum.ts +19 -19
  385. package/src/tags/MultipleOf.ts +21 -21
  386. package/src/tags/Pattern.ts +31 -31
  387. package/src/tags/Sequence.ts +10 -10
  388. package/src/tags/TagBase.ts +82 -82
  389. package/src/tags/Type.ts +37 -37
  390. package/src/tags/UniqueItems.ts +14 -14
  391. package/src/tags/index.ts +21 -21
  392. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  393. package/src/transform.ts +35 -35
  394. package/src/transformers/CallExpressionTransformer.ts +554 -554
  395. package/src/transformers/FileTransformer.ts +136 -136
  396. package/src/transformers/IProgrammerProps.ts +11 -11
  397. package/src/transformers/ITransformOptions.ts +62 -62
  398. package/src/transformers/ITransformProps.ts +9 -9
  399. package/src/transformers/ITypiaContext.ts +18 -18
  400. package/src/transformers/ImportTransformer.ts +81 -81
  401. package/src/transformers/NoTransformConfigurationError.ts +18 -18
  402. package/src/transformers/NodeTransformer.ts +17 -17
  403. package/src/transformers/TransformerError.ts +60 -60
  404. package/src/transformers/features/AssertTransformer.ts +24 -24
  405. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  406. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  407. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  408. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  409. package/src/transformers/features/IsTransformer.ts +18 -18
  410. package/src/transformers/features/RandomTransformer.ts +41 -41
  411. package/src/transformers/features/ValidateTransformer.ts +18 -18
  412. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  413. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  414. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  415. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  416. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  417. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  418. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  419. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  420. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  421. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  422. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  423. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  424. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  425. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  426. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  427. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  428. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  429. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  430. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  431. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  432. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  433. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  434. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  435. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  436. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  437. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  438. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  439. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  440. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  441. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  442. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  443. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  444. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  445. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  446. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  447. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  448. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  449. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  450. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  451. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -135
  452. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  453. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  454. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  455. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  456. package/src/transformers/features/llm/LlmApplicationTransformer.ts +149 -145
  457. package/src/transformers/features/llm/LlmControllerTransformer.ts +93 -93
  458. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  459. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  460. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  461. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  462. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  463. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  464. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  465. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  466. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  467. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  468. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  469. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  470. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  471. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  472. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  473. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  474. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  475. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  476. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  477. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  478. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  479. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  480. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  481. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  482. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  483. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  484. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  485. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  486. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  487. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  488. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  489. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  490. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  491. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  492. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  493. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  494. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  495. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  496. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  497. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  498. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  499. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  500. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  501. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  502. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  503. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  504. package/src/transformers/internal/GenericTransformer.ts +101 -101
  505. package/src/typings/Atomic.ts +13 -13
  506. package/src/typings/ClassProperties.ts +5 -5
  507. package/src/typings/Customizable.ts +5 -5
  508. package/src/typings/Equal.ts +18 -18
  509. package/src/typings/IsTuple.ts +9 -9
  510. package/src/typings/NativeClass.ts +23 -23
  511. package/src/typings/OmitNever.ts +3 -3
  512. package/src/typings/ProtobufAtomic.ts +19 -19
  513. package/src/typings/SpecialFields.ts +3 -3
  514. package/src/typings/ValidationPipe.ts +9 -9
  515. package/src/typings/ValueOf.ts +20 -20
  516. package/src/typings/Writable.ts +11 -11
  517. package/src/utils/ArrayUtil.ts +41 -41
  518. package/src/utils/Escaper.ts +50 -50
  519. package/src/utils/MapUtil.ts +14 -14
  520. package/src/utils/NamingConvention.ts +94 -94
  521. package/src/utils/PatternUtil.ts +29 -29
  522. package/src/utils/ProtobufNameEncoder.ts +32 -32
  523. package/src/utils/Singleton.ts +16 -16
  524. package/src/utils/StringUtil.ts +16 -16
@@ -1,250 +1,250 @@
1
- import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
-
3
- /**
4
- * Single unit of JSON schema representation.
5
- *
6
- * `IJsonSchemaUnit` represents a self-contained JSON schema unit that encapsulates
7
- * a single schema definition along with its associated reusable components. This is
8
- * typically used when generating a JSON schema for a single TypeScript type, as
9
- * opposed to a collection of multiple types.
10
- *
11
- * Unlike {@link IJsonSchemaCollection} which handles multiple schemas, `IJsonSchemaUnit`
12
- * focuses on representing a single schema with its dependencies. This makes it ideal
13
- * for scenarios where you need to work with individual type definitions or when
14
- * integrating with systems that expect single schema documents.
15
- *
16
- * The unit contains:
17
- * - A single JSON schema definition for the specified TypeScript type
18
- * - All necessary reusable components that the schema may reference
19
- * - Version-specific formatting for either OpenAPI v3.0 or v3.1 compatibility
20
- * - Optional type metadata for compile-time type safety
21
- *
22
- * Key differences from collection:
23
- * - Contains only one schema instead of an array of schemas
24
- * - More lightweight for single-type use cases
25
- * - Simpler structure for direct schema consumption
26
- * - Still maintains full component reference support
27
- *
28
- * @template Version The OpenAPI specification version to target ("3.0" or "3.1").
29
- * Defaults to "3.1" for enhanced JSON Schema Draft 2020-12 compatibility.
30
- * This determines the schema format, validation capabilities, and
31
- * available features like tuple support and null type handling.
32
- * @template Type The original TypeScript type that was analyzed to generate this
33
- * JSON schema unit. This provides compile-time type safety and
34
- * enables IDEs to provide better intellisense and validation.
35
- *
36
- * @example
37
- * ```typescript
38
- * interface User {
39
- * id: string;
40
- * name: string;
41
- * email?: string;
42
- * }
43
- *
44
- * // Generate a single schema unit for OpenAPI v3.1 (default)
45
- * const userSchema = typia.json.schema<User>();
46
- * // Type: IJsonSchemaUnit<"3.1", User>
47
- *
48
- * // Generate a single schema unit for OpenAPI v3.0 (Swagger compatibility)
49
- * const swaggerUserSchema = typia.json.schema<User, "3.0">();
50
- * // Type: IJsonSchemaUnit<"3.0", User>
51
- * ```
52
- *
53
- * @see {@link IJsonSchemaCollection} For handling multiple schemas at once
54
- * @author Jeongho Nam - https://github.com/samchon
55
- */
56
- export type IJsonSchemaUnit<
57
- Version extends "3.0" | "3.1" = "3.1",
58
- Type = unknown,
59
- > = Version extends "3.0"
60
- ? IJsonSchemaUnit.IV3_0<Type>
61
- : IJsonSchemaUnit.IV3_1<Type>;
62
-
63
- export namespace IJsonSchemaUnit {
64
- /**
65
- * JSON Schema unit formatted for OpenAPI v3.0 specification.
66
- *
67
- * This interface represents a single JSON schema unit that complies with
68
- * OpenAPI v3.0 standards. It contains one schema definition along with
69
- * any reusable components that the schema references, formatted according
70
- * to OpenAPI v3.0 constraints and limitations.
71
- *
72
- * OpenAPI v3.0 characteristics affecting this unit:
73
- * - Schema follows OpenAPI v3.0 JSON Schema subset
74
- * - Limited support for advanced JSON Schema features
75
- * - Uses nullable property for optional null values
76
- * - Cannot natively express tuple types or pattern properties
77
- * - Based on JSON Schema Draft 4 with OpenAPI-specific extensions
78
- *
79
- * Use cases for v3.0:
80
- * - Integration with legacy Swagger tooling
81
- * - Compatibility with older OpenAPI implementations
82
- * - Systems that specifically require OpenAPI v3.0 format
83
- * - Code generation tools that expect v3.0 schemas
84
- *
85
- * @template Type The original TypeScript type represented by this schema unit.
86
- * Provides compile-time type information and enables type-safe
87
- * operations on the schema.
88
- */
89
- export interface IV3_0<Type> {
90
- /**
91
- * OpenAPI specification version identifier.
92
- *
93
- * Always set to "3.0" to indicate this schema unit uses OpenAPI v3.0
94
- * format and adheres to its specific constraints and limitations.
95
- */
96
- version: "3.0";
97
-
98
- /**
99
- * The primary JSON schema definition.
100
- *
101
- * Contains the main JSON schema that represents the TypeScript type specified
102
- * in the `Type` template parameter. This schema follows OpenAPI v3.0 format
103
- * and may contain references to reusable components defined in the
104
- * {@link components} property.
105
- *
106
- * The schema structure includes:
107
- * - Type definitions following OpenAPI v3.0 constraints
108
- * - Property definitions with v3.0-compatible validation rules
109
- * - References to shared components using $ref syntax
110
- * - Nullable properties for optional fields that can be null
111
- *
112
- * Example schema reference: `{ "$ref": "#/components/schemas/NestedType" }`
113
- */
114
- schema: OpenApiV3.IJsonSchema;
115
-
116
- /**
117
- * Reusable schema components for OpenAPI v3.0.
118
- *
119
- * Contains all reusable schema definitions and components that may be
120
- * referenced by the main schema. This enables schema modularity and
121
- * prevents duplication when the same types are used in multiple places
122
- * within the schema definition.
123
- *
124
- * Component categories include:
125
- * - schemas: Named type definitions for complex objects, arrays, and unions
126
- * - securitySchemes: Authentication and authorization definitions
127
- * - parameters: Reusable parameter specifications
128
- * - requestBodies: Reusable request body definitions
129
- * - responses: Reusable response specifications
130
- * - headers: Reusable header definitions
131
- * - examples: Reusable example values
132
- *
133
- * All components follow OpenAPI v3.0 format restrictions and capabilities.
134
- */
135
- components: OpenApiV3.IComponents;
136
-
137
- /**
138
- * Type metadata for compile-time type safety.
139
- *
140
- * This optional property maintains a reference to the original TypeScript
141
- * type that was used to generate this schema unit. It provides compile-time
142
- * type information without affecting the runtime JSON representation.
143
- *
144
- * Benefits of type metadata:
145
- * - Enables type-safe schema validation and usage
146
- * - Provides IDE intellisense and autocompletion
147
- * - Allows compile-time checking of schema operations
148
- * - Maintains traceability to original TypeScript definitions
149
- *
150
- * The property is intentionally marked as optional and undefined to ensure
151
- * it doesn't appear in serialized JSON output while preserving type information
152
- * at compile time.
153
- */
154
- __type?: Type | undefined;
155
- }
156
-
157
- /**
158
- * JSON Schema unit formatted for OpenAPI v3.1 specification.
159
- *
160
- * This interface represents a single JSON schema unit that takes advantage
161
- * of OpenAPI v3.1's enhanced capabilities and improved JSON Schema compatibility.
162
- * It provides a more feature-rich and accurate representation of TypeScript
163
- * types compared to the v3.0 format.
164
- *
165
- * OpenAPI v3.1 advantages for this unit:
166
- * - Full JSON Schema Draft 2020-12 compatibility
167
- * - Native tuple type support using prefixItems
168
- * - Proper null type handling via union types
169
- * - Pattern properties for dynamic object keys
170
- * - Enhanced const, enum, and validation capabilities
171
- * - Better support for complex nested structures
172
- *
173
- * Use cases for v3.1:
174
- * - Modern OpenAPI implementations and tooling
175
- * - Systems requiring accurate TypeScript type representation
176
- * - Applications needing advanced JSON Schema features
177
- * - New projects without legacy compatibility requirements
178
- *
179
- * @template Type The original TypeScript type represented by this schema unit.
180
- * Enables compile-time type safety and provides enhanced
181
- * development experience with better IDE support.
182
- */
183
- export interface IV3_1<Type> {
184
- /**
185
- * OpenAPI specification version identifier.
186
- *
187
- * Always set to "3.1" to indicate this schema unit uses OpenAPI v3.1
188
- * format with enhanced JSON Schema compatibility and modern features.
189
- */
190
- version: "3.1";
191
-
192
- /**
193
- * The primary JSON schema definition with v3.1 enhancements.
194
- *
195
- * Contains the main JSON schema that accurately represents the TypeScript
196
- * type using OpenAPI v3.1's enhanced capabilities. This schema can express
197
- * complex TypeScript constructs that were not possible or accurate in v3.0.
198
- *
199
- * Enhanced schema features include:
200
- * - Tuple types using prefixItems for exact array structure
201
- * - Union types with proper null handling via oneOf
202
- * - Const values for literal types
203
- * - Pattern properties for Record<string, T> types
204
- * - Advanced validation constraints and metadata
205
- * - Recursive type definitions with proper $ref handling
206
- *
207
- * The schema follows the emended OpenAPI v3.1 format used by typia,
208
- * which removes ambiguous expressions while maintaining full compatibility.
209
- */
210
- schema: OpenApi.IJsonSchema;
211
-
212
- /**
213
- * Reusable schema components for OpenAPI v3.1.
214
- *
215
- * Contains reusable schema definitions and components that leverage
216
- * OpenAPI v3.1's enhanced capabilities. These components provide better
217
- * type representation and more accurate schema definitions compared to v3.0.
218
- *
219
- * Enhanced component features:
220
- * - schemas: More accurate type definitions with v3.1 JSON Schema features
221
- * - securitySchemes: Enhanced authentication scheme definitions
222
- * - Better support for complex nested references
223
- * - Improved handling of recursive and circular type dependencies
224
- *
225
- * The components structure follows the emended OpenAPI v3.1 specification
226
- * that simplifies certain patterns while maintaining full expressiveness.
227
- */
228
- components: OpenApi.IComponents;
229
-
230
- /**
231
- * Type metadata for enhanced compile-time type safety.
232
- *
233
- * This optional property preserves the original TypeScript type information
234
- * for compile-time type checking and enhanced development experience. It
235
- * enables type-safe operations and better IDE support without affecting
236
- * the runtime JSON schema representation.
237
- *
238
- * Enhanced type safety features:
239
- * - Strong typing connection to original TypeScript definitions
240
- * - Better IDE intellisense and error detection
241
- * - Compile-time validation of schema usage patterns
242
- * - Type-safe integration with validation and serialization libraries
243
- * - Enhanced debugging and development experience
244
- *
245
- * The property remains optional and undefined to maintain clean JSON
246
- * serialization while preserving valuable compile-time information.
247
- */
248
- __type?: Type | undefined;
249
- }
250
- }
1
+ import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
+
3
+ /**
4
+ * Single unit of JSON schema representation.
5
+ *
6
+ * `IJsonSchemaUnit` represents a self-contained JSON schema unit that encapsulates
7
+ * a single schema definition along with its associated reusable components. This is
8
+ * typically used when generating a JSON schema for a single TypeScript type, as
9
+ * opposed to a collection of multiple types.
10
+ *
11
+ * Unlike {@link IJsonSchemaCollection} which handles multiple schemas, `IJsonSchemaUnit`
12
+ * focuses on representing a single schema with its dependencies. This makes it ideal
13
+ * for scenarios where you need to work with individual type definitions or when
14
+ * integrating with systems that expect single schema documents.
15
+ *
16
+ * The unit contains:
17
+ * - A single JSON schema definition for the specified TypeScript type
18
+ * - All necessary reusable components that the schema may reference
19
+ * - Version-specific formatting for either OpenAPI v3.0 or v3.1 compatibility
20
+ * - Optional type metadata for compile-time type safety
21
+ *
22
+ * Key differences from collection:
23
+ * - Contains only one schema instead of an array of schemas
24
+ * - More lightweight for single-type use cases
25
+ * - Simpler structure for direct schema consumption
26
+ * - Still maintains full component reference support
27
+ *
28
+ * @template Version The OpenAPI specification version to target ("3.0" or "3.1").
29
+ * Defaults to "3.1" for enhanced JSON Schema Draft 2020-12 compatibility.
30
+ * This determines the schema format, validation capabilities, and
31
+ * available features like tuple support and null type handling.
32
+ * @template Type The original TypeScript type that was analyzed to generate this
33
+ * JSON schema unit. This provides compile-time type safety and
34
+ * enables IDEs to provide better intellisense and validation.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * interface User {
39
+ * id: string;
40
+ * name: string;
41
+ * email?: string;
42
+ * }
43
+ *
44
+ * // Generate a single schema unit for OpenAPI v3.1 (default)
45
+ * const userSchema = typia.json.schema<User>();
46
+ * // Type: IJsonSchemaUnit<"3.1", User>
47
+ *
48
+ * // Generate a single schema unit for OpenAPI v3.0 (Swagger compatibility)
49
+ * const swaggerUserSchema = typia.json.schema<User, "3.0">();
50
+ * // Type: IJsonSchemaUnit<"3.0", User>
51
+ * ```
52
+ *
53
+ * @see {@link IJsonSchemaCollection} For handling multiple schemas at once
54
+ * @author Jeongho Nam - https://github.com/samchon
55
+ */
56
+ export type IJsonSchemaUnit<
57
+ Version extends "3.0" | "3.1" = "3.1",
58
+ Type = unknown,
59
+ > = Version extends "3.0"
60
+ ? IJsonSchemaUnit.IV3_0<Type>
61
+ : IJsonSchemaUnit.IV3_1<Type>;
62
+
63
+ export namespace IJsonSchemaUnit {
64
+ /**
65
+ * JSON Schema unit formatted for OpenAPI v3.0 specification.
66
+ *
67
+ * This interface represents a single JSON schema unit that complies with
68
+ * OpenAPI v3.0 standards. It contains one schema definition along with
69
+ * any reusable components that the schema references, formatted according
70
+ * to OpenAPI v3.0 constraints and limitations.
71
+ *
72
+ * OpenAPI v3.0 characteristics affecting this unit:
73
+ * - Schema follows OpenAPI v3.0 JSON Schema subset
74
+ * - Limited support for advanced JSON Schema features
75
+ * - Uses nullable property for optional null values
76
+ * - Cannot natively express tuple types or pattern properties
77
+ * - Based on JSON Schema Draft 4 with OpenAPI-specific extensions
78
+ *
79
+ * Use cases for v3.0:
80
+ * - Integration with legacy Swagger tooling
81
+ * - Compatibility with older OpenAPI implementations
82
+ * - Systems that specifically require OpenAPI v3.0 format
83
+ * - Code generation tools that expect v3.0 schemas
84
+ *
85
+ * @template Type The original TypeScript type represented by this schema unit.
86
+ * Provides compile-time type information and enables type-safe
87
+ * operations on the schema.
88
+ */
89
+ export interface IV3_0<Type> {
90
+ /**
91
+ * OpenAPI specification version identifier.
92
+ *
93
+ * Always set to "3.0" to indicate this schema unit uses OpenAPI v3.0
94
+ * format and adheres to its specific constraints and limitations.
95
+ */
96
+ version: "3.0";
97
+
98
+ /**
99
+ * The primary JSON schema definition.
100
+ *
101
+ * Contains the main JSON schema that represents the TypeScript type specified
102
+ * in the `Type` template parameter. This schema follows OpenAPI v3.0 format
103
+ * and may contain references to reusable components defined in the
104
+ * {@link components} property.
105
+ *
106
+ * The schema structure includes:
107
+ * - Type definitions following OpenAPI v3.0 constraints
108
+ * - Property definitions with v3.0-compatible validation rules
109
+ * - References to shared components using $ref syntax
110
+ * - Nullable properties for optional fields that can be null
111
+ *
112
+ * Example schema reference: `{ "$ref": "#/components/schemas/NestedType" }`
113
+ */
114
+ schema: OpenApiV3.IJsonSchema;
115
+
116
+ /**
117
+ * Reusable schema components for OpenAPI v3.0.
118
+ *
119
+ * Contains all reusable schema definitions and components that may be
120
+ * referenced by the main schema. This enables schema modularity and
121
+ * prevents duplication when the same types are used in multiple places
122
+ * within the schema definition.
123
+ *
124
+ * Component categories include:
125
+ * - schemas: Named type definitions for complex objects, arrays, and unions
126
+ * - securitySchemes: Authentication and authorization definitions
127
+ * - parameters: Reusable parameter specifications
128
+ * - requestBodies: Reusable request body definitions
129
+ * - responses: Reusable response specifications
130
+ * - headers: Reusable header definitions
131
+ * - examples: Reusable example values
132
+ *
133
+ * All components follow OpenAPI v3.0 format restrictions and capabilities.
134
+ */
135
+ components: OpenApiV3.IComponents;
136
+
137
+ /**
138
+ * Type metadata for compile-time type safety.
139
+ *
140
+ * This optional property maintains a reference to the original TypeScript
141
+ * type that was used to generate this schema unit. It provides compile-time
142
+ * type information without affecting the runtime JSON representation.
143
+ *
144
+ * Benefits of type metadata:
145
+ * - Enables type-safe schema validation and usage
146
+ * - Provides IDE intellisense and autocompletion
147
+ * - Allows compile-time checking of schema operations
148
+ * - Maintains traceability to original TypeScript definitions
149
+ *
150
+ * The property is intentionally marked as optional and undefined to ensure
151
+ * it doesn't appear in serialized JSON output while preserving type information
152
+ * at compile time.
153
+ */
154
+ __type?: Type | undefined;
155
+ }
156
+
157
+ /**
158
+ * JSON Schema unit formatted for OpenAPI v3.1 specification.
159
+ *
160
+ * This interface represents a single JSON schema unit that takes advantage
161
+ * of OpenAPI v3.1's enhanced capabilities and improved JSON Schema compatibility.
162
+ * It provides a more feature-rich and accurate representation of TypeScript
163
+ * types compared to the v3.0 format.
164
+ *
165
+ * OpenAPI v3.1 advantages for this unit:
166
+ * - Full JSON Schema Draft 2020-12 compatibility
167
+ * - Native tuple type support using prefixItems
168
+ * - Proper null type handling via union types
169
+ * - Pattern properties for dynamic object keys
170
+ * - Enhanced const, enum, and validation capabilities
171
+ * - Better support for complex nested structures
172
+ *
173
+ * Use cases for v3.1:
174
+ * - Modern OpenAPI implementations and tooling
175
+ * - Systems requiring accurate TypeScript type representation
176
+ * - Applications needing advanced JSON Schema features
177
+ * - New projects without legacy compatibility requirements
178
+ *
179
+ * @template Type The original TypeScript type represented by this schema unit.
180
+ * Enables compile-time type safety and provides enhanced
181
+ * development experience with better IDE support.
182
+ */
183
+ export interface IV3_1<Type> {
184
+ /**
185
+ * OpenAPI specification version identifier.
186
+ *
187
+ * Always set to "3.1" to indicate this schema unit uses OpenAPI v3.1
188
+ * format with enhanced JSON Schema compatibility and modern features.
189
+ */
190
+ version: "3.1";
191
+
192
+ /**
193
+ * The primary JSON schema definition with v3.1 enhancements.
194
+ *
195
+ * Contains the main JSON schema that accurately represents the TypeScript
196
+ * type using OpenAPI v3.1's enhanced capabilities. This schema can express
197
+ * complex TypeScript constructs that were not possible or accurate in v3.0.
198
+ *
199
+ * Enhanced schema features include:
200
+ * - Tuple types using prefixItems for exact array structure
201
+ * - Union types with proper null handling via oneOf
202
+ * - Const values for literal types
203
+ * - Pattern properties for Record<string, T> types
204
+ * - Advanced validation constraints and metadata
205
+ * - Recursive type definitions with proper $ref handling
206
+ *
207
+ * The schema follows the emended OpenAPI v3.1 format used by typia,
208
+ * which removes ambiguous expressions while maintaining full compatibility.
209
+ */
210
+ schema: OpenApi.IJsonSchema;
211
+
212
+ /**
213
+ * Reusable schema components for OpenAPI v3.1.
214
+ *
215
+ * Contains reusable schema definitions and components that leverage
216
+ * OpenAPI v3.1's enhanced capabilities. These components provide better
217
+ * type representation and more accurate schema definitions compared to v3.0.
218
+ *
219
+ * Enhanced component features:
220
+ * - schemas: More accurate type definitions with v3.1 JSON Schema features
221
+ * - securitySchemes: Enhanced authentication scheme definitions
222
+ * - Better support for complex nested references
223
+ * - Improved handling of recursive and circular type dependencies
224
+ *
225
+ * The components structure follows the emended OpenAPI v3.1 specification
226
+ * that simplifies certain patterns while maintaining full expressiveness.
227
+ */
228
+ components: OpenApi.IComponents;
229
+
230
+ /**
231
+ * Type metadata for enhanced compile-time type safety.
232
+ *
233
+ * This optional property preserves the original TypeScript type information
234
+ * for compile-time type checking and enhanced development experience. It
235
+ * enables type-safe operations and better IDE support without affecting
236
+ * the runtime JSON schema representation.
237
+ *
238
+ * Enhanced type safety features:
239
+ * - Strong typing connection to original TypeScript definitions
240
+ * - Better IDE intellisense and error detection
241
+ * - Compile-time validation of schema usage patterns
242
+ * - Type-safe integration with validation and serialization libraries
243
+ * - Enhanced debugging and development experience
244
+ *
245
+ * The property remains optional and undefined to maintain clean JSON
246
+ * serialization while preserving valuable compile-time information.
247
+ */
248
+ __type?: Type | undefined;
249
+ }
250
+ }
@@ -1,63 +1,63 @@
1
- import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
-
3
- export interface __IJsonApplication<
4
- Version extends "3.0" | "3.1" = "3.1",
5
- App extends any = object,
6
- > {
7
- version: Version;
8
- components: __IJsonApplication.IComponents<
9
- __IJsonApplication.Schema<Version>
10
- >;
11
- functions: __IJsonApplication.IFunction<__IJsonApplication.Schema<Version>>[];
12
- __application?: App | undefined;
13
- }
14
- export namespace __IJsonApplication {
15
- export type Schema<Version extends "3.0" | "3.1"> = Version extends "3.1"
16
- ? OpenApi.IJsonSchema
17
- : OpenApiV3.IJsonSchema;
18
-
19
- export interface IComponents<
20
- Schema extends
21
- | OpenApi.IJsonSchema
22
- | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
23
- > {
24
- schemas?: Record<string, Schema>;
25
- }
26
-
27
- export interface IFunction<
28
- Schema extends
29
- | OpenApi.IJsonSchema
30
- | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
31
- > {
32
- async: boolean;
33
- name: string;
34
- parameters: IParameter<Schema>[];
35
- output: IOutput<Schema> | undefined;
36
- summary?: string | undefined;
37
- description?: string | undefined;
38
- deprecated?: boolean;
39
- tags?: string[];
40
- }
41
-
42
- export interface IParameter<
43
- Schema extends
44
- | OpenApi.IJsonSchema
45
- | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
46
- > {
47
- name: string;
48
- required: boolean;
49
- schema: Schema;
50
- title?: string | undefined;
51
- description?: string | undefined;
52
- }
53
-
54
- export interface IOutput<
55
- Schema extends
56
- | OpenApi.IJsonSchema
57
- | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
58
- > {
59
- schema: Schema;
60
- required: boolean;
61
- description?: string | undefined;
62
- }
63
- }
1
+ import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
+
3
+ export interface __IJsonApplication<
4
+ Version extends "3.0" | "3.1" = "3.1",
5
+ App extends any = object,
6
+ > {
7
+ version: Version;
8
+ components: __IJsonApplication.IComponents<
9
+ __IJsonApplication.Schema<Version>
10
+ >;
11
+ functions: __IJsonApplication.IFunction<__IJsonApplication.Schema<Version>>[];
12
+ __application?: App | undefined;
13
+ }
14
+ export namespace __IJsonApplication {
15
+ export type Schema<Version extends "3.0" | "3.1"> = Version extends "3.1"
16
+ ? OpenApi.IJsonSchema
17
+ : OpenApiV3.IJsonSchema;
18
+
19
+ export interface IComponents<
20
+ Schema extends
21
+ | OpenApi.IJsonSchema
22
+ | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
23
+ > {
24
+ schemas?: Record<string, Schema>;
25
+ }
26
+
27
+ export interface IFunction<
28
+ Schema extends
29
+ | OpenApi.IJsonSchema
30
+ | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
31
+ > {
32
+ async: boolean;
33
+ name: string;
34
+ parameters: IParameter<Schema>[];
35
+ output: IOutput<Schema> | undefined;
36
+ summary?: string | undefined;
37
+ description?: string | undefined;
38
+ deprecated?: boolean;
39
+ tags?: string[];
40
+ }
41
+
42
+ export interface IParameter<
43
+ Schema extends
44
+ | OpenApi.IJsonSchema
45
+ | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
46
+ > {
47
+ name: string;
48
+ required: boolean;
49
+ schema: Schema;
50
+ title?: string | undefined;
51
+ description?: string | undefined;
52
+ }
53
+
54
+ export interface IOutput<
55
+ Schema extends
56
+ | OpenApi.IJsonSchema
57
+ | OpenApiV3.IJsonSchema = OpenApi.IJsonSchema,
58
+ > {
59
+ schema: Schema;
60
+ required: boolean;
61
+ description?: string | undefined;
62
+ }
63
+ }
@@ -1,10 +1,10 @@
1
- export interface IJsDocTagInfo {
2
- name: string;
3
- text?: IJsDocTagInfo.IText[];
4
- }
5
- export namespace IJsDocTagInfo {
6
- export interface IText {
7
- text: string;
8
- kind: string;
9
- }
10
- }
1
+ export interface IJsDocTagInfo {
2
+ name: string;
3
+ text?: IJsDocTagInfo.IText[];
4
+ }
5
+ export namespace IJsDocTagInfo {
6
+ export interface IText {
7
+ text: string;
8
+ kind: string;
9
+ }
10
+ }