typia 7.6.1 → 7.6.2-dev.20250205

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