typia 9.0.0-dev.20250406 → 9.0.0

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 (506) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +150 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/package.json +3 -3
  8. package/src/AssertionGuard.ts +1 -1
  9. package/src/CamelCase.ts +75 -75
  10. package/src/IRandomGenerator.ts +49 -49
  11. package/src/IReadableURLSearchParams.ts +9 -9
  12. package/src/IValidation.ts +1 -1
  13. package/src/PascalCase.ts +71 -71
  14. package/src/Primitive.ts +92 -92
  15. package/src/Resolved.ts +74 -74
  16. package/src/SnakeCase.ts +126 -126
  17. package/src/TypeGuardError.ts +37 -37
  18. package/src/executable/TypiaGenerateWizard.ts +83 -83
  19. package/src/executable/TypiaPatchWizard.ts +45 -45
  20. package/src/executable/TypiaSetupWizard.ts +171 -171
  21. package/src/executable/setup/ArgumentParser.ts +42 -42
  22. package/src/executable/setup/CommandExecutor.ts +8 -8
  23. package/src/executable/setup/FileRetriever.ts +19 -19
  24. package/src/executable/setup/PackageManager.ts +87 -87
  25. package/src/executable/setup/PluginConfigurator.ts +69 -69
  26. package/src/executable/typia.ts +55 -55
  27. package/src/factories/CommentFactory.ts +79 -79
  28. package/src/factories/ExpressionFactory.ts +216 -216
  29. package/src/factories/IdentifierFactory.ts +89 -89
  30. package/src/factories/JsonMetadataFactory.ts +83 -83
  31. package/src/factories/LiteralFactory.ts +52 -52
  32. package/src/factories/MetadataCollection.ts +278 -278
  33. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  34. package/src/factories/MetadataFactory.ts +404 -404
  35. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  36. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  37. package/src/factories/NumericRangeFactory.ts +72 -72
  38. package/src/factories/ProtobufFactory.ts +875 -875
  39. package/src/factories/StatementFactory.ts +90 -90
  40. package/src/factories/TemplateFactory.ts +64 -64
  41. package/src/factories/TypeFactory.ts +140 -140
  42. package/src/factories/ValueFactory.ts +12 -12
  43. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  44. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  45. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  46. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  47. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  48. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  49. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  50. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  51. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  52. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  53. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  54. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  55. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  56. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  57. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  58. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  59. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  60. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  61. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  62. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  63. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  64. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  65. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  66. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  67. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  68. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  69. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  70. package/src/functional.ts +750 -750
  71. package/src/http.ts +1047 -1047
  72. package/src/index.ts +4 -4
  73. package/src/internal/_IProtobufWriter.ts +18 -18
  74. package/src/internal/_ProtobufReader.ts +194 -194
  75. package/src/internal/_ProtobufSizer.ts +145 -145
  76. package/src/internal/_ProtobufWriter.ts +145 -145
  77. package/src/internal/_accessExpressionAsString.ts +46 -46
  78. package/src/internal/_assertGuard.ts +13 -13
  79. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  80. package/src/internal/_httpFormDataReadArray.ts +4 -4
  81. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  82. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  83. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  84. package/src/internal/_httpFormDataReadFile.ts +10 -10
  85. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  86. package/src/internal/_httpFormDataReadString.ts +10 -10
  87. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  88. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  89. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  90. package/src/internal/_httpParameterReadBigint.ts +10 -10
  91. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  92. package/src/internal/_httpParameterReadNumber.ts +7 -7
  93. package/src/internal/_httpParameterReadString.ts +2 -2
  94. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  95. package/src/internal/_httpQueryReadArray.ts +4 -4
  96. package/src/internal/_httpQueryReadBigint.ts +12 -12
  97. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  98. package/src/internal/_httpQueryReadNumber.ts +9 -9
  99. package/src/internal/_httpQueryReadString.ts +4 -4
  100. package/src/internal/_isBetween.ts +2 -2
  101. package/src/internal/_isBigintString.ts +8 -8
  102. package/src/internal/_isFormatByte.ts +7 -7
  103. package/src/internal/_isFormatDate.ts +3 -3
  104. package/src/internal/_isFormatDateTime.ts +4 -4
  105. package/src/internal/_isFormatDuration.ts +4 -4
  106. package/src/internal/_isFormatEmail.ts +4 -4
  107. package/src/internal/_isFormatHostname.ts +4 -4
  108. package/src/internal/_isFormatIdnEmail.ts +4 -4
  109. package/src/internal/_isFormatIdnHostname.ts +4 -4
  110. package/src/internal/_isFormatIpv4.ts +4 -4
  111. package/src/internal/_isFormatIpv6.ts +4 -4
  112. package/src/internal/_isFormatIri.ts +3 -3
  113. package/src/internal/_isFormatIriReference.ts +4 -4
  114. package/src/internal/_isFormatJsonPointer.ts +3 -3
  115. package/src/internal/_isFormatPassword.ts +1 -1
  116. package/src/internal/_isFormatRegex.ts +8 -8
  117. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  118. package/src/internal/_isFormatTime.ts +4 -4
  119. package/src/internal/_isFormatUri.ts +6 -6
  120. package/src/internal/_isFormatUriReference.ts +5 -5
  121. package/src/internal/_isFormatUriTemplate.ts +4 -4
  122. package/src/internal/_isFormatUrl.ts +4 -4
  123. package/src/internal/_isFormatUuid.ts +3 -3
  124. package/src/internal/_isTypeFloat.ts +5 -5
  125. package/src/internal/_isTypeInt32.ts +5 -5
  126. package/src/internal/_isTypeInt64.ts +5 -5
  127. package/src/internal/_isTypeUint32.ts +5 -5
  128. package/src/internal/_isTypeUint64.ts +5 -5
  129. package/src/internal/_isUniqueItems.ts +159 -159
  130. package/src/internal/_jsonStringifyNumber.ts +12 -12
  131. package/src/internal/_jsonStringifyRest.ts +3 -3
  132. package/src/internal/_jsonStringifyString.ts +42 -42
  133. package/src/internal/_jsonStringifyTail.ts +2 -2
  134. package/src/internal/_llmApplicationFinalize.ts +20 -20
  135. package/src/internal/_miscCloneAny.ts +46 -46
  136. package/src/internal/_notationAny.ts +37 -37
  137. package/src/internal/_notationCamel.ts +13 -13
  138. package/src/internal/_notationPascal.ts +8 -8
  139. package/src/internal/_notationSnake.ts +43 -43
  140. package/src/internal/_randomArray.ts +21 -21
  141. package/src/internal/_randomBigint.ts +6 -6
  142. package/src/internal/_randomBoolean.ts +1 -1
  143. package/src/internal/_randomFormatByte.ts +3 -3
  144. package/src/internal/_randomFormatDate.ts +18 -18
  145. package/src/internal/_randomFormatDatetime.ts +16 -16
  146. package/src/internal/_randomFormatDuration.ts +27 -27
  147. package/src/internal/_randomFormatEmail.ts +11 -11
  148. package/src/internal/_randomFormatHostname.ts +6 -6
  149. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  150. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  151. package/src/internal/_randomFormatIpv4.ts +11 -11
  152. package/src/internal/_randomFormatIpv6.ts +11 -11
  153. package/src/internal/_randomFormatIri.ts +3 -3
  154. package/src/internal/_randomFormatIriReference.ts +3 -3
  155. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  156. package/src/internal/_randomFormatPassword.ts +8 -8
  157. package/src/internal/_randomFormatRegex.ts +4 -4
  158. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  159. package/src/internal/_randomFormatTime.ts +14 -14
  160. package/src/internal/_randomFormatUri.ts +3 -3
  161. package/src/internal/_randomFormatUriReference.ts +3 -3
  162. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  163. package/src/internal/_randomFormatUrl.ts +11 -11
  164. package/src/internal/_randomFormatUuid.ts +6 -6
  165. package/src/internal/_randomInteger.ts +53 -53
  166. package/src/internal/_randomNumber.ts +80 -80
  167. package/src/internal/_randomPattern.ts +10 -10
  168. package/src/internal/_randomPick.ts +9 -9
  169. package/src/internal/_randomString.ts +24 -24
  170. package/src/internal/_throwTypeGuardError.ts +5 -5
  171. package/src/internal/_validateReport.ts +13 -13
  172. package/src/internal/private/__notationCapitalize.ts +2 -2
  173. package/src/internal/private/__notationUnsnake.ts +24 -24
  174. package/src/json.ts +696 -696
  175. package/src/llm.ts +342 -342
  176. package/src/misc.ts +658 -658
  177. package/src/module.ts +935 -935
  178. package/src/notations.ts +827 -827
  179. package/src/programmers/AssertProgrammer.ts +454 -454
  180. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  181. package/src/programmers/FeatureProgrammer.ts +622 -622
  182. package/src/programmers/ImportProgrammer.ts +185 -185
  183. package/src/programmers/IsProgrammer.ts +273 -273
  184. package/src/programmers/RandomProgrammer.ts +1190 -1190
  185. package/src/programmers/TypiaProgrammer.ts +175 -175
  186. package/src/programmers/ValidateProgrammer.ts +439 -439
  187. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  188. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  189. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  190. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  191. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  192. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  193. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  194. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  195. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  196. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  197. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  198. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  199. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  200. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  201. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  202. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  203. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  204. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  205. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  206. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  207. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  208. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  209. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  210. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  211. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  212. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  213. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  214. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  215. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  216. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  217. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  218. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  219. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  220. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  221. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  222. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  223. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  224. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  225. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  226. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  227. package/src/programmers/internal/check_array_length.ts +47 -47
  228. package/src/programmers/internal/check_bigint.ts +50 -50
  229. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  230. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  231. package/src/programmers/internal/check_everything.ts +23 -23
  232. package/src/programmers/internal/check_native.ts +27 -27
  233. package/src/programmers/internal/check_number.ts +112 -112
  234. package/src/programmers/internal/check_object.ts +75 -75
  235. package/src/programmers/internal/check_string.ts +50 -50
  236. package/src/programmers/internal/check_template.ts +48 -48
  237. package/src/programmers/internal/check_union_array_like.ts +335 -335
  238. package/src/programmers/internal/decode_union_object.ts +116 -116
  239. package/src/programmers/internal/feature_object_entries.ts +61 -61
  240. package/src/programmers/internal/json_schema_alias.ts +47 -47
  241. package/src/programmers/internal/json_schema_array.ts +45 -45
  242. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  243. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  244. package/src/programmers/internal/json_schema_constant.ts +26 -26
  245. package/src/programmers/internal/json_schema_description.ts +12 -12
  246. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  247. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  248. package/src/programmers/internal/json_schema_native.ts +33 -33
  249. package/src/programmers/internal/json_schema_number.ts +15 -15
  250. package/src/programmers/internal/json_schema_object.ts +158 -158
  251. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  252. package/src/programmers/internal/json_schema_station.ts +185 -185
  253. package/src/programmers/internal/json_schema_string.ts +15 -15
  254. package/src/programmers/internal/json_schema_template.ts +55 -55
  255. package/src/programmers/internal/json_schema_title.ts +20 -20
  256. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  257. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  258. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  259. package/src/programmers/internal/prune_object_properties.ts +71 -71
  260. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  261. package/src/programmers/internal/stringify_native.ts +7 -7
  262. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  263. package/src/programmers/internal/template_to_pattern.ts +23 -23
  264. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  265. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  266. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  267. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  268. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  269. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  270. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  271. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  272. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  273. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  274. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  275. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  276. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  277. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  278. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  279. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  280. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  281. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  282. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  283. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  284. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  285. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  286. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  287. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  288. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  289. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  290. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  291. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  292. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  293. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  294. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  295. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  296. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  297. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  298. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  299. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  300. package/src/protobuf.ts +868 -868
  301. package/src/reflect.ts +57 -57
  302. package/src/schemas/json/IJsonApplication.ts +73 -73
  303. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  304. package/src/schemas/json/__IJsonApplication.ts +63 -63
  305. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  306. package/src/schemas/metadata/IMetadata.ts +35 -35
  307. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  308. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  309. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  310. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  311. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  312. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  313. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  314. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  315. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  316. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  317. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  318. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  319. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  320. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  321. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  322. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  323. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  324. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  325. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  326. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  327. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  328. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  329. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  330. package/src/schemas/metadata/Metadata.ts +687 -687
  331. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  332. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  333. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  334. package/src/schemas/metadata/MetadataArray.ts +49 -49
  335. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  336. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  337. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  338. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  339. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  340. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  341. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  342. package/src/schemas/metadata/MetadataMap.ts +48 -48
  343. package/src/schemas/metadata/MetadataNative.ts +44 -44
  344. package/src/schemas/metadata/MetadataObject.ts +48 -48
  345. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  346. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  347. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  348. package/src/schemas/metadata/MetadataSet.ts +45 -45
  349. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  350. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  351. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  352. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  353. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  354. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  355. package/src/tags/Constant.ts +15 -15
  356. package/src/tags/ContentMediaType.ts +10 -10
  357. package/src/tags/Default.ts +22 -22
  358. package/src/tags/Example.ts +24 -24
  359. package/src/tags/Examples.ts +16 -16
  360. package/src/tags/ExclusiveMaximum.ts +23 -23
  361. package/src/tags/ExclusiveMinimum.ts +23 -23
  362. package/src/tags/Format.ts +50 -50
  363. package/src/tags/JsonSchemaPlugin.ts +8 -8
  364. package/src/tags/MaxItems.ts +12 -12
  365. package/src/tags/MaxLength.ts +12 -12
  366. package/src/tags/Maximum.ts +19 -19
  367. package/src/tags/MinItems.ts +12 -12
  368. package/src/tags/MinLength.ts +12 -12
  369. package/src/tags/Minimum.ts +19 -19
  370. package/src/tags/MultipleOf.ts +21 -21
  371. package/src/tags/Pattern.ts +31 -31
  372. package/src/tags/Sequence.ts +10 -10
  373. package/src/tags/TagBase.ts +82 -82
  374. package/src/tags/Type.ts +37 -37
  375. package/src/tags/UniqueItems.ts +14 -14
  376. package/src/tags/index.ts +21 -21
  377. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  378. package/src/transform.ts +35 -35
  379. package/src/transformers/CallExpressionTransformer.ts +546 -546
  380. package/src/transformers/FileTransformer.ts +136 -136
  381. package/src/transformers/IProgrammerProps.ts +11 -11
  382. package/src/transformers/ITransformOptions.ts +62 -62
  383. package/src/transformers/ITransformProps.ts +9 -9
  384. package/src/transformers/ITypiaContext.ts +18 -18
  385. package/src/transformers/ImportTransformer.ts +81 -81
  386. package/src/transformers/NodeTransformer.ts +17 -17
  387. package/src/transformers/TransformerError.ts +60 -60
  388. package/src/transformers/features/AssertTransformer.ts +24 -24
  389. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  390. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  391. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  392. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  393. package/src/transformers/features/IsTransformer.ts +18 -18
  394. package/src/transformers/features/RandomTransformer.ts +41 -41
  395. package/src/transformers/features/ValidateTransformer.ts +18 -18
  396. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  397. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  398. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  399. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  400. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  401. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  402. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  403. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  404. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  405. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  406. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  407. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  408. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  409. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  410. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  411. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  412. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  413. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  414. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  415. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  416. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  417. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  418. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  419. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  420. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  421. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  422. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  423. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  424. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  425. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  426. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  427. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  428. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  429. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  430. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  431. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  432. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  433. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  434. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  435. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  436. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  437. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  438. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  439. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  440. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  441. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  442. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  443. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  444. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  445. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  446. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  447. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  448. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  449. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  450. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  451. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  452. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  453. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  454. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  455. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  456. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  457. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  458. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  459. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  460. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  461. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  462. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  463. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  464. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  465. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  466. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  467. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  468. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  469. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  470. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  471. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  472. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  473. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  474. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  475. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  476. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  477. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  478. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  479. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  480. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  481. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  482. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  483. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  484. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  485. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  486. package/src/transformers/internal/GenericTransformer.ts +101 -101
  487. package/src/typings/Atomic.ts +13 -13
  488. package/src/typings/ClassProperties.ts +5 -5
  489. package/src/typings/Customizable.ts +5 -5
  490. package/src/typings/Equal.ts +18 -18
  491. package/src/typings/IsTuple.ts +9 -9
  492. package/src/typings/NativeClass.ts +23 -23
  493. package/src/typings/OmitNever.ts +3 -3
  494. package/src/typings/ProtobufAtomic.ts +19 -19
  495. package/src/typings/SpecialFields.ts +3 -3
  496. package/src/typings/ValidationPipe.ts +9 -9
  497. package/src/typings/ValueOf.ts +20 -20
  498. package/src/typings/Writable.ts +11 -11
  499. package/src/utils/ArrayUtil.ts +41 -41
  500. package/src/utils/Escaper.ts +50 -50
  501. package/src/utils/MapUtil.ts +14 -14
  502. package/src/utils/NamingConvention.ts +94 -94
  503. package/src/utils/PatternUtil.ts +29 -29
  504. package/src/utils/ProtobufNameEncoder.ts +32 -32
  505. package/src/utils/Singleton.ts +16 -16
  506. package/src/utils/StringUtil.ts +16 -16
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Jeongho Nam
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Jeongho Nam
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,150 +1,150 @@
1
- # Typia
2
- ![Typia Logo](https://typia.io/logo.png)
3
-
4
- [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/typia/blob/master/LICENSE)
5
- [![NPM Version](https://img.shields.io/npm/v/typia.svg)](https://www.npmjs.com/package/typia)
6
- [![NPM Downloads](https://img.shields.io/npm/dm/typia.svg)](https://www.npmjs.com/package/typia)
7
- [![Build Status](https://github.com/samchon/typia/workflows/build/badge.svg)](https://github.com/samchon/typia/actions?query=workflow%3Abuild)
8
- [![Guide Documents](https://img.shields.io/badge/Guide-Documents-forestgreen)](https://typia.io/docs/)
9
- [![Gurubase](https://img.shields.io/badge/Gurubase-Document%20Chatbot-006BFF)](https://gurubase.io/g/typia)
10
- [![Discord Badge](https://img.shields.io/badge/discord-samchon-d91965?style=flat&labelColor=5866f2&logo=discord&logoColor=white&link=https://discord.gg/E94XhzrUCZ)](https://discord.gg/E94XhzrUCZ)
11
-
12
- ```typescript
13
- // RUNTIME VALIDATORS
14
- export function is<T>(input: unknown): input is T; // returns boolean
15
- export function assert<T>(input: unknown): T; // throws TypeGuardError
16
- export function assertGuard<T>(input: unknown): asserts input is T;
17
- export function validate<T>(input: unknown): IValidation<T>; // detailed
18
-
19
- // JSON FUNCTIONS
20
- export namespace json {
21
- export function application<T>(): IJsonApplication; // JSON schema
22
- export function assertParse<T>(input: string): T; // type safe parser
23
- export function assertStringify<T>(input: T): string; // safe and faster
24
- }
25
-
26
- // LLM FUNCTION CALLING SCHEMA
27
- export namespace llm {
28
- // application schema from a class or interface type
29
- export function application<App, Model>(): ILlmApplication<Model>;
30
- // structured output
31
- export function parameters<P, Model>(): ILlmSchema.IParameters<Model>;
32
- export function schema<T, Model>(): ILlmSchema<Model>; // type schema
33
- }
34
-
35
- // PROTOCOL BUFFER
36
- export namespace protobuf {
37
- export function message<T>(): string; // Protocol Buffer message
38
- export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
39
- export function assertEncode<T>(input: T): Uint8Array; // safe encoder
40
- }
41
-
42
- // RANDOM GENERATOR
43
- export function random<T>(g?: Partial<IRandomGenerator>): T;
44
- ```
45
-
46
- `typia` is a transformer library supporting below features:
47
-
48
- - Super-fast Runtime Validators
49
- - Enhanced JSON schema and serde functions
50
- - LLM function calling schema and structured output
51
- - Protocol Buffer encoder and decoder
52
- - Random data generator
53
-
54
- > [!NOTE]
55
- >
56
- > - **Only one line** required, with pure TypeScript type
57
- > - Runtime validator is **20,000x faster** than `class-validator`
58
- > - JSON serialization is **200x faster** than `class-transformer`
59
-
60
-
61
-
62
-
63
- ## Transformation
64
- If you call `typia` function, it would be compiled like below.
65
-
66
- This is the key concept of `typia`, transforming TypeScript type to a runtime function. The `typia.is<T>()` function is transformed to a dedicated type checker by analyzing the target type `T` in the compilation level.
67
-
68
- This feature enables developers to ensure type safety in their applications, leveraging TypeScript's static typing while also providing runtime validation. Instead of defining additional schemas, you can simply utilize the pure TypeScript type itself.
69
-
70
- ```typescript
71
- //----
72
- // examples/checkString.ts
73
- //----
74
- import typia, { tags } from "typia";
75
- export const checkString = typia.createIs<string>();
76
-
77
- //----
78
- // examples/checkUUID.js
79
- //----
80
- import typia from "typia";
81
- export const checkString = (() => {
82
- return (input) => "string" === typeof input;
83
- })();
84
- ```
85
-
86
-
87
-
88
- ## Sponsors
89
- Thanks for your support.
90
-
91
- Your donation encourages `typia` development.
92
-
93
- Also, `typia` is re-distributing half of donations to core contributors of `typia`.
94
-
95
- - [`nonara/ts-patch`](https://github.com/nonara/ts-patch)
96
- - [`ryoppippi/unplugin-typia`](https://github.com/ryoppippi/unplugin-typia)
97
-
98
- [![Sponsors](https://opencollective.com/typia/badge.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
99
-
100
-
101
-
102
-
103
- ## Playground
104
- You can experience how typia works by [playground website](https://typia.io/playground):
105
-
106
- - 💻 https://typia.io/playground
107
-
108
-
109
-
110
-
111
- ## Guide Documents
112
- Check out the document in the [website](https://typia.io/docs/):
113
-
114
- ### 🏠 Home
115
- - [Introduction](https://typia.io/docs/)
116
- - [Setup](https://typia.io/docs/setup/)
117
- - [Pure TypeScript](https://typia.io/docs/pure/)
118
-
119
- ### 📖 Features
120
- - Runtime Validators
121
- - [`assert()` function](https://typia.io/docs/validators/assert/)
122
- - [`is()` function](https://typia.io/docs/validators/is/)
123
- - [`validate()` function](https://typia.io/docs/validators/validate/)
124
- - [Functional Module](https://typia.io/docs/validators/functional)
125
- - [Special Tags](https://typia.io/docs/validators/tags/)
126
- - Enhanced JSON
127
- - [JSON Schema](https://typia.io/docs/json/schema/)
128
- - [`stringify()` functions](https://typia.io/docs/json/stringify/)
129
- - [`parse()` functions](https://typia.io/docs/json/parse/)
130
- - LLM Function Calling
131
- - [`application()` function](https://typia.io/docs/llm/application/)
132
- - [`parameters()` function](https://typia.io/docs/llm/parameters/)
133
- - [`schema()` function](https://typia.io/docs/llm/schema/)
134
- - [AI Chatbot Development](https://typia.io/docs/llm/chat/)
135
- - [Documentation Strategy](https://typia.io/docs/llm/strategy/)
136
- - Protocol Buffer
137
- - [Message Schema](https://typia.io/docs/protobuf/message)
138
- - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
139
- - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
140
- - [Random Generator](https://typia.io/docs/random/)
141
- - [Miscellaneous](https://typia.io/docs/misc/)
142
-
143
- ### 🔗 Appendix
144
- - [API Documents](https://typia.io/api)
145
- - Utillization Cases
146
- - [NestJS](https://typia.io/docs/utilization/nestjs/)
147
- - [Prisma](https://typia.io/docs/utilization/prisma/)
148
- - [tRPC](https://typia.io/docs/utilization/trpc/)
149
- - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
150
- - [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
1
+ # Typia
2
+ ![Typia Logo](https://typia.io/logo.png)
3
+
4
+ [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/typia/blob/master/LICENSE)
5
+ [![NPM Version](https://img.shields.io/npm/v/typia.svg)](https://www.npmjs.com/package/typia)
6
+ [![NPM Downloads](https://img.shields.io/npm/dm/typia.svg)](https://www.npmjs.com/package/typia)
7
+ [![Build Status](https://github.com/samchon/typia/workflows/build/badge.svg)](https://github.com/samchon/typia/actions?query=workflow%3Abuild)
8
+ [![Guide Documents](https://img.shields.io/badge/Guide-Documents-forestgreen)](https://typia.io/docs/)
9
+ [![Gurubase](https://img.shields.io/badge/Gurubase-Document%20Chatbot-006BFF)](https://gurubase.io/g/typia)
10
+ [![Discord Badge](https://img.shields.io/badge/discord-samchon-d91965?style=flat&labelColor=5866f2&logo=discord&logoColor=white&link=https://discord.gg/E94XhzrUCZ)](https://discord.gg/E94XhzrUCZ)
11
+
12
+ ```typescript
13
+ // RUNTIME VALIDATORS
14
+ export function is<T>(input: unknown): input is T; // returns boolean
15
+ export function assert<T>(input: unknown): T; // throws TypeGuardError
16
+ export function assertGuard<T>(input: unknown): asserts input is T;
17
+ export function validate<T>(input: unknown): IValidation<T>; // detailed
18
+
19
+ // JSON FUNCTIONS
20
+ export namespace json {
21
+ export function application<T>(): IJsonApplication; // JSON schema
22
+ export function assertParse<T>(input: string): T; // type safe parser
23
+ export function assertStringify<T>(input: T): string; // safe and faster
24
+ }
25
+
26
+ // LLM FUNCTION CALLING SCHEMA
27
+ export namespace llm {
28
+ // application schema from a class or interface type
29
+ export function application<App, Model>(): ILlmApplication<Model>;
30
+ // structured output
31
+ export function parameters<P, Model>(): ILlmSchema.IParameters<Model>;
32
+ export function schema<T, Model>(): ILlmSchema<Model>; // type schema
33
+ }
34
+
35
+ // PROTOCOL BUFFER
36
+ export namespace protobuf {
37
+ export function message<T>(): string; // Protocol Buffer message
38
+ export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
39
+ export function assertEncode<T>(input: T): Uint8Array; // safe encoder
40
+ }
41
+
42
+ // RANDOM GENERATOR
43
+ export function random<T>(g?: Partial<IRandomGenerator>): T;
44
+ ```
45
+
46
+ `typia` is a transformer library supporting below features:
47
+
48
+ - Super-fast Runtime Validators
49
+ - Enhanced JSON schema and serde functions
50
+ - LLM function calling schema and structured output
51
+ - Protocol Buffer encoder and decoder
52
+ - Random data generator
53
+
54
+ > [!NOTE]
55
+ >
56
+ > - **Only one line** required, with pure TypeScript type
57
+ > - Runtime validator is **20,000x faster** than `class-validator`
58
+ > - JSON serialization is **200x faster** than `class-transformer`
59
+
60
+
61
+
62
+
63
+ ## Transformation
64
+ If you call `typia` function, it would be compiled like below.
65
+
66
+ This is the key concept of `typia`, transforming TypeScript type to a runtime function. The `typia.is<T>()` function is transformed to a dedicated type checker by analyzing the target type `T` in the compilation level.
67
+
68
+ This feature enables developers to ensure type safety in their applications, leveraging TypeScript's static typing while also providing runtime validation. Instead of defining additional schemas, you can simply utilize the pure TypeScript type itself.
69
+
70
+ ```typescript
71
+ //----
72
+ // examples/checkString.ts
73
+ //----
74
+ import typia, { tags } from "typia";
75
+ export const checkString = typia.createIs<string>();
76
+
77
+ //----
78
+ // examples/checkUUID.js
79
+ //----
80
+ import typia from "typia";
81
+ export const checkString = (() => {
82
+ return (input) => "string" === typeof input;
83
+ })();
84
+ ```
85
+
86
+
87
+
88
+ ## Sponsors
89
+ Thanks for your support.
90
+
91
+ Your donation encourages `typia` development.
92
+
93
+ Also, `typia` is re-distributing half of donations to core contributors of `typia`.
94
+
95
+ - [`nonara/ts-patch`](https://github.com/nonara/ts-patch)
96
+ - [`ryoppippi/unplugin-typia`](https://github.com/ryoppippi/unplugin-typia)
97
+
98
+ [![Sponsors](https://opencollective.com/typia/badge.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
99
+
100
+
101
+
102
+
103
+ ## Playground
104
+ You can experience how typia works by [playground website](https://typia.io/playground):
105
+
106
+ - 💻 https://typia.io/playground
107
+
108
+
109
+
110
+
111
+ ## Guide Documents
112
+ Check out the document in the [website](https://typia.io/docs/):
113
+
114
+ ### 🏠 Home
115
+ - [Introduction](https://typia.io/docs/)
116
+ - [Setup](https://typia.io/docs/setup/)
117
+ - [Pure TypeScript](https://typia.io/docs/pure/)
118
+
119
+ ### 📖 Features
120
+ - Runtime Validators
121
+ - [`assert()` function](https://typia.io/docs/validators/assert/)
122
+ - [`is()` function](https://typia.io/docs/validators/is/)
123
+ - [`validate()` function](https://typia.io/docs/validators/validate/)
124
+ - [Functional Module](https://typia.io/docs/validators/functional)
125
+ - [Special Tags](https://typia.io/docs/validators/tags/)
126
+ - Enhanced JSON
127
+ - [JSON Schema](https://typia.io/docs/json/schema/)
128
+ - [`stringify()` functions](https://typia.io/docs/json/stringify/)
129
+ - [`parse()` functions](https://typia.io/docs/json/parse/)
130
+ - LLM Function Calling
131
+ - [`application()` function](https://typia.io/docs/llm/application/)
132
+ - [`parameters()` function](https://typia.io/docs/llm/parameters/)
133
+ - [`schema()` function](https://typia.io/docs/llm/schema/)
134
+ - [AI Chatbot Development](https://typia.io/docs/llm/chat/)
135
+ - [Documentation Strategy](https://typia.io/docs/llm/strategy/)
136
+ - Protocol Buffer
137
+ - [Message Schema](https://typia.io/docs/protobuf/message)
138
+ - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
139
+ - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
140
+ - [Random Generator](https://typia.io/docs/random/)
141
+ - [Miscellaneous](https://typia.io/docs/misc/)
142
+
143
+ ### 🔗 Appendix
144
+ - [API Documents](https://typia.io/api)
145
+ - Utillization Cases
146
+ - [NestJS](https://typia.io/docs/utilization/nestjs/)
147
+ - [Prisma](https://typia.io/docs/utilization/prisma/)
148
+ - [tRPC](https://typia.io/docs/utilization/trpc/)
149
+ - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
150
+ - [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
@@ -47,9 +47,9 @@ var PluginConfigurator;
47
47
  if (strict === undefined && strictNullChecks === undefined)
48
48
  compilerOptions.strict = true;
49
49
  if (oldbie === undefined)
50
- plugins.push(comment_json_1.default.parse(`
51
- {
52
- "transform": "typia/lib/transform"
50
+ plugins.push(comment_json_1.default.parse(`
51
+ {
52
+ "transform": "typia/lib/transform"
53
53
  }`));
54
54
  yield fs_1.default.promises.writeFile(args.project, comment_json_1.default.stringify(config, null, 2));
55
55
  });
@@ -32,9 +32,9 @@ var PluginConfigurator;
32
32
  if (strict === undefined && strictNullChecks === undefined)
33
33
  compilerOptions.strict = true;
34
34
  if (oldbie === undefined)
35
- plugins.push(comments.parse(`
36
- {
37
- "transform": "typia/lib/transform"
35
+ plugins.push(comments.parse(`
36
+ {
37
+ "transform": "typia/lib/transform"
38
38
  }`));
39
39
  await fs.promises.writeFile(args.project, comments.stringify(config, null, 2));
40
40
  }
@@ -42,21 +42,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
42
42
  step((generator = generator.apply(thisArg, _arguments || [])).next());
43
43
  });
44
44
  };
45
- const USAGE = `Wrong command has been detected. Use like below:
46
-
47
- npx typia setup \\
48
- --manager (npm|pnpm|yarn) \\
49
- --project {tsconfig.json file path}
50
-
51
- - npx typia setup
52
- - npx typia setup --manager pnpm
53
- - npx typia setup --project tsconfig.test.json
54
-
55
- npx typia generate
56
- --input {directory} \\
57
- --output {directory}
58
-
59
- --npx typia generate --input src/templates --output src/functinoal
45
+ const USAGE = `Wrong command has been detected. Use like below:
46
+
47
+ npx typia setup \\
48
+ --manager (npm|pnpm|yarn) \\
49
+ --project {tsconfig.json file path}
50
+
51
+ - npx typia setup
52
+ - npx typia setup --manager pnpm
53
+ - npx typia setup --project tsconfig.test.json
54
+
55
+ npx typia generate
56
+ --input {directory} \\
57
+ --output {directory}
58
+
59
+ --npx typia generate --input src/templates --output src/functinoal
60
60
  `;
61
61
  const halt = (desc) => {
62
62
  console.error(desc);
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
- const USAGE = `Wrong command has been detected. Use like below:
3
-
4
- npx typia setup \\
5
- --manager (npm|pnpm|yarn) \\
6
- --project {tsconfig.json file path}
7
-
8
- - npx typia setup
9
- - npx typia setup --manager pnpm
10
- - npx typia setup --project tsconfig.test.json
11
-
12
- npx typia generate
13
- --input {directory} \\
14
- --output {directory}
15
-
16
- --npx typia generate --input src/templates --output src/functinoal
2
+ const USAGE = `Wrong command has been detected. Use like below:
3
+
4
+ npx typia setup \\
5
+ --manager (npm|pnpm|yarn) \\
6
+ --project {tsconfig.json file path}
7
+
8
+ - npx typia setup
9
+ - npx typia setup --manager pnpm
10
+ - npx typia setup --project tsconfig.test.json
11
+
12
+ npx typia generate
13
+ --input {directory} \\
14
+ --output {directory}
15
+
16
+ --npx typia generate --input src/templates --output src/functinoal
17
17
  `;
18
18
  const halt = (desc) => {
19
19
  console.error(desc);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "9.0.0-dev.20250406",
3
+ "version": "9.0.0",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "homepage": "https://typia.io",
42
42
  "dependencies": {
43
- "@samchon/openapi": "^4.0.0-dev.20250406",
43
+ "@samchon/openapi": "^4.0.0",
44
44
  "commander": "^10.0.0",
45
45
  "comment-json": "^4.2.3",
46
46
  "inquirer": "^8.2.5",
@@ -71,7 +71,7 @@
71
71
  "suppress-warnings": "^1.0.2",
72
72
  "tinyglobby": "^0.2.12",
73
73
  "ts-node": "^10.9.2",
74
- "typescript": "~5.8.2"
74
+ "typescript": "~5.8.3"
75
75
  },
76
76
  "stackblitz": {
77
77
  "startCommand": "npm install && npm run test"
@@ -1 +1 @@
1
- export type AssertionGuard<T> = (input: unknown) => asserts input is T;
1
+ 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>;