typia 9.3.1 → 9.5.0-dev.20250710

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