typia 3.3.12

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 (341) hide show
  1. package/CODE_OF_CONDUCT.md +133 -0
  2. package/CONTRIBUTING.md +104 -0
  3. package/LICENSE +21 -0
  4. package/README.md +572 -0
  5. package/lib/IValidation.d.ts +11 -0
  6. package/lib/IValidation.js +3 -0
  7. package/lib/IValidation.js.map +1 -0
  8. package/lib/TypeGuardError.d.ts +16 -0
  9. package/lib/TypeGuardError.js +39 -0
  10. package/lib/TypeGuardError.js.map +1 -0
  11. package/lib/factories/CommentFactory.d.ts +4 -0
  12. package/lib/factories/CommentFactory.js +14 -0
  13. package/lib/factories/CommentFactory.js.map +1 -0
  14. package/lib/factories/ExpressionFactory.d.ts +6 -0
  15. package/lib/factories/ExpressionFactory.js +30 -0
  16. package/lib/factories/ExpressionFactory.js.map +1 -0
  17. package/lib/factories/IdentifierFactory.d.ts +7 -0
  18. package/lib/factories/IdentifierFactory.js +35 -0
  19. package/lib/factories/IdentifierFactory.js.map +1 -0
  20. package/lib/factories/LiteralFactory.d.ts +4 -0
  21. package/lib/factories/LiteralFactory.js +67 -0
  22. package/lib/factories/LiteralFactory.js.map +1 -0
  23. package/lib/factories/MetadataCollection.d.ts +20 -0
  24. package/lib/factories/MetadataCollection.js +141 -0
  25. package/lib/factories/MetadataCollection.js.map +1 -0
  26. package/lib/factories/MetadataFactory.d.ts +10 -0
  27. package/lib/factories/MetadataFactory.js +47 -0
  28. package/lib/factories/MetadataFactory.js.map +1 -0
  29. package/lib/factories/MetadataTagFactory.d.ts +6 -0
  30. package/lib/factories/MetadataTagFactory.js +317 -0
  31. package/lib/factories/MetadataTagFactory.js.map +1 -0
  32. package/lib/factories/StatementFactory.d.ts +7 -0
  33. package/lib/factories/StatementFactory.js +31 -0
  34. package/lib/factories/StatementFactory.js.map +1 -0
  35. package/lib/factories/TemplateFactory.d.ts +4 -0
  36. package/lib/factories/TemplateFactory.js +41 -0
  37. package/lib/factories/TemplateFactory.js.map +1 -0
  38. package/lib/factories/TypeFactory.d.ts +6 -0
  39. package/lib/factories/TypeFactory.js +71 -0
  40. package/lib/factories/TypeFactory.js.map +1 -0
  41. package/lib/factories/ValueFactory.d.ts +8 -0
  42. package/lib/factories/ValueFactory.js +23 -0
  43. package/lib/factories/ValueFactory.js.map +1 -0
  44. package/lib/factories/internal/MetadataHelper.d.ts +4 -0
  45. package/lib/factories/internal/MetadataHelper.js +17 -0
  46. package/lib/factories/internal/MetadataHelper.js.map +1 -0
  47. package/lib/factories/internal/emplace_metadata_object.d.ts +5 -0
  48. package/lib/factories/internal/emplace_metadata_object.js +149 -0
  49. package/lib/factories/internal/emplace_metadata_object.js.map +1 -0
  50. package/lib/factories/internal/explore_metadata.d.ts +5 -0
  51. package/lib/factories/internal/explore_metadata.js +88 -0
  52. package/lib/factories/internal/explore_metadata.js.map +1 -0
  53. package/lib/factories/internal/iterate_metadata.d.ts +5 -0
  54. package/lib/factories/internal/iterate_metadata.js +37 -0
  55. package/lib/factories/internal/iterate_metadata.js.map +1 -0
  56. package/lib/factories/internal/iterate_metadata_array.d.ts +5 -0
  57. package/lib/factories/internal/iterate_metadata_array.js +22 -0
  58. package/lib/factories/internal/iterate_metadata_array.js.map +1 -0
  59. package/lib/factories/internal/iterate_metadata_atomic.d.ts +3 -0
  60. package/lib/factories/internal/iterate_metadata_atomic.js +73 -0
  61. package/lib/factories/internal/iterate_metadata_atomic.js.map +1 -0
  62. package/lib/factories/internal/iterate_metadata_coalesce.d.ts +3 -0
  63. package/lib/factories/internal/iterate_metadata_coalesce.js +35 -0
  64. package/lib/factories/internal/iterate_metadata_coalesce.js.map +1 -0
  65. package/lib/factories/internal/iterate_metadata_constant.d.ts +4 -0
  66. package/lib/factories/internal/iterate_metadata_constant.js +40 -0
  67. package/lib/factories/internal/iterate_metadata_constant.js.map +1 -0
  68. package/lib/factories/internal/iterate_metadata_object.d.ts +5 -0
  69. package/lib/factories/internal/iterate_metadata_object.js +38 -0
  70. package/lib/factories/internal/iterate_metadata_object.js.map +1 -0
  71. package/lib/factories/internal/iterate_metadata_resolve.d.ts +5 -0
  72. package/lib/factories/internal/iterate_metadata_resolve.js +24 -0
  73. package/lib/factories/internal/iterate_metadata_resolve.js.map +1 -0
  74. package/lib/factories/internal/iterate_metadata_template.d.ts +5 -0
  75. package/lib/factories/internal/iterate_metadata_template.js +33 -0
  76. package/lib/factories/internal/iterate_metadata_template.js.map +1 -0
  77. package/lib/factories/internal/iterate_metadata_tuple.d.ts +5 -0
  78. package/lib/factories/internal/iterate_metadata_tuple.js +27 -0
  79. package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -0
  80. package/lib/factories/internal/iterate_metadata_union.d.ts +5 -0
  81. package/lib/factories/internal/iterate_metadata_union.js +82 -0
  82. package/lib/factories/internal/iterate_metadata_union.js.map +1 -0
  83. package/lib/functional/$is_email.d.ts +1 -0
  84. package/lib/functional/$is_email.js +9 -0
  85. package/lib/functional/$is_email.js.map +1 -0
  86. package/lib/functional/$is_ipv4.d.ts +1 -0
  87. package/lib/functional/$is_ipv4.js +9 -0
  88. package/lib/functional/$is_ipv4.js.map +1 -0
  89. package/lib/functional/$is_ipv6.d.ts +1 -0
  90. package/lib/functional/$is_ipv6.js +9 -0
  91. package/lib/functional/$is_ipv6.js.map +1 -0
  92. package/lib/functional/$is_url.d.ts +1 -0
  93. package/lib/functional/$is_url.js +9 -0
  94. package/lib/functional/$is_url.js.map +1 -0
  95. package/lib/functional/$is_uuid.d.ts +1 -0
  96. package/lib/functional/$is_uuid.js +9 -0
  97. package/lib/functional/$is_uuid.js.map +1 -0
  98. package/lib/functional/$join.d.ts +1 -0
  99. package/lib/functional/$join.js +52 -0
  100. package/lib/functional/$join.js.map +1 -0
  101. package/lib/functional/$number.d.ts +1 -0
  102. package/lib/functional/$number.js +23 -0
  103. package/lib/functional/$number.js.map +1 -0
  104. package/lib/functional/$string.d.ts +1 -0
  105. package/lib/functional/$string.js +36 -0
  106. package/lib/functional/$string.js.map +1 -0
  107. package/lib/functional/$tail.d.ts +1 -0
  108. package/lib/functional/$tail.js +8 -0
  109. package/lib/functional/$tail.js.map +1 -0
  110. package/lib/index.d.ts +3 -0
  111. package/lib/index.js +32 -0
  112. package/lib/index.js.map +1 -0
  113. package/lib/metadata/IJsDocTagInfo.d.ts +10 -0
  114. package/lib/metadata/IJsDocTagInfo.js +3 -0
  115. package/lib/metadata/IJsDocTagInfo.js.map +1 -0
  116. package/lib/metadata/IMetadata.d.ts +15 -0
  117. package/lib/metadata/IMetadata.js +3 -0
  118. package/lib/metadata/IMetadata.js.map +1 -0
  119. package/lib/metadata/IMetadataConstant.d.ts +8 -0
  120. package/lib/metadata/IMetadataConstant.js +3 -0
  121. package/lib/metadata/IMetadataConstant.js.map +1 -0
  122. package/lib/metadata/IMetadataObject.d.ts +8 -0
  123. package/lib/metadata/IMetadataObject.js +3 -0
  124. package/lib/metadata/IMetadataObject.js.map +1 -0
  125. package/lib/metadata/IMetadataProperty.d.ts +10 -0
  126. package/lib/metadata/IMetadataProperty.js +3 -0
  127. package/lib/metadata/IMetadataProperty.js.map +1 -0
  128. package/lib/metadata/IMetadataTag.d.ts +74 -0
  129. package/lib/metadata/IMetadataTag.js +3 -0
  130. package/lib/metadata/IMetadataTag.js.map +1 -0
  131. package/lib/metadata/Metadata.d.ts +33 -0
  132. package/lib/metadata/Metadata.js +568 -0
  133. package/lib/metadata/Metadata.js.map +1 -0
  134. package/lib/metadata/MetadataConstant.d.ts +2 -0
  135. package/lib/metadata/MetadataConstant.js +3 -0
  136. package/lib/metadata/MetadataConstant.js.map +1 -0
  137. package/lib/metadata/MetadataObject.d.ts +15 -0
  138. package/lib/metadata/MetadataObject.js +64 -0
  139. package/lib/metadata/MetadataObject.js.map +1 -0
  140. package/lib/metadata/MetadataProperty.d.ts +16 -0
  141. package/lib/metadata/MetadataProperty.js +37 -0
  142. package/lib/metadata/MetadataProperty.js.map +1 -0
  143. package/lib/module.d.ts +382 -0
  144. package/lib/module.js +187 -0
  145. package/lib/module.js.map +1 -0
  146. package/lib/programmers/ApplicationProgrammer.d.ts +11 -0
  147. package/lib/programmers/ApplicationProgrammer.js +48 -0
  148. package/lib/programmers/ApplicationProgrammer.js.map +1 -0
  149. package/lib/programmers/AssertProgrammer.d.ts +5 -0
  150. package/lib/programmers/AssertProgrammer.js +79 -0
  151. package/lib/programmers/AssertProgrammer.js.map +1 -0
  152. package/lib/programmers/CheckerProgrammer.d.ts +41 -0
  153. package/lib/programmers/CheckerProgrammer.js +279 -0
  154. package/lib/programmers/CheckerProgrammer.js.map +1 -0
  155. package/lib/programmers/FeatureProgrammer.d.ts +53 -0
  156. package/lib/programmers/FeatureProgrammer.js +211 -0
  157. package/lib/programmers/FeatureProgrammer.js.map +1 -0
  158. package/lib/programmers/IsProgrammer.d.ts +21 -0
  159. package/lib/programmers/IsProgrammer.js +78 -0
  160. package/lib/programmers/IsProgrammer.js.map +1 -0
  161. package/lib/programmers/StringifyProgrammer.d.ts +5 -0
  162. package/lib/programmers/StringifyProgrammer.js +433 -0
  163. package/lib/programmers/StringifyProgrammer.js.map +1 -0
  164. package/lib/programmers/ValidateProgrammer.d.ts +5 -0
  165. package/lib/programmers/ValidateProgrammer.js +96 -0
  166. package/lib/programmers/ValidateProgrammer.js.map +1 -0
  167. package/lib/programmers/helpers/FunctionImporeter.d.ts +9 -0
  168. package/lib/programmers/helpers/FunctionImporeter.js +58 -0
  169. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -0
  170. package/lib/programmers/helpers/IExpressionEntry.d.ts +8 -0
  171. package/lib/programmers/helpers/IExpressionEntry.js +3 -0
  172. package/lib/programmers/helpers/IExpressionEntry.js.map +1 -0
  173. package/lib/programmers/helpers/OptionPredicator.d.ts +5 -0
  174. package/lib/programmers/helpers/OptionPredicator.js +17 -0
  175. package/lib/programmers/helpers/OptionPredicator.js.map +1 -0
  176. package/lib/programmers/helpers/StringifyJoinder.d.ts +8 -0
  177. package/lib/programmers/helpers/StringifyJoinder.js +95 -0
  178. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -0
  179. package/lib/programmers/helpers/StringifyPredicator.d.ts +5 -0
  180. package/lib/programmers/helpers/StringifyPredicator.js +19 -0
  181. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -0
  182. package/lib/programmers/helpers/UnionExplorer.d.ts +13 -0
  183. package/lib/programmers/helpers/UnionExplorer.js +117 -0
  184. package/lib/programmers/helpers/UnionExplorer.js.map +1 -0
  185. package/lib/programmers/helpers/UnionPredicator.d.ts +11 -0
  186. package/lib/programmers/helpers/UnionPredicator.js +111 -0
  187. package/lib/programmers/helpers/UnionPredicator.js.map +1 -0
  188. package/lib/programmers/internal/application_array.d.ts +1 -0
  189. package/lib/programmers/internal/application_array.js +63 -0
  190. package/lib/programmers/internal/application_array.js.map +1 -0
  191. package/lib/programmers/internal/application_boolean.d.ts +1 -0
  192. package/lib/programmers/internal/application_boolean.js +18 -0
  193. package/lib/programmers/internal/application_boolean.js.map +1 -0
  194. package/lib/programmers/internal/application_constant.d.ts +1 -0
  195. package/lib/programmers/internal/application_constant.js +26 -0
  196. package/lib/programmers/internal/application_constant.js.map +1 -0
  197. package/lib/programmers/internal/application_default.d.ts +1 -0
  198. package/lib/programmers/internal/application_default.js +40 -0
  199. package/lib/programmers/internal/application_default.js.map +1 -0
  200. package/lib/programmers/internal/application_default_string.d.ts +1 -0
  201. package/lib/programmers/internal/application_default_string.js +61 -0
  202. package/lib/programmers/internal/application_default_string.js.map +1 -0
  203. package/lib/programmers/internal/application_number.d.ts +1 -0
  204. package/lib/programmers/internal/application_number.js +86 -0
  205. package/lib/programmers/internal/application_number.js.map +1 -0
  206. package/lib/programmers/internal/application_object.d.ts +1 -0
  207. package/lib/programmers/internal/application_object.js +96 -0
  208. package/lib/programmers/internal/application_object.js.map +1 -0
  209. package/lib/programmers/internal/application_schema.d.ts +1 -0
  210. package/lib/programmers/internal/application_schema.js +246 -0
  211. package/lib/programmers/internal/application_schema.js.map +1 -0
  212. package/lib/programmers/internal/application_string.d.ts +1 -0
  213. package/lib/programmers/internal/application_string.js +66 -0
  214. package/lib/programmers/internal/application_string.js.map +1 -0
  215. package/lib/programmers/internal/application_templates.d.ts +1 -0
  216. package/lib/programmers/internal/application_templates.js +24 -0
  217. package/lib/programmers/internal/application_templates.js.map +1 -0
  218. package/lib/programmers/internal/application_tuple.d.ts +1 -0
  219. package/lib/programmers/internal/application_tuple.js +24 -0
  220. package/lib/programmers/internal/application_tuple.js.map +1 -0
  221. package/lib/programmers/internal/check_array.d.ts +1 -0
  222. package/lib/programmers/internal/check_array.js +52 -0
  223. package/lib/programmers/internal/check_array.js.map +1 -0
  224. package/lib/programmers/internal/check_dynamic_properties.d.ts +1 -0
  225. package/lib/programmers/internal/check_dynamic_properties.js +111 -0
  226. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -0
  227. package/lib/programmers/internal/check_everything.d.ts +1 -0
  228. package/lib/programmers/internal/check_everything.js +17 -0
  229. package/lib/programmers/internal/check_everything.js.map +1 -0
  230. package/lib/programmers/internal/check_length.d.ts +1 -0
  231. package/lib/programmers/internal/check_length.js +28 -0
  232. package/lib/programmers/internal/check_length.js.map +1 -0
  233. package/lib/programmers/internal/check_number.d.ts +1 -0
  234. package/lib/programmers/internal/check_number.js +124 -0
  235. package/lib/programmers/internal/check_number.js.map +1 -0
  236. package/lib/programmers/internal/check_object.d.ts +1 -0
  237. package/lib/programmers/internal/check_object.js +35 -0
  238. package/lib/programmers/internal/check_object.js.map +1 -0
  239. package/lib/programmers/internal/check_string.d.ts +1 -0
  240. package/lib/programmers/internal/check_string.js +45 -0
  241. package/lib/programmers/internal/check_string.js.map +1 -0
  242. package/lib/programmers/internal/check_string_tags.d.ts +1 -0
  243. package/lib/programmers/internal/check_string_tags.js +51 -0
  244. package/lib/programmers/internal/check_string_tags.js.map +1 -0
  245. package/lib/programmers/internal/check_template.d.ts +1 -0
  246. package/lib/programmers/internal/check_template.js +50 -0
  247. package/lib/programmers/internal/check_template.js.map +1 -0
  248. package/lib/programmers/internal/decode_union_object.d.ts +1 -0
  249. package/lib/programmers/internal/decode_union_object.js +56 -0
  250. package/lib/programmers/internal/decode_union_object.js.map +1 -0
  251. package/lib/programmers/internal/metadata_to_pattern.d.ts +2 -0
  252. package/lib/programmers/internal/metadata_to_pattern.js +62 -0
  253. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -0
  254. package/lib/programmers/internal/stringify_dynamic_properties.d.ts +1 -0
  255. package/lib/programmers/internal/stringify_dynamic_properties.js +76 -0
  256. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -0
  257. package/lib/programmers/internal/stringify_regular_properties.d.ts +1 -0
  258. package/lib/programmers/internal/stringify_regular_properties.js +78 -0
  259. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -0
  260. package/lib/programmers/internal/template_to_pattern.d.ts +1 -0
  261. package/lib/programmers/internal/template_to_pattern.js +13 -0
  262. package/lib/programmers/internal/template_to_pattern.js.map +1 -0
  263. package/lib/schemas/IJsonApplication.d.ts +8 -0
  264. package/lib/schemas/IJsonApplication.js +3 -0
  265. package/lib/schemas/IJsonApplication.js.map +1 -0
  266. package/lib/schemas/IJsonComponents.d.ts +19 -0
  267. package/lib/schemas/IJsonComponents.js +3 -0
  268. package/lib/schemas/IJsonComponents.js.map +1 -0
  269. package/lib/schemas/IJsonSchema.d.ts +62 -0
  270. package/lib/schemas/IJsonSchema.js +3 -0
  271. package/lib/schemas/IJsonSchema.js.map +1 -0
  272. package/lib/transform.d.ts +3 -0
  273. package/lib/transform.js +21 -0
  274. package/lib/transform.js.map +1 -0
  275. package/lib/transformers/CallExpressionTransformer.d.ts +5 -0
  276. package/lib/transformers/CallExpressionTransformer.js +45 -0
  277. package/lib/transformers/CallExpressionTransformer.js.map +1 -0
  278. package/lib/transformers/ExpressionWithArgumentTransformer.d.ts +0 -0
  279. package/lib/transformers/ExpressionWithArgumentTransformer.js +2 -0
  280. package/lib/transformers/ExpressionWithArgumentTransformer.js.map +1 -0
  281. package/lib/transformers/FileTransformer.d.ts +5 -0
  282. package/lib/transformers/FileTransformer.js +34 -0
  283. package/lib/transformers/FileTransformer.js.map +1 -0
  284. package/lib/transformers/IProject.d.ts +9 -0
  285. package/lib/transformers/IProject.js +3 -0
  286. package/lib/transformers/IProject.js.map +1 -0
  287. package/lib/transformers/ITransformOptions.d.ts +4 -0
  288. package/lib/transformers/ITransformOptions.js +3 -0
  289. package/lib/transformers/ITransformOptions.js.map +1 -0
  290. package/lib/transformers/NodeTransformer.d.ts +5 -0
  291. package/lib/transformers/NodeTransformer.js +18 -0
  292. package/lib/transformers/NodeTransformer.js.map +1 -0
  293. package/lib/transformers/features/ApplicationTransformer.d.ts +5 -0
  294. package/lib/transformers/features/ApplicationTransformer.js +63 -0
  295. package/lib/transformers/features/ApplicationTransformer.js.map +1 -0
  296. package/lib/transformers/features/AssertTransformer.d.ts +5 -0
  297. package/lib/transformers/features/AssertTransformer.js +30 -0
  298. package/lib/transformers/features/AssertTransformer.js.map +1 -0
  299. package/lib/transformers/features/CreateTransformer.d.ts +5 -0
  300. package/lib/transformers/features/CreateTransformer.js +29 -0
  301. package/lib/transformers/features/CreateTransformer.js.map +1 -0
  302. package/lib/transformers/features/IsTransformer.d.ts +5 -0
  303. package/lib/transformers/features/IsTransformer.js +30 -0
  304. package/lib/transformers/features/IsTransformer.js.map +1 -0
  305. package/lib/transformers/features/StringifyTransformer.d.ts +5 -0
  306. package/lib/transformers/features/StringifyTransformer.js +23 -0
  307. package/lib/transformers/features/StringifyTransformer.js.map +1 -0
  308. package/lib/transformers/features/ValidateTransformer.d.ts +5 -0
  309. package/lib/transformers/features/ValidateTransformer.js +30 -0
  310. package/lib/transformers/features/ValidateTransformer.js.map +1 -0
  311. package/lib/typings/Atomic.d.ts +11 -0
  312. package/lib/typings/Atomic.js +3 -0
  313. package/lib/typings/Atomic.js.map +1 -0
  314. package/lib/typings/ClassProperties.d.ts +4 -0
  315. package/lib/typings/ClassProperties.js +3 -0
  316. package/lib/typings/ClassProperties.js.map +1 -0
  317. package/lib/typings/OmitNever.d.ts +2 -0
  318. package/lib/typings/OmitNever.js +3 -0
  319. package/lib/typings/OmitNever.js.map +1 -0
  320. package/lib/typings/SpecialFields.d.ts +3 -0
  321. package/lib/typings/SpecialFields.js +3 -0
  322. package/lib/typings/SpecialFields.js.map +1 -0
  323. package/lib/typings/Writable.d.ts +5 -0
  324. package/lib/typings/Writable.js +8 -0
  325. package/lib/typings/Writable.js.map +1 -0
  326. package/lib/utils/ArrayUtil.d.ts +8 -0
  327. package/lib/utils/ArrayUtil.js +69 -0
  328. package/lib/utils/ArrayUtil.js.map +1 -0
  329. package/lib/utils/Escaper.d.ts +3 -0
  330. package/lib/utils/Escaper.js +52 -0
  331. package/lib/utils/Escaper.js.map +1 -0
  332. package/lib/utils/MapUtil.d.ts +3 -0
  333. package/lib/utils/MapUtil.js +16 -0
  334. package/lib/utils/MapUtil.js.map +1 -0
  335. package/lib/utils/PatternUtil.d.ts +7 -0
  336. package/lib/utils/PatternUtil.js +59 -0
  337. package/lib/utils/PatternUtil.js.map +1 -0
  338. package/lib/utils/Singleton.d.ts +6 -0
  339. package/lib/utils/Singleton.js +47 -0
  340. package/lib/utils/Singleton.js.map +1 -0
  341. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../src/metadata/Metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IMetadataConstant } from "./IMetadataConstant";
