typia 7.2.1 → 7.3.0-dev.20241213

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