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