typia 7.0.0-dev.20241005 → 7.0.0-dev.20241007

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 (630) hide show
  1. package/lib/IRandomGenerator.d.ts +17 -21
  2. package/lib/factories/ExpressionFactory.js +2 -2
  3. package/lib/factories/ExpressionFactory.js.map +1 -1
  4. package/lib/factories/LiteralFactory.d.ts +1 -1
  5. package/lib/factories/LiteralFactory.js +20 -17
  6. package/lib/factories/LiteralFactory.js.map +1 -1
  7. package/lib/factories/MetadataCommentTagFactory.js +28 -6
  8. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  9. package/lib/index.mjs +184 -1437
  10. package/lib/index.mjs.map +1 -1
  11. package/lib/internal/$randomArray.d.ts +1 -1
  12. package/lib/internal/$randomArray.js +1 -0
  13. package/lib/internal/$randomArray.js.map +1 -1
  14. package/lib/internal/$randomBigint.d.ts +1 -1
  15. package/lib/internal/$randomBigint.js +1 -6
  16. package/lib/internal/$randomBigint.js.map +1 -1
  17. package/lib/internal/$randomFormatByte.d.ts +1 -0
  18. package/lib/internal/$randomFormatByte.js +7 -0
  19. package/lib/internal/$randomFormatByte.js.map +1 -0
  20. package/lib/internal/$randomFormatDate.js +1 -0
  21. package/lib/internal/$randomFormatDate.js.map +1 -1
  22. package/lib/internal/$randomFormatDatetime.js +1 -0
  23. package/lib/internal/$randomFormatDatetime.js.map +1 -1
  24. package/lib/internal/$randomFormatDuration.js +1 -0
  25. package/lib/internal/$randomFormatDuration.js.map +1 -1
  26. package/lib/internal/$randomFormatIpv4.js +1 -0
  27. package/lib/internal/$randomFormatIpv4.js.map +1 -1
  28. package/lib/internal/$randomFormatIpv6.js +1 -0
  29. package/lib/internal/$randomFormatIpv6.js.map +1 -1
  30. package/lib/internal/$randomFormatRelativeJsonPointer.js +5 -5
  31. package/lib/internal/$randomFormatRelativeJsonPointer.js.map +1 -1
  32. package/lib/internal/$randomFormatTime.js +2 -1
  33. package/lib/internal/$randomFormatTime.js.map +1 -1
  34. package/lib/internal/$randomFormatUuid.d.ts +1 -0
  35. package/lib/internal/{$randomUuid.js → $randomFormatUuid.js} +4 -4
  36. package/lib/internal/$randomFormatUuid.js.map +1 -0
  37. package/lib/internal/$randomInteger.d.ts +1 -1
  38. package/lib/internal/$randomInteger.js +7 -4
  39. package/lib/internal/$randomInteger.js.map +1 -1
  40. package/lib/internal/$randomNumber.d.ts +1 -1
  41. package/lib/internal/$randomNumber.js +14 -11
  42. package/lib/internal/$randomNumber.js.map +1 -1
  43. package/lib/internal/$randomPick.js +1 -0
  44. package/lib/internal/$randomPick.js.map +1 -1
  45. package/lib/internal/$randomString.d.ts +1 -1
  46. package/lib/internal/$randomString.js +4 -1
  47. package/lib/internal/$randomString.js.map +1 -1
  48. package/lib/llm.d.ts +2 -4
  49. package/lib/llm.js +1 -28
  50. package/lib/llm.js.map +1 -1
  51. package/lib/module.d.ts +4 -8
  52. package/lib/module.js +3 -7
  53. package/lib/module.js.map +1 -1
  54. package/lib/programmers/FeatureProgrammer.js +1 -1
  55. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  56. package/lib/programmers/RandomProgrammer.js +281 -276
  57. package/lib/programmers/RandomProgrammer.js.map +1 -1
  58. package/lib/programmers/helpers/FunctionProgrammer.d.ts +1 -8
  59. package/lib/programmers/helpers/FunctionProgrammer.js +2 -24
  60. package/lib/programmers/helpers/FunctionProgrammer.js.map +1 -1
  61. package/lib/programmers/helpers/RandomJoiner.d.ts +6 -11
  62. package/lib/programmers/helpers/RandomJoiner.js +68 -41
  63. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  64. package/lib/programmers/helpers/disable_function_programmer_declare.js +1 -4
  65. package/lib/programmers/helpers/disable_function_programmer_declare.js.map +1 -1
  66. package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
  67. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  68. package/lib/transformers/features/llm/LlmApplicationTransformer.js +2 -2
  69. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  70. package/lib/transformers/features/llm/LlmSchemaTransformer.js +1 -1
  71. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  72. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -1
  73. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  74. package/package.json +1 -1
  75. package/src/CamelCase.ts +75 -75
  76. package/src/IRandomGenerator.ts +11 -27
  77. package/src/PascalCase.ts +71 -71
  78. package/src/Primitive.ts +92 -92
  79. package/src/Resolved.ts +74 -74
  80. package/src/SnakeCase.ts +126 -126
  81. package/src/executable/TypiaGenerateWizard.ts +83 -83
  82. package/src/executable/TypiaPatchWizard.ts +42 -42
  83. package/src/executable/TypiaSetupWizard.ts +174 -174
  84. package/src/executable/setup/ArgumentParser.ts +42 -42
  85. package/src/executable/setup/CommandExecutor.ts +8 -8
  86. package/src/executable/setup/FileRetriever.ts +19 -19
  87. package/src/executable/setup/PackageManager.ts +87 -87
  88. package/src/executable/setup/PluginConfigurator.ts +69 -69
  89. package/src/executable/typia.ts +55 -55
  90. package/src/factories/CommentFactory.ts +79 -79
  91. package/src/factories/ExpressionFactory.ts +164 -164
  92. package/src/factories/IdentifierFactory.ts +89 -89
  93. package/src/factories/JsonMetadataFactory.ts +63 -63
  94. package/src/factories/LiteralFactory.ts +18 -15
  95. package/src/factories/MetadataCollection.ts +278 -278
  96. package/src/factories/MetadataCommentTagFactory.ts +650 -622
  97. package/src/factories/MetadataFactory.ts +400 -400
  98. package/src/factories/MetadataTypeTagFactory.ts +385 -385
  99. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  100. package/src/factories/NumericRangeFactory.ts +72 -72
  101. package/src/factories/ProtobufFactory.ts +275 -275
  102. package/src/factories/StatementFactory.ts +90 -90
  103. package/src/factories/TemplateFactory.ts +64 -64
  104. package/src/factories/TypeFactory.ts +140 -140
  105. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -16
  106. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  107. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  108. package/src/factories/internal/metadata/emplace_metadata_object.ts +206 -206
  109. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  110. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  111. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  112. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  113. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  114. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  115. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  116. package/src/factories/internal/metadata/iterate_metadata_collection.ts +145 -145
  117. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  118. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  119. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  120. package/src/factories/internal/metadata/iterate_metadata_function.ts +88 -88
  121. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +216 -216
  122. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  123. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  124. package/src/factories/internal/metadata/iterate_metadata_object.ts +27 -27
  125. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  126. package/src/factories/internal/metadata/iterate_metadata_sort.ts +83 -83
  127. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  128. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  129. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  130. package/src/internal/$accessExpressionAsString.ts +46 -46
  131. package/src/internal/$assertGuard.ts +13 -13
  132. package/src/internal/$functionalTypeGuardErrorFactory.ts +4 -4
  133. package/src/internal/$httpFormDataReadArray.ts +4 -4
  134. package/src/internal/$httpFormDataReadBigint.ts +18 -18
  135. package/src/internal/$httpFormDataReadBlob.ts +10 -10
  136. package/src/internal/$httpFormDataReadBoolean.ts +16 -16
  137. package/src/internal/$httpFormDataReadFile.ts +10 -10
  138. package/src/internal/$httpFormDataReadNumber.ts +15 -15
  139. package/src/internal/$httpFormDataReadString.ts +10 -10
  140. package/src/internal/$httpHeaderReadBigint.ts +10 -10
  141. package/src/internal/$httpHeaderReadBoolean.ts +8 -8
  142. package/src/internal/$httpHeaderReadNumber.ts +7 -7
  143. package/src/internal/$httpParameterBigint.ts +10 -10
  144. package/src/internal/$httpParameterBoolean.ts +8 -8
  145. package/src/internal/$httpParameterNumber.ts +7 -7
  146. package/src/internal/$httpParameterString.ts +2 -2
  147. package/src/internal/$httpQueryParseURLSearchParams.ts +10 -10
  148. package/src/internal/$httpQueryReadArray.ts +4 -4
  149. package/src/internal/$httpQueryReadBigint.ts +12 -12
  150. package/src/internal/$httpQueryReadBoolean.ts +14 -14
  151. package/src/internal/$httpQueryReadNumber.ts +9 -9
  152. package/src/internal/$httpQueryReadString.ts +4 -4
  153. package/src/internal/$isBetween.ts +2 -2
  154. package/src/internal/$isBigintString.ts +8 -8
  155. package/src/internal/$jsonStringifyNumber.ts +12 -12
  156. package/src/internal/$jsonStringifyRest.ts +3 -3
  157. package/src/internal/$jsonStringifyString.ts +43 -43
  158. package/src/internal/$jsonStringifyTail.ts +2 -2
  159. package/src/internal/$llmApplicationFinalize.ts +18 -18
  160. package/src/internal/$miscCloneAny.ts +48 -48
  161. package/src/internal/$notationAny.ts +37 -37
  162. package/src/internal/$notationCamel.ts +13 -13
  163. package/src/internal/$notationPascal.ts +8 -8
  164. package/src/internal/$notationSnake.ts +43 -43
  165. package/src/internal/$randomArray.ts +21 -20
  166. package/src/internal/$randomBigint.ts +6 -15
  167. package/src/internal/$randomBoolean.ts +1 -1
  168. package/src/internal/{$randomByte.ts → $randomFormatByte.ts} +3 -3
  169. package/src/internal/$randomFormatDate.ts +18 -17
  170. package/src/internal/$randomFormatDatetime.ts +16 -15
  171. package/src/internal/$randomFormatDuration.ts +27 -26
  172. package/src/internal/$randomFormatEmail.ts +11 -11
  173. package/src/internal/$randomFormatHostname.ts +6 -6
  174. package/src/internal/$randomFormatIdnEmail.ts +3 -3
  175. package/src/internal/$randomFormatIdnHostname.ts +3 -3
  176. package/src/internal/$randomFormatIpv4.ts +11 -10
  177. package/src/internal/$randomFormatIpv6.ts +11 -10
  178. package/src/internal/$randomFormatIri.ts +3 -3
  179. package/src/internal/$randomFormatIriReference.ts +3 -3
  180. package/src/internal/$randomFormatJsonPointer.ts +7 -7
  181. package/src/internal/$randomFormatPassword.ts +8 -8
  182. package/src/internal/$randomFormatRegex.ts +4 -4
  183. package/src/internal/$randomFormatRelativeJsonPointer.ts +8 -8
  184. package/src/internal/$randomFormatTime.ts +14 -13
  185. package/src/internal/$randomFormatUri.ts +3 -3
  186. package/src/internal/$randomFormatUriReference.ts +3 -3
  187. package/src/internal/$randomFormatUriTemplate.ts +3 -3
  188. package/src/internal/$randomFormatUrl.ts +11 -11
  189. package/src/internal/{$randomUuid.ts → $randomFormatUuid.ts} +6 -6
  190. package/src/internal/$randomInteger.ts +47 -44
  191. package/src/internal/$randomNumber.ts +74 -71
  192. package/src/internal/$randomPattern.ts +10 -10
  193. package/src/internal/$randomPick.ts +9 -8
  194. package/src/internal/$randomString.ts +24 -24
  195. package/src/internal/$throwTypeGuardError.ts +5 -5
  196. package/src/internal/$validateReport.ts +13 -13
  197. package/src/internal/private/$__notationCapitalize.ts +2 -2
  198. package/src/internal/private/$__notationUnsnake.ts +24 -24
  199. package/src/json.ts +651 -651
  200. package/src/llm.ts +178 -186
  201. package/src/module.ts +933 -945
  202. package/src/programmers/AssertProgrammer.ts +456 -456
  203. package/src/programmers/CheckerProgrammer.ts +1610 -1610
  204. package/src/programmers/FeatureProgrammer.ts +616 -616
  205. package/src/programmers/ImportProgrammer.ts +109 -109
  206. package/src/programmers/IsProgrammer.ts +273 -273
  207. package/src/programmers/RandomProgrammer.ts +393 -381
  208. package/src/programmers/TypiaProgrammer.ts +171 -171
  209. package/src/programmers/ValidateProgrammer.ts +430 -430
  210. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  211. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  212. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  213. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  214. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  215. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  216. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +123 -123
  217. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +281 -281
  218. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +134 -134
  219. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  220. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  221. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  222. package/src/programmers/helpers/FunctionProgrammer.ts +67 -101
  223. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  224. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  225. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  226. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  227. package/src/programmers/helpers/RandomJoiner.ts +168 -162
  228. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  229. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  230. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  231. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  232. package/src/programmers/helpers/disable_function_programmer_declare.ts +1 -4
  233. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +96 -96
  234. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +96 -96
  235. package/src/programmers/http/HttpAssertQueryProgrammer.ts +102 -102
  236. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  237. package/src/programmers/http/HttpHeadersProgrammer.ts +404 -404
  238. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  239. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  240. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  241. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  242. package/src/programmers/http/HttpQueryProgrammer.ts +333 -333
  243. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +90 -90
  244. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +90 -90
  245. package/src/programmers/http/HttpValidateQueryProgrammer.ts +96 -96
  246. package/src/programmers/internal/application_array.ts +56 -56
  247. package/src/programmers/internal/application_bigint.ts +25 -25
  248. package/src/programmers/internal/application_boolean.ts +25 -25
  249. package/src/programmers/internal/application_description.ts +12 -12
  250. package/src/programmers/internal/application_escaped.ts +96 -96
  251. package/src/programmers/internal/application_number.ts +25 -25
  252. package/src/programmers/internal/application_plugin.ts +19 -19
  253. package/src/programmers/internal/application_string.ts +25 -25
  254. package/src/programmers/internal/application_templates.ts +64 -64
  255. package/src/programmers/internal/application_title.ts +20 -20
  256. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  257. package/src/programmers/internal/application_v30_alias.ts +59 -59
  258. package/src/programmers/internal/application_v30_native.ts +29 -29
  259. package/src/programmers/internal/application_v30_object.ts +165 -165
  260. package/src/programmers/internal/application_v30_schema.ts +220 -220
  261. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  262. package/src/programmers/internal/application_v31_alias.ts +47 -47
  263. package/src/programmers/internal/application_v31_constant.ts +29 -29
  264. package/src/programmers/internal/application_v31_native.ts +25 -25
  265. package/src/programmers/internal/application_v31_object.ts +147 -147
  266. package/src/programmers/internal/application_v31_schema.ts +215 -215
  267. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  268. package/src/programmers/internal/check_array_length.ts +46 -46
  269. package/src/programmers/internal/check_bigint.ts +49 -49
  270. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  271. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  272. package/src/programmers/internal/check_everything.ts +23 -23
  273. package/src/programmers/internal/check_native.ts +27 -27
  274. package/src/programmers/internal/check_number.ts +111 -111
  275. package/src/programmers/internal/check_object.ts +75 -75
  276. package/src/programmers/internal/check_string.ts +49 -49
  277. package/src/programmers/internal/check_template.ts +48 -48
  278. package/src/programmers/internal/check_union_array_like.ts +334 -334
  279. package/src/programmers/internal/decode_union_object.ts +116 -116
  280. package/src/programmers/internal/feature_object_entries.ts +61 -61
  281. package/src/programmers/internal/llm_schema_array.ts +22 -22
  282. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  283. package/src/programmers/internal/llm_schema_native.ts +17 -17
  284. package/src/programmers/internal/llm_schema_object.ts +132 -132
  285. package/src/programmers/internal/llm_schema_station.ts +190 -190
  286. package/src/programmers/internal/llm_schema_tuple.ts +31 -31
  287. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  288. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  289. package/src/programmers/internal/prune_object_properties.ts +63 -63
  290. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  291. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  292. package/src/programmers/internal/template_to_pattern.ts +23 -23
  293. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  294. package/src/programmers/json/JsonApplicationProgrammer.ts +92 -92
  295. package/src/programmers/json/JsonAssertParseProgrammer.ts +104 -104
  296. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +112 -112
  297. package/src/programmers/json/JsonIsParseProgrammer.ts +118 -118
  298. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  299. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  300. package/src/programmers/json/JsonValidateParseProgrammer.ts +95 -95
  301. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +119 -119
  302. package/src/programmers/llm/LlmApplicationProgrammer.ts +235 -235
  303. package/src/programmers/llm/LlmSchemaProgrammer.ts +51 -51
  304. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +92 -92
  305. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +113 -113
  306. package/src/programmers/misc/MiscCloneProgrammer.ts +1029 -1029
  307. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  308. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  309. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  310. package/src/programmers/misc/MiscPruneProgrammer.ts +725 -725
  311. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +109 -109
  312. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +109 -109
  313. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +98 -98
  314. package/src/programmers/notations/NotationGeneralProgrammer.ts +973 -973
  315. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  316. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +117 -117
  317. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +95 -95
  318. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +99 -99
  319. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +711 -711
  320. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +1019 -1019
  321. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  322. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  323. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  324. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +90 -90
  325. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +114 -114
  326. package/src/protobuf.ts +868 -868
  327. package/src/schemas/json/IJsonApplication.ts +22 -22
  328. package/src/schemas/metadata/IMetadata.ts +36 -36
  329. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  330. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  331. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  332. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  333. package/src/schemas/metadata/Metadata.ts +616 -616
  334. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  335. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  336. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  337. package/src/schemas/metadata/MetadataObject.ts +139 -139
  338. package/src/schemas/metadata/MetadataParameter.ts +50 -50
  339. package/src/tags/Constant.ts +15 -15
  340. package/src/tags/Default.ts +22 -22
  341. package/src/tags/Example.ts +17 -17
  342. package/src/tags/Examples.ts +16 -16
  343. package/src/tags/ExclusiveMaximum.ts +25 -25
  344. package/src/tags/ExclusiveMinimum.ts +25 -25
  345. package/src/tags/JsonSchemaPlugin.ts +8 -8
  346. package/src/tags/Maximum.ts +19 -19
  347. package/src/tags/Minimum.ts +19 -19
  348. package/src/tags/MultipleOf.ts +21 -21
  349. package/src/tags/Pattern.ts +31 -31
  350. package/src/tags/Type.ts +32 -32
  351. package/src/tags/index.ts +20 -20
  352. package/src/transform.ts +35 -35
  353. package/src/transformers/CallExpressionTransformer.ts +540 -540
  354. package/src/transformers/FileTransformer.ts +120 -120
  355. package/src/transformers/IProgrammerProps.ts +11 -11
  356. package/src/transformers/ITransformProps.ts +9 -9
  357. package/src/transformers/ITypiaContext.ts +18 -18
  358. package/src/transformers/NodeTransformer.ts +17 -17
  359. package/src/transformers/TransformerError.ts +59 -59
  360. package/src/transformers/features/AssertTransformer.ts +24 -24
  361. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  362. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  363. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  364. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  365. package/src/transformers/features/IsTransformer.ts +18 -18
  366. package/src/transformers/features/RandomTransformer.ts +41 -41
  367. package/src/transformers/features/ValidateTransformer.ts +18 -18
  368. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  369. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  370. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  371. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  372. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  373. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  374. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  375. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  376. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  377. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  378. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  379. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  380. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  381. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  382. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  383. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  384. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  385. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  386. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  387. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  388. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  389. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  390. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  391. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  392. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  393. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  394. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  395. package/src/transformers/features/json/JsonApplicationTransformer.ts +130 -130
  396. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  397. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  398. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  399. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  400. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  401. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  402. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  403. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  404. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  405. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  406. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  407. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  408. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  409. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  410. package/src/transformers/features/llm/LlmApplicationTransformer.ts +86 -86
  411. package/src/transformers/features/llm/LlmSchemaTransformer.ts +59 -59
  412. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  413. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  414. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  415. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  416. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  417. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  418. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  419. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  420. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  421. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  422. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  423. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  424. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  425. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  426. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  427. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  428. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  429. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  430. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  431. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  432. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  433. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  434. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  435. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  436. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  437. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  438. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  439. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  440. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  441. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  442. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  443. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  444. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  445. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  446. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  447. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  448. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  449. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  450. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  451. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  452. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  453. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  454. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  455. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  456. package/src/transformers/internal/GenericTransformer.ts +101 -101
  457. package/src/typings/Equal.ts +18 -18
  458. package/src/typings/IsTuple.ts +9 -9
  459. package/src/typings/NativeClass.ts +23 -23
  460. package/src/typings/ValueOf.ts +20 -20
  461. package/src/utils/Escaper.ts +50 -50
  462. package/src/utils/MapUtil.ts +14 -14
  463. package/src/utils/NameEncoder.ts +32 -32
  464. package/src/utils/NamingConvention.ts +94 -94
  465. package/src/utils/StringUtil.ts +16 -16
  466. package/lib/functional/$FormDataReader/$FormDataReader.d.ts +0 -7
  467. package/lib/functional/$FormDataReader/$FormDataReader.js +0 -86
  468. package/lib/functional/$FormDataReader/$FormDataReader.js.map +0 -1
  469. package/lib/functional/$FormDataReader/index.d.ts +0 -1
  470. package/lib/functional/$FormDataReader/index.js +0 -28
  471. package/lib/functional/$FormDataReader/index.js.map +0 -1
  472. package/lib/functional/$HeadersReader/$HeadersReader.d.ts +0 -4
  473. package/lib/functional/$HeadersReader/$HeadersReader.js +0 -36
  474. package/lib/functional/$HeadersReader/$HeadersReader.js.map +0 -1
  475. package/lib/functional/$HeadersReader/index.d.ts +0 -1
  476. package/lib/functional/$HeadersReader/index.js +0 -28
  477. package/lib/functional/$HeadersReader/index.js.map +0 -1
  478. package/lib/functional/$ParameterReader/$ParameterReader.d.ts +0 -4
  479. package/lib/functional/$ParameterReader/$ParameterReader.js +0 -36
  480. package/lib/functional/$ParameterReader/$ParameterReader.js.map +0 -1
  481. package/lib/functional/$ParameterReader/index.d.ts +0 -1
  482. package/lib/functional/$ParameterReader/index.js +0 -28
  483. package/lib/functional/$ParameterReader/index.js.map +0 -1
  484. package/lib/functional/$ProtobufReader.d.ts +0 -35
  485. package/lib/functional/$ProtobufReader.js +0 -166
  486. package/lib/functional/$ProtobufReader.js.map +0 -1
  487. package/lib/functional/$ProtobufSizer.d.ts +0 -36
  488. package/lib/functional/$ProtobufSizer.js +0 -118
  489. package/lib/functional/$ProtobufSizer.js.map +0 -1
  490. package/lib/functional/$ProtobufWriter.d.ts +0 -45
  491. package/lib/functional/$ProtobufWriter.js +0 -104
  492. package/lib/functional/$ProtobufWriter.js.map +0 -1
  493. package/lib/functional/$QueryReader/$QueryReader.d.ts +0 -6
  494. package/lib/functional/$QueryReader/$QueryReader.js +0 -55
  495. package/lib/functional/$QueryReader/$QueryReader.js.map +0 -1
  496. package/lib/functional/$QueryReader/index.d.ts +0 -1
  497. package/lib/functional/$QueryReader/index.js +0 -28
  498. package/lib/functional/$QueryReader/index.js.map +0 -1
  499. package/lib/functional/$any.d.ts +0 -1
  500. package/lib/functional/$any.js +0 -7
  501. package/lib/functional/$any.js.map +0 -1
  502. package/lib/functional/$clone.d.ts +0 -2
  503. package/lib/functional/$clone.js +0 -100
  504. package/lib/functional/$clone.js.map +0 -1
  505. package/lib/functional/$convention.d.ts +0 -1
  506. package/lib/functional/$convention.js +0 -60
  507. package/lib/functional/$convention.js.map +0 -1
  508. package/lib/functional/$dictionary.d.ts +0 -2
  509. package/lib/functional/$dictionary.js +0 -18
  510. package/lib/functional/$dictionary.js.map +0 -1
  511. package/lib/functional/$guard.d.ts +0 -1
  512. package/lib/functional/$guard.js +0 -21
  513. package/lib/functional/$guard.js.map +0 -1
  514. package/lib/functional/$is_between.d.ts +0 -1
  515. package/lib/functional/$is_between.js +0 -8
  516. package/lib/functional/$is_between.js.map +0 -1
  517. package/lib/functional/$join.d.ts +0 -1
  518. package/lib/functional/$join.js +0 -50
  519. package/lib/functional/$join.js.map +0 -1
  520. package/lib/functional/$number.d.ts +0 -1
  521. package/lib/functional/$number.js +0 -16
  522. package/lib/functional/$number.js.map +0 -1
  523. package/lib/functional/$report.d.ts +0 -2
  524. package/lib/functional/$report.js +0 -18
  525. package/lib/functional/$report.js.map +0 -1
  526. package/lib/functional/$rest.d.ts +0 -1
  527. package/lib/functional/$rest.js +0 -8
  528. package/lib/functional/$rest.js.map +0 -1
  529. package/lib/functional/$stoll.d.ts +0 -1
  530. package/lib/functional/$stoll.js +0 -14
  531. package/lib/functional/$stoll.js.map +0 -1
  532. package/lib/functional/$string.d.ts +0 -1
  533. package/lib/functional/$string.js +0 -43
  534. package/lib/functional/$string.js.map +0 -1
  535. package/lib/functional/$strlen.d.ts +0 -1
  536. package/lib/functional/$strlen.js +0 -13
  537. package/lib/functional/$strlen.js.map +0 -1
  538. package/lib/functional/$tail.d.ts +0 -1
  539. package/lib/functional/$tail.js +0 -11
  540. package/lib/functional/$tail.js.map +0 -1
  541. package/lib/functional/$throws.d.ts +0 -2
  542. package/lib/functional/$throws.js +0 -22
  543. package/lib/functional/$throws.js.map +0 -1
  544. package/lib/functional/IProtobufWriter.d.ts +0 -15
  545. package/lib/functional/IProtobufWriter.js +0 -3
  546. package/lib/functional/IProtobufWriter.js.map +0 -1
  547. package/lib/functional/Namespace/functional.d.ts +0 -4
  548. package/lib/functional/Namespace/functional.js +0 -9
  549. package/lib/functional/Namespace/functional.js.map +0 -1
  550. package/lib/functional/Namespace/http.d.ts +0 -8
  551. package/lib/functional/Namespace/http.js +0 -16
  552. package/lib/functional/Namespace/http.js.map +0 -1
  553. package/lib/functional/Namespace/index.d.ts +0 -30
  554. package/lib/functional/Namespace/index.js +0 -85
  555. package/lib/functional/Namespace/index.js.map +0 -1
  556. package/lib/functional/Namespace/json.d.ts +0 -9
  557. package/lib/functional/Namespace/json.js +0 -23
  558. package/lib/functional/Namespace/json.js.map +0 -1
  559. package/lib/functional/Namespace/llm.d.ts +0 -4
  560. package/lib/functional/Namespace/llm.js +0 -44
  561. package/lib/functional/Namespace/llm.js.map +0 -1
  562. package/lib/functional/Namespace/misc.d.ts +0 -11
  563. package/lib/functional/Namespace/misc.js +0 -22
  564. package/lib/functional/Namespace/misc.js.map +0 -1
  565. package/lib/functional/Namespace/notations.d.ts +0 -18
  566. package/lib/functional/Namespace/notations.js +0 -26
  567. package/lib/functional/Namespace/notations.js.map +0 -1
  568. package/lib/functional/Namespace/protobuf.d.ts +0 -17
  569. package/lib/functional/Namespace/protobuf.js +0 -25
  570. package/lib/functional/Namespace/protobuf.js.map +0 -1
  571. package/lib/functional/is.d.ts +0 -1
  572. package/lib/functional/is.js +0 -14
  573. package/lib/functional/is.js.map +0 -1
  574. package/lib/internal/$randomByte.d.ts +0 -1
  575. package/lib/internal/$randomByte.js +0 -7
  576. package/lib/internal/$randomByte.js.map +0 -1
  577. package/lib/internal/$randomUuid.d.ts +0 -1
  578. package/lib/internal/$randomUuid.js.map +0 -1
  579. package/lib/programmers/helpers/RandomRanger.d.ts +0 -33
  580. package/lib/programmers/helpers/RandomRanger.js +0 -158
  581. package/lib/programmers/helpers/RandomRanger.js.map +0 -1
  582. package/lib/programmers/internal/random_custom.d.ts +0 -1
  583. package/lib/programmers/internal/random_custom.js +0 -23
  584. package/lib/programmers/internal/random_custom.js.map +0 -1
  585. package/lib/utils/RandomGenerator/RandomGenerator.d.ts +0 -31
  586. package/lib/utils/RandomGenerator/RandomGenerator.js +0 -176
  587. package/lib/utils/RandomGenerator/RandomGenerator.js.map +0 -1
  588. package/lib/utils/RandomGenerator/index.d.ts +0 -1
  589. package/lib/utils/RandomGenerator/index.js +0 -28
  590. package/lib/utils/RandomGenerator/index.js.map +0 -1
  591. package/src/functional/$FormDataReader/$FormDataReader.ts +0 -83
  592. package/src/functional/$FormDataReader/index.ts +0 -1
  593. package/src/functional/$HeadersReader/$HeadersReader.ts +0 -26
  594. package/src/functional/$HeadersReader/index.ts +0 -1
  595. package/src/functional/$ParameterReader/$ParameterReader.ts +0 -29
  596. package/src/functional/$ParameterReader/index.ts +0 -1
  597. package/src/functional/$ProtobufReader.ts +0 -194
  598. package/src/functional/$ProtobufSizer.ts +0 -144
  599. package/src/functional/$ProtobufWriter.ts +0 -145
  600. package/src/functional/$QueryReader/$QueryReader.ts +0 -46
  601. package/src/functional/$QueryReader/index.ts +0 -1
  602. package/src/functional/$any.ts +0 -3
  603. package/src/functional/$clone.ts +0 -48
  604. package/src/functional/$convention.ts +0 -37
  605. package/src/functional/$dictionary.ts +0 -22
  606. package/src/functional/$guard.ts +0 -21
  607. package/src/functional/$is_between.ts +0 -2
  608. package/src/functional/$join.ts +0 -46
  609. package/src/functional/$number.ts +0 -12
  610. package/src/functional/$report.ts +0 -13
  611. package/src/functional/$rest.ts +0 -3
  612. package/src/functional/$stoll.ts +0 -8
  613. package/src/functional/$string.ts +0 -43
  614. package/src/functional/$strlen.ts +0 -7
  615. package/src/functional/$tail.ts +0 -5
  616. package/src/functional/$throws.ts +0 -10
  617. package/src/functional/IProtobufWriter.ts +0 -18
  618. package/src/functional/Namespace/functional.ts +0 -5
  619. package/src/functional/Namespace/http.ts +0 -9
  620. package/src/functional/Namespace/index.ts +0 -75
  621. package/src/functional/Namespace/json.ts +0 -15
  622. package/src/functional/Namespace/llm.ts +0 -20
  623. package/src/functional/Namespace/misc.ts +0 -14
  624. package/src/functional/Namespace/notations.ts +0 -23
  625. package/src/functional/Namespace/protobuf.ts +0 -20
  626. package/src/functional/is.ts +0 -10
  627. package/src/programmers/helpers/RandomRanger.ts +0 -225
  628. package/src/programmers/internal/random_custom.ts +0 -39
  629. package/src/utils/RandomGenerator/RandomGenerator.ts +0 -119
  630. package/src/utils/RandomGenerator/index.ts +0 -1
