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/src/json.ts CHANGED
@@ -1,696 +1,696 @@
1
- import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaCollection";
2
- import { IJsonSchemaUnit } from "./schemas/json/IJsonSchemaUnit";
3
-
4
- import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
5
-
6
- import { IValidation } from "./IValidation";
7
- import { Primitive } from "./Primitive";
8
- import { TypeGuardError } from "./TypeGuardError";
9
-
10
- /* ===========================================================
11
- JSON
12
- - METADATA
13
- - PARSE
14
- - STRINGIFY
15
- - FACTORY FUNCTIONS
16
- ==============================================================
17
- METADATA
18
- ----------------------------------------------------------- */
19
- /**
20
- * > You must configure the generic argument `Types`.
21
- *
22
- * JSON Schemas Generator.
23
- *
24
- * Creates a JSON schema list which contains both main JSON schemas
25
- * and components. Note that, all of the named types are stored in the
26
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
27
- *
28
- * Also, you can specify the OpenAPI version by configuring the second generic
29
- * argument `Version`. For reference, the default version is `"3.1"`, and key
30
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
31
- *
32
- * @template Types Tuple of target types
33
- * @template Version Version of OpenAPI specification. Default is 3.1
34
- * @return JSON schema collection
35
- *
36
- * @author Jeongho Nam - https://github.com/samchon
37
- */
38
- export function schemas(): never;
39
-
40
- /**
41
- * JSON Schemas Generator.
42
- *
43
- * Creates a JSON schema list which contains both main JSON schemas
44
- * and components. Note that, all of the named types are stored in the
45
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
46
- *
47
- * Also, you can specify the OpenAPI version by configuring the second generic
48
- * argument `Version`. For reference, the default version is `"3.1"`, and key
49
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
50
- *
51
- * @template Types Tuple of target types
52
- * @template Version Version of OpenAPI specification. Default is 3.1
53
- * @return JSON schema collection
54
- *
55
- * @author Jeongho Nam - https://github.com/samchon
56
- */
57
- export function schemas<
58
- Types extends unknown[],
59
- Version extends "3.0" | "3.1" = "3.1",
60
- >(): IJsonSchemaCollection<Version, Types>;
61
-
62
- /**
63
- * @internal
64
- */
65
- export function schemas(): never {
66
- NoTransformConfigurationError("json.schemas");
67
- }
68
-
69
- /**
70
- * > You must configure the generic argument `Type`.
71
- *
72
- * JSON schema generator.
73
- *
74
- * Creates a JSON schema unit which contains a main JSON schema and
75
- * its components. Note that, all of the named types are stored in the
76
- * {@link IJsonSchemaUnit.components} property for the `$ref` referencing.
77
- *
78
- * Also, you can specify the OpenAPI version by configuring the second
79
- * generic argument `Version`. For reference, the default version is `"3.1"`,
80
- * and key different of `"3.0"` and `"3.1"` is whether supporting the
81
- * tuple type or not.
82
- *
83
- * @template Type Target type
84
- * @template Version Version of OpenAPI specification. Default is 3.1
85
- * @return JSON schema unit
86
- *
87
- * @author Jeongho Nam - https://github.com/samchon
88
- */
89
- export function schema(): never;
90
-
91
- /**
92
- * JSON schema generator.
93
- *
94
- * Creates a JSON schema unit which contains a main JSON schema and
95
- * its components. Note that, all of the named types are stored in the
96
- * {@link IJsonSchemaUnit.components} property for the `$ref` referencing.
97
- *
98
- * Also, you can specify the OpenAPI version by configuring the second
99
- * generic argument `Version`. For reference, the default version is `"3.1"`,
100
- * and key different of `"3.0"` and `"3.1"` is whether supporting the
101
- * tuple type or not.
102
- *
103
- * @template Type Target type
104
- * @template Version Version of OpenAPI specification. Default is 3.1
105
- * @return JSON schema unit
106
- *
107
- * @author Jeongho Nam - https://github.com/samchon
108
- */
109
- export function schema<
110
- Type extends unknown,
111
- Version extends "3.0" | "3.1" = "3.1",
112
- >(): IJsonSchemaUnit<Version, Type>;
113
-
114
- /**
115
- * @internal
116
- */
117
- export function schema(): never {
118
- NoTransformConfigurationError("json.schema");
119
- }
120
-
121
- /* -----------------------------------------------------------
122
- PARSE
123
- ----------------------------------------------------------- */
124
- /**
125
- * > You must configure the generic argument `T`.
126
- *
127
- * Safe `JSON.parse()` function with type assertion.
128
- *
129
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
130
- * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
131
- * to a `T` typed instance with type assertion.
132
- *
133
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
134
- * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
135
- * there's no problem on the parsed value, the parsed value would be returned.
136
- *
137
- * @template T Expected type of parsed value
138
- * @param input JSON string
139
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
140
- * @returns Parsed value
141
- *
142
- * @author Jeongho Nam - https://github.com/samchon
143
- */
144
- export function assertParse(
145
- input: string,
146
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
147
- ): never;
148
-
149
- /**
150
- * Safe `JSON.parse()` function with type assertion.
151
- *
152
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
153
- * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
154
- * to a `T` typed instance with type assertion.
155
- *
156
- * In such reason, when parsed JSON string value is not matched with the type `T`,
157
- * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
158
- * Otherwise, there's no problem on the parsed value, the parsed value would be
159
- * returned.
160
- *
161
- * @template T Expected type of parsed value
162
- * @param input JSON string
163
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
164
- * @returns Parsed value
165
- *
166
- * @author Jeongho Nam - https://github.com/samchon
167
- */
168
- export function assertParse<T>(
169
- input: string,
170
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
171
- ): Primitive<T>;
172
-
173
- /**
174
- * @internal
175
- */
176
- export function assertParse<T>(): Primitive<T> {
177
- NoTransformConfigurationError("json.assertParse");
178
- }
179
-
180
- /**
181
- * > You must configure the generic argument `T`.
182
- *
183
- * Safe `JSON.parse()` function with type checking.
184
- *
185
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
186
- * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
187
- * instance with type checking.
188
- *
189
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
190
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
191
- * value would be returned.
192
- *
193
- * @template T Expected type of parsed value
194
- * @param input JSON string
195
- * @returns Parsed value when exact type, otherwise `null`
196
- *
197
- * @author Jeongho Nam - https://github.com/samchon
198
- */
199
- export function isParse(input: string): never;
200
-
201
- /**
202
- * Safe `JSON.parse()` function with type checking.
203
- *
204
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
205
- * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
206
- * instance with type checking.
207
- *
208
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
209
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
210
- * value would be returned.
211
- *
212
- * @template T Expected type of parsed value
213
- * @param input JSON string
214
- * @returns Parsed value when exact type, otherwise `null`
215
- *
216
- * @author Jeongho Nam - https://github.com/samchon
217
- */
218
- export function isParse<T>(input: string): Primitive<T> | null;
219
-
220
- /**
221
- * @internal
222
- */
223
- export function isParse<T>(): Primitive<T> | null {
224
- NoTransformConfigurationError("json.isParse");
225
- }
226
-
227
- /**
228
- * > You must configure the generic argument `T`.
229
- *
230
- * Safe `JSON.parse()` function with detailed type validation.
231
- *
232
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
233
- * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
234
- * to a `T` typed instance with detailed type validation.
235
- *
236
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
237
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
238
- * there's no problem on the parsed value, the parsed value would be stored in `data`
239
- * property of the output {@link IValidation.ISuccess} instance.
240
- *
241
- * @template T Expected type of parsed value
242
- * @param input JSON string
243
- * @returns Validation result with JSON parsed value
244
- *
245
- * @author Jeongho Nam - https://github.com/samchon
246
- */
247
- export function validateParse(input: string): never;
248
-
249
- /**
250
- * Safe `JSON.parse()` function with detailed type validation.
251
- *
252
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
253
- * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
254
- * to a `T` typed instance with detailed type validation.
255
- *
256
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
257
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
258
- * there's no problem on the parsed value, the parsed value would be stored in `data`
259
- * property of the output {@link IValidation.ISuccess} instance.
260
- *
261
- * @template T Expected type of parsed value
262
- * @param input JSON string
263
- * @returns Validation result with JSON parsed value
264
- *
265
- * @author Jeongho Nam - https://github.com/samchon
266
- */
267
- export function validateParse<T>(input: string): IValidation<Primitive<T>>;
268
-
269
- /**
270
- * @internal
271
- */
272
- export function validateParse<T>(): IValidation<Primitive<T>> {
273
- NoTransformConfigurationError("json.validateParse");
274
- }
275
-
276
- /* -----------------------------------------------------------
277
- STRINGIFY
278
- ----------------------------------------------------------- */
279
- /**
280
- * 8x faster `JSON.stringify()` function.
281
- *
282
- * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
283
- * faster than the native `JSON.stringify()` function. The 5x faster principle is
284
- * because it writes an optimized JSON conversion plan, only for the type `T`.
285
- *
286
- * For reference, this `typia.json.stringify()` does not validate the input value type.
287
- * It just believes that the input value is following the type `T`. Therefore, if you
288
- * can't ensure the input value type, it would be better to call one of below
289
- * functions instead.
290
- *
291
- * - {@link assertStringify}
292
- * - {@link isStringify}
293
- * - {@link validateStringify}
294
- *
295
- * @template T Type of the input value
296
- * @param input A value to be converted
297
- * @return JSON string value
298
- *
299
- * @author Jeongho Nam - https://github.com/samchon
300
- */
301
- export function stringify<T>(input: T): string;
302
-
303
- /**
304
- * @internal
305
- */
306
- export function stringify(): never {
307
- NoTransformConfigurationError("json.stringify");
308
- }
309
-
310
- /**
311
- * 5x faster `JSON.stringify()` function with type assertion.
312
- *
313
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
314
- * {@link stringify}. Therefore, it converts an input value to
315
- * JSON (JavaScript Object Notation) string, with type assertion.
316
- *
317
- * In such reason, when `input` value is not matched with the type `T`, it throws an
318
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
319
- * there's no problem on the `input` value, JSON string would be returned.
320
- *
321
- * For reference, with type assertion, it is even 5x times faster than the native
322
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
323
- * with confidence.
324
- *
325
- * @template T Type of the input value
326
- * @param input A value to be asserted and converted
327
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
328
- * @return JSON string value
329
- *
330
- * @author Jeongho Nam - https://github.com/samchon
331
- */
332
- export function assertStringify<T>(
333
- input: T,
334
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
335
- ): string;
336
-
337
- /**
338
- * 5x faster `JSON.stringify()` function with type assertion.
339
- *
340
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
341
- * {@link stringify}. Therefore, it converts an input value to
342
- * JSON (JavaScript Object Notation) string, with type assertion.
343
- *
344
- * In such reason, when `input` value is not matched with the type `T`, it throws an
345
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
346
- * there's no problem on the `input` value, JSON string would be returned.
347
- *
348
- * For reference, with type assertion, it is even 5x times faster than the native
349
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
350
- * with confidence.
351
- *
352
- * @template T Type of the input value
353
- * @param input A value to be asserted and converted
354
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
355
- * @return JSON string value
356
- *
357
- * @author Jeongho Nam - https://github.com/samchon
358
- */
359
- export function assertStringify<T>(
360
- input: T,
361
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
362
- ): unknown;
363
-
364
- /**
365
- * @internal
366
- */
367
- export function assertStringify(): string {
368
- NoTransformConfigurationError("json.assertStringify");
369
- }
370
-
371
- /**
372
- * 7x faster `JSON.stringify()` function with type checking.
373
- *
374
- * `typia.json.stringify()` is a combination function of {@link is} and
375
- * {@link stringify}. Therefore, it converts an input value to JSON
376
- * (JavaScript Object Notation) string, with type checking.
377
- *
378
- * In such reason, when `input` value is not matched with the type `T`, it returns
379
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
380
- * would be returned.
381
- *
382
- * For reference, with type checking, it is even 7x times faster than the native
383
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
384
- * with confidence.
385
- *
386
- * @template T Type of the input value
387
- * @param input A value to be checked and converted
388
- * @return JSON string value when exact type, otherwise null
389
- *
390
- * @author Jeongho Nam - https://github.com/samchon
391
- */
392
- export function isStringify<T>(input: T): string | null;
393
-
394
- /**
395
- * 7x faster `JSON.stringify()` function with type checking.
396
- *
397
- * `typia.json.isStringify()` is a combination function of {@link is} and
398
- * {@link stringify}. Therefore, it converts an input value to JSON
399
- * (JavaScript Object Notation) string, with type checking.
400
- *
401
- * In such reason, when `input` value is not matched with the type `T`, it returns
402
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
403
- * would be returned.
404
- *
405
- * For reference, with type checking, it is even 7x times faster than the native
406
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
407
- * with confidence.
408
- *
409
- * @template T Type of the input value
410
- * @param input A value to be checked and converted
411
- * @return JSON string value when exact type, otherwise null
412
- *
413
- * @author Jeongho Nam - https://github.com/samchon
414
- */
415
- export function isStringify<T>(input: unknown): string | null;
416
-
417
- /**
418
- * @internal
419
- */
420
- export function isStringify(): string | null {
421
- NoTransformConfigurationError("json.isStringify");
422
- }
423
-
424
- /**
425
- * 5x faster `JSON.stringify()` function with detailed type validation.
426
- *
427
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
428
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
429
- * Notation) string, with detailed type validation.
430
- *
431
- * In such reason, when `input` value is not matched with the type `T`, it returns
432
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
433
- * there's no problem on the `input` value, JSON string would be stored in `data`
434
- * property of the output {@link IValidation.ISuccess} instance.
435
- *
436
- * For reference, with detailed type validation, it is even 5x times faster than the
437
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
438
- * conversion with confidence.
439
- *
440
- * @template T Type of the input value
441
- * @param input A value to be checked and converted
442
- * @returns Validation result with JSON string value
443
- *
444
- * @author Jeongho Nam - https://github.com/samchon
445
- */
446
- export function validateStringify<T>(input: T): IValidation<string>;
447
-
448
- /**
449
- * 5x faster `JSON.stringify()` function with detailed type validation.
450
- *
451
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
452
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
453
- * Notation) string, with detailed type validation.
454
- *
455
- * In such reason, when `input` value is not matched with the type `T`, it returns
456
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
457
- * there's no problem on the `input` value, JSON string would be stored in `data`
458
- * property of the output {@link IValidation.ISuccess} instance.
459
- *
460
- * For reference, with detailed type validation, it is even 5x times faster than the
461
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
462
- * conversion with confidence.
463
- *
464
- * @template T Type of the input value
465
- * @param input A value to be checked and converted
466
- * @returns Validation result with JSON string value
467
- *
468
- * @author Jeongho Nam - https://github.com/samchon
469
- */
470
- export function validateStringify<T>(input: unknown): IValidation<string>;
471
-
472
- /**
473
- * @internal
474
- */
475
- export function validateStringify(): IValidation<string> {
476
- NoTransformConfigurationError("json.validateStringify");
477
- }
478
-
479
- /* -----------------------------------------------------------
480
- FACTORY FUNCTIONS
481
- ----------------------------------------------------------- */
482
- /**
483
- * Creates a reusable {@link isParse} function.
484
- *
485
- * @danger You must configure the generic argument `T`
486
- * @returns Nothing until you configure the generic argument `T`
487
- * @throws compile error
488
- *
489
- * @author Jeongho Nam - https://github.com/samchon
490
- */
491
- export function createIsParse(): never;
492
-
493
- /**
494
- * Creates a reusable {@link isParse} function.
495
- *
496
- * @template T Expected type of parsed value
497
- * @returns A reusable `isParse` function
498
- *
499
- * @author Jeongho Nam - https://github.com/samchon
500
- */
501
- export function createIsParse<T>(): (input: string) => Primitive<T> | null;
502
-
503
- /**
504
- * @internal
505
- */
506
- export function createIsParse<T>(): (input: string) => Primitive<T> | null {
507
- NoTransformConfigurationError("json.createIsParse");
508
- }
509
-
510
- /**
511
- * Creates a reusable {@link assertParse} function.
512
- *
513
- * @danger You must configure the generic argument `T`
514
- * @returns Nothing until you configure the generic argument `T`
515
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
516
- * @throws compile error
517
- *
518
- * @author Jeongho Nam - https://github.com/samchon
519
- */
520
- export function createAssertParse(
521
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
522
- ): never;
523
-
524
- /**
525
- * Creates a reusable {@link assertParse} function.
526
- *
527
- * @template T Expected type of parsed value
528
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
529
- * @returns A reusable `assertParse` function
530
- *
531
- * @author Jeongho Nam - https://github.com/samchon
532
- */
533
- export function createAssertParse<T>(
534
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
535
- ): (input: string) => Primitive<T>;
536
-
537
- /**
538
- * @internal
539
- */
540
- export function createAssertParse<T>(): (input: string) => Primitive<T> {
541
- NoTransformConfigurationError("json.createAssertParse");
542
- }
543
-
544
- /**
545
- * Creates a reusable {@link validateParse} function.
546
- *
547
- * @danger You must configure the generic argument `T`
548
- * @returns Nothing until you configure the generic argument `T`
549
- * @throws compile error
550
- *
551
- * @author Jeongho Nam - https://github.com/samchon
552
- */
553
- export function createValidateParse(): never;
554
-
555
- /**
556
- * Creates a reusable {@link validateParse} function.
557
- *
558
- * @template T Expected type of parsed value
559
- * @returns A reusable `validateParse` function
560
- *
561
- * @author Jeongho Nam - https://github.com/samchon
562
- */
563
- export function createValidateParse<T>(): (
564
- input: string,
565
- ) => IValidation<Primitive<T>>;
566
-
567
- /**
568
- * @internal
569
- */
570
- export function createValidateParse<T>(): (
571
- input: string,
572
- ) => IValidation<Primitive<T>> {
573
- NoTransformConfigurationError("json.createValidateParse");
574
- }
575
-
576
- /**
577
- * Creates a reusable {@link stringify} function.
578
- *
579
- * @danger You must configure the generic argument `T`
580
- * @returns Nothing until you configure the generic argument `T`
581
- * @throws compile error
582
- *
583
- * @author Jeongho Nam - https://github.com/samchon
584
- */
585
- export function createStringify(): never;
586
-
587
- /**
588
- * Creates a reusable {@link stringify} function.
589
- *
590
- * @template T Type of the input value
591
- * @returns A reusable `stringify` function
592
- *
593
- * @author Jeongho Nam - https://github.com/samchon
594
- */
595
- export function createStringify<T>(): (input: T) => string;
596
-
597
- /**
598
- * @internal
599
- */
600
- export function createStringify<T>(): (input: T) => string {
601
- NoTransformConfigurationError("json.createStringify");
602
- }
603
-
604
- /**
605
- * Creates a reusable {@link assertStringify} function.
606
- *
607
- * @danger You must configure the generic argument `T`
608
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
609
- * @returns Nothing until you configure the generic argument `T`
610
- * @throws compile error
611
- *
612
- * @author Jeongho Nam - https://github.com/samchon
613
- */
614
- export function createAssertStringify(
615
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
616
- ): never;
617
-
618
- /**
619
- * Creates a reusable {@link assertStringify} function.
620
- *
621
- * @template T Type of the input value
622
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
623
- * @returns A reusable `assertStringify` function
624
- *
625
- * @author Jeongho Nam - https://github.com/samchon
626
- */
627
- export function createAssertStringify<T>(
628
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
629
- ): (input: unknown) => string;
630
-
631
- /**
632
- * @internal
633
- */
634
- export function createAssertStringify(): (input: unknown) => string {
635
- NoTransformConfigurationError("json.createAssertStringify");
636
- }
637
-
638
- /**
639
- * Creates a reusable {@link isStringify} function.
640
- *
641
- * @danger You must configure the generic argument `T`
642
- * @returns Nothing until you configure the generic argument `T`
643
- * @throws compile error
644
- *
645
- * @author Jeongho Nam - https://github.com/samchon
646
- */
647
- export function createIsStringify(): never;
648
-
649
- /**
650
- * Creates a reusable {@link isStringify} function.
651
- *
652
- * @template T Type of the input value
653
- * @returns A reusable `isStringify` function
654
- *
655
- * @author Jeongho Nam - https://github.com/samchon
656
- */
657
- export function createIsStringify<T>(): (input: unknown) => string | null;
658
-
659
- /**
660
- * @internal
661
- */
662
- export function createIsStringify(): (input: unknown) => string | null {
663
- NoTransformConfigurationError("json.createIsStringify");
664
- }
665
-
666
- /**
667
- * Creates a reusable {@link validateStringify} function.
668
- *
669
- * @danger You must configure the generic argument `T`
670
- * @returns Nothing until you configure the generic argument `T`
671
- * @throws compile error
672
- *
673
- * @author Jeongho Nam - https://github.com/samchon
674
- */
675
- export function createValidateStringify(): never;
676
-
677
- /**
678
- * Creates a reusable {@link validateStringify} function.
679
- *
680
- * @template T Type of the input value
681
- * @returns A reusable `validateStringify` function
682
-
683
- * @author Jeongho Nam - https://github.com/samchon
684
- */
685
- export function createValidateStringify<T>(): (
686
- input: unknown,
687
- ) => IValidation<string>;
688
-
689
- /**
690
- * @internal
691
- */
692
- export function createValidateStringify(): (
693
- input: unknown,
694
- ) => IValidation<string> {
695
- NoTransformConfigurationError("json.createValidateStringify");
696
- }
1
+ import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaCollection";
2
+ import { IJsonSchemaUnit } from "./schemas/json/IJsonSchemaUnit";
3
+
4
+ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
5
+
6
+ import { IValidation } from "./IValidation";
7
+ import { Primitive } from "./Primitive";
8
+ import { TypeGuardError } from "./TypeGuardError";
9
+
10
+ /* ===========================================================
11
+ JSON
12
+ - METADATA
13
+ - PARSE
14
+ - STRINGIFY
15
+ - FACTORY FUNCTIONS
16
+ ==============================================================
17
+ METADATA
18
+ ----------------------------------------------------------- */
19
+ /**
20
+ * > You must configure the generic argument `Types`.
21
+ *
22
+ * JSON Schemas Generator.
23
+ *
24
+ * Creates a JSON schema list which contains both main JSON schemas
25
+ * and components. Note that, all of the named types are stored in the
26
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
27
+ *
28
+ * Also, you can specify the OpenAPI version by configuring the second generic
29
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
30
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
31
+ *
32
+ * @template Types Tuple of target types
33
+ * @template Version Version of OpenAPI specification. Default is 3.1
34
+ * @return JSON schema collection
35
+ *
36
+ * @author Jeongho Nam - https://github.com/samchon
37
+ */
38
+ export function schemas(): never;
39
+
40
+ /**
41
+ * JSON Schemas Generator.
42
+ *
43
+ * Creates a JSON schema list which contains both main JSON schemas
44
+ * and components. Note that, all of the named types are stored in the
45
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
46
+ *
47
+ * Also, you can specify the OpenAPI version by configuring the second generic
48
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
49
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
50
+ *
51
+ * @template Types Tuple of target types
52
+ * @template Version Version of OpenAPI specification. Default is 3.1
53
+ * @return JSON schema collection
54
+ *
55
+ * @author Jeongho Nam - https://github.com/samchon
56
+ */
57
+ export function schemas<
58
+ Types extends unknown[],
59
+ Version extends "3.0" | "3.1" = "3.1",
60
+ >(): IJsonSchemaCollection<Version, Types>;
61
+
62
+ /**
63
+ * @internal
64
+ */
65
+ export function schemas(): never {
66
+ NoTransformConfigurationError("json.schemas");
67
+ }
68
+
69
+ /**
70
+ * > You must configure the generic argument `Type`.
71
+ *
72
+ * JSON schema generator.
73
+ *
74
+ * Creates a JSON schema unit which contains a main JSON schema and
75
+ * its components. Note that, all of the named types are stored in the
76
+ * {@link IJsonSchemaUnit.components} property for the `$ref` referencing.
77
+ *
78
+ * Also, you can specify the OpenAPI version by configuring the second
79
+ * generic argument `Version`. For reference, the default version is `"3.1"`,
80
+ * and key different of `"3.0"` and `"3.1"` is whether supporting the
81
+ * tuple type or not.
82
+ *
83
+ * @template Type Target type
84
+ * @template Version Version of OpenAPI specification. Default is 3.1
85
+ * @return JSON schema unit
86
+ *
87
+ * @author Jeongho Nam - https://github.com/samchon
88
+ */
89
+ export function schema(): never;
90
+
91
+ /**
92
+ * JSON schema generator.
93
+ *
94
+ * Creates a JSON schema unit which contains a main JSON schema and
95
+ * its components. Note that, all of the named types are stored in the
96
+ * {@link IJsonSchemaUnit.components} property for the `$ref` referencing.
97
+ *
98
+ * Also, you can specify the OpenAPI version by configuring the second
99
+ * generic argument `Version`. For reference, the default version is `"3.1"`,
100
+ * and key different of `"3.0"` and `"3.1"` is whether supporting the
101
+ * tuple type or not.
102
+ *
103
+ * @template Type Target type
104
+ * @template Version Version of OpenAPI specification. Default is 3.1
105
+ * @return JSON schema unit
106
+ *
107
+ * @author Jeongho Nam - https://github.com/samchon
108
+ */
109
+ export function schema<
110
+ Type extends unknown,
111
+ Version extends "3.0" | "3.1" = "3.1",
112
+ >(): IJsonSchemaUnit<Version, Type>;
113
+
114
+ /**
115
+ * @internal
116
+ */
117
+ export function schema(): never {
118
+ NoTransformConfigurationError("json.schema");
119
+ }
120
+
121
+ /* -----------------------------------------------------------
122
+ PARSE
123
+ ----------------------------------------------------------- */
124
+ /**
125
+ * > You must configure the generic argument `T`.
126
+ *
127
+ * Safe `JSON.parse()` function with type assertion.
128
+ *
129
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
130
+ * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
131
+ * to a `T` typed instance with type assertion.
132
+ *
133
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
134
+ * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
135
+ * there's no problem on the parsed value, the parsed value would be returned.
136
+ *
137
+ * @template T Expected type of parsed value
138
+ * @param input JSON string
139
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
140
+ * @returns Parsed value
141
+ *
142
+ * @author Jeongho Nam - https://github.com/samchon
143
+ */
144
+ export function assertParse(
145
+ input: string,
146
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
147
+ ): never;
148
+
149
+ /**
150
+ * Safe `JSON.parse()` function with type assertion.
151
+ *
152
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
153
+ * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
154
+ * to a `T` typed instance with type assertion.
155
+ *
156
+ * In such reason, when parsed JSON string value is not matched with the type `T`,
157
+ * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
158
+ * Otherwise, there's no problem on the parsed value, the parsed value would be
159
+ * returned.
160
+ *
161
+ * @template T Expected type of parsed value
162
+ * @param input JSON string
163
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
164
+ * @returns Parsed value
165
+ *
166
+ * @author Jeongho Nam - https://github.com/samchon
167
+ */
168
+ export function assertParse<T>(
169
+ input: string,
170
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
171
+ ): Primitive<T>;
172
+
173
+ /**
174
+ * @internal
175
+ */
176
+ export function assertParse<T>(): Primitive<T> {
177
+ NoTransformConfigurationError("json.assertParse");
178
+ }
179
+
180
+ /**
181
+ * > You must configure the generic argument `T`.
182
+ *
183
+ * Safe `JSON.parse()` function with type checking.
184
+ *
185
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
186
+ * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
187
+ * instance with type checking.
188
+ *
189
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
190
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
191
+ * value would be returned.
192
+ *
193
+ * @template T Expected type of parsed value
194
+ * @param input JSON string
195
+ * @returns Parsed value when exact type, otherwise `null`
196
+ *
197
+ * @author Jeongho Nam - https://github.com/samchon
198
+ */
199
+ export function isParse(input: string): never;
200
+
201
+ /**
202
+ * Safe `JSON.parse()` function with type checking.
203
+ *
204
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
205
+ * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
206
+ * instance with type checking.
207
+ *
208
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
209
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
210
+ * value would be returned.
211
+ *
212
+ * @template T Expected type of parsed value
213
+ * @param input JSON string
214
+ * @returns Parsed value when exact type, otherwise `null`
215
+ *
216
+ * @author Jeongho Nam - https://github.com/samchon
217
+ */
218
+ export function isParse<T>(input: string): Primitive<T> | null;
219
+
220
+ /**
221
+ * @internal
222
+ */
223
+ export function isParse<T>(): Primitive<T> | null {
224
+ NoTransformConfigurationError("json.isParse");
225
+ }
226
+
227
+ /**
228
+ * > You must configure the generic argument `T`.
229
+ *
230
+ * Safe `JSON.parse()` function with detailed type validation.
231
+ *
232
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
233
+ * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
234
+ * to a `T` typed instance with detailed type validation.
235
+ *
236
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
237
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
238
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
239
+ * property of the output {@link IValidation.ISuccess} instance.
240
+ *
241
+ * @template T Expected type of parsed value
242
+ * @param input JSON string
243
+ * @returns Validation result with JSON parsed value
244
+ *
245
+ * @author Jeongho Nam - https://github.com/samchon
246
+ */
247
+ export function validateParse(input: string): never;
248
+
249
+ /**
250
+ * Safe `JSON.parse()` function with detailed type validation.
251
+ *
252
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
253
+ * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
254
+ * to a `T` typed instance with detailed type validation.
255
+ *
256
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
257
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
258
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
259
+ * property of the output {@link IValidation.ISuccess} instance.
260
+ *
261
+ * @template T Expected type of parsed value
262
+ * @param input JSON string
263
+ * @returns Validation result with JSON parsed value
264
+ *
265
+ * @author Jeongho Nam - https://github.com/samchon
266
+ */
267
+ export function validateParse<T>(input: string): IValidation<Primitive<T>>;
268
+
269
+ /**
270
+ * @internal
271
+ */
272
+ export function validateParse<T>(): IValidation<Primitive<T>> {
273
+ NoTransformConfigurationError("json.validateParse");
274
+ }
275
+
276
+ /* -----------------------------------------------------------
277
+ STRINGIFY
278
+ ----------------------------------------------------------- */
279
+ /**
280
+ * 8x faster `JSON.stringify()` function.
281
+ *
282
+ * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
283
+ * faster than the native `JSON.stringify()` function. The 5x faster principle is
284
+ * because it writes an optimized JSON conversion plan, only for the type `T`.
285
+ *
286
+ * For reference, this `typia.json.stringify()` does not validate the input value type.
287
+ * It just believes that the input value is following the type `T`. Therefore, if you
288
+ * can't ensure the input value type, it would be better to call one of below
289
+ * functions instead.
290
+ *
291
+ * - {@link assertStringify}
292
+ * - {@link isStringify}
293
+ * - {@link validateStringify}
294
+ *
295
+ * @template T Type of the input value
296
+ * @param input A value to be converted
297
+ * @return JSON string value
298
+ *
299
+ * @author Jeongho Nam - https://github.com/samchon
300
+ */
301
+ export function stringify<T>(input: T): string;
302
+
303
+ /**
304
+ * @internal
305
+ */
306
+ export function stringify(): never {
307
+ NoTransformConfigurationError("json.stringify");
308
+ }
309
+
310
+ /**
311
+ * 5x faster `JSON.stringify()` function with type assertion.
312
+ *
313
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
314
+ * {@link stringify}. Therefore, it converts an input value to
315
+ * JSON (JavaScript Object Notation) string, with type assertion.
316
+ *
317
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
318
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
319
+ * there's no problem on the `input` value, JSON string would be returned.
320
+ *
321
+ * For reference, with type assertion, it is even 5x times faster than the native
322
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
323
+ * with confidence.
324
+ *
325
+ * @template T Type of the input value
326
+ * @param input A value to be asserted and converted
327
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
328
+ * @return JSON string value
329
+ *
330
+ * @author Jeongho Nam - https://github.com/samchon
331
+ */
332
+ export function assertStringify<T>(
333
+ input: T,
334
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
335
+ ): string;
336
+
337
+ /**
338
+ * 5x faster `JSON.stringify()` function with type assertion.
339
+ *
340
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
341
+ * {@link stringify}. Therefore, it converts an input value to
342
+ * JSON (JavaScript Object Notation) string, with type assertion.
343
+ *
344
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
345
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
346
+ * there's no problem on the `input` value, JSON string would be returned.
347
+ *
348
+ * For reference, with type assertion, it is even 5x times faster than the native
349
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
350
+ * with confidence.
351
+ *
352
+ * @template T Type of the input value
353
+ * @param input A value to be asserted and converted
354
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
355
+ * @return JSON string value
356
+ *
357
+ * @author Jeongho Nam - https://github.com/samchon
358
+ */
359
+ export function assertStringify<T>(
360
+ input: T,
361
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
362
+ ): unknown;
363
+
364
+ /**
365
+ * @internal
366
+ */
367
+ export function assertStringify(): string {
368
+ NoTransformConfigurationError("json.assertStringify");
369
+ }
370
+
371
+ /**
372
+ * 7x faster `JSON.stringify()` function with type checking.
373
+ *
374
+ * `typia.json.stringify()` is a combination function of {@link is} and
375
+ * {@link stringify}. Therefore, it converts an input value to JSON
376
+ * (JavaScript Object Notation) string, with type checking.
377
+ *
378
+ * In such reason, when `input` value is not matched with the type `T`, it returns
379
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
380
+ * would be returned.
381
+ *
382
+ * For reference, with type checking, it is even 7x times faster than the native
383
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
384
+ * with confidence.
385
+ *
386
+ * @template T Type of the input value
387
+ * @param input A value to be checked and converted
388
+ * @return JSON string value when exact type, otherwise null
389
+ *
390
+ * @author Jeongho Nam - https://github.com/samchon
391
+ */
392
+ export function isStringify<T>(input: T): string | null;
393
+
394
+ /**
395
+ * 7x faster `JSON.stringify()` function with type checking.
396
+ *
397
+ * `typia.json.isStringify()` is a combination function of {@link is} and
398
+ * {@link stringify}. Therefore, it converts an input value to JSON
399
+ * (JavaScript Object Notation) string, with type checking.
400
+ *
401
+ * In such reason, when `input` value is not matched with the type `T`, it returns
402
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
403
+ * would be returned.
404
+ *
405
+ * For reference, with type checking, it is even 7x times faster than the native
406
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
407
+ * with confidence.
408
+ *
409
+ * @template T Type of the input value
410
+ * @param input A value to be checked and converted
411
+ * @return JSON string value when exact type, otherwise null
412
+ *
413
+ * @author Jeongho Nam - https://github.com/samchon
414
+ */
415
+ export function isStringify<T>(input: unknown): string | null;
416
+
417
+ /**
418
+ * @internal
419
+ */
420
+ export function isStringify(): string | null {
421
+ NoTransformConfigurationError("json.isStringify");
422
+ }
423
+
424
+ /**
425
+ * 5x faster `JSON.stringify()` function with detailed type validation.
426
+ *
427
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
428
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
429
+ * Notation) string, with detailed type validation.
430
+ *
431
+ * In such reason, when `input` value is not matched with the type `T`, it returns
432
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
433
+ * there's no problem on the `input` value, JSON string would be stored in `data`
434
+ * property of the output {@link IValidation.ISuccess} instance.
435
+ *
436
+ * For reference, with detailed type validation, it is even 5x times faster than the
437
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
438
+ * conversion with confidence.
439
+ *
440
+ * @template T Type of the input value
441
+ * @param input A value to be checked and converted
442
+ * @returns Validation result with JSON string value
443
+ *
444
+ * @author Jeongho Nam - https://github.com/samchon
445
+ */
446
+ export function validateStringify<T>(input: T): IValidation<string>;
447
+
448
+ /**
449
+ * 5x faster `JSON.stringify()` function with detailed type validation.
450
+ *
451
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
452
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
453
+ * Notation) string, with detailed type validation.
454
+ *
455
+ * In such reason, when `input` value is not matched with the type `T`, it returns
456
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
457
+ * there's no problem on the `input` value, JSON string would be stored in `data`
458
+ * property of the output {@link IValidation.ISuccess} instance.
459
+ *
460
+ * For reference, with detailed type validation, it is even 5x times faster than the
461
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
462
+ * conversion with confidence.
463
+ *
464
+ * @template T Type of the input value
465
+ * @param input A value to be checked and converted
466
+ * @returns Validation result with JSON string value
467
+ *
468
+ * @author Jeongho Nam - https://github.com/samchon
469
+ */
470
+ export function validateStringify<T>(input: unknown): IValidation<string>;
471
+
472
+ /**
473
+ * @internal
474
+ */
475
+ export function validateStringify(): IValidation<string> {
476
+ NoTransformConfigurationError("json.validateStringify");
477
+ }
478
+
479
+ /* -----------------------------------------------------------
480
+ FACTORY FUNCTIONS
481
+ ----------------------------------------------------------- */
482
+ /**
483
+ * Creates a reusable {@link isParse} function.
484
+ *
485
+ * @danger You must configure the generic argument `T`
486
+ * @returns Nothing until you configure the generic argument `T`
487
+ * @throws compile error
488
+ *
489
+ * @author Jeongho Nam - https://github.com/samchon
490
+ */
491
+ export function createIsParse(): never;
492
+
493
+ /**
494
+ * Creates a reusable {@link isParse} function.
495
+ *
496
+ * @template T Expected type of parsed value
497
+ * @returns A reusable `isParse` function
498
+ *
499
+ * @author Jeongho Nam - https://github.com/samchon
500
+ */
501
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null;
502
+
503
+ /**
504
+ * @internal
505
+ */
506
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null {
507
+ NoTransformConfigurationError("json.createIsParse");
508
+ }
509
+
510
+ /**
511
+ * Creates a reusable {@link assertParse} function.
512
+ *
513
+ * @danger You must configure the generic argument `T`
514
+ * @returns Nothing until you configure the generic argument `T`
515
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
516
+ * @throws compile error
517
+ *
518
+ * @author Jeongho Nam - https://github.com/samchon
519
+ */
520
+ export function createAssertParse(
521
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
522
+ ): never;
523
+
524
+ /**
525
+ * Creates a reusable {@link assertParse} function.
526
+ *
527
+ * @template T Expected type of parsed value
528
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
529
+ * @returns A reusable `assertParse` function
530
+ *
531
+ * @author Jeongho Nam - https://github.com/samchon
532
+ */
533
+ export function createAssertParse<T>(
534
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
535
+ ): (input: string) => Primitive<T>;
536
+
537
+ /**
538
+ * @internal
539
+ */
540
+ export function createAssertParse<T>(): (input: string) => Primitive<T> {
541
+ NoTransformConfigurationError("json.createAssertParse");
542
+ }
543
+
544
+ /**
545
+ * Creates a reusable {@link validateParse} function.
546
+ *
547
+ * @danger You must configure the generic argument `T`
548
+ * @returns Nothing until you configure the generic argument `T`
549
+ * @throws compile error
550
+ *
551
+ * @author Jeongho Nam - https://github.com/samchon
552
+ */
553
+ export function createValidateParse(): never;
554
+
555
+ /**
556
+ * Creates a reusable {@link validateParse} function.
557
+ *
558
+ * @template T Expected type of parsed value
559
+ * @returns A reusable `validateParse` function
560
+ *
561
+ * @author Jeongho Nam - https://github.com/samchon
562
+ */
563
+ export function createValidateParse<T>(): (
564
+ input: string,
565
+ ) => IValidation<Primitive<T>>;
566
+
567
+ /**
568
+ * @internal
569
+ */
570
+ export function createValidateParse<T>(): (
571
+ input: string,
572
+ ) => IValidation<Primitive<T>> {
573
+ NoTransformConfigurationError("json.createValidateParse");
574
+ }
575
+
576
+ /**
577
+ * Creates a reusable {@link stringify} function.
578
+ *
579
+ * @danger You must configure the generic argument `T`
580
+ * @returns Nothing until you configure the generic argument `T`
581
+ * @throws compile error
582
+ *
583
+ * @author Jeongho Nam - https://github.com/samchon
584
+ */
585
+ export function createStringify(): never;
586
+
587
+ /**
588
+ * Creates a reusable {@link stringify} function.
589
+ *
590
+ * @template T Type of the input value
591
+ * @returns A reusable `stringify` function
592
+ *
593
+ * @author Jeongho Nam - https://github.com/samchon
594
+ */
595
+ export function createStringify<T>(): (input: T) => string;
596
+
597
+ /**
598
+ * @internal
599
+ */
600
+ export function createStringify<T>(): (input: T) => string {
601
+ NoTransformConfigurationError("json.createStringify");
602
+ }
603
+
604
+ /**
605
+ * Creates a reusable {@link assertStringify} function.
606
+ *
607
+ * @danger You must configure the generic argument `T`
608
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
609
+ * @returns Nothing until you configure the generic argument `T`
610
+ * @throws compile error
611
+ *
612
+ * @author Jeongho Nam - https://github.com/samchon
613
+ */
614
+ export function createAssertStringify(
615
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
616
+ ): never;
617
+
618
+ /**
619
+ * Creates a reusable {@link assertStringify} function.
620
+ *
621
+ * @template T Type of the input value
622
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
623
+ * @returns A reusable `assertStringify` function
624
+ *
625
+ * @author Jeongho Nam - https://github.com/samchon
626
+ */
627
+ export function createAssertStringify<T>(
628
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
629
+ ): (input: unknown) => string;
630
+
631
+ /**
632
+ * @internal
633
+ */
634
+ export function createAssertStringify(): (input: unknown) => string {
635
+ NoTransformConfigurationError("json.createAssertStringify");
636
+ }
637
+
638
+ /**
639
+ * Creates a reusable {@link isStringify} function.
640
+ *
641
+ * @danger You must configure the generic argument `T`
642
+ * @returns Nothing until you configure the generic argument `T`
643
+ * @throws compile error
644
+ *
645
+ * @author Jeongho Nam - https://github.com/samchon
646
+ */
647
+ export function createIsStringify(): never;
648
+
649
+ /**
650
+ * Creates a reusable {@link isStringify} function.
651
+ *
652
+ * @template T Type of the input value
653
+ * @returns A reusable `isStringify` function
654
+ *
655
+ * @author Jeongho Nam - https://github.com/samchon
656
+ */
657
+ export function createIsStringify<T>(): (input: unknown) => string | null;
658
+
659
+ /**
660
+ * @internal
661
+ */
662
+ export function createIsStringify(): (input: unknown) => string | null {
663
+ NoTransformConfigurationError("json.createIsStringify");
664
+ }
665
+
666
+ /**
667
+ * Creates a reusable {@link validateStringify} function.
668
+ *
669
+ * @danger You must configure the generic argument `T`
670
+ * @returns Nothing until you configure the generic argument `T`
671
+ * @throws compile error
672
+ *
673
+ * @author Jeongho Nam - https://github.com/samchon
674
+ */
675
+ export function createValidateStringify(): never;
676
+
677
+ /**
678
+ * Creates a reusable {@link validateStringify} function.
679
+ *
680
+ * @template T Type of the input value
681
+ * @returns A reusable `validateStringify` function
682
+
683
+ * @author Jeongho Nam - https://github.com/samchon
684
+ */
685
+ export function createValidateStringify<T>(): (
686
+ input: unknown,
687
+ ) => IValidation<string>;
688
+
689
+ /**
690
+ * @internal
691
+ */
692
+ export function createValidateStringify(): (
693
+ input: unknown,
694
+ ) => IValidation<string> {
695
+ NoTransformConfigurationError("json.createValidateStringify");
696
+ }