typia 9.2.0 → 9.3.0-dev.20250511

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