typia 7.6.2-dev.20250205 → 7.6.2

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 (508) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +150 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/typia.js +15 -15
  5. package/package.json +1 -1
  6. package/src/AssertionGuard.ts +1 -1
  7. package/src/CamelCase.ts +75 -75
  8. package/src/IRandomGenerator.ts +49 -49
  9. package/src/IReadableURLSearchParams.ts +9 -9
  10. package/src/IValidation.ts +21 -21
  11. package/src/PascalCase.ts +71 -71
  12. package/src/Primitive.ts +92 -92
  13. package/src/Resolved.ts +74 -74
  14. package/src/SnakeCase.ts +126 -126
  15. package/src/TypeGuardError.ts +37 -37
  16. package/src/executable/TypiaGenerateWizard.ts +83 -83
  17. package/src/executable/TypiaPatchWizard.ts +45 -45
  18. package/src/executable/TypiaSetupWizard.ts +179 -179
  19. package/src/executable/setup/ArgumentParser.ts +42 -42
  20. package/src/executable/setup/CommandExecutor.ts +8 -8
  21. package/src/executable/setup/FileRetriever.ts +19 -19
  22. package/src/executable/setup/PackageManager.ts +87 -87
  23. package/src/executable/setup/PluginConfigurator.ts +69 -69
  24. package/src/executable/typia.ts +55 -55
  25. package/src/factories/CommentFactory.ts +79 -79
  26. package/src/factories/ExpressionFactory.ts +216 -216
  27. package/src/factories/IdentifierFactory.ts +89 -89
  28. package/src/factories/JsonMetadataFactory.ts +83 -83
  29. package/src/factories/LiteralFactory.ts +52 -52
  30. package/src/factories/MetadataCollection.ts +278 -278
  31. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  32. package/src/factories/MetadataFactory.ts +404 -404
  33. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  34. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  35. package/src/factories/NumericRangeFactory.ts +72 -72
  36. package/src/factories/ProtobufFactory.ts +875 -875
  37. package/src/factories/StatementFactory.ts +90 -90
  38. package/src/factories/TemplateFactory.ts +64 -64
  39. package/src/factories/TypeFactory.ts +140 -140
  40. package/src/factories/ValueFactory.ts +12 -12
  41. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  42. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  43. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  44. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  45. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  46. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  47. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  48. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  49. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  50. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  51. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  52. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  53. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  54. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  55. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  56. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  57. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  58. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  59. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  60. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  61. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  62. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  63. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  64. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  65. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  66. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  67. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  68. package/src/functional.ts +750 -750
  69. package/src/http.ts +1047 -1047
  70. package/src/index.ts +4 -4
  71. package/src/internal/_IProtobufWriter.ts +18 -18
  72. package/src/internal/_ProtobufReader.ts +194 -194
  73. package/src/internal/_ProtobufSizer.ts +145 -145
  74. package/src/internal/_ProtobufWriter.ts +145 -145
  75. package/src/internal/_accessExpressionAsString.ts +46 -46
  76. package/src/internal/_assertGuard.ts +13 -13
  77. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  78. package/src/internal/_httpFormDataReadArray.ts +4 -4
  79. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  80. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  81. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  82. package/src/internal/_httpFormDataReadFile.ts +10 -10
  83. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  84. package/src/internal/_httpFormDataReadString.ts +10 -10
  85. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  86. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  87. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  88. package/src/internal/_httpParameterReadBigint.ts +10 -10
  89. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  90. package/src/internal/_httpParameterReadNumber.ts +7 -7
  91. package/src/internal/_httpParameterReadString.ts +2 -2
  92. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  93. package/src/internal/_httpQueryReadArray.ts +4 -4
  94. package/src/internal/_httpQueryReadBigint.ts +12 -12
  95. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  96. package/src/internal/_httpQueryReadNumber.ts +9 -9
  97. package/src/internal/_httpQueryReadString.ts +4 -4
  98. package/src/internal/_isBetween.ts +2 -2
  99. package/src/internal/_isBigintString.ts +8 -8
  100. package/src/internal/_isFormatByte.ts +7 -7
  101. package/src/internal/_isFormatDate.ts +3 -3
  102. package/src/internal/_isFormatDateTime.ts +4 -4
  103. package/src/internal/_isFormatDuration.ts +4 -4
  104. package/src/internal/_isFormatEmail.ts +4 -4
  105. package/src/internal/_isFormatHostname.ts +4 -4
  106. package/src/internal/_isFormatIdnEmail.ts +4 -4
  107. package/src/internal/_isFormatIdnHostname.ts +4 -4
  108. package/src/internal/_isFormatIpv4.ts +4 -4
  109. package/src/internal/_isFormatIpv6.ts +4 -4
  110. package/src/internal/_isFormatIri.ts +3 -3
  111. package/src/internal/_isFormatIriReference.ts +4 -4
  112. package/src/internal/_isFormatJsonPointer.ts +3 -3
  113. package/src/internal/_isFormatPassword.ts +1 -1
  114. package/src/internal/_isFormatRegex.ts +8 -8
  115. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  116. package/src/internal/_isFormatTime.ts +4 -4
  117. package/src/internal/_isFormatUri.ts +6 -6
  118. package/src/internal/_isFormatUriReference.ts +5 -5
  119. package/src/internal/_isFormatUriTemplate.ts +4 -4
  120. package/src/internal/_isFormatUrl.ts +4 -4
  121. package/src/internal/_isFormatUuid.ts +3 -3
  122. package/src/internal/_isTypeFloat.ts +5 -5
  123. package/src/internal/_isTypeInt32.ts +5 -5
  124. package/src/internal/_isTypeInt64.ts +5 -5
  125. package/src/internal/_isTypeUint32.ts +5 -5
  126. package/src/internal/_isTypeUint64.ts +5 -5
  127. package/src/internal/_isUniqueItems.ts +159 -159
  128. package/src/internal/_jsonStringifyNumber.ts +12 -12
  129. package/src/internal/_jsonStringifyRest.ts +3 -3
  130. package/src/internal/_jsonStringifyString.ts +42 -42
  131. package/src/internal/_jsonStringifyTail.ts +2 -2
  132. package/src/internal/_llmApplicationFinalize.ts +20 -20
  133. package/src/internal/_miscCloneAny.ts +46 -46
  134. package/src/internal/_notationAny.ts +37 -37
  135. package/src/internal/_notationCamel.ts +13 -13
  136. package/src/internal/_notationPascal.ts +8 -8
  137. package/src/internal/_notationSnake.ts +43 -43
  138. package/src/internal/_randomArray.ts +21 -21
  139. package/src/internal/_randomBigint.ts +6 -6
  140. package/src/internal/_randomBoolean.ts +1 -1
  141. package/src/internal/_randomFormatByte.ts +3 -3
  142. package/src/internal/_randomFormatDate.ts +18 -18
  143. package/src/internal/_randomFormatDatetime.ts +16 -16
  144. package/src/internal/_randomFormatDuration.ts +27 -27
  145. package/src/internal/_randomFormatEmail.ts +11 -11
  146. package/src/internal/_randomFormatHostname.ts +6 -6
  147. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  148. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  149. package/src/internal/_randomFormatIpv4.ts +11 -11
  150. package/src/internal/_randomFormatIpv6.ts +11 -11
  151. package/src/internal/_randomFormatIri.ts +3 -3
  152. package/src/internal/_randomFormatIriReference.ts +3 -3
  153. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  154. package/src/internal/_randomFormatPassword.ts +8 -8
  155. package/src/internal/_randomFormatRegex.ts +4 -4
  156. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  157. package/src/internal/_randomFormatTime.ts +14 -14
  158. package/src/internal/_randomFormatUri.ts +3 -3
  159. package/src/internal/_randomFormatUriReference.ts +3 -3
  160. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  161. package/src/internal/_randomFormatUrl.ts +11 -11
  162. package/src/internal/_randomFormatUuid.ts +6 -6
  163. package/src/internal/_randomInteger.ts +47 -47
  164. package/src/internal/_randomNumber.ts +74 -74
  165. package/src/internal/_randomPattern.ts +10 -10
  166. package/src/internal/_randomPick.ts +9 -9
  167. package/src/internal/_randomString.ts +24 -24
  168. package/src/internal/_throwTypeGuardError.ts +5 -5
  169. package/src/internal/_validateReport.ts +13 -13
  170. package/src/internal/private/__notationCapitalize.ts +2 -2
  171. package/src/internal/private/__notationUnsnake.ts +24 -24
  172. package/src/json.ts +752 -752
  173. package/src/llm.ts +481 -481
  174. package/src/misc.ts +658 -658
  175. package/src/module.ts +937 -937
  176. package/src/notations.ts +827 -827
  177. package/src/programmers/AssertProgrammer.ts +454 -454
  178. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  179. package/src/programmers/FeatureProgrammer.ts +622 -622
  180. package/src/programmers/ImportProgrammer.ts +185 -185
  181. package/src/programmers/IsProgrammer.ts +273 -273
  182. package/src/programmers/RandomProgrammer.ts +1190 -1190
  183. package/src/programmers/TypiaProgrammer.ts +174 -174
  184. package/src/programmers/ValidateProgrammer.ts +439 -439
  185. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  186. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  187. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  188. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  189. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  190. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  191. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  192. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  193. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  194. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  195. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  196. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  197. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  198. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  199. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  200. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  201. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  202. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  203. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  204. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  205. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  206. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  207. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  208. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  209. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  210. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  211. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  212. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  213. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  214. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  215. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  216. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  217. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  218. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  219. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  220. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  221. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  222. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  223. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  224. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  225. package/src/programmers/internal/check_array_length.ts +47 -47
  226. package/src/programmers/internal/check_bigint.ts +50 -50
  227. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  228. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  229. package/src/programmers/internal/check_everything.ts +23 -23
  230. package/src/programmers/internal/check_native.ts +27 -27
  231. package/src/programmers/internal/check_number.ts +112 -112
  232. package/src/programmers/internal/check_object.ts +75 -75
  233. package/src/programmers/internal/check_string.ts +50 -50
  234. package/src/programmers/internal/check_template.ts +48 -48
  235. package/src/programmers/internal/check_union_array_like.ts +335 -335
  236. package/src/programmers/internal/decode_union_object.ts +116 -116
  237. package/src/programmers/internal/feature_object_entries.ts +61 -61
  238. package/src/programmers/internal/json_schema_alias.ts +47 -47
  239. package/src/programmers/internal/json_schema_array.ts +45 -45
  240. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  241. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  242. package/src/programmers/internal/json_schema_constant.ts +26 -26
  243. package/src/programmers/internal/json_schema_description.ts +12 -12
  244. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  245. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  246. package/src/programmers/internal/json_schema_native.ts +33 -33
  247. package/src/programmers/internal/json_schema_number.ts +15 -15
  248. package/src/programmers/internal/json_schema_object.ts +158 -158
  249. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  250. package/src/programmers/internal/json_schema_station.ts +182 -182
  251. package/src/programmers/internal/json_schema_string.ts +15 -15
  252. package/src/programmers/internal/json_schema_template.ts +55 -55
  253. package/src/programmers/internal/json_schema_title.ts +20 -20
  254. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  255. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  256. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  257. package/src/programmers/internal/prune_object_properties.ts +71 -71
  258. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  259. package/src/programmers/internal/stringify_native.ts +7 -7
  260. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  261. package/src/programmers/internal/template_to_pattern.ts +23 -23
  262. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  263. package/src/programmers/json/JsonApplicationProgrammer.ts +279 -279
  264. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  265. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  266. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  267. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  268. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  269. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  270. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  271. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  272. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +104 -104
  273. package/src/programmers/llm/LlmApplicationProgrammer.ts +327 -327
  274. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  275. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  276. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  277. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  278. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  279. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  280. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  281. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  282. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  283. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  284. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  285. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  286. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  287. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  288. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  289. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  290. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  291. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  292. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  293. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  294. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  295. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  296. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  297. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  298. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  299. package/src/protobuf.ts +868 -868
  300. package/src/reflect.ts +57 -57
  301. package/src/schemas/json/IJsonApplication.ts +73 -73
  302. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  303. package/src/schemas/json/__IJsonApplication.ts +63 -63
  304. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -55
  305. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -39
  306. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  307. package/src/schemas/metadata/IMetadata.ts +35 -35
  308. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  309. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  310. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  311. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  312. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  313. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  314. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  315. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  316. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  317. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  318. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  319. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  320. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  321. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  322. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  323. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  324. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  325. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  326. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  327. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  328. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  329. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  330. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  331. package/src/schemas/metadata/Metadata.ts +669 -669
  332. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  333. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  334. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  335. package/src/schemas/metadata/MetadataArray.ts +49 -49
  336. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  337. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  338. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  339. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  340. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  341. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  342. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  343. package/src/schemas/metadata/MetadataMap.ts +48 -48
  344. package/src/schemas/metadata/MetadataNative.ts +44 -44
  345. package/src/schemas/metadata/MetadataObject.ts +48 -48
  346. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  347. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  348. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  349. package/src/schemas/metadata/MetadataSet.ts +45 -45
  350. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  351. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  352. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  353. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  354. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  355. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  356. package/src/tags/Constant.ts +15 -15
  357. package/src/tags/ContentMediaType.ts +10 -10
  358. package/src/tags/Default.ts +22 -22
  359. package/src/tags/Example.ts +24 -24
  360. package/src/tags/Examples.ts +16 -16
  361. package/src/tags/ExclusiveMaximum.ts +25 -25
  362. package/src/tags/ExclusiveMinimum.ts +25 -25
  363. package/src/tags/Format.ts +50 -50
  364. package/src/tags/JsonSchemaPlugin.ts +8 -8
  365. package/src/tags/MaxItems.ts +12 -12
  366. package/src/tags/MaxLength.ts +12 -12
  367. package/src/tags/Maximum.ts +19 -19
  368. package/src/tags/MinItems.ts +12 -12
  369. package/src/tags/MinLength.ts +12 -12
  370. package/src/tags/Minimum.ts +19 -19
  371. package/src/tags/MultipleOf.ts +21 -21
  372. package/src/tags/Pattern.ts +31 -31
  373. package/src/tags/Sequence.ts +10 -10
  374. package/src/tags/TagBase.ts +82 -82
  375. package/src/tags/Type.ts +32 -32
  376. package/src/tags/UniqueItems.ts +14 -14
  377. package/src/tags/index.ts +21 -21
  378. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  379. package/src/transform.ts +35 -35
  380. package/src/transformers/CallExpressionTransformer.ts +547 -547
  381. package/src/transformers/FileTransformer.ts +136 -136
  382. package/src/transformers/IProgrammerProps.ts +11 -11
  383. package/src/transformers/ITransformOptions.ts +62 -62
  384. package/src/transformers/ITransformProps.ts +9 -9
  385. package/src/transformers/ITypiaContext.ts +18 -18
  386. package/src/transformers/ImportTransformer.ts +81 -81
  387. package/src/transformers/NodeTransformer.ts +17 -17
  388. package/src/transformers/TransformerError.ts +60 -60
  389. package/src/transformers/features/AssertTransformer.ts +24 -24
  390. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  391. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  392. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  393. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  394. package/src/transformers/features/IsTransformer.ts +18 -18
  395. package/src/transformers/features/RandomTransformer.ts +41 -41
  396. package/src/transformers/features/ValidateTransformer.ts +18 -18
  397. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  398. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  399. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  400. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  401. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  402. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  403. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  404. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  405. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  406. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  407. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  408. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  409. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  410. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  411. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  412. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  413. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  414. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  415. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  416. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  417. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  418. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  419. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  420. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  421. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  422. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  423. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  424. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  425. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  426. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  427. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  428. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  429. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  430. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  431. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  432. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  433. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  434. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  435. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  436. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  437. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  438. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  439. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  440. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +129 -129
  441. package/src/transformers/features/llm/LlmApplicationTransformer.ts +125 -125
  442. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  443. package/src/transformers/features/llm/LlmSchemaTransformer.ts +143 -143
  444. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  445. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  446. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  447. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  448. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  449. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  450. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  451. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  452. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  453. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  454. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  455. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  456. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  457. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  458. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  459. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  460. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  461. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  462. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  463. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  464. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  465. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  466. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  467. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  468. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  469. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  470. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  471. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  472. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  473. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  474. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  475. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  476. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  477. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  478. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  479. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  480. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  481. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  482. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  483. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  484. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  485. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  486. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  487. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  488. package/src/transformers/internal/GenericTransformer.ts +101 -101
  489. package/src/typings/Atomic.ts +13 -13
  490. package/src/typings/ClassProperties.ts +5 -5
  491. package/src/typings/Customizable.ts +5 -5
  492. package/src/typings/Equal.ts +18 -18
  493. package/src/typings/IsTuple.ts +9 -9
  494. package/src/typings/NativeClass.ts +23 -23
  495. package/src/typings/OmitNever.ts +3 -3
  496. package/src/typings/ProtobufAtomic.ts +19 -19
  497. package/src/typings/SpecialFields.ts +3 -3
  498. package/src/typings/ValidationPipe.ts +9 -9
  499. package/src/typings/ValueOf.ts +20 -20
  500. package/src/typings/Writable.ts +11 -11
  501. package/src/utils/ArrayUtil.ts +41 -41
  502. package/src/utils/Escaper.ts +50 -50
  503. package/src/utils/MapUtil.ts +14 -14
  504. package/src/utils/NamingConvention.ts +94 -94
  505. package/src/utils/PatternUtil.ts +29 -29
  506. package/src/utils/ProtobufNameEncoder.ts +32 -32
  507. package/src/utils/Singleton.ts +16 -16
  508. package/src/utils/StringUtil.ts +16 -16
