typia 9.4.0 → 9.5.0-dev.20250710

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) 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/programmers/internal/json_schema_title.js +2 -8
  8. package/lib/programmers/internal/json_schema_title.js.map +1 -1
  9. package/lib/programmers/internal/json_schema_title.mjs +1 -7
  10. package/package.json +1 -1
  11. package/src/AssertionGuard.ts +39 -39
  12. package/src/CamelCase.ts +75 -75
  13. package/src/IRandomGenerator.ts +49 -49
  14. package/src/IReadableURLSearchParams.ts +9 -9
  15. package/src/IValidation.ts +1 -1
  16. package/src/PascalCase.ts +71 -71
  17. package/src/Primitive.ts +92 -92
  18. package/src/Resolved.ts +74 -74
  19. package/src/SnakeCase.ts +126 -126
  20. package/src/TypeGuardError.ts +179 -179
  21. package/src/executable/TypiaGenerateWizard.ts +83 -83
  22. package/src/executable/TypiaPatchWizard.ts +45 -45
  23. package/src/executable/TypiaSetupWizard.ts +171 -171
  24. package/src/executable/setup/ArgumentParser.ts +42 -42
  25. package/src/executable/setup/CommandExecutor.ts +8 -8
  26. package/src/executable/setup/FileRetriever.ts +19 -19
  27. package/src/executable/setup/PackageManager.ts +87 -87
  28. package/src/executable/setup/PluginConfigurator.ts +74 -74
  29. package/src/executable/typia.ts +55 -55
  30. package/src/factories/CommentFactory.ts +79 -79
  31. package/src/factories/ExpressionFactory.ts +219 -219
  32. package/src/factories/IdentifierFactory.ts +89 -89
  33. package/src/factories/JsonMetadataFactory.ts +83 -83
  34. package/src/factories/LiteralFactory.ts +52 -52
  35. package/src/factories/MetadataCollection.ts +278 -278
  36. package/src/factories/MetadataCommentTagFactory.ts +648 -648
  37. package/src/factories/MetadataFactory.ts +404 -404
  38. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  39. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  40. package/src/factories/NumericRangeFactory.ts +72 -72
  41. package/src/factories/ProtobufFactory.ts +875 -875
  42. package/src/factories/StatementFactory.ts +90 -90
  43. package/src/factories/TemplateFactory.ts +64 -64
  44. package/src/factories/TypeFactory.ts +140 -140
  45. package/src/factories/ValueFactory.ts +12 -12
  46. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  47. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  48. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  49. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  50. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  51. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  52. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  53. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  54. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  55. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  56. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  57. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  58. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  59. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  60. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  61. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  62. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  63. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  64. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  65. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  66. package/src/factories/internal/metadata/iterate_metadata_native.ts +264 -264
  67. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  68. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  69. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  70. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  71. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  72. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  73. package/src/functional.ts +740 -740
  74. package/src/http.ts +1040 -1040
  75. package/src/index.ts +4 -4
  76. package/src/internal/_IProtobufWriter.ts +18 -18
  77. package/src/internal/_ProtobufReader.ts +194 -194
  78. package/src/internal/_ProtobufSizer.ts +145 -145
  79. package/src/internal/_ProtobufWriter.ts +145 -145
  80. package/src/internal/_accessExpressionAsString.ts +46 -46
  81. package/src/internal/_assertGuard.ts +13 -13
  82. package/src/internal/_createStandardSchema.ts +134 -134
  83. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  84. package/src/internal/_httpFormDataReadArray.ts +4 -4
  85. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  86. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  87. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  88. package/src/internal/_httpFormDataReadFile.ts +10 -10
  89. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  90. package/src/internal/_httpFormDataReadString.ts +10 -10
  91. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  92. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  93. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  94. package/src/internal/_httpParameterReadBigint.ts +10 -10
  95. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  96. package/src/internal/_httpParameterReadNumber.ts +7 -7
  97. package/src/internal/_httpParameterReadString.ts +2 -2
  98. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  99. package/src/internal/_httpQueryReadArray.ts +4 -4
  100. package/src/internal/_httpQueryReadBigint.ts +12 -12
  101. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  102. package/src/internal/_httpQueryReadNumber.ts +9 -9
  103. package/src/internal/_httpQueryReadString.ts +4 -4
  104. package/src/internal/_isBetween.ts +2 -2
  105. package/src/internal/_isBigintString.ts +8 -8
  106. package/src/internal/_isFormatByte.ts +7 -7
  107. package/src/internal/_isFormatDate.ts +3 -3
  108. package/src/internal/_isFormatDateTime.ts +4 -4
  109. package/src/internal/_isFormatDuration.ts +4 -4
  110. package/src/internal/_isFormatEmail.ts +4 -4
  111. package/src/internal/_isFormatHostname.ts +4 -4
  112. package/src/internal/_isFormatIdnEmail.ts +4 -4
  113. package/src/internal/_isFormatIdnHostname.ts +4 -4
  114. package/src/internal/_isFormatIpv4.ts +4 -4
  115. package/src/internal/_isFormatIpv6.ts +4 -4
  116. package/src/internal/_isFormatIri.ts +3 -3
  117. package/src/internal/_isFormatIriReference.ts +4 -4
  118. package/src/internal/_isFormatJsonPointer.ts +3 -3
  119. package/src/internal/_isFormatPassword.ts +1 -1
  120. package/src/internal/_isFormatRegex.ts +8 -8
  121. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  122. package/src/internal/_isFormatTime.ts +4 -4
  123. package/src/internal/_isFormatUri.ts +6 -6
  124. package/src/internal/_isFormatUriReference.ts +5 -5
  125. package/src/internal/_isFormatUriTemplate.ts +4 -4
  126. package/src/internal/_isFormatUrl.ts +4 -4
  127. package/src/internal/_isFormatUuid.ts +3 -3
  128. package/src/internal/_isTypeFloat.ts +5 -5
  129. package/src/internal/_isTypeInt32.ts +5 -5
  130. package/src/internal/_isTypeInt64.ts +5 -5
  131. package/src/internal/_isTypeUint32.ts +5 -5
  132. package/src/internal/_isTypeUint64.ts +5 -5
  133. package/src/internal/_isUniqueItems.ts +159 -159
  134. package/src/internal/_jsonStringifyNumber.ts +12 -12
  135. package/src/internal/_jsonStringifyRest.ts +3 -3
  136. package/src/internal/_jsonStringifyString.ts +42 -42
  137. package/src/internal/_jsonStringifyTail.ts +2 -2
  138. package/src/internal/_llmApplicationFinalize.ts +20 -20
  139. package/src/internal/_miscCloneAny.ts +46 -46
  140. package/src/internal/_notationAny.ts +37 -37
  141. package/src/internal/_notationCamel.ts +13 -13
  142. package/src/internal/_notationPascal.ts +8 -8
  143. package/src/internal/_notationSnake.ts +43 -43
  144. package/src/internal/_randomArray.ts +21 -21
  145. package/src/internal/_randomBigint.ts +6 -6
  146. package/src/internal/_randomBoolean.ts +1 -1
  147. package/src/internal/_randomFormatByte.ts +3 -3
  148. package/src/internal/_randomFormatDate.ts +18 -18
  149. package/src/internal/_randomFormatDatetime.ts +16 -16
  150. package/src/internal/_randomFormatDuration.ts +27 -27
  151. package/src/internal/_randomFormatEmail.ts +11 -11
  152. package/src/internal/_randomFormatHostname.ts +6 -6
  153. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  154. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  155. package/src/internal/_randomFormatIpv4.ts +11 -11
  156. package/src/internal/_randomFormatIpv6.ts +11 -11
  157. package/src/internal/_randomFormatIri.ts +3 -3
  158. package/src/internal/_randomFormatIriReference.ts +3 -3
  159. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  160. package/src/internal/_randomFormatPassword.ts +8 -8
  161. package/src/internal/_randomFormatRegex.ts +4 -4
  162. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  163. package/src/internal/_randomFormatTime.ts +14 -14
  164. package/src/internal/_randomFormatUri.ts +3 -3
  165. package/src/internal/_randomFormatUriReference.ts +3 -3
  166. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  167. package/src/internal/_randomFormatUrl.ts +11 -11
  168. package/src/internal/_randomFormatUuid.ts +6 -6
  169. package/src/internal/_randomInteger.ts +53 -53
  170. package/src/internal/_randomNumber.ts +80 -80
  171. package/src/internal/_randomPattern.ts +10 -10
  172. package/src/internal/_randomPick.ts +9 -9
  173. package/src/internal/_randomString.ts +24 -24
  174. package/src/internal/_throwTypeGuardError.ts +5 -5
  175. package/src/internal/_validateReport.ts +13 -13
  176. package/src/internal/private/__notationCapitalize.ts +2 -2
  177. package/src/internal/private/__notationUnsnake.ts +24 -24
  178. package/src/json.ts +696 -696
  179. package/src/llm.ts +506 -506
  180. package/src/misc.ts +651 -651
  181. package/src/module.ts +936 -936
  182. package/src/notations.ts +820 -820
  183. package/src/programmers/AssertProgrammer.ts +454 -454
  184. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  185. package/src/programmers/FeatureProgrammer.ts +627 -627
  186. package/src/programmers/ImportProgrammer.ts +185 -185
  187. package/src/programmers/IsProgrammer.ts +273 -273
  188. package/src/programmers/RandomProgrammer.ts +1190 -1190
  189. package/src/programmers/TypiaProgrammer.ts +175 -175
  190. package/src/programmers/ValidateProgrammer.ts +448 -448
  191. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  192. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  193. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  194. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  195. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  196. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  197. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  198. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  199. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  200. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  201. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  202. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  203. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  204. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  205. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  206. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  207. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  208. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  209. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  210. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  211. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  212. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  213. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  214. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  215. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  216. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  217. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  218. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  219. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  220. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  221. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  222. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  223. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  224. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  225. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  226. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  227. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  228. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  229. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  230. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  231. package/src/programmers/internal/check_array_length.ts +47 -47
  232. package/src/programmers/internal/check_bigint.ts +50 -50
  233. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  234. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  235. package/src/programmers/internal/check_everything.ts +23 -23
  236. package/src/programmers/internal/check_native.ts +27 -27
  237. package/src/programmers/internal/check_number.ts +112 -112
  238. package/src/programmers/internal/check_object.ts +75 -75
  239. package/src/programmers/internal/check_string.ts +50 -50
  240. package/src/programmers/internal/check_template.ts +48 -48
  241. package/src/programmers/internal/check_union_array_like.ts +335 -335
  242. package/src/programmers/internal/decode_union_object.ts +116 -116
  243. package/src/programmers/internal/feature_object_entries.ts +61 -61
  244. package/src/programmers/internal/json_schema_alias.ts +47 -47
  245. package/src/programmers/internal/json_schema_array.ts +45 -45
  246. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  247. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  248. package/src/programmers/internal/json_schema_constant.ts +26 -26
  249. package/src/programmers/internal/json_schema_description.ts +12 -12
  250. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  251. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  252. package/src/programmers/internal/json_schema_native.ts +33 -33
  253. package/src/programmers/internal/json_schema_number.ts +15 -15
  254. package/src/programmers/internal/json_schema_object.ts +158 -158
  255. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  256. package/src/programmers/internal/json_schema_station.ts +185 -185
  257. package/src/programmers/internal/json_schema_string.ts +15 -15
  258. package/src/programmers/internal/json_schema_template.ts +55 -55
  259. package/src/programmers/internal/json_schema_title.ts +13 -20
  260. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  261. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  262. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  263. package/src/programmers/internal/prune_object_properties.ts +71 -71
  264. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  265. package/src/programmers/internal/stringify_native.ts +7 -7
  266. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  267. package/src/programmers/internal/template_to_pattern.ts +23 -23
  268. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  269. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  270. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  271. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  272. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  273. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  274. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -26
  275. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  276. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  277. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  278. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  279. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  280. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  281. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  282. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  283. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  284. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  285. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  286. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  287. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  288. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  289. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  290. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  291. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  292. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  293. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  294. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  295. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  296. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  297. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  298. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  299. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  300. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  301. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  302. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  303. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  304. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  305. package/src/protobuf.ts +861 -861
  306. package/src/reflect.ts +50 -50
  307. package/src/schemas/json/IJsonApplication.ts +77 -77
  308. package/src/schemas/json/IJsonSchemaCollection.ts +195 -195
  309. package/src/schemas/json/IJsonSchemaUnit.ts +250 -250
  310. package/src/schemas/json/__IJsonApplication.ts +63 -63
  311. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  312. package/src/schemas/metadata/IMetadata.ts +35 -35
  313. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  314. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  315. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  316. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  317. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  318. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  319. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  320. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  321. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  322. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  323. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  324. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  325. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  326. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  327. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  328. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  329. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  330. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  331. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  332. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  333. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  334. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  335. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  336. package/src/schemas/metadata/Metadata.ts +687 -687
  337. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  338. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  339. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  340. package/src/schemas/metadata/MetadataArray.ts +49 -49
  341. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  342. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  343. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  344. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  345. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  346. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  347. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  348. package/src/schemas/metadata/MetadataMap.ts +48 -48
  349. package/src/schemas/metadata/MetadataNative.ts +44 -44
  350. package/src/schemas/metadata/MetadataObject.ts +48 -48
  351. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  352. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  353. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  354. package/src/schemas/metadata/MetadataSet.ts +45 -45
  355. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  356. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  357. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  358. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  359. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  360. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  361. package/src/tags/Constant.ts +15 -15
  362. package/src/tags/ContentMediaType.ts +10 -10
  363. package/src/tags/Default.ts +22 -22
  364. package/src/tags/Example.ts +24 -24
  365. package/src/tags/Examples.ts +16 -16
  366. package/src/tags/ExclusiveMaximum.ts +23 -23
  367. package/src/tags/ExclusiveMinimum.ts +23 -23
  368. package/src/tags/Format.ts +50 -50
  369. package/src/tags/JsonSchemaPlugin.ts +8 -8
  370. package/src/tags/MaxItems.ts +12 -12
  371. package/src/tags/MaxLength.ts +12 -12
  372. package/src/tags/Maximum.ts +19 -19
  373. package/src/tags/MinItems.ts +12 -12
  374. package/src/tags/MinLength.ts +12 -12
  375. package/src/tags/Minimum.ts +19 -19
  376. package/src/tags/MultipleOf.ts +21 -21
  377. package/src/tags/Pattern.ts +31 -31
  378. package/src/tags/Sequence.ts +10 -10
  379. package/src/tags/TagBase.ts +82 -82
  380. package/src/tags/Type.ts +37 -37
  381. package/src/tags/UniqueItems.ts +14 -14
  382. package/src/tags/index.ts +21 -21
  383. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  384. package/src/transform.ts +35 -35
  385. package/src/transformers/CallExpressionTransformer.ts +554 -554
  386. package/src/transformers/FileTransformer.ts +136 -136
  387. package/src/transformers/IProgrammerProps.ts +11 -11
  388. package/src/transformers/ITransformOptions.ts +62 -62
  389. package/src/transformers/ITransformProps.ts +9 -9
  390. package/src/transformers/ITypiaContext.ts +18 -18
  391. package/src/transformers/ImportTransformer.ts +81 -81
  392. package/src/transformers/NoTransformConfigurationError.ts +18 -18
  393. package/src/transformers/NodeTransformer.ts +17 -17
  394. package/src/transformers/TransformerError.ts +60 -60
  395. package/src/transformers/features/AssertTransformer.ts +24 -24
  396. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  397. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  398. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  399. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  400. package/src/transformers/features/IsTransformer.ts +18 -18
  401. package/src/transformers/features/RandomTransformer.ts +41 -41
  402. package/src/transformers/features/ValidateTransformer.ts +18 -18
  403. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  404. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  405. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  406. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  407. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  408. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  409. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  410. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  411. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  412. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  413. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  414. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  415. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  416. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  417. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  418. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  419. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  420. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  421. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  422. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  423. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  424. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  425. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  426. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  427. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  428. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  429. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  430. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  431. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  432. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  433. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  434. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  435. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  436. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  437. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  438. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  439. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  440. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  441. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  442. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -135
  443. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  444. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  445. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  446. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  447. package/src/transformers/features/llm/LlmApplicationTransformer.ts +145 -145
  448. package/src/transformers/features/llm/LlmControllerTransformer.ts +93 -93
  449. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  450. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  451. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  452. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  453. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  454. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  455. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  456. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  457. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  458. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  459. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  460. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  461. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  462. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  463. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  464. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  465. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  466. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  467. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  468. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  469. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  470. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  471. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  472. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  473. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  474. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  475. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  476. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  477. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  478. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  479. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  480. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  481. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  482. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  483. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  484. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  485. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  486. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  487. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  488. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  489. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  490. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  491. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  492. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  493. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  494. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  495. package/src/transformers/internal/GenericTransformer.ts +101 -101
  496. package/src/typings/Atomic.ts +13 -13
  497. package/src/typings/ClassProperties.ts +5 -5
  498. package/src/typings/Customizable.ts +5 -5
  499. package/src/typings/Equal.ts +18 -18
  500. package/src/typings/IsTuple.ts +9 -9
  501. package/src/typings/NativeClass.ts +23 -23
  502. package/src/typings/OmitNever.ts +3 -3
  503. package/src/typings/ProtobufAtomic.ts +19 -19
  504. package/src/typings/SpecialFields.ts +3 -3
  505. package/src/typings/ValidationPipe.ts +9 -9
  506. package/src/typings/ValueOf.ts +20 -20
  507. package/src/typings/Writable.ts +11 -11
  508. package/src/utils/ArrayUtil.ts +41 -41
  509. package/src/utils/Escaper.ts +50 -50
  510. package/src/utils/MapUtil.ts +14 -14
  511. package/src/utils/NamingConvention.ts +94 -94
  512. package/src/utils/PatternUtil.ts +29 -29
  513. package/src/utils/ProtobufNameEncoder.ts +32 -32
  514. package/src/utils/Singleton.ts +16 -16
  515. 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
+ }