typia 9.0.0 → 9.1.0-dev.20250408

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