2
+ export import MetadataConstant = IMetadataConstant;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MetadataConstant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataConstant.js","sourceRoot":"","sources":["../../src/metadata/MetadataConstant.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
+ import { IMetadataObject } from "./IMetadataObject";
3
+ import { MetadataProperty } from "./MetadataProperty";
4
+ export declare class MetadataObject {
5
+ readonly name: string;
6
+ readonly properties: Array<MetadataProperty>;
7
+ readonly description: string | undefined;
8
+ readonly jsDocTags: IJsDocTagInfo[];
9
+ /**
10
+ * @hidden
11
+ */
12
+ private constructor();
13
+ static _From_without_properties(obj: IMetadataObject): MetadataObject;
14
+ toJSON(): IMetadataObject;
15
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataObject = void 0;
4
+ var MetadataObject = (function () {
5
+ function MetadataObject(props) {
6
+ this.nullables = [];
7
+ this.name = props.name;
8
+ this.properties = props.properties;
9
+ this.description = props.description;
10
+ this.jsDocTags = props.jsDocTags;
11
+ this.index = props.index;
12
+ this.validated = props.validated;
13
+ this.recursive = false;
14
+ this.nullables = [];
15
+ }
16
+ MetadataObject.create = function (props) {
17
+ return new MetadataObject(props);
18
+ };
19
+ MetadataObject._From_without_properties = function (obj) {
20
+ return this.create({
21
+ name: obj.name,
22
+ properties: [],
23
+ description: obj.description,
24
+ jsDocTags: obj.jsDocTags,
25
+ index: obj.index,
26
+ validated: obj.validated,
27
+ recursive: obj.recursive,
28
+ nullables: obj.nullables.slice(),
29
+ });
30
+ };
31
+ MetadataObject.prototype.toJSON = function () {
32
+ return {
33
+ name: this.name,
34
+ properties: this.properties.map(function (property) { return property.toJSON(); }),
35
+ description: this.description,
36
+ jsDocTags: this.jsDocTags,
37
+ index: this.index,
38
+ validated: this.validated,
39
+ recursive: this.recursive,
40
+ nullables: this.nullables.slice(),
41
+ };
42
+ };
43
+ return MetadataObject;
44
+ }());
45
+ exports.MetadataObject = MetadataObject;
46
+ (function (MetadataObject) {
47
+ function intersects(x, y) {
48
+ return x.properties.some(function (prop) {
49
+ return y.properties.find(function (oppo) { return prop.key === oppo.key; }) !==
50
+ undefined;
51
+ });
52
+ }
53
+ MetadataObject.intersects = intersects;
54
+ function covers(x, y) {
55
+ return (x.properties.length >= y.properties.length &&
56
+ x.properties.every(function (prop) {
57
+ return y.properties.find(function (oppo) { return prop.key === oppo.key; }) !==
58
+ undefined;
59
+ }));
60
+ }
61
+ MetadataObject.covers = covers;
62
+ })(MetadataObject = exports.MetadataObject || (exports.MetadataObject = {}));
63
+ exports.MetadataObject = MetadataObject;
64
+ //# sourceMappingURL=MetadataObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataObject.js","sourceRoot":"","sources":["../../src/metadata/MetadataObject.ts"],"names":[],"mappings":";;;AAMA;IAgCI,wBAAoB,KAAsC;QARnD,cAAS,GAAc,EAAE,CAAC;QAS7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,CAAC;IAKa,qBAAM,GAApB,UAAqB,KAAsC;QACvD,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEa,uCAAwB,GAAtC,UACI,GAAoB;QAEpB,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;YAExB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;SACnC,CAAC,CAAC;IACP,CAAC;IAEM,+BAAM,GAAb;QACI,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,CAAC,MAAM,EAAE,EAAjB,CAAiB,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YAEzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;SACpC,CAAC;IACN,CAAC;IACL,qBAAC;AAAD,CAAC,AAhFD,IAgFC;AAhFY,wCAAc;AAqF3B,WAAiB,cAAc;IAC3B,SAAgB,UAAU,CAAC,CAAiB,EAAE,CAAiB;QAC3D,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CACpB,UAAC,IAAI;YACD,OAAA,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAArB,CAAqB,CAAC;gBAClD,SAAS;QADT,CACS,CAChB,CAAC;IACN,CAAC;IANe,yBAAU,aAMzB,CAAA;IAED,SAAgB,MAAM,CAAC,CAAiB,EAAE,CAAiB;QACvD,OAAO,CACH,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM;YAC1C,CAAC,CAAC,UAAU,CAAC,KAAK,CACd,UAAC,IAAI;gBACD,OAAA,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAArB,CAAqB,CAAC;oBAClD,SAAS;YADT,CACS,CAChB,CACJ,CAAC;IACN,CAAC;IATe,qBAAM,SASrB,CAAA;AACL,CAAC,EAnBgB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAmB9B;AAxGY,wCAAc"}
@@ -0,0 +1,16 @@
1
+ import { IJsDocTagInfo } from "./IJsDocTagInfo";
2
+ import { IMetadataProperty } from "./IMetadataProperty";
3
+ import { IMetadataTag } from "./IMetadataTag";
4
+ import { Metadata } from "./Metadata";
5
+ export declare class MetadataProperty {
6
+ readonly key: Metadata;
7
+ readonly value: Metadata;
8
+ readonly description: string | undefined;
9
+ readonly tags: IMetadataTag[];
10
+ readonly jsDocTags: IJsDocTagInfo[];
11
+ /**
12
+ * @hidden
13
+ */
14
+ private constructor();
15
+ toJSON(): IMetadataProperty;
16
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataProperty = void 0;
4
+ var Metadata_1 = require("./Metadata");
5
+ var MetadataProperty = (function () {
6
+ function MetadataProperty(props) {
7
+ this.key = props.key;
8
+ this.value = props.value;
9
+ this.description = props.description;
10
+ this.tags = props.tags;
11
+ this.jsDocTags = props.jsDocTags;
12
+ }
13
+ MetadataProperty.create = function (props) {
14
+ return new MetadataProperty(props);
15
+ };
16
+ MetadataProperty._From = function (property, objects) {
17
+ return this.create({
18
+ key: Metadata_1.Metadata._From(property.key, objects),
19
+ value: Metadata_1.Metadata._From(property.value, objects),
20
+ description: property.description,
21
+ tags: property.tags.slice(),
22
+ jsDocTags: property.jsDocTags.slice(),
23
+ });
24
+ };
25
+ MetadataProperty.prototype.toJSON = function () {
26
+ return {
27
+ key: this.key.toJSON(),
28
+ value: this.value.toJSON(),
29
+ description: this.description,
30
+ tags: this.tags,
31
+ jsDocTags: this.jsDocTags,
32
+ };
33
+ };
34
+ return MetadataProperty;
35
+ }());
36
+ exports.MetadataProperty = MetadataProperty;
37
+ //# sourceMappingURL=MetadataProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataProperty.js","sourceRoot":"","sources":["../../src/metadata/MetadataProperty.ts"],"names":[],"mappings":";;;AAKA,uCAAsC;AAGtC;IAaI,0BAAoB,KAAwC;QACxD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,CAAC;IAKa,uBAAM,GAApB,UACI,KAAwC;QAExC,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAKa,sBAAK,GAAnB,UACI,QAA2B,EAC3B,OAAoC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,GAAG,EAAE,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;YAC1C,KAAK,EAAE,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;YAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE;SACxC,CAAC,CAAC;IACP,CAAC;IAEM,iCAAM,GAAb;QACI,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;IACN,CAAC;IACL,uBAAC;AAAD,CAAC,AAvDD,IAuDC;AAvDY,4CAAgB"}
@@ -0,0 +1,382 @@
1
+ import { IJsonApplication } from "./schemas/IJsonApplication";
2
+ import { IValidation } from "./IValidation";
3
+ export * from "./schemas/IJsonApplication";
4
+ export * from "./schemas/IJsonComponents";
5
+ export * from "./schemas/IJsonSchema";
6
+ export * from "./TypeGuardError";
7
+ export * from "./IValidation";
8
+ /**
9
+ * Asserts a value type.
10
+ *
11
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
12
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
13
+ * value is following the type `T`, just input parameter would be returned.
14
+ *
15
+ * If what you want is not asserting but just knowing whether the parametric value is
16
+ * following the type `T` or not, you can choose the {@link is} function instead.
17
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
18
+ *
19
+ * On the other and, if you don't want to allow any superfluous property that is not
20
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
21
+ *
22
+ * @template T Type of the input value
23
+ * @param input A value to be asserted
24
+ * @returns Parametric input value
25
+ * @throws A {@link TypeGuardError} instance with detailed reason
26
+ *
27
+ * @author Jeongho Nam - https://github.com/samchon
28
+ */
29
+ export declare function assertType<T>(input: T): T;
30
+ /**
31
+ * Asserts a value type.
32
+ *
33
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
34
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
35
+ * value is following the type `T`, just input parameter would be returned.
36
+ *
37
+ * If what you want is not asserting but just knowing whether the parametric value is
38
+ * following the type `T` or not, you can choose the {@link is} function instead.
39
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
40
+ *
41
+ * On the other and, if you don't want to allow any superfluous property that is not
42
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
43
+ *
44
+ * @template T Type of the input value
45
+ * @param input A value to be asserted
46
+ * @returns Parametric input value casted as `T`
47
+ * @throws A {@link TypeGuardError} instance with detailed reason
48
+ *
49
+ * @author Jeongho Nam - https://github.com/samchon
50
+ */
51
+ export declare function assertType<T>(input: unknown): T;
52
+ /**
53
+ * Tests a value type.
54
+ *
55
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
56
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
57
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
58
+ * returned.
59
+ *
60
+ * If what you want is not just knowing whether the parametric value is following the
61
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
62
+ * {@link assertType} function instead. Also, if you want to know all the errors with
63
+ * detailed reasons, {@link validate} function would be useful.
64
+ *
65
+ * On the other and, if you don't want to allow any superfluous property that is not
66
+ * enrolled to the type `T`, you can use {@link equals} function instead.
67
+ *
68
+ * @template T Type of the input value
69
+ * @param input A value to be tested
70
+ * @returns Whether the parametric value is following the type `T` or not
71
+ *
72
+ * @author Jeongho Nam - https://github.com/samchon
73
+ */
74
+ export declare function is<T>(input: T): input is T;
75
+ /**
76
+ * Tests a value type.
77
+ *
78
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
79
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
80
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
81
+ * returned.
82
+ *
83
+ * If what you want is not just knowing whether the parametric value is following the
84
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
85
+ * {@link assertType} function instead. Also, if you want to know all the errors with
86
+ * detailed reasons, {@link validate} function would be useful.
87
+ *
88
+ * On the other and, if you don't want to allow any superfluous property that is not
89
+ * enrolled to the type `T`, you can use {@link equals} function instead.
90
+ *
91
+ * @template T Type of the input value
92
+ * @param input A value to be tested
93
+ * @returns Whether the parametric value is following the type `T` or not
94
+ *
95
+ * @author Jeongho Nam - https://github.com/samchon
96
+ */
97
+ export declare function is<T>(input: unknown): input is T;
98
+ /**
99
+ * Validates a value type.
100
+ *
101
+ * Validates a parametric value type and archives all the type errors into an
102
+ * {@link IValidation.errors} array, if the parametric value is not following the
103
+ * type `T`. Of course, if the parametric value is following the type `T`, the
104
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
105
+ * would have the `true` value.
106
+ *
107
+ * If what you want is not finding all the error, but asserting the parametric value
108
+ * type with exception throwing, you can choose {@link assertType} function instead.
109
+ * Otherwise, you just want to know whether the parametric value is matched with the
110
+ * type `T`, {@link is} function is the way to go.
111
+ *
112
+ * On the other and, if you don't want to allow any superfluous property that is not
113
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
114
+ *
115
+ * @template Type of the input value
116
+ * @param input A value to be validated
117
+ * @returns Validation result
118
+ */
119
+ export declare function validate<T>(input: T): IValidation;
120
+ /**
121
+ * Validates a value type.
122
+ *
123
+ * Validates a parametric value type and archives all the type errors into an
124
+ * {@link IValidation.errors} array, if the parametric value is not following the
125
+ * type `T`. Of course, if the parametric value is following the type `T`, the
126
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
127
+ * would have the `true` value.
128
+ *
129
+ * If what you want is not finding all the error, but asserting the parametric value
130
+ * type with exception throwing, you can choose {@link assertType} function instead.
131
+ * Otherwise, you just want to know whether the parametric value is matched with the
132
+ * type `T`, {@link is} function is the way to go.
133
+ *
134
+ * On the other and, if you don't want to allow any superfluous property that is not
135
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
136
+ *
137
+ * @template Type of the input value
138
+ * @param input A value to be validated
139
+ * @returns Validation result
140
+ */
141
+ export declare function validate<T>(input: unknown): IValidation;
142
+ /**
143
+ * Asserts equality between a value and its type.
144
+ *
145
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
146
+ * reason, if the parametric value is not following the type `T` or some superfluous
147
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
148
+ * following the type `T` without any superfluous property, just input parameter would
149
+ * be returned.
150
+ *
151
+ * If what you want is not asserting but just knowing whether the parametric value is
152
+ * following the type `T` or not, you can choose the {@link equals} function instead.
153
+ * Otherwise you want to know all the errors, {@link validateEquals} is the way to go.
154
+ *
155
+ * On the other hand, if you want to allow superfluous property that is not enrolled
156
+ * to the type `T`, you can use {@link assertType} function instead.
157
+ *
158
+ * @template T Type of the input value
159
+ * @param input A value to be asserted
160
+ * @returns Parametric input value
161
+ * @throws A {@link TypeGuardError} instance with detailed reason
162
+ *
163
+ * @author Jeongho Nam - https://github.com/samchon
164
+ */
165
+ export declare function assertEquals<T>(input: T): T;
166
+ /**
167
+ * Asserts equality between a value and its type.
168
+ *
169
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
170
+ * reason, if the parametric value is not following the type `T` or some superfluous
171
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
172
+ * following the type `T` without any superfluous property, just input parameter would
173
+ * be returned.
174
+ *
175
+ * If what you want is not asserting but just knowing whether the parametric value is
176
+ * following the type `T` or not, you can choose the {@link equals} function instead.
177
+ * Otherwise you want to know all the errors, {@link validateEquals} is the way to go.
178
+ *
179
+ * On the other hand, if you want to allow superfluous property that is not enrolled
180
+ * to the type `T`, you can use {@link assertType} function instead.
181
+ *
182
+ * @template T Type of the input value
183
+ * @param input A value to be asserted
184
+ * @returns Parametric input value casted as `T`
185
+ * @throws A {@link TypeGuardError} instance with detailed reason
186
+ *
187
+ * @author Jeongho Nam - https://github.com/samchon
188
+ */
189
+ export declare function assertEquals<T>(input: unknown): T;
190
+ /**
191
+ * Tests equality between a value and its type.
192
+ *
193
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
194
+ * or not. If the parametric value is matched with the type `T` and there's not any
195
+ * superfluous property that is not listed on the type `T`, `true` value would be
196
+ * returned. Otherwise, the parametric value is not following the type `T` or some
197
+ * superfluous property exists, `false` value would be returned.
198
+ *
199
+ * If what you want is not just knowing whether the parametric value is following the
200
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
201
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
202
+ * detailed reasons, {@link validateEquals} function would be useful.
203
+ *
204
+ * On the other hand, if you want to allow superfluous property that is not enrolled
205
+ * to the type `T`, you can use {@link is} function instead.
206
+ *
207
+ * @template T Type of the input value
208
+ * @param input A value to be tested
209
+ * @returns Whether the parametric value is equivalent to the type `T` or not
210
+ *
211
+ * @author Jeongho Nam - https://github.com/samchon
212
+ */
213
+ export declare function equals<T>(input: T): input is T;
214
+ /**
215
+ * Tests equality between a value and its type.
216
+ *
217
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
218
+ * or not. If the parametric value is matched with the type `T` and there's not any
219
+ * superfluous property that is not listed on the type `T`, `true` value would be
220
+ * returned. Otherwise, the parametric value is not following the type `T` or some
221
+ * superfluous property exists, `false` value would be returned.
222
+ *
223
+ * If what you want is not just knowing whether the parametric value is following the
224
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
225
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
226
+ * detailed reasons, {@link validateEquals} function would be useful.
227
+ *
228
+ * On the other hand, if you want to allow superfluous property that is not enrolled
229
+ * to the type `T`, you can use {@link is} function instead.
230
+ *
231
+ * @template T Type of the input value
232
+ * @param input A value to be tested
233
+ * @returns Whether the parametric value is equivalent to the type `T` or not
234
+ *
235
+ * @author Jeongho Nam - https://github.com/samchon
236
+ */
237
+ export declare function equals<T>(input: unknown): input is T;
238
+ /**
239
+ * Validates equaility between a value and itstype.
240
+ *
241
+ * Validates a parametric value type and archives all the type errors into an
242
+ * {@link IValidation.errors} array, if the parametric value is not following the
243
+ * type `T` or some superfluous property that is not listed on the type `T` has been
244
+ * found. Of course, if the parametric value is following the type `T` and no
245
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
246
+ * and {@link IValidation.success} would have the `true` value.
247
+ *
248
+ * If what you want is not finding all the error, but asserting the parametric value
249
+ * type with exception throwing, you can choose {@link assertType} function instead.
250
+ * Otherwise, you just want to know whether the parametric value is matched with the
251
+ * type `T`, {@link is} function is the way to go.
252
+ *
253
+ * On the other and, if you don't want to allow any superfluous property that is not
254
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
255
+ *
256
+ * @template Type of the input value
257
+ * @param input A value to be validated
258
+ * @returns Validation result
259
+ */
260
+ export declare function validateEquals<T>(input: T): IValidation;
261
+ /**
262
+ * Validates equaility between a value and itstype.
263
+ *
264
+ * Validates a parametric value type and archives all the type errors into an
265
+ * {@link IValidation.errors} array, if the parametric value is not following the
266
+ * type `T` or some superfluous property that is not listed on the type `T` has been
267
+ * found. Of course, if the parametric value is following the type `T` and no
268
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
269
+ * and {@link IValidation.success} would have the `true` value.
270
+ *
271
+ * If what you want is not finding all the error, but asserting the parametric value
272
+ * type with exception throwing, you can choose {@link assertType} function instead.
273
+ * Otherwise, you just want to know whether the parametric value is matched with the
274
+ * type `T`, {@link is} function is the way to go.
275
+ *
276
+ * On the other and, if you don't want to allow any superfluous property that is not
277
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
278
+ *
279
+ * @template Type of the input value
280
+ * @param input A value to be validated
281
+ * @returns Validation result
282
+ */
283
+ export declare function validateEquals<T>(input: unknown): IValidation;
284
+ /**
285
+ * 5x faster `JSON.stringify()` function.
286
+ *
287
+ * Converts an input value to a JSON (JavaSript Object Noation) string, about 5x faster
288
+ * than the native `JSON.stringify()` function. The 5x faster principle is because
289
+ * it writes an optmized JSON conversion plan, only for the type `T`.
290
+ *
291
+ * If you want to create a stringify function which is reusable, just assign this function
292
+ * to a (constant) variable like below, with the generic argument `T`. Then the variable
293
+ * would be a stringify fuction reusable.
294
+ *
295
+ * ```typescript
296
+ * const stringify = TSON.stringify<MyType>;
297
+ * stringify(x);
298
+ * stringify(y);
299
+ * stringify(z);
300
+ * ```
301
+ *
302
+ * For reference, this `TSON.stringify()` does not validate the input value type. It
303
+ * just believes that the input value is following the type `T`. Therefore, if you
304
+ * can't ensure the input value type, it would better to call {@link assertType} or
305
+ * {@link is} function before.
306
+ *
307
+ * @template T Type of the input value
308
+ * @param input A value to be converted
309
+ * @return JSON string value
310
+ *
311
+ * @author Jeongho Nam - https://github.com/samchon
312
+ */
313
+ export declare function stringify<T>(input: T): string;
314
+ /**
315
+ * 2x faster constant object creator.
316
+ *
317
+ * You know what? `JSON.parse()` is faster than literal object construction, when the
318
+ * object would be constructed only one time.
319
+ *
320
+ * - [Faster apps with JSON.parse (Chrome Dev Summit 2019)](https://www.youtube.com/watch?v=ff4fgQxPaO0)
321
+ * - [The cost of parsing JSON](https://v8.dev/blog/cost-of-javascript-2019#json)
322
+ *
323
+ * `TSON.create()` is a transformer function which converts a literal object construction
324
+ * to a `JSON.parse()` function call expression with JSON string argument. Therefore, if
325
+ * you construct a literal object via this `TSON.create()`, you can get benefit from both
326
+ * type safe and performance tuning at the same time.
327
+ *
328
+ * @template T Type of the input value
329
+ * @param input A value to be converted
330
+ * @return Same with the parametric value
331
+ *
332
+ * @author Jeongho Nam - https://github.com/samchon
333
+ */
334
+ export declare function create<T>(input: T): T;
335
+ /**
336
+ * > You must configure the generic argument `T`.
337
+ *
338
+ * JSON Schema Application.
339
+ *
340
+ * Creates a JSON schema application which contains both main JSON schemas and components.
341
+ * Note that, all of the object types are stored in the {@link IJsonApplication.components}
342
+ * property for the `$ref` referencing.
343
+ *
344
+ * Also, `TSON.application()` has additional generic arguments, *Purpose*.
345
+ * As JSON schema definitions used by `swagger` and `ajv` are different a little bit,
346
+ * you should configure the *Purpose* apprpriately.
347
+ *
348
+ * For an example, `ajv` has an extra property "$recursiveRef" that are not exists
349
+ * in the standard JSON schema definition spec. Otherwise, `swagger` can't identify
350
+ * the tuple definition.
351
+ *
352
+ * @template Types Tuple of target types
353
+ * @template Purpose Purpose of the JSON schema
354
+ * @template Prefix Prefix of the JSON components referenced by `$ref` tag
355
+ * @return JSON schema application
356
+ *
357
+ * @author Jeongho Nam - https://github.com/samchon
358
+ */
359
+ export declare function application(): never;
360
+ /**
361
+ * JSON Schema Application.
362
+ *
363
+ * Creates a JSON schema application which contains both main JSON schemas and components.
364
+ * Note that, all of the object types are stored in the {@link IJsonApplication.components}
365
+ * property for the `$ref` referencing.
366
+ *
367
+ * Also, `TSON.application()` has additional generic arguments, *Purpose*.
368
+ * As JSON schema definitions used by `swagger` and `ajv` are different a little bit,
369
+ * you should configure the *Purpose* apprpriately.
370
+ *
371
+ * For an example, `ajv` has an extra property "$recursiveRef" that are not exists
372
+ * in the standard JSON schema definition spec. Otherwise, `swagger` can't identify
373
+ * the tuple definition.
374
+ *
375
+ * @template Types Tuple of target types
376
+ * @template Purpose Purpose of the JSON schema
377
+ * @template Prefix Prefix of the JSON components referenced by `$ref` tag
378
+ * @return JSON schema application
379
+ *
380
+ * @author Jeongho Nam - https://github.com/samchon
381
+ */
382
+ export declare function application<Types extends unknown[], Purpose extends "swagger" | "ajv" = "swagger", Prefix extends string = Purpose extends "swagger" ? "#/components/schemas" : "components#/schemas">(): IJsonApplication;