typia 7.0.0-dev.20241005 → 7.0.0-dev.20241008

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 (586) hide show
  1. package/lib/IRandomGenerator.d.ts +17 -21
  2. package/lib/factories/ExpressionFactory.d.ts +1 -1
  3. package/lib/factories/ExpressionFactory.js +2 -2
  4. package/lib/factories/ExpressionFactory.js.map +1 -1
  5. package/lib/factories/LiteralFactory.d.ts +1 -1
  6. package/lib/factories/LiteralFactory.js +20 -17
  7. package/lib/factories/LiteralFactory.js.map +1 -1
  8. package/lib/factories/MetadataCommentTagFactory.js +28 -6
  9. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  10. package/lib/factories/ValueFactory.d.ts +1 -1
  11. package/lib/index.mjs +184 -1437
  12. package/lib/index.mjs.map +1 -1
  13. package/lib/internal/$randomArray.d.ts +1 -1
  14. package/lib/internal/$randomArray.js +1 -0
  15. package/lib/internal/$randomArray.js.map +1 -1
  16. package/lib/internal/$randomBigint.d.ts +1 -1
  17. package/lib/internal/$randomBigint.js +1 -6
  18. package/lib/internal/$randomBigint.js.map +1 -1
  19. package/lib/internal/$randomFormatByte.d.ts +1 -0
  20. package/lib/internal/$randomFormatByte.js +7 -0
  21. package/lib/internal/$randomFormatByte.js.map +1 -0
  22. package/lib/internal/$randomFormatDate.js +1 -0
  23. package/lib/internal/$randomFormatDate.js.map +1 -1
  24. package/lib/internal/$randomFormatDatetime.js +1 -0
  25. package/lib/internal/$randomFormatDatetime.js.map +1 -1
  26. package/lib/internal/$randomFormatDuration.js +1 -0
  27. package/lib/internal/$randomFormatDuration.js.map +1 -1
  28. package/lib/internal/$randomFormatIpv4.js +1 -0
  29. package/lib/internal/$randomFormatIpv4.js.map +1 -1
  30. package/lib/internal/$randomFormatIpv6.js +1 -0
  31. package/lib/internal/$randomFormatIpv6.js.map +1 -1
  32. package/lib/internal/$randomFormatRelativeJsonPointer.js +5 -5
  33. package/lib/internal/$randomFormatRelativeJsonPointer.js.map +1 -1
  34. package/lib/internal/$randomFormatTime.js +2 -1
  35. package/lib/internal/$randomFormatTime.js.map +1 -1
  36. package/lib/internal/$randomFormatUuid.d.ts +1 -0
  37. package/lib/internal/{$randomUuid.js → $randomFormatUuid.js} +4 -4
  38. package/lib/internal/$randomFormatUuid.js.map +1 -0
  39. package/lib/internal/$randomInteger.d.ts +1 -1
  40. package/lib/internal/$randomInteger.js +7 -4
  41. package/lib/internal/$randomInteger.js.map +1 -1
  42. package/lib/internal/$randomNumber.d.ts +1 -1
  43. package/lib/internal/$randomNumber.js +14 -11
  44. package/lib/internal/$randomNumber.js.map +1 -1
  45. package/lib/internal/$randomPick.js +1 -0
  46. package/lib/internal/$randomPick.js.map +1 -1
  47. package/lib/internal/$randomString.d.ts +1 -1
  48. package/lib/internal/$randomString.js +4 -1
  49. package/lib/internal/$randomString.js.map +1 -1
  50. package/lib/llm.d.ts +2 -4
  51. package/lib/llm.js +1 -28
  52. package/lib/llm.js.map +1 -1
  53. package/lib/module.d.ts +4 -8
  54. package/lib/module.js +3 -7
  55. package/lib/module.js.map +1 -1
  56. package/lib/programmers/AssertProgrammer.d.ts +5 -2
  57. package/lib/programmers/AssertProgrammer.js +12 -5
  58. package/lib/programmers/AssertProgrammer.js.map +1 -1
  59. package/lib/programmers/FeatureProgrammer.js +1 -1
  60. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  61. package/lib/programmers/ImportProgrammer.d.ts +25 -4
  62. package/lib/programmers/ImportProgrammer.js +67 -31
  63. package/lib/programmers/ImportProgrammer.js.map +1 -1
  64. package/lib/programmers/RandomProgrammer.js +303 -282
  65. package/lib/programmers/RandomProgrammer.js.map +1 -1
  66. package/lib/programmers/ValidateProgrammer.js +10 -4
  67. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  68. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +1 -1
  69. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  70. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.d.ts +1 -0
  71. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js +14 -5
  72. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js.map +1 -1
  73. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +5 -1
  74. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
  75. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +1 -0
  76. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
  77. package/lib/programmers/helpers/FunctionProgrammer.d.ts +1 -8
  78. package/lib/programmers/helpers/FunctionProgrammer.js +2 -24
  79. package/lib/programmers/helpers/FunctionProgrammer.js.map +1 -1
  80. package/lib/programmers/helpers/RandomJoiner.d.ts +6 -11
  81. package/lib/programmers/helpers/RandomJoiner.js +68 -41
  82. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  83. package/lib/programmers/helpers/disable_function_programmer_declare.js +1 -4
  84. package/lib/programmers/helpers/disable_function_programmer_declare.js.map +1 -1
  85. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +4 -1
  86. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  87. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +4 -1
  88. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  89. package/lib/programmers/http/HttpAssertQueryProgrammer.js +4 -1
  90. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  91. package/lib/programmers/http/HttpFormDataProgrammer.js +10 -6
  92. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  93. package/lib/programmers/http/HttpHeadersProgrammer.js +10 -6
  94. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  95. package/lib/programmers/http/HttpQueryProgrammer.js +10 -6
  96. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  97. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +5 -3
  98. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
  99. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +5 -3
  100. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  101. package/lib/programmers/http/HttpValidateQueryProgrammer.js +5 -3
  102. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  103. package/lib/programmers/json/JsonAssertParseProgrammer.js +14 -7
  104. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  105. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +4 -1
  106. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  107. package/lib/programmers/json/JsonIsParseProgrammer.js +10 -6
  108. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  109. package/lib/programmers/json/JsonValidateParseProgrammer.js +16 -4
  110. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  111. package/lib/programmers/json/JsonValidateStringifyProgrammer.js +7 -3
  112. package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
  113. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +4 -1
  114. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  115. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +4 -1
  116. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  117. package/lib/programmers/misc/MiscCloneProgrammer.js +10 -6
  118. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  119. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +5 -3
  120. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  121. package/lib/programmers/misc/MiscValidatePruneProgrammer.js +10 -4
  122. package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
  123. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +4 -1
  124. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  125. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +2 -1
  126. package/lib/programmers/notations/NotationGeneralProgrammer.js +13 -5
  127. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  128. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +5 -3
  129. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
  130. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +4 -1
  131. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  132. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +4 -1
  133. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  134. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +10 -6
  135. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  136. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +5 -3
  137. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  138. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +7 -3
  139. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
  140. package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
  141. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  142. package/lib/transformers/features/llm/LlmApplicationTransformer.js +2 -2
  143. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  144. package/lib/transformers/features/llm/LlmSchemaTransformer.js +1 -1
  145. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  146. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -1
  147. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  148. package/package.json +1 -1
  149. package/src/CamelCase.ts +75 -75
  150. package/src/IRandomGenerator.ts +11 -27
  151. package/src/PascalCase.ts +71 -71
  152. package/src/Primitive.ts +92 -92
  153. package/src/Resolved.ts +74 -74
  154. package/src/SnakeCase.ts +126 -126
  155. package/src/executable/TypiaGenerateWizard.ts +83 -83
  156. package/src/executable/TypiaPatchWizard.ts +42 -42
  157. package/src/executable/TypiaSetupWizard.ts +174 -174
  158. package/src/executable/setup/ArgumentParser.ts +42 -42
  159. package/src/executable/setup/CommandExecutor.ts +8 -8
  160. package/src/executable/setup/FileRetriever.ts +19 -19
  161. package/src/executable/setup/PackageManager.ts +87 -87
  162. package/src/executable/setup/PluginConfigurator.ts +69 -69
  163. package/src/executable/typia.ts +55 -55
  164. package/src/factories/CommentFactory.ts +79 -79
  165. package/src/factories/ExpressionFactory.ts +164 -164
  166. package/src/factories/IdentifierFactory.ts +89 -89
  167. package/src/factories/LiteralFactory.ts +18 -15
  168. package/src/factories/MetadataCollection.ts +278 -278
  169. package/src/factories/MetadataCommentTagFactory.ts +650 -622
  170. package/src/factories/MetadataFactory.ts +400 -400
  171. package/src/factories/MetadataTypeTagFactory.ts +385 -385
  172. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  173. package/src/factories/NumericRangeFactory.ts +72 -72
  174. package/src/factories/StatementFactory.ts +90 -90
  175. package/src/factories/TemplateFactory.ts +64 -64
  176. package/src/factories/TypeFactory.ts +140 -140
  177. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -16
  178. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  179. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  180. package/src/factories/internal/metadata/emplace_metadata_object.ts +206 -206
  181. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  182. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  183. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  184. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  185. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  186. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  187. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  188. package/src/factories/internal/metadata/iterate_metadata_collection.ts +145 -145
  189. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  190. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  191. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  192. package/src/factories/internal/metadata/iterate_metadata_function.ts +88 -88
  193. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +216 -216
  194. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  195. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  196. package/src/factories/internal/metadata/iterate_metadata_object.ts +27 -27
  197. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  198. package/src/factories/internal/metadata/iterate_metadata_sort.ts +83 -83
  199. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  200. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  201. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  202. package/src/internal/$accessExpressionAsString.ts +46 -46
  203. package/src/internal/$assertGuard.ts +13 -13
  204. package/src/internal/$functionalTypeGuardErrorFactory.ts +4 -4
  205. package/src/internal/$httpFormDataReadArray.ts +4 -4
  206. package/src/internal/$httpFormDataReadBigint.ts +18 -18
  207. package/src/internal/$httpFormDataReadBlob.ts +10 -10
  208. package/src/internal/$httpFormDataReadBoolean.ts +16 -16
  209. package/src/internal/$httpFormDataReadFile.ts +10 -10
  210. package/src/internal/$httpFormDataReadNumber.ts +15 -15
  211. package/src/internal/$httpFormDataReadString.ts +10 -10
  212. package/src/internal/$httpHeaderReadBigint.ts +10 -10
  213. package/src/internal/$httpHeaderReadBoolean.ts +8 -8
  214. package/src/internal/$httpHeaderReadNumber.ts +7 -7
  215. package/src/internal/$httpParameterBigint.ts +10 -10
  216. package/src/internal/$httpParameterBoolean.ts +8 -8
  217. package/src/internal/$httpParameterNumber.ts +7 -7
  218. package/src/internal/$httpParameterString.ts +2 -2
  219. package/src/internal/$httpQueryParseURLSearchParams.ts +10 -10
  220. package/src/internal/$httpQueryReadArray.ts +4 -4
  221. package/src/internal/$httpQueryReadBigint.ts +12 -12
  222. package/src/internal/$httpQueryReadBoolean.ts +14 -14
  223. package/src/internal/$httpQueryReadNumber.ts +9 -9
  224. package/src/internal/$httpQueryReadString.ts +4 -4
  225. package/src/internal/$isBetween.ts +2 -2
  226. package/src/internal/$isBigintString.ts +8 -8
  227. package/src/internal/$jsonStringifyNumber.ts +12 -12
  228. package/src/internal/$jsonStringifyRest.ts +3 -3
  229. package/src/internal/$jsonStringifyString.ts +43 -43
  230. package/src/internal/$jsonStringifyTail.ts +2 -2
  231. package/src/internal/$llmApplicationFinalize.ts +18 -18
  232. package/src/internal/$miscCloneAny.ts +48 -48
  233. package/src/internal/$notationAny.ts +37 -37
  234. package/src/internal/$notationCamel.ts +13 -13
  235. package/src/internal/$notationPascal.ts +8 -8
  236. package/src/internal/$notationSnake.ts +43 -43
  237. package/src/internal/$randomArray.ts +21 -20
  238. package/src/internal/$randomBigint.ts +6 -15
  239. package/src/internal/$randomBoolean.ts +1 -1
  240. package/src/internal/{$randomByte.ts → $randomFormatByte.ts} +3 -3
  241. package/src/internal/$randomFormatDate.ts +18 -17
  242. package/src/internal/$randomFormatDatetime.ts +16 -15
  243. package/src/internal/$randomFormatDuration.ts +27 -26
  244. package/src/internal/$randomFormatEmail.ts +11 -11
  245. package/src/internal/$randomFormatHostname.ts +6 -6
  246. package/src/internal/$randomFormatIdnEmail.ts +3 -3
  247. package/src/internal/$randomFormatIdnHostname.ts +3 -3
  248. package/src/internal/$randomFormatIpv4.ts +11 -10
  249. package/src/internal/$randomFormatIpv6.ts +11 -10
  250. package/src/internal/$randomFormatIri.ts +3 -3
  251. package/src/internal/$randomFormatIriReference.ts +3 -3
  252. package/src/internal/$randomFormatJsonPointer.ts +7 -7
  253. package/src/internal/$randomFormatPassword.ts +8 -8
  254. package/src/internal/$randomFormatRegex.ts +4 -4
  255. package/src/internal/$randomFormatRelativeJsonPointer.ts +8 -8
  256. package/src/internal/$randomFormatTime.ts +14 -13
  257. package/src/internal/$randomFormatUri.ts +3 -3
  258. package/src/internal/$randomFormatUriReference.ts +3 -3
  259. package/src/internal/$randomFormatUriTemplate.ts +3 -3
  260. package/src/internal/$randomFormatUrl.ts +11 -11
  261. package/src/internal/{$randomUuid.ts → $randomFormatUuid.ts} +6 -6
  262. package/src/internal/$randomInteger.ts +47 -44
  263. package/src/internal/$randomNumber.ts +74 -71
  264. package/src/internal/$randomPattern.ts +10 -10
  265. package/src/internal/$randomPick.ts +9 -8
  266. package/src/internal/$randomString.ts +24 -24
  267. package/src/internal/$throwTypeGuardError.ts +5 -5
  268. package/src/internal/$validateReport.ts +13 -13
  269. package/src/internal/private/$__notationCapitalize.ts +2 -2
  270. package/src/internal/private/$__notationUnsnake.ts +24 -24
  271. package/src/json.ts +651 -651
  272. package/src/llm.ts +178 -186
  273. package/src/module.ts +933 -945
  274. package/src/programmers/AssertProgrammer.ts +15 -17
  275. package/src/programmers/FeatureProgrammer.ts +616 -616
  276. package/src/programmers/ImportProgrammer.ts +125 -50
  277. package/src/programmers/RandomProgrammer.ts +425 -394
  278. package/src/programmers/ValidateProgrammer.ts +13 -9
  279. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  280. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  281. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  282. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  283. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  284. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  285. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -123
  286. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -281
  287. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -134
  288. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  289. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  290. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  291. package/src/programmers/helpers/FunctionProgrammer.ts +67 -101
  292. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  293. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  294. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  295. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  296. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  297. package/src/programmers/helpers/RandomJoiner.ts +168 -162
  298. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  299. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  300. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  301. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  302. package/src/programmers/helpers/disable_function_programmer_declare.ts +1 -4
  303. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +4 -1
  304. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +4 -1
  305. package/src/programmers/http/HttpAssertQueryProgrammer.ts +4 -1
  306. package/src/programmers/http/HttpFormDataProgrammer.ts +5 -9
  307. package/src/programmers/http/HttpHeadersProgrammer.ts +5 -9
  308. package/src/programmers/http/HttpQueryProgrammer.ts +5 -9
  309. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +5 -3
  310. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +5 -3
  311. package/src/programmers/http/HttpValidateQueryProgrammer.ts +5 -3
  312. package/src/programmers/internal/application_array.ts +56 -56
  313. package/src/programmers/internal/application_bigint.ts +25 -25
  314. package/src/programmers/internal/application_boolean.ts +25 -25
  315. package/src/programmers/internal/application_description.ts +12 -12
  316. package/src/programmers/internal/application_escaped.ts +96 -96
  317. package/src/programmers/internal/application_number.ts +25 -25
  318. package/src/programmers/internal/application_plugin.ts +19 -19
  319. package/src/programmers/internal/application_string.ts +25 -25
  320. package/src/programmers/internal/application_templates.ts +64 -64
  321. package/src/programmers/internal/application_title.ts +20 -20
  322. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  323. package/src/programmers/internal/application_v30_alias.ts +59 -59
  324. package/src/programmers/internal/application_v30_native.ts +29 -29
  325. package/src/programmers/internal/application_v30_object.ts +165 -165
  326. package/src/programmers/internal/application_v30_schema.ts +220 -220
  327. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  328. package/src/programmers/internal/application_v31_alias.ts +47 -47
  329. package/src/programmers/internal/application_v31_constant.ts +29 -29
  330. package/src/programmers/internal/application_v31_native.ts +25 -25
  331. package/src/programmers/internal/application_v31_object.ts +147 -147
  332. package/src/programmers/internal/application_v31_schema.ts +215 -215
  333. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  334. package/src/programmers/internal/check_array_length.ts +46 -46
  335. package/src/programmers/internal/check_bigint.ts +49 -49
  336. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  337. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  338. package/src/programmers/internal/check_everything.ts +23 -23
  339. package/src/programmers/internal/check_native.ts +27 -27
  340. package/src/programmers/internal/check_number.ts +111 -111
  341. package/src/programmers/internal/check_object.ts +75 -75
  342. package/src/programmers/internal/check_string.ts +49 -49
  343. package/src/programmers/internal/check_template.ts +48 -48
  344. package/src/programmers/internal/check_union_array_like.ts +334 -334
  345. package/src/programmers/internal/decode_union_object.ts +116 -116
  346. package/src/programmers/internal/feature_object_entries.ts +61 -61
  347. package/src/programmers/internal/llm_schema_array.ts +22 -22
  348. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  349. package/src/programmers/internal/llm_schema_native.ts +17 -17
  350. package/src/programmers/internal/llm_schema_object.ts +132 -132
  351. package/src/programmers/internal/llm_schema_station.ts +190 -190
  352. package/src/programmers/internal/llm_schema_tuple.ts +31 -31
  353. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  354. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  355. package/src/programmers/internal/prune_object_properties.ts +63 -63
  356. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  357. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  358. package/src/programmers/internal/template_to_pattern.ts +23 -23
  359. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  360. package/src/programmers/json/JsonAssertParseProgrammer.ts +9 -10
  361. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +4 -1
  362. package/src/programmers/json/JsonIsParseProgrammer.ts +5 -9
  363. package/src/programmers/json/JsonValidateParseProgrammer.ts +19 -9
  364. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +8 -3
  365. package/src/programmers/llm/LlmApplicationProgrammer.ts +235 -235
  366. package/src/programmers/llm/LlmSchemaProgrammer.ts +51 -51
  367. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +4 -1
  368. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +4 -1
  369. package/src/programmers/misc/MiscCloneProgrammer.ts +5 -9
  370. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +5 -3
  371. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +13 -9
  372. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +4 -1
  373. package/src/programmers/notations/NotationGeneralProgrammer.ts +27 -23
  374. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +5 -3
  375. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +4 -1
  376. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +4 -1
  377. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +5 -8
  378. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  379. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +5 -3
  380. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +8 -3
  381. package/src/protobuf.ts +868 -868
  382. package/src/schemas/json/IJsonApplication.ts +22 -22
  383. package/src/schemas/metadata/IMetadata.ts +36 -36
  384. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  385. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  386. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  387. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  388. package/src/schemas/metadata/Metadata.ts +616 -616
  389. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  390. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  391. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  392. package/src/schemas/metadata/MetadataObject.ts +139 -139
  393. package/src/schemas/metadata/MetadataParameter.ts +50 -50
  394. package/src/tags/Constant.ts +15 -15
  395. package/src/tags/Default.ts +22 -22
  396. package/src/tags/Example.ts +17 -17
  397. package/src/tags/Examples.ts +16 -16
  398. package/src/tags/ExclusiveMaximum.ts +25 -25
  399. package/src/tags/ExclusiveMinimum.ts +25 -25
  400. package/src/tags/JsonSchemaPlugin.ts +8 -8
  401. package/src/tags/Maximum.ts +19 -19
  402. package/src/tags/Minimum.ts +19 -19
  403. package/src/tags/MultipleOf.ts +21 -21
  404. package/src/tags/Pattern.ts +31 -31
  405. package/src/tags/Type.ts +32 -32
  406. package/src/tags/index.ts +20 -20
  407. package/src/transformers/ITransformOptions.ts +62 -62
  408. package/src/transformers/ImportTransformer.ts +66 -66
  409. package/src/transformers/features/json/JsonApplicationTransformer.ts +1 -1
  410. package/src/transformers/features/llm/LlmApplicationTransformer.ts +2 -2
  411. package/src/transformers/features/llm/LlmSchemaTransformer.ts +1 -1
  412. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +1 -1
  413. package/src/typings/Equal.ts +18 -18
  414. package/src/typings/IsTuple.ts +9 -9
  415. package/src/typings/NativeClass.ts +23 -23
  416. package/src/typings/ValueOf.ts +20 -20
  417. package/src/utils/Escaper.ts +50 -50
  418. package/src/utils/MapUtil.ts +14 -14
  419. package/src/utils/NameEncoder.ts +32 -32
  420. package/src/utils/NamingConvention.ts +94 -94
  421. package/src/utils/StringUtil.ts +16 -16
  422. package/lib/functional/$FormDataReader/$FormDataReader.d.ts +0 -7
  423. package/lib/functional/$FormDataReader/$FormDataReader.js +0 -86
  424. package/lib/functional/$FormDataReader/$FormDataReader.js.map +0 -1
  425. package/lib/functional/$FormDataReader/index.d.ts +0 -1
  426. package/lib/functional/$FormDataReader/index.js +0 -28
  427. package/lib/functional/$FormDataReader/index.js.map +0 -1
  428. package/lib/functional/$HeadersReader/$HeadersReader.d.ts +0 -4
  429. package/lib/functional/$HeadersReader/$HeadersReader.js +0 -36
  430. package/lib/functional/$HeadersReader/$HeadersReader.js.map +0 -1
  431. package/lib/functional/$HeadersReader/index.d.ts +0 -1
  432. package/lib/functional/$HeadersReader/index.js +0 -28
  433. package/lib/functional/$HeadersReader/index.js.map +0 -1
  434. package/lib/functional/$ParameterReader/$ParameterReader.d.ts +0 -4
  435. package/lib/functional/$ParameterReader/$ParameterReader.js +0 -36
  436. package/lib/functional/$ParameterReader/$ParameterReader.js.map +0 -1
  437. package/lib/functional/$ParameterReader/index.d.ts +0 -1
  438. package/lib/functional/$ParameterReader/index.js +0 -28
  439. package/lib/functional/$ParameterReader/index.js.map +0 -1
  440. package/lib/functional/$ProtobufReader.d.ts +0 -35
  441. package/lib/functional/$ProtobufReader.js +0 -166
  442. package/lib/functional/$ProtobufReader.js.map +0 -1
  443. package/lib/functional/$ProtobufSizer.d.ts +0 -36
  444. package/lib/functional/$ProtobufSizer.js +0 -118
  445. package/lib/functional/$ProtobufSizer.js.map +0 -1
  446. package/lib/functional/$ProtobufWriter.d.ts +0 -45
  447. package/lib/functional/$ProtobufWriter.js +0 -104
  448. package/lib/functional/$ProtobufWriter.js.map +0 -1
  449. package/lib/functional/$QueryReader/$QueryReader.d.ts +0 -6
  450. package/lib/functional/$QueryReader/$QueryReader.js +0 -55
  451. package/lib/functional/$QueryReader/$QueryReader.js.map +0 -1
  452. package/lib/functional/$QueryReader/index.d.ts +0 -1
  453. package/lib/functional/$QueryReader/index.js +0 -28
  454. package/lib/functional/$QueryReader/index.js.map +0 -1
  455. package/lib/functional/$any.d.ts +0 -1
  456. package/lib/functional/$any.js +0 -7
  457. package/lib/functional/$any.js.map +0 -1
  458. package/lib/functional/$clone.d.ts +0 -2
  459. package/lib/functional/$clone.js +0 -100
  460. package/lib/functional/$clone.js.map +0 -1
  461. package/lib/functional/$convention.d.ts +0 -1
  462. package/lib/functional/$convention.js +0 -60
  463. package/lib/functional/$convention.js.map +0 -1
  464. package/lib/functional/$dictionary.d.ts +0 -2
  465. package/lib/functional/$dictionary.js +0 -18
  466. package/lib/functional/$dictionary.js.map +0 -1
  467. package/lib/functional/$guard.d.ts +0 -1
  468. package/lib/functional/$guard.js +0 -21
  469. package/lib/functional/$guard.js.map +0 -1
  470. package/lib/functional/$is_between.d.ts +0 -1
  471. package/lib/functional/$is_between.js +0 -8
  472. package/lib/functional/$is_between.js.map +0 -1
  473. package/lib/functional/$join.d.ts +0 -1
  474. package/lib/functional/$join.js +0 -50
  475. package/lib/functional/$join.js.map +0 -1
  476. package/lib/functional/$number.d.ts +0 -1
  477. package/lib/functional/$number.js +0 -16
  478. package/lib/functional/$number.js.map +0 -1
  479. package/lib/functional/$report.d.ts +0 -2
  480. package/lib/functional/$report.js +0 -18
  481. package/lib/functional/$report.js.map +0 -1
  482. package/lib/functional/$rest.d.ts +0 -1
  483. package/lib/functional/$rest.js +0 -8
  484. package/lib/functional/$rest.js.map +0 -1
  485. package/lib/functional/$stoll.d.ts +0 -1
  486. package/lib/functional/$stoll.js +0 -14
  487. package/lib/functional/$stoll.js.map +0 -1
  488. package/lib/functional/$string.d.ts +0 -1
  489. package/lib/functional/$string.js +0 -43
  490. package/lib/functional/$string.js.map +0 -1
  491. package/lib/functional/$strlen.d.ts +0 -1
  492. package/lib/functional/$strlen.js +0 -13
  493. package/lib/functional/$strlen.js.map +0 -1
  494. package/lib/functional/$tail.d.ts +0 -1
  495. package/lib/functional/$tail.js +0 -11
  496. package/lib/functional/$tail.js.map +0 -1
  497. package/lib/functional/$throws.d.ts +0 -2
  498. package/lib/functional/$throws.js +0 -22
  499. package/lib/functional/$throws.js.map +0 -1
  500. package/lib/functional/IProtobufWriter.d.ts +0 -15
  501. package/lib/functional/IProtobufWriter.js +0 -3
  502. package/lib/functional/IProtobufWriter.js.map +0 -1
  503. package/lib/functional/Namespace/functional.d.ts +0 -4
  504. package/lib/functional/Namespace/functional.js +0 -9
  505. package/lib/functional/Namespace/functional.js.map +0 -1
  506. package/lib/functional/Namespace/http.d.ts +0 -8
  507. package/lib/functional/Namespace/http.js +0 -16
  508. package/lib/functional/Namespace/http.js.map +0 -1
  509. package/lib/functional/Namespace/index.d.ts +0 -30
  510. package/lib/functional/Namespace/index.js +0 -85
  511. package/lib/functional/Namespace/index.js.map +0 -1
  512. package/lib/functional/Namespace/json.d.ts +0 -9
  513. package/lib/functional/Namespace/json.js +0 -23
  514. package/lib/functional/Namespace/json.js.map +0 -1
  515. package/lib/functional/Namespace/llm.d.ts +0 -4
  516. package/lib/functional/Namespace/llm.js +0 -44
  517. package/lib/functional/Namespace/llm.js.map +0 -1
  518. package/lib/functional/Namespace/misc.d.ts +0 -11
  519. package/lib/functional/Namespace/misc.js +0 -22
  520. package/lib/functional/Namespace/misc.js.map +0 -1
  521. package/lib/functional/Namespace/notations.d.ts +0 -18
  522. package/lib/functional/Namespace/notations.js +0 -26
  523. package/lib/functional/Namespace/notations.js.map +0 -1
  524. package/lib/functional/Namespace/protobuf.d.ts +0 -17
  525. package/lib/functional/Namespace/protobuf.js +0 -25
  526. package/lib/functional/Namespace/protobuf.js.map +0 -1
  527. package/lib/functional/is.d.ts +0 -1
  528. package/lib/functional/is.js +0 -14
  529. package/lib/functional/is.js.map +0 -1
  530. package/lib/internal/$randomByte.d.ts +0 -1
  531. package/lib/internal/$randomByte.js +0 -7
  532. package/lib/internal/$randomByte.js.map +0 -1
  533. package/lib/internal/$randomUuid.d.ts +0 -1
  534. package/lib/internal/$randomUuid.js.map +0 -1
  535. package/lib/programmers/helpers/RandomRanger.d.ts +0 -33
  536. package/lib/programmers/helpers/RandomRanger.js +0 -158
  537. package/lib/programmers/helpers/RandomRanger.js.map +0 -1
  538. package/lib/programmers/internal/random_custom.d.ts +0 -1
  539. package/lib/programmers/internal/random_custom.js +0 -23
  540. package/lib/programmers/internal/random_custom.js.map +0 -1
  541. package/lib/utils/RandomGenerator/RandomGenerator.d.ts +0 -31
  542. package/lib/utils/RandomGenerator/RandomGenerator.js +0 -176
  543. package/lib/utils/RandomGenerator/RandomGenerator.js.map +0 -1
  544. package/lib/utils/RandomGenerator/index.d.ts +0 -1
  545. package/lib/utils/RandomGenerator/index.js +0 -28
  546. package/lib/utils/RandomGenerator/index.js.map +0 -1
  547. package/src/functional/$FormDataReader/$FormDataReader.ts +0 -83
  548. package/src/functional/$FormDataReader/index.ts +0 -1
  549. package/src/functional/$HeadersReader/$HeadersReader.ts +0 -26
  550. package/src/functional/$HeadersReader/index.ts +0 -1
  551. package/src/functional/$ParameterReader/$ParameterReader.ts +0 -29
  552. package/src/functional/$ParameterReader/index.ts +0 -1
  553. package/src/functional/$ProtobufReader.ts +0 -194
  554. package/src/functional/$ProtobufSizer.ts +0 -144
  555. package/src/functional/$ProtobufWriter.ts +0 -145
  556. package/src/functional/$QueryReader/$QueryReader.ts +0 -46
  557. package/src/functional/$QueryReader/index.ts +0 -1
  558. package/src/functional/$any.ts +0 -3
  559. package/src/functional/$clone.ts +0 -48
  560. package/src/functional/$convention.ts +0 -37
  561. package/src/functional/$dictionary.ts +0 -22
  562. package/src/functional/$guard.ts +0 -21
  563. package/src/functional/$is_between.ts +0 -2
  564. package/src/functional/$join.ts +0 -46
  565. package/src/functional/$number.ts +0 -12
  566. package/src/functional/$report.ts +0 -13
  567. package/src/functional/$rest.ts +0 -3
  568. package/src/functional/$stoll.ts +0 -8
  569. package/src/functional/$string.ts +0 -43
  570. package/src/functional/$strlen.ts +0 -7
  571. package/src/functional/$tail.ts +0 -5
  572. package/src/functional/$throws.ts +0 -10
  573. package/src/functional/IProtobufWriter.ts +0 -18
  574. package/src/functional/Namespace/functional.ts +0 -5
  575. package/src/functional/Namespace/http.ts +0 -9
  576. package/src/functional/Namespace/index.ts +0 -75
  577. package/src/functional/Namespace/json.ts +0 -15
  578. package/src/functional/Namespace/llm.ts +0 -20
  579. package/src/functional/Namespace/misc.ts +0 -14
  580. package/src/functional/Namespace/notations.ts +0 -23
  581. package/src/functional/Namespace/protobuf.ts +0 -20
  582. package/src/functional/is.ts +0 -10
  583. package/src/programmers/helpers/RandomRanger.ts +0 -225
  584. package/src/programmers/internal/random_custom.ts +0 -39
  585. package/src/utils/RandomGenerator/RandomGenerator.ts +0 -119
  586. 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
+ }