typia 7.0.1 → 7.0.2-dev.20241205

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