package/src/json.ts CHANGED
@@ -1,752 +1,752 @@
1
- import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaCollection";
2
-
3
- import { IValidation } from "./IValidation";
4
- import { Primitive } from "./Primitive";
5
- import { TypeGuardError } from "./TypeGuardError";
6
-
7
- /* ===========================================================
8
- JSON
9
- - METADATA
10
- - PARSE
11
- - STRINGIFY
12
- - FACTORY FUNCTIONS
13
- ==============================================================
14
- METADATA
15
- ----------------------------------------------------------- */
16
- /**
17
- * > You must configure the generic argument `Types`.
18
- *
19
- * JSON Schemas generator.
20
- *
21
- * Creates a JSON schema list which contains both main JSON schemas
22
- * and components. Note that, all of the named types are stored in the
23
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
24
- *
25
- * Also, you can specify the OpenAPI version by configuring the second generic
26
- * argument `Version`. For reference, the default version is `"3.1"`, and key
27
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
28
- *
29
- * @template Types Tuple of target types
30
- * @template Version Version of OpenAPI specification. Default is 3.1
31
- * @return JSON schema list
32
- *
33
- * @author Jeongho Nam - https://github.com/samchon
34
- */
35
- export function schemas(): never;
36
-
37
- /**
38
- * JSON Schemas generator.
39
- *
40
- * Creates a JSON schema list which contains both main JSON schemas
41
- * and components. Note that, all of the named types are stored in the
42
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
43
- *
44
- * Also, you can specify the OpenAPI version by configuring the second generic
45
- * argument `Version`. For reference, the default version is `"3.1"`, and key
46
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
47
- *
48
- * @template Types Tuple of target types
49
- * @template Version Version of OpenAPI specification. Default is 3.1
50
- * @return JSON schema list
51
- *
52
- * @author Jeongho Nam - https://github.com/samchon
53
- */
54
- export function schemas<
55
- Types extends unknown[],
56
- Version extends "3.0" | "3.1" = "3.1",
57
- >(): IJsonSchemaCollection<Version, Types>;
58
-
59
- /**
60
- * @internal
61
- */
62
- export function schemas(): never {
63
- halt("schemas");
64
- }
65
-
66
- /**
67
- * > You must configure the generic argument `Types`.
68
- *
69
- * JSON Schemas generator.
70
- *
71
- * Creates a JSON schema list which contains both main JSON schemas
72
- * and components. Note that, all of the named types are stored in the
73
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
74
- *
75
- * Also, you can specify the OpenAPI version by configuring the second generic
76
- * argument `Version`. For reference, the default version is `"3.1"`, and key
77
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
78
- *
79
- * @template Types Tuple of target types
80
- * @template Version Version of OpenAPI specification. Default is 3.1
81
- * @return JSON schema list
82
- *
83
- * @deprcated Use {@link schemas} function instead please.
84
- * This function would be changed to return {@linkk ILlmApplication} like
85
- * structure in the future version (maybe next v8 major update).
86
- * @author Jeongho Nam - https://github.com/samchon
87
- */
88
- export function application(): never;
89
-
90
- /**
91
- * JSON Schemas generator.
92
- *
93
- * Creates a JSON schema list which contains both main JSON schemas
94
- * and components. Note that, all of the named types are stored in the
95
- * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
96
- *
97
- * Also, you can specify the OpenAPI version by configuring the second generic
98
- * argument `Version`. For reference, the default version is `"3.1"`, and key
99
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
100
- *
101
- * @template Types Tuple of target types
102
- * @template Version Version of OpenAPI specification. Default is 3.1
103
- * @return JSON schema list
104
- *
105
- * @deprcated Use {@link schemas} function instead please.
106
- * This function would be changed to return {@linkk ILlmApplication} like
107
- * structure in the future version (maybe next v8 major update).
108
- * @author Jeongho Nam - https://github.com/samchon
109
- */
110
- export function application<
111
- Types extends unknown[],
112
- Version extends "3.0" | "3.1" = "3.1",
113
- >(): IJsonSchemaCollection<Version, Types>;
114
-
115
- /**
116
- * @internal
117
- */
118
- export function application(): never {
119
- halt("application");
120
- }
121
-
122
- // /**
123
- // * > You must configure the generic argument `App`.
124
- // *
125
- // * TypeScript functions to JSON schema based application schema.
126
- // *
127
- // * Creates an application schema collecting the functions' schema based on the
128
- // * JSON schema specification.
129
- // *
130
- // * The default version of the OpenAPI specification is `"3.1"`, but you can
131
- // * specify the version by configuring the second generic argument `Version`.
132
- // *
133
- // * @template App Target class or interface type collecting the functions
134
- // * @template Version Version of OpenAPI specification. Default is 3.1
135
- // * @returns Application schema of JSON schema based
136
- // *
137
- // * @author Jeongho Nam - https://github.com/samchon
138
- // */
139
- // export function application(): never;
140
-
141
- // /**
142
- // * TypeScript functions to JSON schema based application schema.
143
- // *
144
- // * Creates an application schema collecting the functions' schema based on the
145
- // * JSON schema specification.
146
- // *
147
- // * The default version of the OpenAPI specification is `"3.1"`, but you can
148
- // * specify the version by configuring the second generic argument `Version`.
149
- // *
150
- // * @template App Target class or interface type collecting the functions
151
- // * @template Version Version of OpenAPI specification. Default is 3.1
152
- // * @returns Application schema of JSON schema based
153
- // *
154
- // * @author Jeongho Nam - https://github.com/samchon
155
- // */
156
- // export function application<
157
- // App extends object,
158
- // Version extends "3.0" | "3.1" = "3.1",
159
- // >(): IJsonApplication<Version, App>;
160
-
161
- // /**
162
- // * @internal
163
- // */
164
- // export function application(): never {
165
- // halt("application");
166
- // }
167
-
168
- /* -----------------------------------------------------------
169
- PARSE
170
- ----------------------------------------------------------- */
171
- /**
172
- * > You must configure the generic argument `T`.
173
- *
174
- * Safe `JSON.parse()` function with type assertion.
175
- *
176
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
177
- * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
178
- * to a `T` typed instance with type assertion.
179
- *
180
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
181
- * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
182
- * there's no problem on the parsed value, the parsed value would be returned.
183
- *
184
- * @template T Expected type of parsed value
185
- * @param input JSON string
186
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
187
- * @returns Parsed value
188
- *
189
- * @author Jeongho Nam - https://github.com/samchon
190
- */
191
- export function assertParse(
192
- input: string,
193
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
194
- ): never;
195
-
196
- /**
197
- * Safe `JSON.parse()` function with type assertion.
198
- *
199
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
200
- * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
201
- * to a `T` typed instance with type assertion.
202
- *
203
- * In such reason, when parsed JSON string value is not matched with the type `T`,
204
- * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
205
- * Otherwise, there's no problem on the parsed value, the parsed value would be
206
- * returned.
207
- *
208
- * @template T Expected type of parsed value
209
- * @param input JSON string
210
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
211
- * @returns Parsed value
212
- *
213
- * @author Jeongho Nam - https://github.com/samchon
214
- */
215
- export function assertParse<T>(
216
- input: string,
217
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
218
- ): Primitive<T>;
219
-
220
- /**
221
- * @internal
222
- */
223
- export function assertParse<T>(): Primitive<T> {
224
- halt("assertParse");
225
- }
226
-
227
- /**
228
- * > You must configure the generic argument `T`.
229
- *
230
- * Safe `JSON.parse()` function with type checking.
231
- *
232
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
233
- * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
234
- * instance with type checking.
235
- *
236
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
237
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
238
- * value would be returned.
239
- *
240
- * @template T Expected type of parsed value
241
- * @param input JSON string
242
- * @returns Parsed value when exact type, otherwise `null`
243
- *
244
- * @author Jeongho Nam - https://github.com/samchon
245
- */
246
- export function isParse(input: string): never;
247
-
248
- /**
249
- * Safe `JSON.parse()` function with type checking.
250
- *
251
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
252
- * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
253
- * instance with type checking.
254
- *
255
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
256
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
257
- * value would be returned.
258
- *
259
- * @template T Expected type of parsed value
260
- * @param input JSON string
261
- * @returns Parsed value when exact type, otherwise `null`
262
- *
263
- * @author Jeongho Nam - https://github.com/samchon
264
- */
265
- export function isParse<T>(input: string): Primitive<T> | null;
266
-
267
- /**
268
- * @internal
269
- */
270
- export function isParse<T>(): Primitive<T> | null {
271
- halt("isParse");
272
- }
273
-
274
- /**
275
- * > You must configure the generic argument `T`.
276
- *
277
- * Safe `JSON.parse()` function with detailed type validation.
278
- *
279
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
280
- * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
281
- * to a `T` typed instance with detailed type validation.
282
- *
283
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
284
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
285
- * there's no problem on the parsed value, the parsed value would be stored in `data`
286
- * property of the output {@link IValidation.ISuccess} instance.
287
- *
288
- * @template T Expected type of parsed value
289
- * @param input JSON string
290
- * @returns Validation result with JSON parsed value
291
- *
292
- * @author Jeongho Nam - https://github.com/samchon
293
- */
294
- export function validateParse(input: string): never;
295
-
296
- /**
297
- * Safe `JSON.parse()` function with detailed type validation.
298
- *
299
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
300
- * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
301
- * to a `T` typed instance with detailed type validation.
302
- *
303
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
304
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
305
- * there's no problem on the parsed value, the parsed value would be stored in `data`
306
- * property of the output {@link IValidation.ISuccess} instance.
307
- *
308
- * @template T Expected type of parsed value
309
- * @param input JSON string
310
- * @returns Validation result with JSON parsed value
311
- *
312
- * @author Jeongho Nam - https://github.com/samchon
313
- */
314
- export function validateParse<T>(input: string): IValidation<Primitive<T>>;
315
-
316
- /**
317
- * @internal
318
- */
319
- export function validateParse<T>(): IValidation<Primitive<T>> {
320
- halt("validateParse");
321
- }
322
-
323
- /* -----------------------------------------------------------
324
- STRINGIFY
325
- ----------------------------------------------------------- */
326
- /**
327
- * 8x faster `JSON.stringify()` function.
328
- *
329
- * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
330
- * faster than the native `JSON.stringify()` function. The 5x faster principle is
331
- * because it writes an optimized JSON conversion plan, only for the type `T`.
332
- *
333
- * For reference, this `typia.json.stringify()` does not validate the input value type.
334
- * It just believes that the input value is following the type `T`. Therefore, if you
335
- * can't ensure the input value type, it would be better to call one of below
336
- * functions instead.
337
- *
338
- * - {@link assertStringify}
339
- * - {@link isStringify}
340
- * - {@link validateStringify}
341
- *
342
- * @template T Type of the input value
343
- * @param input A value to be converted
344
- * @return JSON string value
345
- *
346
- * @author Jeongho Nam - https://github.com/samchon
347
- */
348
- export function stringify<T>(input: T): string;
349
-
350
- /**
351
- * @internal
352
- */
353
- export function stringify(): never {
354
- halt("stringify");
355
- }
356
-
357
- /**
358
- * 5x faster `JSON.stringify()` function with type assertion.
359
- *
360
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
361
- * {@link stringify}. Therefore, it converts an input value to
362
- * JSON (JavaScript Object Notation) string, with type assertion.
363
- *
364
- * In such reason, when `input` value is not matched with the type `T`, it throws an
365
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
366
- * there's no problem on the `input` value, JSON string would be returned.
367
- *
368
- * For reference, with type assertion, it is even 5x times faster than the native
369
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
370
- * with confidence.
371
- *
372
- * @template T Type of the input value
373
- * @param input A value to be asserted and converted
374
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
375
- * @return JSON string value
376
- *
377
- * @author Jeongho Nam - https://github.com/samchon
378
- */
379
- export function assertStringify<T>(
380
- input: T,
381
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
382
- ): string;
383
-
384
- /**
385
- * 5x faster `JSON.stringify()` function with type assertion.
386
- *
387
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
388
- * {@link stringify}. Therefore, it converts an input value to
389
- * JSON (JavaScript Object Notation) string, with type assertion.
390
- *
391
- * In such reason, when `input` value is not matched with the type `T`, it throws an
392
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
393
- * there's no problem on the `input` value, JSON string would be returned.
394
- *
395
- * For reference, with type assertion, it is even 5x times faster than the native
396
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
397
- * with confidence.
398
- *
399
- * @template T Type of the input value
400
- * @param input A value to be asserted and converted
401
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
402
- * @return JSON string value
403
- *
404
- * @author Jeongho Nam - https://github.com/samchon
405
- */
406
- export function assertStringify<T>(
407
- input: T,
408
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
409
- ): unknown;
410
-
411
- /**
412
- * @internal
413
- */
414
- export function assertStringify(): string {
415
- halt("assertStringify");
416
- }
417
-
418
- /**
419
- * 7x faster `JSON.stringify()` function with type checking.
420
- *
421
- * `typia.json.stringify()` is a combination function of {@link is} and
422
- * {@link stringify}. Therefore, it converts an input value to JSON
423
- * (JavaScript Object Notation) string, with type checking.
424
- *
425
- * In such reason, when `input` value is not matched with the type `T`, it returns
426
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
427
- * would be returned.
428
- *
429
- * For reference, with type checking, it is even 7x times faster than the native
430
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
431
- * with confidence.
432
- *
433
- * @template T Type of the input value
434
- * @param input A value to be checked and converted
435
- * @return JSON string value when exact type, otherwise null
436
- *
437
- * @author Jeongho Nam - https://github.com/samchon
438
- */
439
- export function isStringify<T>(input: T): string | null;
440
-
441
- /**
442
- * 7x faster `JSON.stringify()` function with type checking.
443
- *
444
- * `typia.json.isStringify()` is a combination function of {@link is} and
445
- * {@link stringify}. Therefore, it converts an input value to JSON
446
- * (JavaScript Object Notation) string, with type checking.
447
- *
448
- * In such reason, when `input` value is not matched with the type `T`, it returns
449
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
450
- * would be returned.
451
- *
452
- * For reference, with type checking, it is even 7x times faster than the native
453
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
454
- * with confidence.
455
- *
456
- * @template T Type of the input value
457
- * @param input A value to be checked and converted
458
- * @return JSON string value when exact type, otherwise null
459
- *
460
- * @author Jeongho Nam - https://github.com/samchon
461
- */
462
- export function isStringify<T>(input: unknown): string | null;
463
-
464
- /**
465
- * @internal
466
- */
467
- export function isStringify(): string | null {
468
- halt("isStringify");
469
- }
470
-
471
- /**
472
- * 5x faster `JSON.stringify()` function with detailed type validation.
473
- *
474
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
475
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
476
- * Notation) string, with detailed type validation.
477
- *
478
- * In such reason, when `input` value is not matched with the type `T`, it returns
479
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
480
- * there's no problem on the `input` value, JSON string would be stored in `data`
481
- * property of the output {@link IValidation.ISuccess} instance.
482
- *
483
- * For reference, with detailed type validation, it is even 5x times faster than the
484
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
485
- * conversion with confidence.
486
- *
487
- * @template T Type of the input value
488
- * @param input A value to be checked and converted
489
- * @returns Validation result with JSON string value
490
- *
491
- * @author Jeongho Nam - https://github.com/samchon
492
- */
493
- export function validateStringify<T>(input: T): IValidation<string>;
494
-
495
- /**
496
- * 5x faster `JSON.stringify()` function with detailed type validation.
497
- *
498
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
499
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
500
- * Notation) string, with detailed type validation.
501
- *
502
- * In such reason, when `input` value is not matched with the type `T`, it returns
503
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
504
- * there's no problem on the `input` value, JSON string would be stored in `data`
505
- * property of the output {@link IValidation.ISuccess} instance.
506
- *
507
- * For reference, with detailed type validation, it is even 5x times faster than the
508
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
509
- * conversion with confidence.
510
- *
511
- * @template T Type of the input value
512
- * @param input A value to be checked and converted
513
- * @returns Validation result with JSON string value
514
- *
515
- * @author Jeongho Nam - https://github.com/samchon
516
- */
517
- export function validateStringify<T>(input: unknown): IValidation<string>;
518
-
519
- /**
520
- * @internal
521
- */
522
- export function validateStringify(): IValidation<string> {
523
- halt("validateStringify");
524
- }
525
-
526
- /* -----------------------------------------------------------
527
- FACTORY FUNCTIONS
528
- ----------------------------------------------------------- */
529
- /**
530
- * Creates a reusable {@link isParse} function.
531
- *
532
- * @danger You must configure the generic argument `T`
533
- * @returns Nothing until you configure the generic argument `T`
534
- * @throws compile error
535
- *
536
- * @author Jeongho Nam - https://github.com/samchon
537
- */
538
- export function createIsParse(): never;
539
-
540
- /**
541
- * Creates a reusable {@link isParse} function.
542
- *
543
- * @template T Expected type of parsed value
544
- * @returns A reusable `isParse` function
545
- *
546
- * @author Jeongho Nam - https://github.com/samchon
547
- */
548
- export function createIsParse<T>(): (input: string) => Primitive<T> | null;
549
-
550
- /**
551
- * @internal
552
- */
553
- export function createIsParse<T>(): (input: string) => Primitive<T> | null {
554
- halt("createIsParse");
555
- }
556
-
557
- /**
558
- * Creates a reusable {@link assertParse} function.
559
- *
560
- * @danger You must configure the generic argument `T`
561
- * @returns Nothing until you configure the generic argument `T`
562
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
563
- * @throws compile error
564
- *
565
- * @author Jeongho Nam - https://github.com/samchon
566
- */
567
- export function createAssertParse(
568
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
569
- ): never;
570
-
571
- /**
572
- * Creates a reusable {@link assertParse} function.
573
- *
574
- * @template T Expected type of parsed value
575
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
576
- * @returns A reusable `assertParse` function
577
- *
578
- * @author Jeongho Nam - https://github.com/samchon
579
- */
580
- export function createAssertParse<T>(
581
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
582
- ): (input: string) => Primitive<T>;
583
-
584
- /**
585
- * @internal
586
- */
587
- export function createAssertParse<T>(): (input: string) => Primitive<T> {
588
- halt("createAssertParse");
589
- }
590
-
591
- /**
592
- * Creates a reusable {@link validateParse} function.
593
- *
594
- * @danger You must configure the generic argument `T`
595
- * @returns Nothing until you configure the generic argument `T`
596
- * @throws compile error
597
- *
598
- * @author Jeongho Nam - https://github.com/samchon
599
- */
600
- export function createValidateParse(): never;
601
-
602
- /**
603
- * Creates a reusable {@link validateParse} function.
604
- *
605
- * @template T Expected type of parsed value
606
- * @returns A reusable `validateParse` function
607
- *
608
- * @author Jeongho Nam - https://github.com/samchon
609
- */
610
- export function createValidateParse<T>(): (
611
- input: string,
612
- ) => IValidation<Primitive<T>>;
613
-
614
- /**
615
- * @internal
616
- */
617
- export function createValidateParse<T>(): (
618
- input: string,
619
- ) => IValidation<Primitive<T>> {
620
- halt("createValidateParse");
621
- }
622
-
623
- /**
624
- * Creates a reusable {@link stringify} function.
625
- *
626
- * @danger You must configure the generic argument `T`
627
- * @returns Nothing until you configure the generic argument `T`
628
- * @throws compile error
629
- *
630
- * @author Jeongho Nam - https://github.com/samchon
631
- */
632
- export function createStringify(): never;
633
-
634
- /**
635
- * Creates a reusable {@link stringify} function.
636
- *
637
- * @template T Type of the input value
638
- * @returns A reusable `stringify` function
639
- *
640
- * @author Jeongho Nam - https://github.com/samchon
641
- */
642
- export function createStringify<T>(): (input: T) => string;
643
-
644
- /**
645
- * @internal
646
- */
647
- export function createStringify<T>(): (input: T) => string {
648
- halt("createStringify");
649
- }
650
-
651
- /**
652
- * Creates a reusable {@link assertStringify} function.
653
- *
654
- * @danger You must configure the generic argument `T`
655
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
656
- * @returns Nothing until you configure the generic argument `T`
657
- * @throws compile error
658
- *
659
- * @author Jeongho Nam - https://github.com/samchon
660
- */
661
- export function createAssertStringify(
662
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
663
- ): never;
664
-
665
- /**
666
- * Creates a reusable {@link assertStringify} function.
667
- *
668
- * @template T Type of the input value
669
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
670
- * @returns A reusable `assertStringify` function
671
- *
672
- * @author Jeongho Nam - https://github.com/samchon
673
- */
674
- export function createAssertStringify<T>(
675
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
676
- ): (input: unknown) => string;
677
-
678
- /**
679
- * @internal
680
- */
681
- export function createAssertStringify(): (input: unknown) => string {
682
- halt("createAssertStringify");
683
- }
684
-
685
- /**
686
- * Creates a reusable {@link isStringify} function.
687
- *
688
- * @danger You must configure the generic argument `T`
689
- * @returns Nothing until you configure the generic argument `T`
690
- * @throws compile error
691
- *
692
- * @author Jeongho Nam - https://github.com/samchon
693
- */
694
- export function createIsStringify(): never;
695
-
696
- /**
697
- * Creates a reusable {@link isStringify} function.
698
- *
699
- * @template T Type of the input value
700
- * @returns A reusable `isStringify` function
701
- *
702
- * @author Jeongho Nam - https://github.com/samchon
703
- */
704
- export function createIsStringify<T>(): (input: unknown) => string | null;
705
-
706
- /**
707
- * @internal
708
- */
709
- export function createIsStringify(): (input: unknown) => string | null {
710
- halt("createIsStringify");
711
- }
712
-
713
- /**
714
- * Creates a reusable {@link validateStringify} function.
715
- *
716
- * @danger You must configure the generic argument `T`
717
- * @returns Nothing until you configure the generic argument `T`
718
- * @throws compile error
719
- *
720
- * @author Jeongho Nam - https://github.com/samchon
721
- */
722
- export function createValidateStringify(): never;
723
-
724
- /**
725
- * Creates a reusable {@link validateStringify} function.
726
- *
727
- * @template T Type of the input value
728
- * @returns A reusable `validateStringify` function
729
-
730
- * @author Jeongho Nam - https://github.com/samchon
731
- */
732
- export function createValidateStringify<T>(): (
733
- input: unknown,
734
- ) => IValidation<string>;
735
-
736
- /**
737
- * @internal
738
- */
739
- export function createValidateStringify(): (
740
- input: unknown,
741
- ) => IValidation<string> {
742
- halt("createValidateStringify");
743
- }
744
-
745
- /**
746
- * @internal
747
- */
748
- function halt(name: string): never {
749
- throw new Error(
750
- `Error on typia.json.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
751
- );
752
- }
1
+ import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaCollection";
2
+
3
+ import { IValidation } from "./IValidation";
4
+ import { Primitive } from "./Primitive";
5
+ import { TypeGuardError } from "./TypeGuardError";
6
+
7
+ /* ===========================================================
8
+ JSON
9
+ - METADATA
10
+ - PARSE
11
+ - STRINGIFY
12
+ - FACTORY FUNCTIONS
13
+ ==============================================================
14
+ METADATA
15
+ ----------------------------------------------------------- */
16
+ /**
17
+ * > You must configure the generic argument `Types`.
18
+ *
19
+ * JSON Schemas generator.
20
+ *
21
+ * Creates a JSON schema list which contains both main JSON schemas
22
+ * and components. Note that, all of the named types are stored in the
23
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
24
+ *
25
+ * Also, you can specify the OpenAPI version by configuring the second generic
26
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
27
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
28
+ *
29
+ * @template Types Tuple of target types
30
+ * @template Version Version of OpenAPI specification. Default is 3.1
31
+ * @return JSON schema list
32
+ *
33
+ * @author Jeongho Nam - https://github.com/samchon
34
+ */
35
+ export function schemas(): never;
36
+
37
+ /**
38
+ * JSON Schemas generator.
39
+ *
40
+ * Creates a JSON schema list which contains both main JSON schemas
41
+ * and components. Note that, all of the named types are stored in the
42
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
43
+ *
44
+ * Also, you can specify the OpenAPI version by configuring the second generic
45
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
46
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
47
+ *
48
+ * @template Types Tuple of target types
49
+ * @template Version Version of OpenAPI specification. Default is 3.1
50
+ * @return JSON schema list
51
+ *
52
+ * @author Jeongho Nam - https://github.com/samchon
53
+ */
54
+ export function schemas<
55
+ Types extends unknown[],
56
+ Version extends "3.0" | "3.1" = "3.1",
57
+ >(): IJsonSchemaCollection<Version, Types>;
58
+
59
+ /**
60
+ * @internal
61
+ */
62
+ export function schemas(): never {
63
+ halt("schemas");
64
+ }
65
+
66
+ /**
67
+ * > You must configure the generic argument `Types`.
68
+ *
69
+ * JSON Schemas generator.
70
+ *
71
+ * Creates a JSON schema list which contains both main JSON schemas
72
+ * and components. Note that, all of the named types are stored in the
73
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
74
+ *
75
+ * Also, you can specify the OpenAPI version by configuring the second generic
76
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
77
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
78
+ *
79
+ * @template Types Tuple of target types
80
+ * @template Version Version of OpenAPI specification. Default is 3.1
81
+ * @return JSON schema list
82
+ *
83
+ * @deprcated Use {@link schemas} function instead please.
84
+ * This function would be changed to return {@linkk ILlmApplication} like
85
+ * structure in the future version (maybe next v8 major update).
86
+ * @author Jeongho Nam - https://github.com/samchon
87
+ */
88
+ export function application(): never;
89
+
90
+ /**
91
+ * JSON Schemas generator.
92
+ *
93
+ * Creates a JSON schema list which contains both main JSON schemas
94
+ * and components. Note that, all of the named types are stored in the
95
+ * {@link IJsonSchemaCollection.components} property for the `$ref` referencing.
96
+ *
97
+ * Also, you can specify the OpenAPI version by configuring the second generic
98
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
99
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
100
+ *
101
+ * @template Types Tuple of target types
102
+ * @template Version Version of OpenAPI specification. Default is 3.1
103
+ * @return JSON schema list
104
+ *
105
+ * @deprcated Use {@link schemas} function instead please.
106
+ * This function would be changed to return {@linkk ILlmApplication} like
107
+ * structure in the future version (maybe next v8 major update).
108
+ * @author Jeongho Nam - https://github.com/samchon
109
+ */
110
+ export function application<
111
+ Types extends unknown[],
112
+ Version extends "3.0" | "3.1" = "3.1",
113
+ >(): IJsonSchemaCollection<Version, Types>;
114
+
115
+ /**
116
+ * @internal
117
+ */
118
+ export function application(): never {
119
+ halt("application");
120
+ }
121
+
122
+ // /**
123
+ // * > You must configure the generic argument `App`.
124
+ // *
125
+ // * TypeScript functions to JSON schema based application schema.
126
+ // *
127
+ // * Creates an application schema collecting the functions' schema based on the
128
+ // * JSON schema specification.
129
+ // *
130
+ // * The default version of the OpenAPI specification is `"3.1"`, but you can
131
+ // * specify the version by configuring the second generic argument `Version`.
132
+ // *
133
+ // * @template App Target class or interface type collecting the functions
134
+ // * @template Version Version of OpenAPI specification. Default is 3.1
135
+ // * @returns Application schema of JSON schema based
136
+ // *
137
+ // * @author Jeongho Nam - https://github.com/samchon
138
+ // */
139
+ // export function application(): never;
140
+
141
+ // /**
142
+ // * TypeScript functions to JSON schema based application schema.
143
+ // *
144
+ // * Creates an application schema collecting the functions' schema based on the
145
+ // * JSON schema specification.
146
+ // *
147
+ // * The default version of the OpenAPI specification is `"3.1"`, but you can
148
+ // * specify the version by configuring the second generic argument `Version`.
149
+ // *
150
+ // * @template App Target class or interface type collecting the functions
151
+ // * @template Version Version of OpenAPI specification. Default is 3.1
152
+ // * @returns Application schema of JSON schema based
153
+ // *
154
+ // * @author Jeongho Nam - https://github.com/samchon
155
+ // */
156
+ // export function application<
157
+ // App extends object,
158
+ // Version extends "3.0" | "3.1" = "3.1",
159
+ // >(): IJsonApplication<Version, App>;
160
+
161
+ // /**
162
+ // * @internal
163
+ // */
164
+ // export function application(): never {
165
+ // halt("application");
166
+ // }
167
+
168
+ /* -----------------------------------------------------------
169
+ PARSE
170
+ ----------------------------------------------------------- */
171
+ /**
172
+ * > You must configure the generic argument `T`.
173
+ *
174
+ * Safe `JSON.parse()` function with type assertion.
175
+ *
176
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
177
+ * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
178
+ * to a `T` typed instance with type assertion.
179
+ *
180
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
181
+ * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
182
+ * there's no problem on the parsed value, the parsed value would be returned.
183
+ *
184
+ * @template T Expected type of parsed value
185
+ * @param input JSON string
186
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
187
+ * @returns Parsed value
188
+ *
189
+ * @author Jeongho Nam - https://github.com/samchon
190
+ */
191
+ export function assertParse(
192
+ input: string,
193
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
194
+ ): never;
195
+
196
+ /**
197
+ * Safe `JSON.parse()` function with type assertion.
198
+ *
199
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
200
+ * {@link assert}. Therefore, it converts a JSON (JavaScript Object Notation) string
201
+ * to a `T` typed instance with type assertion.
202
+ *
203
+ * In such reason, when parsed JSON string value is not matched with the type `T`,
204
+ * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
205
+ * Otherwise, there's no problem on the parsed value, the parsed value would be
206
+ * returned.
207
+ *
208
+ * @template T Expected type of parsed value
209
+ * @param input JSON string
210
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
211
+ * @returns Parsed value
212
+ *
213
+ * @author Jeongho Nam - https://github.com/samchon
214
+ */
215
+ export function assertParse<T>(
216
+ input: string,
217
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
218
+ ): Primitive<T>;
219
+
220
+ /**
221
+ * @internal
222
+ */
223
+ export function assertParse<T>(): Primitive<T> {
224
+ halt("assertParse");
225
+ }
226
+
227
+ /**
228
+ * > You must configure the generic argument `T`.
229
+ *
230
+ * Safe `JSON.parse()` function with type checking.
231
+ *
232
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
233
+ * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
234
+ * instance with type checking.
235
+ *
236
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
237
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
238
+ * value would be returned.
239
+ *
240
+ * @template T Expected type of parsed value
241
+ * @param input JSON string
242
+ * @returns Parsed value when exact type, otherwise `null`
243
+ *
244
+ * @author Jeongho Nam - https://github.com/samchon
245
+ */
246
+ export function isParse(input: string): never;
247
+
248
+ /**
249
+ * Safe `JSON.parse()` function with type checking.
250
+ *
251
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
252
+ * Therefore, it converts a JSON (JavaScript Object Notation) string to a `T` typed
253
+ * instance with type checking.
254
+ *
255
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
256
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
257
+ * value would be returned.
258
+ *
259
+ * @template T Expected type of parsed value
260
+ * @param input JSON string
261
+ * @returns Parsed value when exact type, otherwise `null`
262
+ *
263
+ * @author Jeongho Nam - https://github.com/samchon
264
+ */
265
+ export function isParse<T>(input: string): Primitive<T> | null;
266
+
267
+ /**
268
+ * @internal
269
+ */
270
+ export function isParse<T>(): Primitive<T> | null {
271
+ halt("isParse");
272
+ }
273
+
274
+ /**
275
+ * > You must configure the generic argument `T`.
276
+ *
277
+ * Safe `JSON.parse()` function with detailed type validation.
278
+ *
279
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
280
+ * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
281
+ * to a `T` typed instance with detailed type validation.
282
+ *
283
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
284
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
285
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
286
+ * property of the output {@link IValidation.ISuccess} instance.
287
+ *
288
+ * @template T Expected type of parsed value
289
+ * @param input JSON string
290
+ * @returns Validation result with JSON parsed value
291
+ *
292
+ * @author Jeongho Nam - https://github.com/samchon
293
+ */
294
+ export function validateParse(input: string): never;
295
+
296
+ /**
297
+ * Safe `JSON.parse()` function with detailed type validation.
298
+ *
299
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
300
+ * {@link validate}. Therefore, it converts a JSON (JavaScript Object Notation) string
301
+ * to a `T` typed instance with detailed type validation.
302
+ *
303
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
304
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
305
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
306
+ * property of the output {@link IValidation.ISuccess} instance.
307
+ *
308
+ * @template T Expected type of parsed value
309
+ * @param input JSON string
310
+ * @returns Validation result with JSON parsed value
311
+ *
312
+ * @author Jeongho Nam - https://github.com/samchon
313
+ */
314
+ export function validateParse<T>(input: string): IValidation<Primitive<T>>;
315
+
316
+ /**
317
+ * @internal
318
+ */
319
+ export function validateParse<T>(): IValidation<Primitive<T>> {
320
+ halt("validateParse");
321
+ }
322
+
323
+ /* -----------------------------------------------------------
324
+ STRINGIFY
325
+ ----------------------------------------------------------- */
326
+ /**
327
+ * 8x faster `JSON.stringify()` function.
328
+ *
329
+ * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
330
+ * faster than the native `JSON.stringify()` function. The 5x faster principle is
331
+ * because it writes an optimized JSON conversion plan, only for the type `T`.
332
+ *
333
+ * For reference, this `typia.json.stringify()` does not validate the input value type.
334
+ * It just believes that the input value is following the type `T`. Therefore, if you
335
+ * can't ensure the input value type, it would be better to call one of below
336
+ * functions instead.
337
+ *
338
+ * - {@link assertStringify}
339
+ * - {@link isStringify}
340
+ * - {@link validateStringify}
341
+ *
342
+ * @template T Type of the input value
343
+ * @param input A value to be converted
344
+ * @return JSON string value
345
+ *
346
+ * @author Jeongho Nam - https://github.com/samchon
347
+ */
348
+ export function stringify<T>(input: T): string;
349
+
350
+ /**
351
+ * @internal
352
+ */
353
+ export function stringify(): never {
354
+ halt("stringify");
355
+ }
356
+
357
+ /**
358
+ * 5x faster `JSON.stringify()` function with type assertion.
359
+ *
360
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
361
+ * {@link stringify}. Therefore, it converts an input value to
362
+ * JSON (JavaScript Object Notation) string, with type assertion.
363
+ *
364
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
365
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
366
+ * there's no problem on the `input` value, JSON string would be returned.
367
+ *
368
+ * For reference, with type assertion, it is even 5x times faster than the native
369
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
370
+ * with confidence.
371
+ *
372
+ * @template T Type of the input value
373
+ * @param input A value to be asserted and converted
374
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
375
+ * @return JSON string value
376
+ *
377
+ * @author Jeongho Nam - https://github.com/samchon
378
+ */
379
+ export function assertStringify<T>(
380
+ input: T,
381
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
382
+ ): string;
383
+
384
+ /**
385
+ * 5x faster `JSON.stringify()` function with type assertion.
386
+ *
387
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
388
+ * {@link stringify}. Therefore, it converts an input value to
389
+ * JSON (JavaScript Object Notation) string, with type assertion.
390
+ *
391
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
392
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
393
+ * there's no problem on the `input` value, JSON string would be returned.
394
+ *
395
+ * For reference, with type assertion, it is even 5x times faster than the native
396
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
397
+ * with confidence.
398
+ *
399
+ * @template T Type of the input value
400
+ * @param input A value to be asserted and converted
401
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
402
+ * @return JSON string value
403
+ *
404
+ * @author Jeongho Nam - https://github.com/samchon
405
+ */
406
+ export function assertStringify<T>(
407
+ input: T,
408
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
409
+ ): unknown;
410
+
411
+ /**
412
+ * @internal
413
+ */
414
+ export function assertStringify(): string {
415
+ halt("assertStringify");
416
+ }
417
+
418
+ /**
419
+ * 7x faster `JSON.stringify()` function with type checking.
420
+ *
421
+ * `typia.json.stringify()` is a combination function of {@link is} and
422
+ * {@link stringify}. Therefore, it converts an input value to JSON
423
+ * (JavaScript Object Notation) string, with type checking.
424
+ *
425
+ * In such reason, when `input` value is not matched with the type `T`, it returns
426
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
427
+ * would be returned.
428
+ *
429
+ * For reference, with type checking, it is even 7x times faster than the native
430
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
431
+ * with confidence.
432
+ *
433
+ * @template T Type of the input value
434
+ * @param input A value to be checked and converted
435
+ * @return JSON string value when exact type, otherwise null
436
+ *
437
+ * @author Jeongho Nam - https://github.com/samchon
438
+ */
439
+ export function isStringify<T>(input: T): string | null;
440
+
441
+ /**
442
+ * 7x faster `JSON.stringify()` function with type checking.
443
+ *
444
+ * `typia.json.isStringify()` is a combination function of {@link is} and
445
+ * {@link stringify}. Therefore, it converts an input value to JSON
446
+ * (JavaScript Object Notation) string, with type checking.
447
+ *
448
+ * In such reason, when `input` value is not matched with the type `T`, it returns
449
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
450
+ * would be returned.
451
+ *
452
+ * For reference, with type checking, it is even 7x times faster than the native
453
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
454
+ * with confidence.
455
+ *
456
+ * @template T Type of the input value
457
+ * @param input A value to be checked and converted
458
+ * @return JSON string value when exact type, otherwise null
459
+ *
460
+ * @author Jeongho Nam - https://github.com/samchon
461
+ */
462
+ export function isStringify<T>(input: unknown): string | null;
463
+
464
+ /**
465
+ * @internal
466
+ */
467
+ export function isStringify(): string | null {
468
+ halt("isStringify");
469
+ }
470
+
471
+ /**
472
+ * 5x faster `JSON.stringify()` function with detailed type validation.
473
+ *
474
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
475
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
476
+ * Notation) string, with detailed type validation.
477
+ *
478
+ * In such reason, when `input` value is not matched with the type `T`, it returns
479
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
480
+ * there's no problem on the `input` value, JSON string would be stored in `data`
481
+ * property of the output {@link IValidation.ISuccess} instance.
482
+ *
483
+ * For reference, with detailed type validation, it is even 5x times faster than the
484
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
485
+ * conversion with confidence.
486
+ *
487
+ * @template T Type of the input value
488
+ * @param input A value to be checked and converted
489
+ * @returns Validation result with JSON string value
490
+ *
491
+ * @author Jeongho Nam - https://github.com/samchon
492
+ */
493
+ export function validateStringify<T>(input: T): IValidation<string>;
494
+
495
+ /**
496
+ * 5x faster `JSON.stringify()` function with detailed type validation.
497
+ *
498
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
499
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
500
+ * Notation) string, with detailed type validation.
501
+ *
502
+ * In such reason, when `input` value is not matched with the type `T`, it returns
503
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
504
+ * there's no problem on the `input` value, JSON string would be stored in `data`
505
+ * property of the output {@link IValidation.ISuccess} instance.
506
+ *
507
+ * For reference, with detailed type validation, it is even 5x times faster than the
508
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
509
+ * conversion with confidence.
510
+ *
511
+ * @template T Type of the input value
512
+ * @param input A value to be checked and converted
513
+ * @returns Validation result with JSON string value
514
+ *
515
+ * @author Jeongho Nam - https://github.com/samchon
516
+ */
517
+ export function validateStringify<T>(input: unknown): IValidation<string>;
518
+
519
+ /**
520
+ * @internal
521
+ */
522
+ export function validateStringify(): IValidation<string> {
523
+ halt("validateStringify");
524
+ }
525
+
526
+ /* -----------------------------------------------------------
527
+ FACTORY FUNCTIONS
528
+ ----------------------------------------------------------- */
529
+ /**
530
+ * Creates a reusable {@link isParse} function.
531
+ *
532
+ * @danger You must configure the generic argument `T`
533
+ * @returns Nothing until you configure the generic argument `T`
534
+ * @throws compile error
535
+ *
536
+ * @author Jeongho Nam - https://github.com/samchon
537
+ */
538
+ export function createIsParse(): never;
539
+
540
+ /**
541
+ * Creates a reusable {@link isParse} function.
542
+ *
543
+ * @template T Expected type of parsed value
544
+ * @returns A reusable `isParse` function
545
+ *
546
+ * @author Jeongho Nam - https://github.com/samchon
547
+ */
548
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null;
549
+
550
+ /**
551
+ * @internal
552
+ */
553
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null {
554
+ halt("createIsParse");
555
+ }
556
+
557
+ /**
558
+ * Creates a reusable {@link assertParse} function.
559
+ *
560
+ * @danger You must configure the generic argument `T`
561
+ * @returns Nothing until you configure the generic argument `T`
562
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
563
+ * @throws compile error
564
+ *
565
+ * @author Jeongho Nam - https://github.com/samchon
566
+ */
567
+ export function createAssertParse(
568
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
569
+ ): never;
570
+
571
+ /**
572
+ * Creates a reusable {@link assertParse} function.
573
+ *
574
+ * @template T Expected type of parsed value
575
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
576
+ * @returns A reusable `assertParse` function
577
+ *
578
+ * @author Jeongho Nam - https://github.com/samchon
579
+ */
580
+ export function createAssertParse<T>(
581
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
582
+ ): (input: string) => Primitive<T>;
583
+
584
+ /**
585
+ * @internal
586
+ */
587
+ export function createAssertParse<T>(): (input: string) => Primitive<T> {
588
+ halt("createAssertParse");
589
+ }
590
+
591
+ /**
592
+ * Creates a reusable {@link validateParse} function.
593
+ *
594
+ * @danger You must configure the generic argument `T`
595
+ * @returns Nothing until you configure the generic argument `T`
596
+ * @throws compile error
597
+ *
598
+ * @author Jeongho Nam - https://github.com/samchon
599
+ */
600
+ export function createValidateParse(): never;
601
+
602
+ /**
603
+ * Creates a reusable {@link validateParse} function.
604
+ *
605
+ * @template T Expected type of parsed value
606
+ * @returns A reusable `validateParse` function
607
+ *
608
+ * @author Jeongho Nam - https://github.com/samchon
609
+ */
610
+ export function createValidateParse<T>(): (
611
+ input: string,
612
+ ) => IValidation<Primitive<T>>;
613
+
614
+ /**
615
+ * @internal
616
+ */
617
+ export function createValidateParse<T>(): (
618
+ input: string,
619
+ ) => IValidation<Primitive<T>> {
620
+ halt("createValidateParse");
621
+ }
622
+
623
+ /**
624
+ * Creates a reusable {@link stringify} function.
625
+ *
626
+ * @danger You must configure the generic argument `T`
627
+ * @returns Nothing until you configure the generic argument `T`
628
+ * @throws compile error
629
+ *
630
+ * @author Jeongho Nam - https://github.com/samchon
631
+ */
632
+ export function createStringify(): never;
633
+
634
+ /**
635
+ * Creates a reusable {@link stringify} function.
636
+ *
637
+ * @template T Type of the input value
638
+ * @returns A reusable `stringify` function
639
+ *
640
+ * @author Jeongho Nam - https://github.com/samchon
641
+ */
642
+ export function createStringify<T>(): (input: T) => string;
643
+
644
+ /**
645
+ * @internal
646
+ */
647
+ export function createStringify<T>(): (input: T) => string {
648
+ halt("createStringify");
649
+ }
650
+
651
+ /**
652
+ * Creates a reusable {@link assertStringify} function.
653
+ *
654
+ * @danger You must configure the generic argument `T`
655
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
656
+ * @returns Nothing until you configure the generic argument `T`
657
+ * @throws compile error
658
+ *
659
+ * @author Jeongho Nam - https://github.com/samchon
660
+ */
661
+ export function createAssertStringify(
662
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
663
+ ): never;
664
+
665
+ /**
666
+ * Creates a reusable {@link assertStringify} function.
667
+ *
668
+ * @template T Type of the input value
669
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
670
+ * @returns A reusable `assertStringify` function
671
+ *
672
+ * @author Jeongho Nam - https://github.com/samchon
673
+ */
674
+ export function createAssertStringify<T>(
675
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
676
+ ): (input: unknown) => string;
677
+
678
+ /**
679
+ * @internal
680
+ */
681
+ export function createAssertStringify(): (input: unknown) => string {
682
+ halt("createAssertStringify");
683
+ }
684
+
685
+ /**
686
+ * Creates a reusable {@link isStringify} function.
687
+ *
688
+ * @danger You must configure the generic argument `T`
689
+ * @returns Nothing until you configure the generic argument `T`
690
+ * @throws compile error
691
+ *
692
+ * @author Jeongho Nam - https://github.com/samchon
693
+ */
694
+ export function createIsStringify(): never;
695
+
696
+ /**
697
+ * Creates a reusable {@link isStringify} function.
698
+ *
699
+ * @template T Type of the input value
700
+ * @returns A reusable `isStringify` function
701
+ *
702
+ * @author Jeongho Nam - https://github.com/samchon
703
+ */
704
+ export function createIsStringify<T>(): (input: unknown) => string | null;
705
+
706
+ /**
707
+ * @internal
708
+ */
709
+ export function createIsStringify(): (input: unknown) => string | null {
710
+ halt("createIsStringify");
711
+ }
712
+
713
+ /**
714
+ * Creates a reusable {@link validateStringify} function.
715
+ *
716
+ * @danger You must configure the generic argument `T`
717
+ * @returns Nothing until you configure the generic argument `T`
718
+ * @throws compile error
719
+ *
720
+ * @author Jeongho Nam - https://github.com/samchon
721
+ */
722
+ export function createValidateStringify(): never;
723
+
724
+ /**
725
+ * Creates a reusable {@link validateStringify} function.
726
+ *
727
+ * @template T Type of the input value
728
+ * @returns A reusable `validateStringify` function
729
+
730
+ * @author Jeongho Nam - https://github.com/samchon
731
+ */
732
+ export function createValidateStringify<T>(): (
733
+ input: unknown,
734
+ ) => IValidation<string>;
735
+
736
+ /**
737
+ * @internal
738
+ */
739
+ export function createValidateStringify(): (
740
+ input: unknown,
741
+ ) => IValidation<string> {
742
+ halt("createValidateStringify");
743
+ }
744
+
745
+ /**
746
+ * @internal
747
+ */
748
+ function halt(name: string): never {
749
+ throw new Error(
750
+ `Error on typia.json.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
751
+ );
752
+ }