typia 9.5.0 → 9.6.0-dev.20250719

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +153 -153
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/llm.d.mts +24 -2
  8. package/lib/llm.d.ts +24 -2
  9. package/lib/llm.js.map +1 -1
  10. package/lib/programmers/llm/LlmApplicationProgrammer.d.mts +3 -1
  11. package/lib/programmers/llm/LlmApplicationProgrammer.d.ts +3 -1
  12. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -5
  13. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  14. package/lib/programmers/llm/LlmApplicationProgrammer.mjs +6 -4
  15. package/lib/programmers/llm/LlmModelPredicator.d.mts +3 -1
  16. package/lib/programmers/llm/LlmModelPredicator.d.ts +3 -1
  17. package/lib/programmers/llm/LlmModelPredicator.js.map +1 -1
  18. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/AssertionGuard.ts +39 -39
  21. package/src/CamelCase.ts +75 -75
  22. package/src/IRandomGenerator.ts +49 -49
  23. package/src/IReadableURLSearchParams.ts +9 -9
  24. package/src/IValidation.ts +1 -1
  25. package/src/PascalCase.ts +71 -71
  26. package/src/Primitive.ts +92 -92
  27. package/src/Resolved.ts +74 -74
  28. package/src/SnakeCase.ts +126 -126
  29. package/src/TypeGuardError.ts +179 -179
  30. package/src/executable/TypiaGenerateWizard.ts +83 -83
  31. package/src/executable/TypiaPatchWizard.ts +45 -45
  32. package/src/executable/TypiaSetupWizard.ts +171 -171
  33. package/src/executable/setup/ArgumentParser.ts +42 -42
  34. package/src/executable/setup/CommandExecutor.ts +8 -8
  35. package/src/executable/setup/FileRetriever.ts +19 -19
  36. package/src/executable/setup/PackageManager.ts +87 -87
  37. package/src/executable/setup/PluginConfigurator.ts +74 -74
  38. package/src/executable/typia.ts +55 -55
  39. package/src/factories/CommentFactory.ts +79 -79
  40. package/src/factories/ExpressionFactory.ts +219 -219
  41. package/src/factories/IdentifierFactory.ts +89 -89
  42. package/src/factories/JsonMetadataFactory.ts +83 -83
  43. package/src/factories/LiteralFactory.ts +52 -52
  44. package/src/factories/MetadataCollection.ts +278 -278
  45. package/src/factories/MetadataCommentTagFactory.ts +648 -648
  46. package/src/factories/MetadataFactory.ts +404 -404
  47. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  48. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  49. package/src/factories/NumericRangeFactory.ts +72 -72
  50. package/src/factories/ProtobufFactory.ts +875 -875
  51. package/src/factories/StatementFactory.ts +90 -90
  52. package/src/factories/TemplateFactory.ts +64 -64
  53. package/src/factories/TypeFactory.ts +140 -140
  54. package/src/factories/ValueFactory.ts +12 -12
  55. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  56. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  57. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  58. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  59. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  60. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  61. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  62. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  63. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  64. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  65. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  66. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  67. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  68. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  69. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  70. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  71. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  72. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  73. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  74. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  75. package/src/factories/internal/metadata/iterate_metadata_native.ts +264 -264
  76. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  77. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  78. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  79. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  80. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  81. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  82. package/src/functional.ts +740 -740
  83. package/src/http.ts +1040 -1040
  84. package/src/index.ts +4 -4
  85. package/src/internal/_IProtobufWriter.ts +18 -18
  86. package/src/internal/_ProtobufReader.ts +194 -194
  87. package/src/internal/_ProtobufSizer.ts +145 -145
  88. package/src/internal/_ProtobufWriter.ts +145 -145
  89. package/src/internal/_accessExpressionAsString.ts +46 -46
  90. package/src/internal/_assertGuard.ts +13 -13
  91. package/src/internal/_createStandardSchema.ts +134 -134
  92. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  93. package/src/internal/_httpFormDataReadArray.ts +4 -4
  94. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  95. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  96. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  97. package/src/internal/_httpFormDataReadFile.ts +10 -10
  98. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  99. package/src/internal/_httpFormDataReadString.ts +10 -10
  100. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  101. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  102. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  103. package/src/internal/_httpParameterReadBigint.ts +10 -10
  104. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  105. package/src/internal/_httpParameterReadNumber.ts +7 -7
  106. package/src/internal/_httpParameterReadString.ts +2 -2
  107. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  108. package/src/internal/_httpQueryReadArray.ts +4 -4
  109. package/src/internal/_httpQueryReadBigint.ts +12 -12
  110. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  111. package/src/internal/_httpQueryReadNumber.ts +9 -9
  112. package/src/internal/_httpQueryReadString.ts +4 -4
  113. package/src/internal/_isBetween.ts +2 -2
  114. package/src/internal/_isBigintString.ts +8 -8
  115. package/src/internal/_isFormatByte.ts +7 -7
  116. package/src/internal/_isFormatDate.ts +3 -3
  117. package/src/internal/_isFormatDateTime.ts +4 -4
  118. package/src/internal/_isFormatDuration.ts +4 -4
  119. package/src/internal/_isFormatEmail.ts +4 -4
  120. package/src/internal/_isFormatHostname.ts +4 -4
  121. package/src/internal/_isFormatIdnEmail.ts +4 -4
  122. package/src/internal/_isFormatIdnHostname.ts +4 -4
  123. package/src/internal/_isFormatIpv4.ts +4 -4
  124. package/src/internal/_isFormatIpv6.ts +4 -4
  125. package/src/internal/_isFormatIri.ts +3 -3
  126. package/src/internal/_isFormatIriReference.ts +4 -4
  127. package/src/internal/_isFormatJsonPointer.ts +3 -3
  128. package/src/internal/_isFormatPassword.ts +1 -1
  129. package/src/internal/_isFormatRegex.ts +8 -8
  130. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  131. package/src/internal/_isFormatTime.ts +4 -4
  132. package/src/internal/_isFormatUri.ts +6 -6
  133. package/src/internal/_isFormatUriReference.ts +5 -5
  134. package/src/internal/_isFormatUriTemplate.ts +4 -4
  135. package/src/internal/_isFormatUrl.ts +4 -4
  136. package/src/internal/_isFormatUuid.ts +3 -3
  137. package/src/internal/_isTypeFloat.ts +5 -5
  138. package/src/internal/_isTypeInt32.ts +5 -5
  139. package/src/internal/_isTypeInt64.ts +5 -5
  140. package/src/internal/_isTypeUint32.ts +5 -5
  141. package/src/internal/_isTypeUint64.ts +5 -5
  142. package/src/internal/_isUniqueItems.ts +159 -159
  143. package/src/internal/_jsonStringifyNumber.ts +12 -12
  144. package/src/internal/_jsonStringifyRest.ts +3 -3
  145. package/src/internal/_jsonStringifyString.ts +42 -42
  146. package/src/internal/_jsonStringifyTail.ts +2 -2
  147. package/src/internal/_llmApplicationFinalize.ts +20 -20
  148. package/src/internal/_miscCloneAny.ts +46 -46
  149. package/src/internal/_notationAny.ts +37 -37
  150. package/src/internal/_notationCamel.ts +13 -13
  151. package/src/internal/_notationPascal.ts +8 -8
  152. package/src/internal/_notationSnake.ts +43 -43
  153. package/src/internal/_randomArray.ts +21 -21
  154. package/src/internal/_randomBigint.ts +6 -6
  155. package/src/internal/_randomBoolean.ts +1 -1
  156. package/src/internal/_randomFormatByte.ts +3 -3
  157. package/src/internal/_randomFormatDate.ts +18 -18
  158. package/src/internal/_randomFormatDatetime.ts +16 -16
  159. package/src/internal/_randomFormatDuration.ts +27 -27
  160. package/src/internal/_randomFormatEmail.ts +11 -11
  161. package/src/internal/_randomFormatHostname.ts +6 -6
  162. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  163. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  164. package/src/internal/_randomFormatIpv4.ts +11 -11
  165. package/src/internal/_randomFormatIpv6.ts +11 -11
  166. package/src/internal/_randomFormatIri.ts +3 -3
  167. package/src/internal/_randomFormatIriReference.ts +3 -3
  168. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  169. package/src/internal/_randomFormatPassword.ts +8 -8
  170. package/src/internal/_randomFormatRegex.ts +4 -4
  171. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  172. package/src/internal/_randomFormatTime.ts +14 -14
  173. package/src/internal/_randomFormatUri.ts +3 -3
  174. package/src/internal/_randomFormatUriReference.ts +3 -3
  175. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  176. package/src/internal/_randomFormatUrl.ts +11 -11
  177. package/src/internal/_randomFormatUuid.ts +6 -6
  178. package/src/internal/_randomInteger.ts +53 -53
  179. package/src/internal/_randomNumber.ts +80 -80
  180. package/src/internal/_randomPattern.ts +10 -10
  181. package/src/internal/_randomPick.ts +9 -9
  182. package/src/internal/_randomString.ts +24 -24
  183. package/src/internal/_throwTypeGuardError.ts +5 -5
  184. package/src/internal/_validateReport.ts +13 -13
  185. package/src/internal/private/__notationCapitalize.ts +2 -2
  186. package/src/internal/private/__notationUnsnake.ts +24 -24
  187. package/src/json.ts +696 -696
  188. package/src/llm.ts +532 -506
  189. package/src/misc.ts +651 -651
  190. package/src/module.ts +936 -936
  191. package/src/notations.ts +820 -820
  192. package/src/programmers/AssertProgrammer.ts +454 -454
  193. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  194. package/src/programmers/FeatureProgrammer.ts +627 -627
  195. package/src/programmers/ImportProgrammer.ts +185 -185
  196. package/src/programmers/IsProgrammer.ts +273 -273
  197. package/src/programmers/RandomProgrammer.ts +1190 -1190
  198. package/src/programmers/TypiaProgrammer.ts +175 -175
  199. package/src/programmers/ValidateProgrammer.ts +448 -448
  200. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  201. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  202. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  203. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  204. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  205. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  206. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  207. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  208. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  209. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  210. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  211. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  212. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  213. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  214. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  215. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  216. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  217. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  218. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  219. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  220. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  221. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  222. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  223. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  224. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  225. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  226. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  227. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  228. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  229. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  230. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  231. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  232. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  233. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  234. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  235. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  236. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  237. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  238. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  239. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  240. package/src/programmers/internal/check_array_length.ts +47 -47
  241. package/src/programmers/internal/check_bigint.ts +50 -50
  242. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  243. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  244. package/src/programmers/internal/check_everything.ts +23 -23
  245. package/src/programmers/internal/check_native.ts +27 -27
  246. package/src/programmers/internal/check_number.ts +112 -112
  247. package/src/programmers/internal/check_object.ts +75 -75
  248. package/src/programmers/internal/check_string.ts +50 -50
  249. package/src/programmers/internal/check_template.ts +48 -48
  250. package/src/programmers/internal/check_union_array_like.ts +335 -335
  251. package/src/programmers/internal/decode_union_object.ts +116 -116
  252. package/src/programmers/internal/feature_object_entries.ts +61 -61
  253. package/src/programmers/internal/json_schema_alias.ts +47 -47
  254. package/src/programmers/internal/json_schema_array.ts +45 -45
  255. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  256. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  257. package/src/programmers/internal/json_schema_constant.ts +26 -26
  258. package/src/programmers/internal/json_schema_description.ts +12 -12
  259. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  260. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  261. package/src/programmers/internal/json_schema_native.ts +33 -33
  262. package/src/programmers/internal/json_schema_number.ts +15 -15
  263. package/src/programmers/internal/json_schema_object.ts +158 -158
  264. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  265. package/src/programmers/internal/json_schema_station.ts +185 -185
  266. package/src/programmers/internal/json_schema_string.ts +15 -15
  267. package/src/programmers/internal/json_schema_template.ts +55 -55
  268. package/src/programmers/internal/json_schema_title.ts +13 -13
  269. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  270. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  271. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  272. package/src/programmers/internal/prune_object_properties.ts +71 -71
  273. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  274. package/src/programmers/internal/stringify_native.ts +7 -7
  275. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  276. package/src/programmers/internal/template_to_pattern.ts +23 -23
  277. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  278. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  279. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  280. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  281. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  282. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  283. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -26
  284. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  285. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  286. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  287. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  288. package/src/programmers/llm/LlmApplicationProgrammer.ts +415 -401
  289. package/src/programmers/llm/LlmModelPredicator.ts +133 -127
  290. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  291. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  292. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  293. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  294. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  295. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  296. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  297. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  298. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  299. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  300. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  301. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  302. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  303. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  304. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  305. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  306. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  307. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  308. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  309. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  310. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  311. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  312. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  313. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  314. package/src/protobuf.ts +861 -861
  315. package/src/reflect.ts +50 -50
  316. package/src/schemas/json/IJsonApplication.ts +77 -77
  317. package/src/schemas/json/IJsonSchemaCollection.ts +195 -195
  318. package/src/schemas/json/IJsonSchemaUnit.ts +250 -250
  319. package/src/schemas/json/__IJsonApplication.ts +63 -63
  320. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  321. package/src/schemas/metadata/IMetadata.ts +35 -35
  322. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  323. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  324. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  325. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  326. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  327. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  328. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  329. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  330. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  331. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  332. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  333. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  334. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  335. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  336. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  337. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  338. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  339. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  340. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  341. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  342. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  343. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  344. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  345. package/src/schemas/metadata/Metadata.ts +687 -687
  346. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  347. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  348. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  349. package/src/schemas/metadata/MetadataArray.ts +49 -49
  350. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  351. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  352. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  353. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  354. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  355. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  356. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  357. package/src/schemas/metadata/MetadataMap.ts +48 -48
  358. package/src/schemas/metadata/MetadataNative.ts +44 -44
  359. package/src/schemas/metadata/MetadataObject.ts +48 -48
  360. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  361. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  362. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  363. package/src/schemas/metadata/MetadataSet.ts +45 -45
  364. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  365. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  366. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  367. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  368. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  369. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  370. package/src/tags/Constant.ts +15 -15
  371. package/src/tags/ContentMediaType.ts +10 -10
  372. package/src/tags/Default.ts +22 -22
  373. package/src/tags/Example.ts +24 -24
  374. package/src/tags/Examples.ts +16 -16
  375. package/src/tags/ExclusiveMaximum.ts +23 -23
  376. package/src/tags/ExclusiveMinimum.ts +23 -23
  377. package/src/tags/Format.ts +50 -50
  378. package/src/tags/JsonSchemaPlugin.ts +8 -8
  379. package/src/tags/MaxItems.ts +12 -12
  380. package/src/tags/MaxLength.ts +12 -12
  381. package/src/tags/Maximum.ts +19 -19
  382. package/src/tags/MinItems.ts +12 -12
  383. package/src/tags/MinLength.ts +12 -12
  384. package/src/tags/Minimum.ts +19 -19
  385. package/src/tags/MultipleOf.ts +21 -21
  386. package/src/tags/Pattern.ts +31 -31
  387. package/src/tags/Sequence.ts +10 -10
  388. package/src/tags/TagBase.ts +82 -82
  389. package/src/tags/Type.ts +37 -37
  390. package/src/tags/UniqueItems.ts +14 -14
  391. package/src/tags/index.ts +21 -21
  392. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  393. package/src/transform.ts +35 -35
  394. package/src/transformers/CallExpressionTransformer.ts +554 -554
  395. package/src/transformers/FileTransformer.ts +136 -136
  396. package/src/transformers/IProgrammerProps.ts +11 -11
  397. package/src/transformers/ITransformOptions.ts +62 -62
  398. package/src/transformers/ITransformProps.ts +9 -9
  399. package/src/transformers/ITypiaContext.ts +18 -18
  400. package/src/transformers/ImportTransformer.ts +81 -81
  401. package/src/transformers/NoTransformConfigurationError.ts +18 -18
  402. package/src/transformers/NodeTransformer.ts +17 -17
  403. package/src/transformers/TransformerError.ts +60 -60
  404. package/src/transformers/features/AssertTransformer.ts +24 -24
  405. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  406. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  407. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  408. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  409. package/src/transformers/features/IsTransformer.ts +18 -18
  410. package/src/transformers/features/RandomTransformer.ts +41 -41
  411. package/src/transformers/features/ValidateTransformer.ts +18 -18
  412. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  413. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  414. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  415. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  416. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  417. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  418. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  419. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  420. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  421. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  422. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  423. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  424. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  425. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  426. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  427. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  428. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  429. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  430. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  431. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  432. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  433. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  434. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  435. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  436. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  437. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  438. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  439. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  440. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  441. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  442. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  443. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  444. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  445. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  446. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  447. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  448. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  449. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  450. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  451. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -135
  452. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  453. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  454. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  455. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  456. package/src/transformers/features/llm/LlmApplicationTransformer.ts +149 -145
  457. package/src/transformers/features/llm/LlmControllerTransformer.ts +93 -93
  458. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  459. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  460. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  461. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  462. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  463. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  464. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  465. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  466. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  467. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  468. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  469. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  470. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  471. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  472. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  473. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  474. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  475. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  476. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  477. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  478. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  479. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  480. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  481. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  482. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  483. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  484. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  485. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  486. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  487. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  488. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  489. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  490. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  491. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  492. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  493. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  494. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  495. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  496. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  497. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  498. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  499. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  500. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  501. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  502. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  503. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  504. package/src/transformers/internal/GenericTransformer.ts +101 -101
  505. package/src/typings/Atomic.ts +13 -13
  506. package/src/typings/ClassProperties.ts +5 -5
  507. package/src/typings/Customizable.ts +5 -5
  508. package/src/typings/Equal.ts +18 -18
  509. package/src/typings/IsTuple.ts +9 -9
  510. package/src/typings/NativeClass.ts +23 -23
  511. package/src/typings/OmitNever.ts +3 -3
  512. package/src/typings/ProtobufAtomic.ts +19 -19
  513. package/src/typings/SpecialFields.ts +3 -3
  514. package/src/typings/ValidationPipe.ts +9 -9
  515. package/src/typings/ValueOf.ts +20 -20
  516. package/src/typings/Writable.ts +11 -11
  517. package/src/utils/ArrayUtil.ts +41 -41
  518. package/src/utils/Escaper.ts +50 -50
  519. package/src/utils/MapUtil.ts +14 -14
  520. package/src/utils/NamingConvention.ts +94 -94
  521. package/src/utils/PatternUtil.ts +29 -29
  522. package/src/utils/ProtobufNameEncoder.ts +32 -32
  523. package/src/utils/Singleton.ts +16 -16
  524. package/src/utils/StringUtil.ts +16 -16
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,153 +1,153 @@
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
- // AI FUNCTION CALLING SCHEMA
27
- export namespace llm {
28
- // collection of function calling schemas
29
- export function application<Class, Model>(): ILlmApplication<Class>;
30
- export function controller<Class, Model>(
31
- name: string,
32
- execute: Class,
33
- ): ILlmController<Model>; // +executor
34
- // structured output
35
- export function parameters<P, Model>(): ILlmSchema.IParameters<Model>;
36
- export function schema<T, Model>(): ILlmSchema<Model>; // type schema
37
- }
38
-
39
- // PROTOCOL BUFFER
40
- export namespace protobuf {
41
- export function message<T>(): string; // Protocol Buffer message
42
- export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
43
- export function assertEncode<T>(input: T): Uint8Array; // safe encoder
44
- }
45
-
46
- // RANDOM GENERATOR
47
- export function random<T>(g?: Partial<IRandomGenerator>): T;
48
- ```
49
-
50
- `typia` is a transformer library supporting below features:
51
-
52
- - Super-fast Runtime Validators
53
- - Enhanced JSON schema and serde functions
54
- - LLM function calling schema and structured output
55
- - Protocol Buffer encoder and decoder
56
- - Random data generator
57
-
58
- > [!NOTE]
59
- >
60
- > - **Only one line** required, with pure TypeScript type
61
- > - Runtime validator is **20,000x faster** than `class-validator`
62
- > - JSON serialization is **200x faster** than `class-transformer`
63
-
64
-
65
-
66
-
67
- ## Transformation
68
- If you call `typia` function, it would be compiled like below.
69
-
70
- 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.
71
-
72
- 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.
73
-
74
- ```typescript
75
- //----
76
- // examples/checkString.ts
77
- //----
78
- import typia, { tags } from "typia";
79
- export const checkString = typia.createIs<string>();
80
-
81
- //----
82
- // examples/checkString.js
83
- //----
84
- import typia from "typia";
85
- export const checkString = (() => {
86
- return (input) => "string" === typeof input;
87
- })();
88
- ```
89
-
90
-
91
-
92
- ## Sponsors
93
- Thanks for your support.
94
-
95
- Your donation encourages `typia` development.
96
-
97
- Also, `typia` is re-distributing half of donations to core contributors of `typia`.
98
-
99
- - [`nonara/ts-patch`](https://github.com/nonara/ts-patch)
100
- - [`ryoppippi/unplugin-typia`](https://github.com/ryoppippi/unplugin-typia)
101
-
102
- [![Sponsors](https://opencollective.com/typia/badge.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
103
-
104
-
105
-
106
-
107
- ## Playground
108
- You can experience how typia works by [playground website](https://typia.io/playground):
109
-
110
- - 💻 https://typia.io/playground
111
-
112
-
113
-
114
-
115
- ## Guide Documents
116
- Check out the document in the [website](https://typia.io/docs/):
117
-
118
- ### 🏠 Home
119
- - [Introduction](https://typia.io/docs/)
120
- - [Setup](https://typia.io/docs/setup/)
121
- - [Pure TypeScript](https://typia.io/docs/pure/)
122
-
123
- ### 📖 Features
124
- - Runtime Validators
125
- - [`assert()` function](https://typia.io/docs/validators/assert/)
126
- - [`is()` function](https://typia.io/docs/validators/is/)
127
- - [`validate()` function](https://typia.io/docs/validators/validate/)
128
- - [Functional Module](https://typia.io/docs/validators/functional)
129
- - [Special Tags](https://typia.io/docs/validators/tags/)
130
- - Enhanced JSON
131
- - [JSON Schema](https://typia.io/docs/json/schema/)
132
- - [`stringify()` functions](https://typia.io/docs/json/stringify/)
133
- - [`parse()` functions](https://typia.io/docs/json/parse/)
134
- - LLM Function Calling
135
- - [`application()` function](https://typia.io/docs/llm/application/)
136
- - [`parameters()` function](https://typia.io/docs/llm/parameters/)
137
- - [`schema()` function](https://typia.io/docs/llm/schema/)
138
- - [AI Chatbot Development](https://typia.io/docs/llm/chat/)
139
- - [Documentation Strategy](https://typia.io/docs/llm/strategy/)
140
- - Protocol Buffer
141
- - [Message Schema](https://typia.io/docs/protobuf/message)
142
- - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
143
- - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
144
- - [Random Generator](https://typia.io/docs/random/)
145
- - [Miscellaneous](https://typia.io/docs/misc/)
146
-
147
- ### 🔗 Appendix
148
- - [API Documents](https://typia.io/api)
149
- - Utillization Cases
150
- - [NestJS](https://typia.io/docs/utilization/nestjs/)
151
- - [tRPC](https://typia.io/docs/utilization/trpc/)
152
- - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
153
- - [⇲ `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
+ // AI FUNCTION CALLING SCHEMA
27
+ export namespace llm {
28
+ // collection of function calling schemas
29
+ export function application<Class, Model>(): ILlmApplication<Class>;
30
+ export function controller<Class, Model>(
31
+ name: string,
32
+ execute: Class,
33
+ ): ILlmController<Model>; // +executor
34
+ // structured output
35
+ export function parameters<P, Model>(): ILlmSchema.IParameters<Model>;
36
+ export function schema<T, Model>(): ILlmSchema<Model>; // type schema
37
+ }
38
+
39
+ // PROTOCOL BUFFER
40
+ export namespace protobuf {
41
+ export function message<T>(): string; // Protocol Buffer message
42
+ export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
43
+ export function assertEncode<T>(input: T): Uint8Array; // safe encoder
44
+ }
45
+
46
+ // RANDOM GENERATOR
47
+ export function random<T>(g?: Partial<IRandomGenerator>): T;
48
+ ```
49
+
50
+ `typia` is a transformer library supporting below features:
51
+
52
+ - Super-fast Runtime Validators
53
+ - Enhanced JSON schema and serde functions
54
+ - LLM function calling schema and structured output
55
+ - Protocol Buffer encoder and decoder
56
+ - Random data generator
57
+
58
+ > [!NOTE]
59
+ >
60
+ > - **Only one line** required, with pure TypeScript type
61
+ > - Runtime validator is **20,000x faster** than `class-validator`
62
+ > - JSON serialization is **200x faster** than `class-transformer`
63
+
64
+
65
+
66
+
67
+ ## Transformation
68
+ If you call `typia` function, it would be compiled like below.
69
+
70
+ 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.
71
+
72
+ 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.
73
+
74
+ ```typescript
75
+ //----
76
+ // examples/checkString.ts
77
+ //----
78
+ import typia, { tags } from "typia";
79
+ export const checkString = typia.createIs<string>();
80
+
81
+ //----
82
+ // examples/checkString.js
83
+ //----
84
+ import typia from "typia";
85
+ export const checkString = (() => {
86
+ return (input) => "string" === typeof input;
87
+ })();
88
+ ```
89
+
90
+
91
+
92
+ ## Sponsors
93
+ Thanks for your support.
94
+
95
+ Your donation encourages `typia` development.
96
+
97
+ Also, `typia` is re-distributing half of donations to core contributors of `typia`.
98
+
99
+ - [`nonara/ts-patch`](https://github.com/nonara/ts-patch)
100
+ - [`ryoppippi/unplugin-typia`](https://github.com/ryoppippi/unplugin-typia)
101
+
102
+ [![Sponsors](https://opencollective.com/typia/badge.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
103
+
104
+
105
+
106
+
107
+ ## Playground
108
+ You can experience how typia works by [playground website](https://typia.io/playground):
109
+
110
+ - 💻 https://typia.io/playground
111
+
112
+
113
+
114
+
115
+ ## Guide Documents
116
+ Check out the document in the [website](https://typia.io/docs/):
117
+
118
+ ### 🏠 Home
119
+ - [Introduction](https://typia.io/docs/)
120
+ - [Setup](https://typia.io/docs/setup/)
121
+ - [Pure TypeScript](https://typia.io/docs/pure/)
122
+
123
+ ### 📖 Features
124
+ - Runtime Validators
125
+ - [`assert()` function](https://typia.io/docs/validators/assert/)
126
+ - [`is()` function](https://typia.io/docs/validators/is/)
127
+ - [`validate()` function](https://typia.io/docs/validators/validate/)
128
+ - [Functional Module](https://typia.io/docs/validators/functional)
129
+ - [Special Tags](https://typia.io/docs/validators/tags/)
130
+ - Enhanced JSON
131
+ - [JSON Schema](https://typia.io/docs/json/schema/)
132
+ - [`stringify()` functions](https://typia.io/docs/json/stringify/)
133
+ - [`parse()` functions](https://typia.io/docs/json/parse/)
134
+ - LLM Function Calling
135
+ - [`application()` function](https://typia.io/docs/llm/application/)
136
+ - [`parameters()` function](https://typia.io/docs/llm/parameters/)
137
+ - [`schema()` function](https://typia.io/docs/llm/schema/)
138
+ - [AI Chatbot Development](https://typia.io/docs/llm/chat/)
139
+ - [Documentation Strategy](https://typia.io/docs/llm/strategy/)
140
+ - Protocol Buffer
141
+ - [Message Schema](https://typia.io/docs/protobuf/message)
142
+ - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
143
+ - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
144
+ - [Random Generator](https://typia.io/docs/random/)
145
+ - [Miscellaneous](https://typia.io/docs/misc/)
146
+
147
+ ### 🔗 Appendix
148
+ - [API Documents](https://typia.io/api)
149
+ - Utillization Cases
150
+ - [NestJS](https://typia.io/docs/utilization/nestjs/)
151
+ - [tRPC](https://typia.io/docs/utilization/trpc/)
152
+ - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
153
+ - [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
@@ -50,9 +50,9 @@ var PluginConfigurator;
50
50
  if (strict === undefined && strictNullChecks === undefined)
51
51
  compilerOptions.strict = true;
52
52
  if (oldbie === undefined)
53
- plugins.push(comment_json_1.default.parse(`
54
- {
55
- "transform": "typia/lib/transform"
53
+ plugins.push(comment_json_1.default.parse(`
54
+ {
55
+ "transform": "typia/lib/transform"
56
56
  }`));
57
57
  yield fs_1.default.promises.writeFile(args.project, comment_json_1.default.stringify(config, null, 2));
58
58
  });
