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,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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "9.3.1",
3
+ "version": "9.5.0-dev.20250710",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "homepage": "https://typia.io",
43
43
  "dependencies": {
44
- "@samchon/openapi": "^4.3.1",
44
+ "@samchon/openapi": "^4.4.1",
45
45
  "@standard-schema/spec": "^1.0.0",
46
46
  "commander": "^10.0.0",
47
47
  "comment-json": "^4.2.3",
@@ -50,7 +50,7 @@
50
50
  "randexp": "^0.5.3"
51
51
  },
52
52
  "peerDependencies": {
53
- "@samchon/openapi": ">=4.3.1 <5.0.0",
53
+ "@samchon/openapi": ">=4.4.1 <5.0.0",
54
54
  "typescript": ">=4.8.0 <5.9.0"
55
55
  },
56
56
  "devDependencies": {
@@ -1 +1,39 @@
1
- export type AssertionGuard<T> = (input: unknown) => asserts input is T;
1
+ /**
2
+ * Type definition for assertion guard functions in `typia`.
3
+ *
4
+ * An assertion guard is a function that asserts an input value's type at runtime
5
+ * and performs a TypeScript type assertion if validation passes. Unlike regular
6
+ * assertion functions that return the validated value, assertion guards return
7
+ * nothing but automatically cast the input parameter to the expected type `T`.
8
+ *
9
+ * This type is used by `typia.createAssertGuard<T>()` and `typia.createAssertGuardEquals<T>()`
10
+ * to generate reusable assertion guard functions.
11
+ *
12
+ * @template T - The expected type to validate and assert against
13
+ * @param input - The value to validate (type unknown)
14
+ * @throws {TypeGuardError} When the input value doesn't match the expected type T
15
+ * @returns void - Returns nothing, but asserts that input is type T
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * interface IMember {
20
+ * name: string;
21
+ * age: number;
22
+ * }
23
+ *
24
+ * // Create reusable assertion guard
25
+ * const assertMember: AssertionGuard<IMember> = typia.createAssertGuard<IMember>();
26
+ *
27
+ * // Usage - input will be automatically cast to IMember if validation passes
28
+ * const unknownData: unknown = { name: "John", age: 25 };
29
+ *
30
+ * assertMember(unknownData);
31
+ * // After this line, unknownData is automatically treated as IMember type
32
+ * console.log(unknownData.name); // TypeScript knows this is safe
33
+ * ```
34
+ *
35
+ * @see {@link https://github.com/samchon/typia#assertguard-functions} Typia assertion guards documentation
36
+ * @see {@link TypeGuardError} Error thrown when assertion fails
37
+ * @author Jeongho Nam - https://github.com/samchon
38
+ */
39
+ export type AssertionGuard<T> = (input: unknown) => asserts input is T;
package/src/CamelCase.ts CHANGED
@@ -1,75 +1,75 @@
1
- import { Equal } from "./typings/Equal";
2
- import { IsTuple } from "./typings/IsTuple";
3
- import { NativeClass } from "./typings/NativeClass";
4
- import { ValueOf } from "./typings/ValueOf";
5
-
6
- /**
7
- * Camel case type.
8
- *
9
- * `CamelCase` type is a type that all keys of an object are camelized.
10
- *
11
- * It also erase every method properties like {@link Resolved} type.
12
- *
13
- * @template T Target type to be camelized
14
- * @author Jeongho Nam - https://github.com/samchon
15
- */
16
- export type CamelCase<T> =
17
- Equal<T, CamelizeMain<T>> extends true ? T : CamelizeMain<T>;
18
-
19
- type CamelizeMain<T> = T extends [never]
20
- ? never // special trick for (jsonable | null) type
21
- : T extends { valueOf(): boolean | bigint | number | string }
22
- ? ValueOf<T>
23
- : T extends Function
24
- ? never
25
- : T extends object
26
- ? CamelizeObject<T>
27
- : T;
28
-
29
- type CamelizeObject<T extends object> =
30
- T extends Array<infer U>
31
- ? IsTuple<T> extends true
32
- ? CamelizeTuple<T>
33
- : CamelizeMain<U>[]
34
- : T extends Set<infer U>
35
- ? Set<CamelizeMain<U>>
36
- : T extends Map<infer K, infer V>
37
- ? Map<CamelizeMain<K>, CamelizeMain<V>>
38
- : T extends WeakSet<any> | WeakMap<any, any>
39
- ? never
40
- : T extends NativeClass
41
- ? T
42
- : {
43
- [Key in keyof T as CamelizeString<Key & string>]: CamelizeMain<
44
- T[Key]
45
- >;
46
- };
47
-
48
- type CamelizeTuple<T extends readonly any[]> = T extends []
49
- ? []
50
- : T extends [infer F]
51
- ? [CamelizeMain<F>]
52
- : T extends [infer F, ...infer Rest extends readonly any[]]
53
- ? [CamelizeMain<F>, ...CamelizeTuple<Rest>]
54
- : T extends [(infer F)?]
55
- ? [CamelizeMain<F>?]
56
- : T extends [(infer F)?, ...infer Rest extends readonly any[]]
57
- ? [CamelizeMain<F>?, ...CamelizeTuple<Rest>]
58
- : [];
59
-
60
- type CamelizeString<Key extends string> = Key extends `_${infer R}`
61
- ? `_${CamelizeString<R>}`
62
- : Key extends `${infer _F}_${infer _R}`
63
- ? CamelizeSnakeString<Key>
64
- : Key extends Uppercase<Key>
65
- ? Lowercase<Key>
66
- : CamelizePascalString<Key>;
67
- type CamelizePascalString<Key extends string> =
68
- Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : Key;
69
- type CamelizeSnakeString<Key extends string> = Key extends `_${infer R}`
70
- ? CamelizeSnakeString<R>
71
- : Key extends `${infer F}_${infer M}${infer R}`
72
- ? M extends "_"
73
- ? CamelizeSnakeString<`${F}_${R}`>
74
- : `${Lowercase<F>}${Uppercase<M>}${CamelizeSnakeString<R>}`
75
- : Lowercase<Key>;
1
+ import { Equal } from "./typings/Equal";
2
+ import { IsTuple } from "./typings/IsTuple";
3
+ import { NativeClass } from "./typings/NativeClass";
4
+ import { ValueOf } from "./typings/ValueOf";
5
+
6
+ /**
7
+ * Camel case type.
8
+ *
9
+ * `CamelCase` type is a type that all keys of an object are camelized.
10
+ *
11
+ * It also erase every method properties like {@link Resolved} type.
12
+ *
13
+ * @template T Target type to be camelized
14
+ * @author Jeongho Nam - https://github.com/samchon
15
+ */
16
+ export type CamelCase<T> =
17
+ Equal<T, CamelizeMain<T>> extends true ? T : CamelizeMain<T>;
18
+
19
+ type CamelizeMain<T> = T extends [never]
20
+ ? never // special trick for (jsonable | null) type
21
+ : T extends { valueOf(): boolean | bigint | number | string }
22
+ ? ValueOf<T>
23
+ : T extends Function
24
+ ? never
25
+ : T extends object
26
+ ? CamelizeObject<T>
27
+ : T;
28
+
29
+ type CamelizeObject<T extends object> =
30
+ T extends Array<infer U>
31
+ ? IsTuple<T> extends true
32
+ ? CamelizeTuple<T>
33
+ : CamelizeMain<U>[]
34
+ : T extends Set<infer U>
35
+ ? Set<CamelizeMain<U>>
36
+ : T extends Map<infer K, infer V>
37
+ ? Map<CamelizeMain<K>, CamelizeMain<V>>
38
+ : T extends WeakSet<any> | WeakMap<any, any>
39
+ ? never
40
+ : T extends NativeClass
41
+ ? T
42
+ : {
43
+ [Key in keyof T as CamelizeString<Key & string>]: CamelizeMain<
44
+ T[Key]
45
+ >;
46
+ };
47
+
48
+ type CamelizeTuple<T extends readonly any[]> = T extends []
49
+ ? []
50
+ : T extends [infer F]
51
+ ? [CamelizeMain<F>]
52
+ : T extends [infer F, ...infer Rest extends readonly any[]]
53
+ ? [CamelizeMain<F>, ...CamelizeTuple<Rest>]
54
+ : T extends [(infer F)?]
55
+ ? [CamelizeMain<F>?]
56
+ : T extends [(infer F)?, ...infer Rest extends readonly any[]]
57
+ ? [CamelizeMain<F>?, ...CamelizeTuple<Rest>]
58
+ : [];
59
+
60
+ type CamelizeString<Key extends string> = Key extends `_${infer R}`
61
+ ? `_${CamelizeString<R>}`
62
+ : Key extends `${infer _F}_${infer _R}`
63
+ ? CamelizeSnakeString<Key>
64
+ : Key extends Uppercase<Key>
65
+ ? Lowercase<Key>
66
+ : CamelizePascalString<Key>;
67
+ type CamelizePascalString<Key extends string> =
68
+ Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : Key;
69
+ type CamelizeSnakeString<Key extends string> = Key extends `_${infer R}`
70
+ ? CamelizeSnakeString<R>
71
+ : Key extends `${infer F}_${infer M}${infer R}`
72
+ ? M extends "_"
73
+ ? CamelizeSnakeString<`${F}_${R}`>
74
+ : `${Lowercase<F>}${Uppercase<M>}${CamelizeSnakeString<R>}`
75
+ : Lowercase<Key>;
@@ -1,49 +1,49 @@
1
- import { OpenApi } from "@samchon/openapi";
2
-
3
- export interface IRandomGenerator {
4
- // REGULAR
5
- boolean(): boolean | undefined;
6
- number(schema: OpenApi.IJsonSchema.INumber): number;
7
- integer(schema: OpenApi.IJsonSchema.IInteger): number;
8
- bigint(schema: OpenApi.IJsonSchema.IInteger): bigint;
9
- string(schema: OpenApi.IJsonSchema.IString): string;
10
- array<T>(
11
- schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
12
- element: (index: number, count: number) => T;
13
- },
14
- ): T[];
15
- pattern(regex: RegExp): string;
16
-
17
- //----
18
- // FORMAT
19
- //----
20
- // SPECIAL CHARACTERS
21
- byte(): string;
22
- password(): string;
23
- regex(): string;
24
- uuid(): string;
25
-
26
- // ADDRESSES
27
- email(): string;
28
- hostname(): string;
29
- idnEmail(): string;
30
- idnHostname(): string;
31
- iri(): string;
32
- iriReference(): string;
33
- ipv4(): string;
34
- ipv6(): string;
35
- uri(): string;
36
- uriReference(): string;
37
- uriTemplate(): string;
38
- url(): string;
39
-
40
- // TIMESTAMPS
41
- datetime(props?: { minimum?: number; maximum?: number }): string;
42
- date(props?: { minimum?: number; maximum?: number }): string;
43
- time(): string;
44
- duration(): string;
45
-
46
- // POINTERS
47
- jsonPointer(): string;
48
- relativeJsonPointer(): string;
49
- }
1
+ import { OpenApi } from "@samchon/openapi";
2
+
3
+ export interface IRandomGenerator {
4
+ // REGULAR
5
+ boolean(): boolean | undefined;
6
+ number(schema: OpenApi.IJsonSchema.INumber): number;
7
+ integer(schema: OpenApi.IJsonSchema.IInteger): number;
8
+ bigint(schema: OpenApi.IJsonSchema.IInteger): bigint;
9
+ string(schema: OpenApi.IJsonSchema.IString): string;
10
+ array<T>(
11
+ schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
12
+ element: (index: number, count: number) => T;
13
+ },
14
+ ): T[];
15
+ pattern(regex: RegExp): string;
16
+
17
+ //----
18
+ // FORMAT
19
+ //----
20
+ // SPECIAL CHARACTERS
21
+ byte(): string;
22
+ password(): string;
23
+ regex(): string;
24
+ uuid(): string;
25
+
26
+ // ADDRESSES
27
+ email(): string;
28
+ hostname(): string;
29
+ idnEmail(): string;
30
+ idnHostname(): string;
31
+ iri(): string;
32
+ iriReference(): string;
33
+ ipv4(): string;
34
+ ipv6(): string;
35
+ uri(): string;
36
+ uriReference(): string;
37
+ uriTemplate(): string;
38
+ url(): string;
39
+
40
+ // TIMESTAMPS
41
+ datetime(props?: { minimum?: number; maximum?: number }): string;
42
+ date(props?: { minimum?: number; maximum?: number }): string;
43
+ time(): string;
44
+ duration(): string;
45
+
46
+ // POINTERS
47
+ jsonPointer(): string;
48
+ relativeJsonPointer(): string;
49
+ }
@@ -1,9 +1,9 @@
1
- /**
2
- * Interface for a readable URLSearchParams object.
3
- *
4
- * This interface is a subset of the {@link URLSearchParams} interface,
5
- * designed especially for the [Hono.JS](https://hono.dev/) library.
6
- *
7
- * @author https://github.com/miyaji255
8
- */
9
- export type IReadableURLSearchParams = Pick<URLSearchParams, "get" | "getAll">;
1
+ /**
2
+ * Interface for a readable URLSearchParams object.
3
+ *
4
+ * This interface is a subset of the {@link URLSearchParams} interface,
5
+ * designed especially for the [Hono.JS](https://hono.dev/) library.
6
+ *
7
+ * @author https://github.com/miyaji255
8
+ */
9
+ export type IReadableURLSearchParams = Pick<URLSearchParams, "get" | "getAll">;
@@ -1 +1 @@
1
- export { IValidation } from "@samchon/openapi";
1
+ export { IValidation } from "@samchon/openapi";