package/src/json.ts CHANGED
@@ -1,651 +1,651 @@
1
- import { IJsonApplication } from "./schemas/json/IJsonApplication";
2
-
3
- import { IValidation } from "./IValidation";
4
- import { Primitive } from "./Primitive";
5
- import { TypeGuardError } from "./TypeGuardError";
6
-
7
- /* ===========================================================
8
- JSON
9
- - SCHEMA
10
- - PARSE
11
- - STRINGIFY
12
- - FACTORY FUNCTIONS
13
- ==============================================================
14
- SCHEMA
15
- ----------------------------------------------------------- */
16
- /**
17
- * > You must configure the generic argument `Types`.
18
- *
19
- * JSON Schema Application.
20
- *
21
- * Creates a JSON schema application which contains both main JSON schemas and
22
- * components. Note that, all of the named types are stored in the
23
- * {@link IJsonApplication.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 Purpose Purpose of the JSON schema
31
- * @template Surplus Allow surplus properties starting with `x-typia-` or not
32
- * @return JSON schema application
33
- *
34
- * @author Jeongho Nam - https://github.com/samchon
35
- */
36
- export function application(): never;
37
-
38
- /**
39
- * JSON Schema Application.
40
- *
41
- * Creates a JSON schema application which contains both main JSON schemas and
42
- * components. Note that, all of the named types are stored in the
43
- * {@link IJsonApplication.components} property for the `$ref` referencing.
44
- *
45
- * Also, you can specify the OpenAPI version by configuring the second generic
46
- * argument `Version`. For reference, the default version is `"3.1"`, and key
47
- * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
48
- *
49
- * @template Types Tuple of target types
50
- * @template Version Version of OpenAPI specification. Default is 3.1
51
- * @return JSON schema application
52
- *
53
- * @author Jeongho Nam - https://github.com/samchon
54
- */
55
- export function application<
56
- Types extends unknown[],
57
- Version extends "3.0" | "3.1" = "3.1",
58
- >(): IJsonApplication<Version, Types>;
59
-
60
- /**
61
- * @internal
62
- */
63
- export function application(): never {
64
- halt("application");
65
- }
66
-
67
- /* -----------------------------------------------------------
68
- PARSE
69
- ----------------------------------------------------------- */
70
- /**
71
- * > You must configure the generic argument `T`.
72
- *
73
- * Safe `JSON.parse()` function with type assertion.
74
- *
75
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
76
- * {@link assert}. Therefore, it convers a JSON (JavaScript Object Notation) string
77
- * to a `T` typed instance with type assertion.
78
- *
79
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
80
- * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
81
- * there's no problem on the parsed value, the parsed value would be returned.
82
- *
83
- * @template T Expected type of parsed value
84
- * @param input JSON string
85
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
86
- * @returns Parsed value
87
- *
88
- * @author Jeongho Nam - https://github.com/samchon
89
- */
90
- export function assertParse(
91
- input: string,
92
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
93
- ): never;
94
-
95
- /**
96
- * Safe `JSON.parse()` function with type assertion.
97
- *
98
- * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
99
- * {@link assert}. Therefore, it convers a JSON (JavaScript Object Notation) string
100
- * to a `T` typed instance with type assertion.
101
- *
102
- * In such reason, when parsed JSON string value is not matched with the type `T`,
103
- * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
104
- * Otherwise, there's no problem on the parsed value, the parsed value would be
105
- * returned.
106
- *
107
- * @template T Expected type of parsed value
108
- * @param input JSON string
109
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
110
- * @returns Parsed value
111
- *
112
- * @author Jeongho Nam - https://github.com/samchon
113
- */
114
- export function assertParse<T>(
115
- input: string,
116
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
117
- ): Primitive<T>;
118
-
119
- /**
120
- * @internal
121
- */
122
- export function assertParse<T>(): Primitive<T> {
123
- halt("assertParse");
124
- }
125
-
126
- /**
127
- * > You must configure the generic argument `T`.
128
- *
129
- * Safe `JSON.parse()` function with type checking.
130
- *
131
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
132
- * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed
133
- * instance with type checking.
134
- *
135
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
136
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
137
- * value would be returned.
138
- *
139
- * @template T Expected type of parsed value
140
- * @param input JSON string
141
- * @returns Parsed value when exact type, otherwise `null`
142
- *
143
- * @author Jeongho Nam - https://github.com/samchon
144
- */
145
- export function isParse(input: string): never;
146
-
147
- /**
148
- * Safe `JSON.parse()` function with type checking.
149
- *
150
- * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
151
- * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed
152
- * instance with type checking.
153
- *
154
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
155
- * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
156
- * value would be returned.
157
- *
158
- * @template T Expected type of parsed value
159
- * @param input JSON string
160
- * @returns Parsed value when exact type, otherwise `null`
161
- *
162
- * @author Jeongho Nam - https://github.com/samchon
163
- */
164
- export function isParse<T>(input: string): Primitive<T> | null;
165
-
166
- /**
167
- * @internal
168
- */
169
- export function isParse<T>(): Primitive<T> | null {
170
- halt("isParse");
171
- }
172
-
173
- /**
174
- * > You must configure the generic argument `T`.
175
- *
176
- * Safe `JSON.parse()` function with detailed type validation.
177
- *
178
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
179
- * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string
180
- * to a `T` typed instance with detailed type validation.
181
- *
182
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
183
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
184
- * there's no problem on the parsed value, the parsed value would be stored in `data`
185
- * property of the output {@link IValidation.ISuccess} instance.
186
- *
187
- * @template T Expected type of parsed value
188
- * @param input JSON string
189
- * @returns Validation result with JSON parsed value
190
- *
191
- * @author Jeongho Nam - https://github.com/samchon
192
- */
193
- export function validateParse(input: string): never;
194
-
195
- /**
196
- * Safe `JSON.parse()` function with detailed type validation.
197
- *
198
- * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
199
- * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string
200
- * to a `T` typed instance with detailed type validation.
201
- *
202
- * In such reason, when parsed JSON string value is not matched with the type `T`, it
203
- * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
204
- * there's no problem on the parsed value, the parsed value would be stored in `data`
205
- * property of the output {@link IValidation.ISuccess} instance.
206
- *
207
- * @template T Expected type of parsed value
208
- * @param input JSON string
209
- * @returns Validation result with JSON parsed value
210
- *
211
- * @author Jeongho Nam - https://github.com/samchon
212
- */
213
- export function validateParse<T>(input: string): IValidation<Primitive<T>>;
214
-
215
- /**
216
- * @internal
217
- */
218
- export function validateParse<T>(): IValidation<Primitive<T>> {
219
- halt("validateParse");
220
- }
221
-
222
- /* -----------------------------------------------------------
223
- STRINGIFY
224
- ----------------------------------------------------------- */
225
- /**
226
- * 8x faster `JSON.stringify()` function.
227
- *
228
- * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
229
- * faster than the native `JSON.stringify()` function. The 5x faster principle is
230
- * because it writes an optimized JSON conversion plan, only for the type `T`.
231
- *
232
- * For reference, this `typia.json.stringify()` does not validate the input value type.
233
- * It just believes that the input value is following the type `T`. Therefore, if you
234
- * can't ensure the input value type, it would be better to call one of below
235
- * functions instead.
236
- *
237
- * - {@link assertStringify}
238
- * - {@link isStringify}
239
- * - {@link validateStringify}
240
- *
241
- * @template T Type of the input value
242
- * @param input A value to be converted
243
- * @return JSON string value
244
- *
245
- * @author Jeongho Nam - https://github.com/samchon
246
- */
247
- export function stringify<T>(input: T): string;
248
-
249
- /**
250
- * @internal
251
- */
252
- export function stringify(): never {
253
- halt("stringify");
254
- }
255
-
256
- /**
257
- * 5x faster `JSON.stringify()` function with type assertion.
258
- *
259
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
260
- * {@link stringify}. Therefore, it converts an input value to
261
- * JSON (JavaScript Object Notation) string, with type assertion.
262
- *
263
- * In such reason, when `input` value is not matched with the type `T`, it throws an
264
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
265
- * there's no problem on the `input` value, JSON string would be returned.
266
- *
267
- * For reference, with type assertion, it is even 5x times faster than the native
268
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
269
- * with confidence.
270
- *
271
- * @template T Type of the input value
272
- * @param input A value to be asserted and converted
273
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
274
- * @return JSON string value
275
- *
276
- * @author Jeongho Nam - https://github.com/samchon
277
- */
278
- export function assertStringify<T>(
279
- input: T,
280
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
281
- ): string;
282
-
283
- /**
284
- * 5x faster `JSON.stringify()` function with type assertion.
285
- *
286
- * `typia.json.assertStringify()` is a combination function of {@link assert} and
287
- * {@link stringify}. Therefore, it converts an input value to
288
- * JSON (JavaScript Object Notation) string, with type assertion.
289
- *
290
- * In such reason, when `input` value is not matched with the type `T`, it throws an
291
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
292
- * there's no problem on the `input` value, JSON string would be returned.
293
- *
294
- * For reference, with type assertion, it is even 5x times faster than the native
295
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
296
- * with confidence.
297
- *
298
- * @template T Type of the input value
299
- * @param input A value to be asserted and converted
300
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
301
- * @return JSON string value
302
- *
303
- * @author Jeongho Nam - https://github.com/samchon
304
- */
305
- export function assertStringify<T>(
306
- input: T,
307
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
308
- ): unknown;
309
-
310
- /**
311
- * @internal
312
- */
313
- export function assertStringify(): string {
314
- halt("assertStringify");
315
- }
316
-
317
- /**
318
- * 7x faster `JSON.stringify()` function with type checking.
319
- *
320
- * `typia.json.stringify()` is a combination function of {@link is} and
321
- * {@link stringify}. Therefore, it converts an input value to JSON
322
- * (JavaScript Object Notation) string, with type checking.
323
- *
324
- * In such reason, when `input` value is not matched with the type `T`, it returns
325
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
326
- * would be returned.
327
- *
328
- * For reference, with type checking, it is even 7x times faster than the native
329
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
330
- * with confidence.
331
- *
332
- * @template T Type of the input value
333
- * @param input A value to be checked and converted
334
- * @return JSON string value when exact type, otherwise null
335
- *
336
- * @author Jeongho Nam - https://github.com/samchon
337
- */
338
- export function isStringify<T>(input: T): string | null;
339
-
340
- /**
341
- * 7x faster `JSON.stringify()` function with type checking.
342
- *
343
- * `typia.json.isStringify()` is a combination function of {@link is} and
344
- * {@link stringify}. Therefore, it converts an input value to JSON
345
- * (JavaScript Object Notation) string, with type checking.
346
- *
347
- * In such reason, when `input` value is not matched with the type `T`, it returns
348
- * `null` value. Otherwise, there's no problem on the `input` value, JSON string
349
- * would be returned.
350
- *
351
- * For reference, with type checking, it is even 7x times faster than the native
352
- * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
353
- * with confidence.
354
- *
355
- * @template T Type of the input value
356
- * @param input A value to be checked and converted
357
- * @return JSON string value when exact type, otherwise null
358
- *
359
- * @author Jeongho Nam - https://github.com/samchon
360
- */
361
- export function isStringify<T>(input: unknown): string | null;
362
-
363
- /**
364
- * @internal
365
- */
366
- export function isStringify(): string | null {
367
- halt("isStringify");
368
- }
369
-
370
- /**
371
- * 5x faster `JSON.stringify()` function with detailed type validation.
372
- *
373
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
374
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
375
- * Notation) string, with detailed type validation.
376
- *
377
- * In such reason, when `input` value is not matched with the type `T`, it returns
378
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
379
- * there's no problem on the `input` value, JSON string would be stored in `data`
380
- * property of the output {@link IValidation.ISuccess} instance.
381
- *
382
- * For reference, with detailed type validation, it is even 5x times faster than the
383
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
384
- * conversion with confidence.
385
- *
386
- * @template T Type of the input value
387
- * @param input A value to be checked and converted
388
- * @returns Validation result with JSON string value
389
- *
390
- * @author Jeongho Nam - https://github.com/samchon
391
- */
392
- export function validateStringify<T>(input: T): IValidation<string>;
393
-
394
- /**
395
- * 5x faster `JSON.stringify()` function with detailed type validation.
396
- *
397
- * `typia.json.validateStringify()` is a combination function of {@link validate} and
398
- * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
399
- * Notation) string, with detailed type validation.
400
- *
401
- * In such reason, when `input` value is not matched with the type `T`, it returns
402
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
403
- * there's no problem on the `input` value, JSON string would be stored in `data`
404
- * property of the output {@link IValidation.ISuccess} instance.
405
- *
406
- * For reference, with detailed type validation, it is even 5x times faster than the
407
- * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
408
- * conversion with confidence.
409
- *
410
- * @template T Type of the input value
411
- * @param input A value to be checked and converted
412
- * @returns Validation result with JSON string value
413
- *
414
- * @author Jeongho Nam - https://github.com/samchon
415
- */
416
- export function validateStringify<T>(input: unknown): IValidation<string>;
417
-
418
- /**
419
- * @internal
420
- */
421
- export function validateStringify(): IValidation<string> {
422
- halt("validateStringify");
423
- }
424
-
425
- /* -----------------------------------------------------------
426
- FACTORY FUNCTIONS
427
- ----------------------------------------------------------- */
428
- /**
429
- * Creates a reusable {@link isParse} function.
430
- *
431
- * @danger You must configure the generic argument `T`
432
- * @returns Nothing until you configure the generic argument `T`
433
- * @throws compile error
434
- *
435
- * @author Jeongho Nam - https://github.com/samchon
436
- */
437
- export function createIsParse(): never;
438
-
439
- /**
440
- * Creates a reusable {@link isParse} function.
441
- *
442
- * @template T Expected type of parsed value
443
- * @returns A reusable `isParse` function
444
- *
445
- * @author Jeongho Nam - https://github.com/samchon
446
- */
447
- export function createIsParse<T>(): (input: string) => Primitive<T> | null;
448
-
449
- /**
450
- * @internal
451
- */
452
- export function createIsParse<T>(): (input: string) => Primitive<T> | null {
453
- halt("createIsParse");
454
- }
455
-
456
- /**
457
- * Creates a reusable {@link assertParse} function.
458
- *
459
- * @danger You must configure the generic argument `T`
460
- * @returns Nothing until you configure the generic argument `T`
461
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
462
- * @throws compile error
463
- *
464
- * @author Jeongho Nam - https://github.com/samchon
465
- */
466
- export function createAssertParse(
467
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
468
- ): never;
469
-
470
- /**
471
- * Creates a reusable {@link assertParse} function.
472
- *
473
- * @template T Expected type of parsed value
474
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
475
- * @returns A reusable `assertParse` function
476
- *
477
- * @author Jeongho Nam - https://github.com/samchon
478
- */
479
- export function createAssertParse<T>(
480
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
481
- ): (input: string) => Primitive<T>;
482
-
483
- /**
484
- * @internal
485
- */
486
- export function createAssertParse<T>(): (input: string) => Primitive<T> {
487
- halt("createAssertParse");
488
- }
489
-
490
- /**
491
- * Creates a reusable {@link validateParse} function.
492
- *
493
- * @danger You must configure the generic argument `T`
494
- * @returns Nothing until you configure the generic argument `T`
495
- * @throws compile error
496
- *
497
- * @author Jeongho Nam - https://github.com/samchon
498
- */
499
- export function createValidateParse(): never;
500
-
501
- /**
502
- * Creates a reusable {@link validateParse} function.
503
- *
504
- * @template T Expected type of parsed value
505
- * @returns A reusable `validateParse` function
506
- *
507
- * @author Jeongho Nam - https://github.com/samchon
508
- */
509
- export function createValidateParse<T>(): (
510
- input: string,
511
- ) => IValidation<Primitive<T>>;
512
-
513
- /**
514
- * @internal
515
- */
516
- export function createValidateParse<T>(): (
517
- input: string,
518
- ) => IValidation<Primitive<T>> {
519
- halt("createValidateParse");
520
- }
521
-
522
- /**
523
- * Creates a reusable {@link stringify} function.
524
- *
525
- * @danger You must configure the generic argument `T`
526
- * @returns Nothing until you configure the generic argument `T`
527
- * @throws compile error
528
- *
529
- * @author Jeongho Nam - https://github.com/samchon
530
- */
531
- export function createStringify(): never;
532
-
533
- /**
534
- * Creates a reusable {@link stringify} function.
535
- *
536
- * @template T Type of the input value
537
- * @returns A reusable `stringify` function
538
- *
539
- * @author Jeongho Nam - https://github.com/samchon
540
- */
541
- export function createStringify<T>(): (input: T) => string;
542
-
543
- /**
544
- * @internal
545
- */
546
- export function createStringify<T>(): (input: T) => string {
547
- halt("createStringify");
548
- }
549
-
550
- /**
551
- * Creates a reusable {@link assertStringify} function.
552
- *
553
- * @danger You must configure the generic argument `T`
554
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
555
- * @returns Nothing until you configure the generic argument `T`
556
- * @throws compile error
557
- *
558
- * @author Jeongho Nam - https://github.com/samchon
559
- */
560
- export function createAssertStringify(
561
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
562
- ): never;
563
-
564
- /**
565
- * Creates a reusable {@link assertStringify} function.
566
- *
567
- * @template T Type of the input value
568
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
569
- * @returns A reusable `assertStringify` function
570
- *
571
- * @author Jeongho Nam - https://github.com/samchon
572
- */
573
- export function createAssertStringify<T>(
574
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
575
- ): (input: unknown) => string;
576
-
577
- /**
578
- * @internal
579
- */
580
- export function createAssertStringify(): (input: unknown) => string {
581
- halt("createAssertStringify");
582
- }
583
-
584
- /**
585
- * Creates a reusable {@link isStringify} function.
586
- *
587
- * @danger You must configure the generic argument `T`
588
- * @returns Nothing until you configure the generic argument `T`
589
- * @throws compile error
590
- *
591
- * @author Jeongho Nam - https://github.com/samchon
592
- */
593
- export function createIsStringify(): never;
594
-
595
- /**
596
- * Creates a reusable {@link isStringify} function.
597
- *
598
- * @template T Type of the input value
599
- * @returns A reusable `isStringify` function
600
- *
601
- * @author Jeongho Nam - https://github.com/samchon
602
- */
603
- export function createIsStringify<T>(): (input: unknown) => string | null;
604
-
605
- /**
606
- * @internal
607
- */
608
- export function createIsStringify(): (input: unknown) => string | null {
609
- halt("createIsStringify");
610
- }
611
-
612
- /**
613
- * Creates a reusable {@link validateStringify} function.
614
- *
615
- * @danger You must configure the generic argument `T`
616
- * @returns Nothing until you configure the generic argument `T`
617
- * @throws compile error
618
- *
619
- * @author Jeongho Nam - https://github.com/samchon
620
- */
621
- export function createValidateStringify(): never;
622
-
623
- /**
624
- * Creates a reusable {@link validateStringify} function.
625
- *
626
- * @template T Type of the input value
627
- * @returns A reusable `validateStringify` function
628
-
629
- * @author Jeongho Nam - https://github.com/samchon
630
- */
631
- export function createValidateStringify<T>(): (
632
- input: unknown,
633
- ) => IValidation<string>;
634
-
635
- /**
636
- * @internal
637
- */
638
- export function createValidateStringify(): (
639
- input: unknown,
640
- ) => IValidation<string> {
641
- halt("createValidateStringify");
642
- }
643
-
644
- /**
645
- * @internal
646
- */
647
- function halt(name: string): never {
648
- throw new Error(
649
- `Error on typia.json.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
650
- );
651
- }
1
+ import { IJsonApplication } from "./schemas/json/IJsonApplication";
2
+
3
+ import { IValidation } from "./IValidation";
4
+ import { Primitive } from "./Primitive";
5
+ import { TypeGuardError } from "./TypeGuardError";
6
+
7
+ /* ===========================================================
8
+ JSON
9
+ - SCHEMA
10
+ - PARSE
11
+ - STRINGIFY
12
+ - FACTORY FUNCTIONS
13
+ ==============================================================
14
+ SCHEMA
15
+ ----------------------------------------------------------- */
16
+ /**
17
+ * > You must configure the generic argument `Types`.
18
+ *
19
+ * JSON Schema Application.
20
+ *
21
+ * Creates a JSON schema application which contains both main JSON schemas and
22
+ * components. Note that, all of the named types are stored in the
23
+ * {@link IJsonApplication.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 Purpose Purpose of the JSON schema
31
+ * @template Surplus Allow surplus properties starting with `x-typia-` or not
32
+ * @return JSON schema application
33
+ *
34
+ * @author Jeongho Nam - https://github.com/samchon
35
+ */
36
+ export function application(): never;
37
+
38
+ /**
39
+ * JSON Schema Application.
40
+ *
41
+ * Creates a JSON schema application which contains both main JSON schemas and
42
+ * components. Note that, all of the named types are stored in the
43
+ * {@link IJsonApplication.components} property for the `$ref` referencing.
44
+ *
45
+ * Also, you can specify the OpenAPI version by configuring the second generic
46
+ * argument `Version`. For reference, the default version is `"3.1"`, and key
47
+ * different of `"3.0"` and `"3.1"` is whether supporting the tuple type or not.
48
+ *
49
+ * @template Types Tuple of target types
50
+ * @template Version Version of OpenAPI specification. Default is 3.1
51
+ * @return JSON schema application
52
+ *
53
+ * @author Jeongho Nam - https://github.com/samchon
54
+ */
55
+ export function application<
56
+ Types extends unknown[],
57
+ Version extends "3.0" | "3.1" = "3.1",
58
+ >(): IJsonApplication<Version, Types>;
59
+
60
+ /**
61
+ * @internal
62
+ */
63
+ export function application(): never {
64
+ halt("application");
65
+ }
66
+
67
+ /* -----------------------------------------------------------
68
+ PARSE
69
+ ----------------------------------------------------------- */
70
+ /**
71
+ * > You must configure the generic argument `T`.
72
+ *
73
+ * Safe `JSON.parse()` function with type assertion.
74
+ *
75
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
76
+ * {@link assert}. Therefore, it convers a JSON (JavaScript Object Notation) string
77
+ * to a `T` typed instance with type assertion.
78
+ *
79
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
80
+ * throws {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
81
+ * there's no problem on the parsed value, the parsed value would be returned.
82
+ *
83
+ * @template T Expected type of parsed value
84
+ * @param input JSON string
85
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
86
+ * @returns Parsed value
87
+ *
88
+ * @author Jeongho Nam - https://github.com/samchon
89
+ */
90
+ export function assertParse(
91
+ input: string,
92
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
93
+ ): never;
94
+
95
+ /**
96
+ * Safe `JSON.parse()` function with type assertion.
97
+ *
98
+ * `typia.json.assertParse()` is a combination function of `JSON.parse()` and
99
+ * {@link assert}. Therefore, it convers a JSON (JavaScript Object Notation) string
100
+ * to a `T` typed instance with type assertion.
101
+ *
102
+ * In such reason, when parsed JSON string value is not matched with the type `T`,
103
+ * it throws {@link TypeGuardError} or custom error generated by *errorFactory*.
104
+ * Otherwise, there's no problem on the parsed value, the parsed value would be
105
+ * returned.
106
+ *
107
+ * @template T Expected type of parsed value
108
+ * @param input JSON string
109
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
110
+ * @returns Parsed value
111
+ *
112
+ * @author Jeongho Nam - https://github.com/samchon
113
+ */
114
+ export function assertParse<T>(
115
+ input: string,
116
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
117
+ ): Primitive<T>;
118
+
119
+ /**
120
+ * @internal
121
+ */
122
+ export function assertParse<T>(): Primitive<T> {
123
+ halt("assertParse");
124
+ }
125
+
126
+ /**
127
+ * > You must configure the generic argument `T`.
128
+ *
129
+ * Safe `JSON.parse()` function with type checking.
130
+ *
131
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
132
+ * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed
133
+ * instance with type checking.
134
+ *
135
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
136
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
137
+ * value would be returned.
138
+ *
139
+ * @template T Expected type of parsed value
140
+ * @param input JSON string
141
+ * @returns Parsed value when exact type, otherwise `null`
142
+ *
143
+ * @author Jeongho Nam - https://github.com/samchon
144
+ */
145
+ export function isParse(input: string): never;
146
+
147
+ /**
148
+ * Safe `JSON.parse()` function with type checking.
149
+ *
150
+ * `typia.json.isParse()` is a combination function of `JSON.parse()` and {@link is}.
151
+ * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed
152
+ * instance with type checking.
153
+ *
154
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
155
+ * returns `null` value. Otherwise, there's no problem on the parsed value, the parsed
156
+ * value would be returned.
157
+ *
158
+ * @template T Expected type of parsed value
159
+ * @param input JSON string
160
+ * @returns Parsed value when exact type, otherwise `null`
161
+ *
162
+ * @author Jeongho Nam - https://github.com/samchon
163
+ */
164
+ export function isParse<T>(input: string): Primitive<T> | null;
165
+
166
+ /**
167
+ * @internal
168
+ */
169
+ export function isParse<T>(): Primitive<T> | null {
170
+ halt("isParse");
171
+ }
172
+
173
+ /**
174
+ * > You must configure the generic argument `T`.
175
+ *
176
+ * Safe `JSON.parse()` function with detailed type validation.
177
+ *
178
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
179
+ * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string
180
+ * to a `T` typed instance with detailed type validation.
181
+ *
182
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
183
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
184
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
185
+ * property of the output {@link IValidation.ISuccess} instance.
186
+ *
187
+ * @template T Expected type of parsed value
188
+ * @param input JSON string
189
+ * @returns Validation result with JSON parsed value
190
+ *
191
+ * @author Jeongho Nam - https://github.com/samchon
192
+ */
193
+ export function validateParse(input: string): never;
194
+
195
+ /**
196
+ * Safe `JSON.parse()` function with detailed type validation.
197
+ *
198
+ * `typia.json.validateParse()` is a combination function of `JSON.parse()` and
199
+ * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string
200
+ * to a `T` typed instance with detailed type validation.
201
+ *
202
+ * In such reason, when parsed JSON string value is not matched with the type `T`, it
203
+ * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
204
+ * there's no problem on the parsed value, the parsed value would be stored in `data`
205
+ * property of the output {@link IValidation.ISuccess} instance.
206
+ *
207
+ * @template T Expected type of parsed value
208
+ * @param input JSON string
209
+ * @returns Validation result with JSON parsed value
210
+ *
211
+ * @author Jeongho Nam - https://github.com/samchon
212
+ */
213
+ export function validateParse<T>(input: string): IValidation<Primitive<T>>;
214
+
215
+ /**
216
+ * @internal
217
+ */
218
+ export function validateParse<T>(): IValidation<Primitive<T>> {
219
+ halt("validateParse");
220
+ }
221
+
222
+ /* -----------------------------------------------------------
223
+ STRINGIFY
224
+ ----------------------------------------------------------- */
225
+ /**
226
+ * 8x faster `JSON.stringify()` function.
227
+ *
228
+ * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x
229
+ * faster than the native `JSON.stringify()` function. The 5x faster principle is
230
+ * because it writes an optimized JSON conversion plan, only for the type `T`.
231
+ *
232
+ * For reference, this `typia.json.stringify()` does not validate the input value type.
233
+ * It just believes that the input value is following the type `T`. Therefore, if you
234
+ * can't ensure the input value type, it would be better to call one of below
235
+ * functions instead.
236
+ *
237
+ * - {@link assertStringify}
238
+ * - {@link isStringify}
239
+ * - {@link validateStringify}
240
+ *
241
+ * @template T Type of the input value
242
+ * @param input A value to be converted
243
+ * @return JSON string value
244
+ *
245
+ * @author Jeongho Nam - https://github.com/samchon
246
+ */
247
+ export function stringify<T>(input: T): string;
248
+
249
+ /**
250
+ * @internal
251
+ */
252
+ export function stringify(): never {
253
+ halt("stringify");
254
+ }
255
+
256
+ /**
257
+ * 5x faster `JSON.stringify()` function with type assertion.
258
+ *
259
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
260
+ * {@link stringify}. Therefore, it converts an input value to
261
+ * JSON (JavaScript Object Notation) string, with type assertion.
262
+ *
263
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
264
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
265
+ * there's no problem on the `input` value, JSON string would be returned.
266
+ *
267
+ * For reference, with type assertion, it is even 5x times faster than the native
268
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
269
+ * with confidence.
270
+ *
271
+ * @template T Type of the input value
272
+ * @param input A value to be asserted and converted
273
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
274
+ * @return JSON string value
275
+ *
276
+ * @author Jeongho Nam - https://github.com/samchon
277
+ */
278
+ export function assertStringify<T>(
279
+ input: T,
280
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
281
+ ): string;
282
+
283
+ /**
284
+ * 5x faster `JSON.stringify()` function with type assertion.
285
+ *
286
+ * `typia.json.assertStringify()` is a combination function of {@link assert} and
287
+ * {@link stringify}. Therefore, it converts an input value to
288
+ * JSON (JavaScript Object Notation) string, with type assertion.
289
+ *
290
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
291
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
292
+ * there's no problem on the `input` value, JSON string would be returned.
293
+ *
294
+ * For reference, with type assertion, it is even 5x times faster than the native
295
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
296
+ * with confidence.
297
+ *
298
+ * @template T Type of the input value
299
+ * @param input A value to be asserted and converted
300
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
301
+ * @return JSON string value
302
+ *
303
+ * @author Jeongho Nam - https://github.com/samchon
304
+ */
305
+ export function assertStringify<T>(
306
+ input: T,
307
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
308
+ ): unknown;
309
+
310
+ /**
311
+ * @internal
312
+ */
313
+ export function assertStringify(): string {
314
+ halt("assertStringify");
315
+ }
316
+
317
+ /**
318
+ * 7x faster `JSON.stringify()` function with type checking.
319
+ *
320
+ * `typia.json.stringify()` is a combination function of {@link is} and
321
+ * {@link stringify}. Therefore, it converts an input value to JSON
322
+ * (JavaScript Object Notation) string, with type checking.
323
+ *
324
+ * In such reason, when `input` value is not matched with the type `T`, it returns
325
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
326
+ * would be returned.
327
+ *
328
+ * For reference, with type checking, it is even 7x times faster than the native
329
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
330
+ * with confidence.
331
+ *
332
+ * @template T Type of the input value
333
+ * @param input A value to be checked and converted
334
+ * @return JSON string value when exact type, otherwise null
335
+ *
336
+ * @author Jeongho Nam - https://github.com/samchon
337
+ */
338
+ export function isStringify<T>(input: T): string | null;
339
+
340
+ /**
341
+ * 7x faster `JSON.stringify()` function with type checking.
342
+ *
343
+ * `typia.json.isStringify()` is a combination function of {@link is} and
344
+ * {@link stringify}. Therefore, it converts an input value to JSON
345
+ * (JavaScript Object Notation) string, with type checking.
346
+ *
347
+ * In such reason, when `input` value is not matched with the type `T`, it returns
348
+ * `null` value. Otherwise, there's no problem on the `input` value, JSON string
349
+ * would be returned.
350
+ *
351
+ * For reference, with type checking, it is even 7x times faster than the native
352
+ * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion
353
+ * with confidence.
354
+ *
355
+ * @template T Type of the input value
356
+ * @param input A value to be checked and converted
357
+ * @return JSON string value when exact type, otherwise null
358
+ *
359
+ * @author Jeongho Nam - https://github.com/samchon
360
+ */
361
+ export function isStringify<T>(input: unknown): string | null;
362
+
363
+ /**
364
+ * @internal
365
+ */
366
+ export function isStringify(): string | null {
367
+ halt("isStringify");
368
+ }
369
+
370
+ /**
371
+ * 5x faster `JSON.stringify()` function with detailed type validation.
372
+ *
373
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
374
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
375
+ * Notation) string, with detailed type validation.
376
+ *
377
+ * In such reason, when `input` value is not matched with the type `T`, it returns
378
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
379
+ * there's no problem on the `input` value, JSON string would be stored in `data`
380
+ * property of the output {@link IValidation.ISuccess} instance.
381
+ *
382
+ * For reference, with detailed type validation, it is even 5x times faster than the
383
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
384
+ * conversion with confidence.
385
+ *
386
+ * @template T Type of the input value
387
+ * @param input A value to be checked and converted
388
+ * @returns Validation result with JSON string value
389
+ *
390
+ * @author Jeongho Nam - https://github.com/samchon
391
+ */
392
+ export function validateStringify<T>(input: T): IValidation<string>;
393
+
394
+ /**
395
+ * 5x faster `JSON.stringify()` function with detailed type validation.
396
+ *
397
+ * `typia.json.validateStringify()` is a combination function of {@link validate} and
398
+ * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object
399
+ * Notation) string, with detailed type validation.
400
+ *
401
+ * In such reason, when `input` value is not matched with the type `T`, it returns
402
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise,
403
+ * there's no problem on the `input` value, JSON string would be stored in `data`
404
+ * property of the output {@link IValidation.ISuccess} instance.
405
+ *
406
+ * For reference, with detailed type validation, it is even 5x times faster than the
407
+ * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON
408
+ * conversion with confidence.
409
+ *
410
+ * @template T Type of the input value
411
+ * @param input A value to be checked and converted
412
+ * @returns Validation result with JSON string value
413
+ *
414
+ * @author Jeongho Nam - https://github.com/samchon
415
+ */
416
+ export function validateStringify<T>(input: unknown): IValidation<string>;
417
+
418
+ /**
419
+ * @internal
420
+ */
421
+ export function validateStringify(): IValidation<string> {
422
+ halt("validateStringify");
423
+ }
424
+
425
+ /* -----------------------------------------------------------
426
+ FACTORY FUNCTIONS
427
+ ----------------------------------------------------------- */
428
+ /**
429
+ * Creates a reusable {@link isParse} function.
430
+ *
431
+ * @danger You must configure the generic argument `T`
432
+ * @returns Nothing until you configure the generic argument `T`
433
+ * @throws compile error
434
+ *
435
+ * @author Jeongho Nam - https://github.com/samchon
436
+ */
437
+ export function createIsParse(): never;
438
+
439
+ /**
440
+ * Creates a reusable {@link isParse} function.
441
+ *
442
+ * @template T Expected type of parsed value
443
+ * @returns A reusable `isParse` function
444
+ *
445
+ * @author Jeongho Nam - https://github.com/samchon
446
+ */
447
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null;
448
+
449
+ /**
450
+ * @internal
451
+ */
452
+ export function createIsParse<T>(): (input: string) => Primitive<T> | null {
453
+ halt("createIsParse");
454
+ }
455
+
456
+ /**
457
+ * Creates a reusable {@link assertParse} function.
458
+ *
459
+ * @danger You must configure the generic argument `T`
460
+ * @returns Nothing until you configure the generic argument `T`
461
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
462
+ * @throws compile error
463
+ *
464
+ * @author Jeongho Nam - https://github.com/samchon
465
+ */
466
+ export function createAssertParse(
467
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
468
+ ): never;
469
+
470
+ /**
471
+ * Creates a reusable {@link assertParse} function.
472
+ *
473
+ * @template T Expected type of parsed value
474
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
475
+ * @returns A reusable `assertParse` function
476
+ *
477
+ * @author Jeongho Nam - https://github.com/samchon
478
+ */
479
+ export function createAssertParse<T>(
480
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
481
+ ): (input: string) => Primitive<T>;
482
+
483
+ /**
484
+ * @internal
485
+ */
486
+ export function createAssertParse<T>(): (input: string) => Primitive<T> {
487
+ halt("createAssertParse");
488
+ }
489
+
490
+ /**
491
+ * Creates a reusable {@link validateParse} function.
492
+ *
493
+ * @danger You must configure the generic argument `T`
494
+ * @returns Nothing until you configure the generic argument `T`
495
+ * @throws compile error
496
+ *
497
+ * @author Jeongho Nam - https://github.com/samchon
498
+ */
499
+ export function createValidateParse(): never;
500
+
501
+ /**
502
+ * Creates a reusable {@link validateParse} function.
503
+ *
504
+ * @template T Expected type of parsed value
505
+ * @returns A reusable `validateParse` function
506
+ *
507
+ * @author Jeongho Nam - https://github.com/samchon
508
+ */
509
+ export function createValidateParse<T>(): (
510
+ input: string,
511
+ ) => IValidation<Primitive<T>>;
512
+
513
+ /**
514
+ * @internal
515
+ */
516
+ export function createValidateParse<T>(): (
517
+ input: string,
518
+ ) => IValidation<Primitive<T>> {
519
+ halt("createValidateParse");
520
+ }
521
+
522
+ /**
523
+ * Creates a reusable {@link stringify} function.
524
+ *
525
+ * @danger You must configure the generic argument `T`
526
+ * @returns Nothing until you configure the generic argument `T`
527
+ * @throws compile error
528
+ *
529
+ * @author Jeongho Nam - https://github.com/samchon
530
+ */
531
+ export function createStringify(): never;
532
+
533
+ /**
534
+ * Creates a reusable {@link stringify} function.
535
+ *
536
+ * @template T Type of the input value
537
+ * @returns A reusable `stringify` function
538
+ *
539
+ * @author Jeongho Nam - https://github.com/samchon
540
+ */
541
+ export function createStringify<T>(): (input: T) => string;
542
+
543
+ /**
544
+ * @internal
545
+ */
546
+ export function createStringify<T>(): (input: T) => string {
547
+ halt("createStringify");
548
+ }
549
+
550
+ /**
551
+ * Creates a reusable {@link assertStringify} function.
552
+ *
553
+ * @danger You must configure the generic argument `T`
554
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
555
+ * @returns Nothing until you configure the generic argument `T`
556
+ * @throws compile error
557
+ *
558
+ * @author Jeongho Nam - https://github.com/samchon
559
+ */
560
+ export function createAssertStringify(
561
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
562
+ ): never;
563
+
564
+ /**
565
+ * Creates a reusable {@link assertStringify} function.
566
+ *
567
+ * @template T Type of the input value
568
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
569
+ * @returns A reusable `assertStringify` function
570
+ *
571
+ * @author Jeongho Nam - https://github.com/samchon
572
+ */
573
+ export function createAssertStringify<T>(
574
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
575
+ ): (input: unknown) => string;
576
+
577
+ /**
578
+ * @internal
579
+ */
580
+ export function createAssertStringify(): (input: unknown) => string {
581
+ halt("createAssertStringify");
582
+ }
583
+
584
+ /**
585
+ * Creates a reusable {@link isStringify} function.
586
+ *
587
+ * @danger You must configure the generic argument `T`
588
+ * @returns Nothing until you configure the generic argument `T`
589
+ * @throws compile error
590
+ *
591
+ * @author Jeongho Nam - https://github.com/samchon
592
+ */
593
+ export function createIsStringify(): never;
594
+
595
+ /**
596
+ * Creates a reusable {@link isStringify} function.
597
+ *
598
+ * @template T Type of the input value
599
+ * @returns A reusable `isStringify` function
600
+ *
601
+ * @author Jeongho Nam - https://github.com/samchon
602
+ */
603
+ export function createIsStringify<T>(): (input: unknown) => string | null;
604
+
605
+ /**
606
+ * @internal
607
+ */
608
+ export function createIsStringify(): (input: unknown) => string | null {
609
+ halt("createIsStringify");
610
+ }
611
+
612
+ /**
613
+ * Creates a reusable {@link validateStringify} function.
614
+ *
615
+ * @danger You must configure the generic argument `T`
616
+ * @returns Nothing until you configure the generic argument `T`
617
+ * @throws compile error
618
+ *
619
+ * @author Jeongho Nam - https://github.com/samchon
620
+ */
621
+ export function createValidateStringify(): never;
622
+
623
+ /**
624
+ * Creates a reusable {@link validateStringify} function.
625
+ *
626
+ * @template T Type of the input value
627
+ * @returns A reusable `validateStringify` function
628
+
629
+ * @author Jeongho Nam - https://github.com/samchon
630
+ */
631
+ export function createValidateStringify<T>(): (
632
+ input: unknown,
633
+ ) => IValidation<string>;
634
+
635
+ /**
636
+ * @internal
637
+ */
638
+ export function createValidateStringify(): (
639
+ input: unknown,
640
+ ) => IValidation<string> {
641
+ halt("createValidateStringify");
642
+ }
643
+
644
+ /**
645
+ * @internal
646
+ */
647
+ function halt(name: string): never {
648
+ throw new Error(
649
+ `Error on typia.json.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
650
+ );
651
+ }