@@ -35,9 +35,9 @@ var PluginConfigurator;
35
35
  if (strict === undefined && strictNullChecks === undefined)
36
36
  compilerOptions.strict = true;
37
37
  if (oldbie === undefined)
38
- plugins.push(comments.parse(`
39
- {
40
- "transform": "typia/lib/transform"
38
+ plugins.push(comments.parse(`
39
+ {
40
+ "transform": "typia/lib/transform"
41
41
  }`));
42
42
  await fs.promises.writeFile(args.project, comments.stringify(config, null, 2));
43
43
  }
@@ -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/functional
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/functional
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/functional
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/functional
17
17
  `;
18
18
  const halt = (desc) => {
19
19
  console.error(desc);
package/lib/llm.d.mts CHANGED
@@ -142,7 +142,18 @@ export declare function controller(name: string, execute: object, options?: Part
142
142
  * @reference https://wrtnlabs.io/agentica/docs/core/controller/typescript/
143
143
  * @author Jeongho Nam - https://github.com/samchon
144
144
  */
145
- export declare function controller<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model]> = {}>(name: string, execute: Class, options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmController<Model>;
145
+ export declare function controller<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model] & {
146
+ /**
147
+ * Whether to disallow superfluous properties or not.
148
+ *
149
+ * If configure as `true`, {@link validateEquals} function would be
150
+ * used for validation feedback, which is more strict than
151
+ * {@link validate} function.
152
+ *
153
+ * @default false
154
+ */
155
+ equals: boolean;
156
+ }> = {}>(name: string, execute: Class, options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmController<Model>;
146
157
  /**
147
158
  * > You must configure the generic argument `Class`.
148
159
  *
@@ -250,7 +261,18 @@ export declare function application(options?: Partial<Pick<ILlmApplication.IOpti
250
261
  * @reference https://platform.openai.com/docs/guides/function-calling
251
262
  * @author Jeongho Nam - https://github.com/samchon
252
263
  */
253
- export declare function application<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model]> = {}>(options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmApplication<Model, Class>;
264
+ export declare function application<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<{
265
+ /**
266
+ * Whether to disallow superfluous properties or not.
267
+ *
268
+ * If configure as `true`, {@link validateEquals} function would be
269
+ * used for validation feedback, which is more strict than
270
+ * {@link validate} function.
271
+ *
272
+ * @default false
273
+ */
274
+ equals: boolean;
275
+ } & ILlmSchema.ModelConfig[Model]> = {}>(options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmApplication<Model, Class>;
254
276
  /**
255
277
  * > You must configure the generic argument `Parameters`.
256
278
  *
package/lib/llm.d.ts CHANGED
@@ -142,7 +142,18 @@ export declare function controller(name: string, execute: object, options?: Part
142
142
  * @reference https://wrtnlabs.io/agentica/docs/core/controller/typescript/
143
143
  * @author Jeongho Nam - https://github.com/samchon
144
144
  */
145
- export declare function controller<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model]> = {}>(name: string, execute: Class, options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmController<Model>;
145
+ export declare function controller<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model] & {
146
+ /**
147
+ * Whether to disallow superfluous properties or not.
148
+ *
149
+ * If configure as `true`, {@link validateEquals} function would be
150
+ * used for validation feedback, which is more strict than
151
+ * {@link validate} function.
152
+ *
153
+ * @default false
154
+ */
155
+ equals: boolean;
156
+ }> = {}>(name: string, execute: Class, options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmController<Model>;
146
157
  /**
147
158
  * > You must configure the generic argument `Class`.
148
159
  *
@@ -250,7 +261,18 @@ export declare function application(options?: Partial<Pick<ILlmApplication.IOpti
250
261
  * @reference https://platform.openai.com/docs/guides/function-calling
251
262
  * @author Jeongho Nam - https://github.com/samchon
252
263
  */
253
- export declare function application<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<ILlmSchema.ModelConfig[Model]> = {}>(options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmApplication<Model, Class>;
264
+ export declare function application<Class extends Record<string, any>, Model extends ILlmSchema.Model, Config extends Partial<{
265
+ /**
266
+ * Whether to disallow superfluous properties or not.
267
+ *
268
+ * If configure as `true`, {@link validateEquals} function would be
269
+ * used for validation feedback, which is more strict than
270
+ * {@link validate} function.
271
+ *
272
+ * @default false
273
+ */
274
+ equals: boolean;
275
+ } & ILlmSchema.ModelConfig[Model]> = {}>(options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>): ILlmApplication<Model, Class>;
254
276
  /**
255
277
  * > You must configure the generic argument `Parameters`.
256
278
  *
package/lib/llm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":";;AAqKA,gCAEC;AA2HD,kCAEC;AA6FD,gCAEC;AAoHD,wBAEC;AAvfD,gGAA6F;AAgK7F;;GAEG;AACH,SAAgB,UAAU,CAAC,GAAG,KAAY;IACxC,IAAA,6DAA6B,EAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAwHD;;GAEG;AACH,SAAgB,WAAW;IACzB,IAAA,6DAA6B,EAAC,iBAAiB,CAAC,CAAC;AACnD,CAAC;AA0FD;;GAEG;AACH,SAAgB,UAAU;IACxB,IAAA,6DAA6B,EAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAiHD;;GAEG;AACH,SAAgB,MAAM;IACpB,IAAA,6DAA6B,EAAC,YAAY,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":";;AAkLA,gCAEC;AAwID,kCAEC;AA6FD,gCAEC;AAoHD,wBAEC;AAjhBD,gGAA6F;AA6K7F;;GAEG;AACH,SAAgB,UAAU,CAAC,GAAG,KAAY;IACxC,IAAA,6DAA6B,EAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAqID;;GAEG;AACH,SAAgB,WAAW;IACzB,IAAA,6DAA6B,EAAC,iBAAiB,CAAC,CAAC;AACnD,CAAC;AA0FD;;GAEG;AACH,SAAgB,UAAU;IACxB,IAAA,6DAA6B,EAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAiHD;;GAEG;AACH,SAAgB,MAAM;IACpB,IAAA,6DAA6B,EAAC,YAAY,CAAC,CAAC;AAC9C,CAAC"}
@@ -13,7 +13,9 @@ export declare namespace LlmApplicationProgrammer {
13
13
  context: ITypiaContext;
14
14
  modulo: ts.LeftHandSideExpression;
15
15
  metadata: Metadata;
16
- config?: Partial<ILlmSchema.ModelConfig[Model]>;
16
+ config?: Partial<ILlmSchema.ModelConfig[Model] & {
17
+ equals: boolean;
18
+ }>;
17
19
  name?: string;
18
20
  }) => ILlmApplication<Model>;
19
21
  }
@@ -13,7 +13,9 @@ export declare namespace LlmApplicationProgrammer {
13
13
  context: ITypiaContext;
14
14
  modulo: ts.LeftHandSideExpression;
15
15
  metadata: Metadata;
16
- config?: Partial<ILlmSchema.ModelConfig[Model]>;
16
+ config?: Partial<ILlmSchema.ModelConfig[Model] & {
17
+ equals: boolean;
18
+ }>;
17
19
  name?: string;
18
20
  }) => ILlmApplication<Model>;
19
21
  }
@@ -118,6 +118,7 @@ var LlmApplicationProgrammer;
118
118
  context: props.context,
119
119
  modulo: props.modulo,
120
120
  className: props.name,
121
+ config: props.config,
121
122
  components: application.components,
122
123
  function: func,
123
124
  errors: errorMessages,
@@ -134,7 +135,7 @@ var LlmApplicationProgrammer;
134
135
  };
135
136
  };
136
137
  const writeFunction = (props) => {
137
- var _a, _b, _c, _d;
138
+ var _a, _b, _c, _d, _e, _f;
138
139
  const parameters = writeParameters(Object.assign(Object.assign({}, props), { accessor: `$input.${props.function.name}.parameters` }));
139
140
  if (parameters === null)
140
141
  return null;
@@ -170,12 +171,13 @@ var LlmApplicationProgrammer;
170
171
  })(),
171
172
  deprecated: props.function.deprecated,
172
173
  tags: props.function.tags,
173
- validate: writeValidadtor({
174
+ validate: writeValidator({
174
175
  context: props.context,
175
176
  modulo: props.modulo,
176
177
  parameter: props.parameter,
177
178
  name: props.function.name,
178
179
  className: props.className,
180
+ equals: (_f = (_e = props.config) === null || _e === void 0 ? void 0 : _e.equals) !== null && _f !== void 0 ? _f : false,
179
181
  }),
180
182
  };
181
183
  };
@@ -215,17 +217,17 @@ var LlmApplicationProgrammer;
215
217
  }
216
218
  return result.value;
217
219
  };
218
- const writeValidadtor = (props) => {
220
+ const writeValidator = (props) => {
219
221
  if (props.parameter === null)
220
222
  return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.context.checker.getTypeFromTypeNode(TypeFactory_1.TypeFactory.keyword("any")), config: {
221
- equals: false,
223
+ equals: props.equals,
222
224
  }, name: undefined }));
223
225
  const type = props.parameter.tsType;
224
226
  if (type === undefined)
225
227
  // unreachable
226
228
  throw new Error("Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.");
227
229
  return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.parameter.tsType, config: {
228
- equals: false,
230
+ equals: props.equals,
229
231
  }, name: props.className
230
232
  ? `Parameters<${props.className}[${JSON.stringify(props.name)}]>[0]`
231
233
  : undefined }));