@archi-code/validation 0.0.0-stage → 3.0.0-alpha.1

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 (548) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +345 -2
  3. package/dist/cjs/canBe/array.d.ts +1 -0
  4. package/dist/cjs/canBe/array.js +7 -0
  5. package/dist/cjs/canBe/boolean.d.ts +1 -0
  6. package/dist/cjs/canBe/boolean.js +7 -0
  7. package/dist/cjs/canBe/date.d.ts +1 -0
  8. package/dist/cjs/canBe/date.js +7 -0
  9. package/dist/cjs/canBe/enum.d.ts +1 -0
  10. package/dist/cjs/canBe/enum.js +7 -0
  11. package/dist/cjs/canBe/float.d.ts +1 -0
  12. package/dist/cjs/canBe/float.js +7 -0
  13. package/dist/cjs/canBe/index.d.ts +8 -0
  14. package/dist/cjs/canBe/index.js +20 -0
  15. package/dist/cjs/canBe/integer.d.ts +1 -0
  16. package/dist/cjs/canBe/integer.js +7 -0
  17. package/dist/cjs/canBe/json.d.ts +2 -0
  18. package/dist/cjs/canBe/json.js +9 -0
  19. package/dist/cjs/canBe/string.d.ts +1 -0
  20. package/dist/cjs/canBe/string.js +7 -0
  21. package/dist/cjs/convert/any-to-string.d.ts +1 -0
  22. package/dist/cjs/convert/any-to-string.js +64 -0
  23. package/dist/cjs/convert/array.d.ts +2 -0
  24. package/dist/cjs/convert/array.js +25 -0
  25. package/dist/cjs/convert/boolean.d.ts +5 -0
  26. package/dist/cjs/convert/boolean.js +30 -0
  27. package/dist/cjs/convert/date.d.ts +11 -0
  28. package/dist/cjs/convert/date.js +162 -0
  29. package/dist/cjs/convert/enum.d.ts +2 -0
  30. package/dist/cjs/convert/enum.js +11 -0
  31. package/dist/cjs/convert/float.d.ts +6 -0
  32. package/dist/cjs/convert/float.js +46 -0
  33. package/dist/cjs/convert/index.d.ts +16 -0
  34. package/dist/cjs/convert/index.js +24 -0
  35. package/dist/cjs/convert/integer.d.ts +6 -0
  36. package/dist/cjs/convert/integer.js +41 -0
  37. package/dist/cjs/convert/json.d.ts +7 -0
  38. package/dist/cjs/convert/json.js +81 -0
  39. package/dist/cjs/convert/result.d.ts +26 -0
  40. package/dist/cjs/convert/result.js +23 -0
  41. package/dist/cjs/convert/string.d.ts +2 -0
  42. package/dist/cjs/convert/string.js +13 -0
  43. package/dist/cjs/decorator/validate.d.ts +23 -0
  44. package/dist/cjs/decorator/validate.js +62 -0
  45. package/dist/cjs/decorator/validations.d.ts +35 -0
  46. package/dist/cjs/decorator/validations.js +75 -0
  47. package/dist/cjs/helpers/algorithms.d.ts +1 -0
  48. package/dist/cjs/helpers/algorithms.js +10 -0
  49. package/dist/cjs/helpers/analyzePassword.d.ts +9 -0
  50. package/dist/cjs/helpers/analyzePassword.js +41 -0
  51. package/dist/cjs/helpers/assertString.d.ts +1 -0
  52. package/dist/cjs/helpers/assertString.js +9 -0
  53. package/dist/cjs/helpers/boundedCache.d.ts +9 -0
  54. package/dist/cjs/helpers/boundedCache.js +33 -0
  55. package/dist/cjs/helpers/checkHost.d.ts +2 -0
  56. package/dist/cjs/helpers/checkHost.js +36 -0
  57. package/dist/cjs/helpers/config.d.ts +10 -0
  58. package/dist/cjs/helpers/config.js +34 -0
  59. package/dist/cjs/helpers/errors.d.ts +3 -0
  60. package/dist/cjs/helpers/errors.js +10 -0
  61. package/dist/cjs/helpers/escapeRegExp.d.ts +1 -0
  62. package/dist/cjs/helpers/escapeRegExp.js +6 -0
  63. package/dist/cjs/helpers/hasOwn.d.ts +1 -0
  64. package/dist/cjs/helpers/hasOwn.js +6 -0
  65. package/dist/cjs/helpers/merge.d.ts +1 -0
  66. package/dist/cjs/helpers/merge.js +15 -0
  67. package/dist/cjs/helpers/scorePassword.d.ts +9 -0
  68. package/dist/cjs/helpers/scorePassword.js +37 -0
  69. package/dist/cjs/index.d.ts +103 -0
  70. package/dist/cjs/index.js +220 -0
  71. package/dist/cjs/sanitizer/blacklist.d.ts +1 -0
  72. package/dist/cjs/sanitizer/blacklist.js +11 -0
  73. package/dist/cjs/sanitizer/escape.d.ts +1 -0
  74. package/dist/cjs/sanitizer/escape.js +16 -0
  75. package/dist/cjs/sanitizer/index.d.ts +10 -0
  76. package/dist/cjs/sanitizer/index.js +21 -0
  77. package/dist/cjs/sanitizer/ltrim.d.ts +1 -0
  78. package/dist/cjs/sanitizer/ltrim.js +13 -0
  79. package/dist/cjs/sanitizer/normalizeEmail.d.ts +16 -0
  80. package/dist/cjs/sanitizer/normalizeEmail.js +194 -0
  81. package/dist/cjs/sanitizer/rtrim.d.ts +1 -0
  82. package/dist/cjs/sanitizer/rtrim.js +21 -0
  83. package/dist/cjs/sanitizer/stripLow.d.ts +1 -0
  84. package/dist/cjs/sanitizer/stripLow.js +10 -0
  85. package/dist/cjs/sanitizer/trim.d.ts +1 -0
  86. package/dist/cjs/sanitizer/trim.js +14 -0
  87. package/dist/cjs/sanitizer/unescape.d.ts +1 -0
  88. package/dist/cjs/sanitizer/unescape.js +16 -0
  89. package/dist/cjs/sanitizer/whitelist.d.ts +1 -0
  90. package/dist/cjs/sanitizer/whitelist.js +11 -0
  91. package/dist/cjs/validators/alpha.d.ts +105 -0
  92. package/dist/cjs/validators/alpha.js +202 -0
  93. package/dist/cjs/validators/contains.d.ts +6 -0
  94. package/dist/cjs/validators/contains.js +27 -0
  95. package/dist/cjs/validators/equals.d.ts +4 -0
  96. package/dist/cjs/validators/equals.js +14 -0
  97. package/dist/cjs/validators/index.d.ts +242 -0
  98. package/dist/cjs/validators/index.js +193 -0
  99. package/dist/cjs/validators/isAbaRouting.d.ts +1 -0
  100. package/dist/cjs/validators/isAbaRouting.js +24 -0
  101. package/dist/cjs/validators/isAfter.d.ts +4 -0
  102. package/dist/cjs/validators/isAfter.js +15 -0
  103. package/dist/cjs/validators/isAlpha.d.ts +8 -0
  104. package/dist/cjs/validators/isAlpha.js +35 -0
  105. package/dist/cjs/validators/isAlphanumeric.d.ts +8 -0
  106. package/dist/cjs/validators/isAlphanumeric.js +35 -0
  107. package/dist/cjs/validators/isAscii.d.ts +1 -0
  108. package/dist/cjs/validators/isAscii.js +13 -0
  109. package/dist/cjs/validators/isBIC.d.ts +1 -0
  110. package/dist/cjs/validators/isBIC.js +18 -0
  111. package/dist/cjs/validators/isBase32.d.ts +4 -0
  112. package/dist/cjs/validators/isBase32.js +21 -0
  113. package/dist/cjs/validators/isBase58.d.ts +1 -0
  114. package/dist/cjs/validators/isBase58.js +13 -0
  115. package/dist/cjs/validators/isBase64.d.ts +5 -0
  116. package/dist/cjs/validators/isBase64.js +28 -0
  117. package/dist/cjs/validators/isBefore.d.ts +4 -0
  118. package/dist/cjs/validators/isBefore.js +15 -0
  119. package/dist/cjs/validators/isBoolean.d.ts +4 -0
  120. package/dist/cjs/validators/isBoolean.js +7 -0
  121. package/dist/cjs/validators/isBtcAddress.d.ts +1 -0
  122. package/dist/cjs/validators/isBtcAddress.js +14 -0
  123. package/dist/cjs/validators/isByteLength.d.ts +5 -0
  124. package/dist/cjs/validators/isByteLength.js +36 -0
  125. package/dist/cjs/validators/isCreditCard.d.ts +15 -0
  126. package/dist/cjs/validators/isCreditCard.js +50 -0
  127. package/dist/cjs/validators/isCurrency.d.ts +18 -0
  128. package/dist/cjs/validators/isCurrency.js +114 -0
  129. package/dist/cjs/validators/isDataURI.d.ts +1 -0
  130. package/dist/cjs/validators/isDataURI.js +39 -0
  131. package/dist/cjs/validators/isDate.d.ts +7 -0
  132. package/dist/cjs/validators/isDate.js +8 -0
  133. package/dist/cjs/validators/isDecimal.d.ts +6 -0
  134. package/dist/cjs/validators/isDecimal.js +46 -0
  135. package/dist/cjs/validators/isDivisibleBy.d.ts +4 -0
  136. package/dist/cjs/validators/isDivisibleBy.js +15 -0
  137. package/dist/cjs/validators/isEAN.d.ts +1 -0
  138. package/dist/cjs/validators/isEAN.js +31 -0
  139. package/dist/cjs/validators/isEmail.d.ts +14 -0
  140. package/dist/cjs/validators/isEmail.js +153 -0
  141. package/dist/cjs/validators/isEmpty.d.ts +4 -0
  142. package/dist/cjs/validators/isEmpty.js +17 -0
  143. package/dist/cjs/validators/isEthereumAddress.d.ts +1 -0
  144. package/dist/cjs/validators/isEthereumAddress.js +13 -0
  145. package/dist/cjs/validators/isFQDN.d.ts +9 -0
  146. package/dist/cjs/validators/isFQDN.js +68 -0
  147. package/dist/cjs/validators/isFloat.d.ts +9 -0
  148. package/dist/cjs/validators/isFloat.js +30 -0
  149. package/dist/cjs/validators/isFullWidth.d.ts +2 -0
  150. package/dist/cjs/validators/isFullWidth.js +14 -0
  151. package/dist/cjs/validators/isHSL.d.ts +1 -0
  152. package/dist/cjs/validators/isHSL.js +18 -0
  153. package/dist/cjs/validators/isHalfWidth.d.ts +2 -0
  154. package/dist/cjs/validators/isHalfWidth.js +14 -0
  155. package/dist/cjs/validators/isHash.d.ts +21 -0
  156. package/dist/cjs/validators/isHash.js +34 -0
  157. package/dist/cjs/validators/isHexColor.d.ts +4 -0
  158. package/dist/cjs/validators/isHexColor.js +20 -0
  159. package/dist/cjs/validators/isHexadecimal.d.ts +1 -0
  160. package/dist/cjs/validators/isHexadecimal.js +13 -0
  161. package/dist/cjs/validators/isIBAN.d.ts +6 -0
  162. package/dist/cjs/validators/isIBAN.js +145 -0
  163. package/dist/cjs/validators/isIMEI.d.ts +4 -0
  164. package/dist/cjs/validators/isIMEI.js +45 -0
  165. package/dist/cjs/validators/isIP.d.ts +5 -0
  166. package/dist/cjs/validators/isIP.js +38 -0
  167. package/dist/cjs/validators/isIPRange.d.ts +5 -0
  168. package/dist/cjs/validators/isIPRange.js +43 -0
  169. package/dist/cjs/validators/isISBN.d.ts +5 -0
  170. package/dist/cjs/validators/isISBN.js +51 -0
  171. package/dist/cjs/validators/isISIN.d.ts +1 -0
  172. package/dist/cjs/validators/isISIN.js +55 -0
  173. package/dist/cjs/validators/isISO15924.d.ts +2 -0
  174. package/dist/cjs/validators/isISO15924.js +287 -0
  175. package/dist/cjs/validators/isISO31661Alpha2.d.ts +5 -0
  176. package/dist/cjs/validators/isISO31661Alpha2.js +277 -0
  177. package/dist/cjs/validators/isISO31661Alpha3.d.ts +4 -0
  178. package/dist/cjs/validators/isISO31661Alpha3.js +275 -0
  179. package/dist/cjs/validators/isISO31661Numeric.d.ts +1 -0
  180. package/dist/cjs/validators/isISO31661Numeric.js +263 -0
  181. package/dist/cjs/validators/isISO4217.d.ts +2 -0
  182. package/dist/cjs/validators/isISO4217.js +195 -0
  183. package/dist/cjs/validators/isISO6346.d.ts +2 -0
  184. package/dist/cjs/validators/isISO6346.js +43 -0
  185. package/dist/cjs/validators/isISO6391.d.ts +1 -0
  186. package/dist/cjs/validators/isISO6391.js +199 -0
  187. package/dist/cjs/validators/isISO8601.d.ts +5 -0
  188. package/dist/cjs/validators/isISO8601.js +42 -0
  189. package/dist/cjs/validators/isISRC.d.ts +1 -0
  190. package/dist/cjs/validators/isISRC.js +13 -0
  191. package/dist/cjs/validators/isISSN.d.ts +5 -0
  192. package/dist/cjs/validators/isISSN.js +27 -0
  193. package/dist/cjs/validators/isIdentityCard.d.ts +24 -0
  194. package/dist/cjs/validators/isIdentityCard.js +442 -0
  195. package/dist/cjs/validators/isIn.d.ts +4 -0
  196. package/dist/cjs/validators/isIn.js +36 -0
  197. package/dist/cjs/validators/isInt.d.ts +8 -0
  198. package/dist/cjs/validators/isInt.js +29 -0
  199. package/dist/cjs/validators/isJSON.d.ts +5 -0
  200. package/dist/cjs/validators/isJSON.js +10 -0
  201. package/dist/cjs/validators/isJWT.d.ts +1 -0
  202. package/dist/cjs/validators/isJWT.js +23 -0
  203. package/dist/cjs/validators/isLatLong.d.ts +4 -0
  204. package/dist/cjs/validators/isLatLong.js +29 -0
  205. package/dist/cjs/validators/isLength.d.ts +7 -0
  206. package/dist/cjs/validators/isLength.js +28 -0
  207. package/dist/cjs/validators/isLicensePlate.d.ts +21 -0
  208. package/dist/cjs/validators/isLicensePlate.js +43 -0
  209. package/dist/cjs/validators/isLocale.d.ts +1 -0
  210. package/dist/cjs/validators/isLocale.js +29 -0
  211. package/dist/cjs/validators/isLowercase.d.ts +1 -0
  212. package/dist/cjs/validators/isLowercase.js +12 -0
  213. package/dist/cjs/validators/isLuhnNumber.d.ts +1 -0
  214. package/dist/cjs/validators/isLuhnNumber.js +37 -0
  215. package/dist/cjs/validators/isMACAddress.d.ts +6 -0
  216. package/dist/cjs/validators/isMACAddress.js +34 -0
  217. package/dist/cjs/validators/isMD5.d.ts +1 -0
  218. package/dist/cjs/validators/isMD5.js +13 -0
  219. package/dist/cjs/validators/isMagnetURI.d.ts +1 -0
  220. package/dist/cjs/validators/isMagnetURI.js +16 -0
  221. package/dist/cjs/validators/isMailtoURI.d.ts +4 -0
  222. package/dist/cjs/validators/isMailtoURI.js +53 -0
  223. package/dist/cjs/validators/isMimeType.d.ts +1 -0
  224. package/dist/cjs/validators/isMimeType.js +15 -0
  225. package/dist/cjs/validators/isMobilePhone.d.ts +171 -0
  226. package/dist/cjs/validators/isMobilePhone.js +212 -0
  227. package/dist/cjs/validators/isMongoId.d.ts +1 -0
  228. package/dist/cjs/validators/isMongoId.js +11 -0
  229. package/dist/cjs/validators/isMultibyte.d.ts +1 -0
  230. package/dist/cjs/validators/isMultibyte.js +13 -0
  231. package/dist/cjs/validators/isNotEmpty.d.ts +1 -0
  232. package/dist/cjs/validators/isNotEmpty.js +10 -0
  233. package/dist/cjs/validators/isNumeric.d.ts +5 -0
  234. package/dist/cjs/validators/isNumeric.js +34 -0
  235. package/dist/cjs/validators/isOctal.d.ts +1 -0
  236. package/dist/cjs/validators/isOctal.js +13 -0
  237. package/dist/cjs/validators/isPassportNumber.d.ts +69 -0
  238. package/dist/cjs/validators/isPassportNumber.js +84 -0
  239. package/dist/cjs/validators/isPort.d.ts +1 -0
  240. package/dist/cjs/validators/isPort.js +7 -0
  241. package/dist/cjs/validators/isPostalCode.d.ts +79 -0
  242. package/dist/cjs/validators/isPostalCode.js +108 -0
  243. package/dist/cjs/validators/isRFC3339.d.ts +1 -0
  244. package/dist/cjs/validators/isRFC3339.js +28 -0
  245. package/dist/cjs/validators/isRequired.d.ts +1 -0
  246. package/dist/cjs/validators/isRequired.js +6 -0
  247. package/dist/cjs/validators/isRgbColor.d.ts +5 -0
  248. package/dist/cjs/validators/isRgbColor.js +38 -0
  249. package/dist/cjs/validators/isSemVer.d.ts +1 -0
  250. package/dist/cjs/validators/isSemVer.js +15 -0
  251. package/dist/cjs/validators/isSlug.d.ts +1 -0
  252. package/dist/cjs/validators/isSlug.js +13 -0
  253. package/dist/cjs/validators/isStrongPassword.d.ts +8 -0
  254. package/dist/cjs/validators/isStrongPassword.js +25 -0
  255. package/dist/cjs/validators/isSurrogatePair.d.ts +1 -0
  256. package/dist/cjs/validators/isSurrogatePair.js +13 -0
  257. package/dist/cjs/validators/isTime.d.ts +5 -0
  258. package/dist/cjs/validators/isTime.js +37 -0
  259. package/dist/cjs/validators/isULID.d.ts +1 -0
  260. package/dist/cjs/validators/isULID.js +12 -0
  261. package/dist/cjs/validators/isURL.d.ts +22 -0
  262. package/dist/cjs/validators/isURL.js +215 -0
  263. package/dist/cjs/validators/isUUID.d.ts +5 -0
  264. package/dist/cjs/validators/isUUID.js +31 -0
  265. package/dist/cjs/validators/isUppercase.d.ts +1 -0
  266. package/dist/cjs/validators/isUppercase.js +12 -0
  267. package/dist/cjs/validators/isVAT.d.ts +75 -0
  268. package/dist/cjs/validators/isVAT.js +134 -0
  269. package/dist/cjs/validators/isVariableWidth.d.ts +1 -0
  270. package/dist/cjs/validators/isVariableWidth.js +14 -0
  271. package/dist/cjs/validators/isWhitelisted.d.ts +4 -0
  272. package/dist/cjs/validators/isWhitelisted.js +23 -0
  273. package/dist/cjs/validators/matches.d.ts +5 -0
  274. package/dist/cjs/validators/matches.js +29 -0
  275. package/dist/esm/canBe/array.d.ts +1 -0
  276. package/dist/esm/canBe/array.js +4 -0
  277. package/dist/esm/canBe/boolean.d.ts +1 -0
  278. package/dist/esm/canBe/boolean.js +4 -0
  279. package/dist/esm/canBe/date.d.ts +1 -0
  280. package/dist/esm/canBe/date.js +4 -0
  281. package/dist/esm/canBe/enum.d.ts +1 -0
  282. package/dist/esm/canBe/enum.js +4 -0
  283. package/dist/esm/canBe/float.d.ts +1 -0
  284. package/dist/esm/canBe/float.js +4 -0
  285. package/dist/esm/canBe/index.d.ts +8 -0
  286. package/dist/esm/canBe/index.js +8 -0
  287. package/dist/esm/canBe/integer.d.ts +1 -0
  288. package/dist/esm/canBe/integer.js +4 -0
  289. package/dist/esm/canBe/json.d.ts +2 -0
  290. package/dist/esm/canBe/json.js +5 -0
  291. package/dist/esm/canBe/string.d.ts +1 -0
  292. package/dist/esm/canBe/string.js +4 -0
  293. package/dist/esm/convert/any-to-string.d.ts +1 -0
  294. package/dist/esm/convert/any-to-string.js +61 -0
  295. package/dist/esm/convert/array.d.ts +2 -0
  296. package/dist/esm/convert/array.js +22 -0
  297. package/dist/esm/convert/boolean.d.ts +5 -0
  298. package/dist/esm/convert/boolean.js +27 -0
  299. package/dist/esm/convert/date.d.ts +11 -0
  300. package/dist/esm/convert/date.js +158 -0
  301. package/dist/esm/convert/enum.d.ts +2 -0
  302. package/dist/esm/convert/enum.js +8 -0
  303. package/dist/esm/convert/float.d.ts +6 -0
  304. package/dist/esm/convert/float.js +43 -0
  305. package/dist/esm/convert/index.d.ts +16 -0
  306. package/dist/esm/convert/index.js +10 -0
  307. package/dist/esm/convert/integer.d.ts +6 -0
  308. package/dist/esm/convert/integer.js +38 -0
  309. package/dist/esm/convert/json.d.ts +7 -0
  310. package/dist/esm/convert/json.js +77 -0
  311. package/dist/esm/convert/result.d.ts +26 -0
  312. package/dist/esm/convert/result.js +18 -0
  313. package/dist/esm/convert/string.d.ts +2 -0
  314. package/dist/esm/convert/string.js +10 -0
  315. package/dist/esm/decorator/validate.d.ts +23 -0
  316. package/dist/esm/decorator/validate.js +59 -0
  317. package/dist/esm/decorator/validations.d.ts +35 -0
  318. package/dist/esm/decorator/validations.js +68 -0
  319. package/dist/esm/helpers/algorithms.d.ts +1 -0
  320. package/dist/esm/helpers/algorithms.js +7 -0
  321. package/dist/esm/helpers/analyzePassword.d.ts +9 -0
  322. package/dist/esm/helpers/analyzePassword.js +38 -0
  323. package/dist/esm/helpers/assertString.d.ts +1 -0
  324. package/dist/esm/helpers/assertString.js +6 -0
  325. package/dist/esm/helpers/boundedCache.d.ts +9 -0
  326. package/dist/esm/helpers/boundedCache.js +29 -0
  327. package/dist/esm/helpers/checkHost.d.ts +2 -0
  328. package/dist/esm/helpers/checkHost.js +32 -0
  329. package/dist/esm/helpers/config.d.ts +10 -0
  330. package/dist/esm/helpers/config.js +29 -0
  331. package/dist/esm/helpers/errors.d.ts +3 -0
  332. package/dist/esm/helpers/errors.js +6 -0
  333. package/dist/esm/helpers/escapeRegExp.d.ts +1 -0
  334. package/dist/esm/helpers/escapeRegExp.js +3 -0
  335. package/dist/esm/helpers/hasOwn.d.ts +1 -0
  336. package/dist/esm/helpers/hasOwn.js +3 -0
  337. package/dist/esm/helpers/merge.d.ts +1 -0
  338. package/dist/esm/helpers/merge.js +12 -0
  339. package/dist/esm/helpers/scorePassword.d.ts +9 -0
  340. package/dist/esm/helpers/scorePassword.js +34 -0
  341. package/dist/esm/index.d.ts +103 -0
  342. package/dist/esm/index.js +98 -0
  343. package/dist/esm/package.json +3 -0
  344. package/dist/esm/sanitizer/blacklist.d.ts +1 -0
  345. package/dist/esm/sanitizer/blacklist.js +8 -0
  346. package/dist/esm/sanitizer/escape.d.ts +1 -0
  347. package/dist/esm/sanitizer/escape.js +13 -0
  348. package/dist/esm/sanitizer/index.d.ts +10 -0
  349. package/dist/esm/sanitizer/index.js +9 -0
  350. package/dist/esm/sanitizer/ltrim.d.ts +1 -0
  351. package/dist/esm/sanitizer/ltrim.js +10 -0
  352. package/dist/esm/sanitizer/normalizeEmail.d.ts +16 -0
  353. package/dist/esm/sanitizer/normalizeEmail.js +191 -0
  354. package/dist/esm/sanitizer/rtrim.d.ts +1 -0
  355. package/dist/esm/sanitizer/rtrim.js +18 -0
  356. package/dist/esm/sanitizer/stripLow.d.ts +1 -0
  357. package/dist/esm/sanitizer/stripLow.js +7 -0
  358. package/dist/esm/sanitizer/trim.d.ts +1 -0
  359. package/dist/esm/sanitizer/trim.js +11 -0
  360. package/dist/esm/sanitizer/unescape.d.ts +1 -0
  361. package/dist/esm/sanitizer/unescape.js +13 -0
  362. package/dist/esm/sanitizer/whitelist.d.ts +1 -0
  363. package/dist/esm/sanitizer/whitelist.js +8 -0
  364. package/dist/esm/validators/alpha.d.ts +105 -0
  365. package/dist/esm/validators/alpha.js +199 -0
  366. package/dist/esm/validators/contains.d.ts +6 -0
  367. package/dist/esm/validators/contains.js +24 -0
  368. package/dist/esm/validators/equals.d.ts +4 -0
  369. package/dist/esm/validators/equals.js +11 -0
  370. package/dist/esm/validators/index.d.ts +242 -0
  371. package/dist/esm/validators/index.js +190 -0
  372. package/dist/esm/validators/isAbaRouting.d.ts +1 -0
  373. package/dist/esm/validators/isAbaRouting.js +21 -0
  374. package/dist/esm/validators/isAfter.d.ts +4 -0
  375. package/dist/esm/validators/isAfter.js +12 -0
  376. package/dist/esm/validators/isAlpha.d.ts +8 -0
  377. package/dist/esm/validators/isAlpha.js +31 -0
  378. package/dist/esm/validators/isAlphanumeric.d.ts +8 -0
  379. package/dist/esm/validators/isAlphanumeric.js +31 -0
  380. package/dist/esm/validators/isAscii.d.ts +1 -0
  381. package/dist/esm/validators/isAscii.js +10 -0
  382. package/dist/esm/validators/isBIC.d.ts +1 -0
  383. package/dist/esm/validators/isBIC.js +15 -0
  384. package/dist/esm/validators/isBase32.d.ts +4 -0
  385. package/dist/esm/validators/isBase32.js +18 -0
  386. package/dist/esm/validators/isBase58.d.ts +1 -0
  387. package/dist/esm/validators/isBase58.js +10 -0
  388. package/dist/esm/validators/isBase64.d.ts +5 -0
  389. package/dist/esm/validators/isBase64.js +25 -0
  390. package/dist/esm/validators/isBefore.d.ts +4 -0
  391. package/dist/esm/validators/isBefore.js +12 -0
  392. package/dist/esm/validators/isBoolean.d.ts +4 -0
  393. package/dist/esm/validators/isBoolean.js +4 -0
  394. package/dist/esm/validators/isBtcAddress.d.ts +1 -0
  395. package/dist/esm/validators/isBtcAddress.js +11 -0
  396. package/dist/esm/validators/isByteLength.d.ts +5 -0
  397. package/dist/esm/validators/isByteLength.js +33 -0
  398. package/dist/esm/validators/isCreditCard.d.ts +15 -0
  399. package/dist/esm/validators/isCreditCard.js +47 -0
  400. package/dist/esm/validators/isCurrency.d.ts +18 -0
  401. package/dist/esm/validators/isCurrency.js +111 -0
  402. package/dist/esm/validators/isDataURI.d.ts +1 -0
  403. package/dist/esm/validators/isDataURI.js +36 -0
  404. package/dist/esm/validators/isDate.d.ts +7 -0
  405. package/dist/esm/validators/isDate.js +5 -0
  406. package/dist/esm/validators/isDecimal.d.ts +6 -0
  407. package/dist/esm/validators/isDecimal.js +43 -0
  408. package/dist/esm/validators/isDivisibleBy.d.ts +4 -0
  409. package/dist/esm/validators/isDivisibleBy.js +12 -0
  410. package/dist/esm/validators/isEAN.d.ts +1 -0
  411. package/dist/esm/validators/isEAN.js +28 -0
  412. package/dist/esm/validators/isEmail.d.ts +14 -0
  413. package/dist/esm/validators/isEmail.js +150 -0
  414. package/dist/esm/validators/isEmpty.d.ts +4 -0
  415. package/dist/esm/validators/isEmpty.js +14 -0
  416. package/dist/esm/validators/isEthereumAddress.d.ts +1 -0
  417. package/dist/esm/validators/isEthereumAddress.js +10 -0
  418. package/dist/esm/validators/isFQDN.d.ts +9 -0
  419. package/dist/esm/validators/isFQDN.js +65 -0
  420. package/dist/esm/validators/isFloat.d.ts +9 -0
  421. package/dist/esm/validators/isFloat.js +26 -0
  422. package/dist/esm/validators/isFullWidth.d.ts +2 -0
  423. package/dist/esm/validators/isFullWidth.js +10 -0
  424. package/dist/esm/validators/isHSL.d.ts +1 -0
  425. package/dist/esm/validators/isHSL.js +15 -0
  426. package/dist/esm/validators/isHalfWidth.d.ts +2 -0
  427. package/dist/esm/validators/isHalfWidth.js +10 -0
  428. package/dist/esm/validators/isHash.d.ts +21 -0
  429. package/dist/esm/validators/isHash.js +31 -0
  430. package/dist/esm/validators/isHexColor.d.ts +4 -0
  431. package/dist/esm/validators/isHexColor.js +17 -0
  432. package/dist/esm/validators/isHexadecimal.d.ts +1 -0
  433. package/dist/esm/validators/isHexadecimal.js +10 -0
  434. package/dist/esm/validators/isIBAN.d.ts +6 -0
  435. package/dist/esm/validators/isIBAN.js +141 -0
  436. package/dist/esm/validators/isIMEI.d.ts +4 -0
  437. package/dist/esm/validators/isIMEI.js +42 -0
  438. package/dist/esm/validators/isIP.d.ts +5 -0
  439. package/dist/esm/validators/isIP.js +35 -0
  440. package/dist/esm/validators/isIPRange.d.ts +5 -0
  441. package/dist/esm/validators/isIPRange.js +40 -0
  442. package/dist/esm/validators/isISBN.d.ts +5 -0
  443. package/dist/esm/validators/isISBN.js +48 -0
  444. package/dist/esm/validators/isISIN.d.ts +1 -0
  445. package/dist/esm/validators/isISIN.js +52 -0
  446. package/dist/esm/validators/isISO15924.d.ts +2 -0
  447. package/dist/esm/validators/isISO15924.js +283 -0
  448. package/dist/esm/validators/isISO31661Alpha2.d.ts +5 -0
  449. package/dist/esm/validators/isISO31661Alpha2.js +273 -0
  450. package/dist/esm/validators/isISO31661Alpha3.d.ts +4 -0
  451. package/dist/esm/validators/isISO31661Alpha3.js +272 -0
  452. package/dist/esm/validators/isISO31661Numeric.d.ts +1 -0
  453. package/dist/esm/validators/isISO31661Numeric.js +260 -0
  454. package/dist/esm/validators/isISO4217.d.ts +2 -0
  455. package/dist/esm/validators/isISO4217.js +191 -0
  456. package/dist/esm/validators/isISO6346.d.ts +2 -0
  457. package/dist/esm/validators/isISO6346.js +39 -0
  458. package/dist/esm/validators/isISO6391.d.ts +1 -0
  459. package/dist/esm/validators/isISO6391.js +196 -0
  460. package/dist/esm/validators/isISO8601.d.ts +5 -0
  461. package/dist/esm/validators/isISO8601.js +39 -0
  462. package/dist/esm/validators/isISRC.d.ts +1 -0
  463. package/dist/esm/validators/isISRC.js +10 -0
  464. package/dist/esm/validators/isISSN.d.ts +5 -0
  465. package/dist/esm/validators/isISSN.js +24 -0
  466. package/dist/esm/validators/isIdentityCard.d.ts +24 -0
  467. package/dist/esm/validators/isIdentityCard.js +439 -0
  468. package/dist/esm/validators/isIn.d.ts +4 -0
  469. package/dist/esm/validators/isIn.js +33 -0
  470. package/dist/esm/validators/isInt.d.ts +8 -0
  471. package/dist/esm/validators/isInt.js +26 -0
  472. package/dist/esm/validators/isJSON.d.ts +5 -0
  473. package/dist/esm/validators/isJSON.js +7 -0
  474. package/dist/esm/validators/isJWT.d.ts +1 -0
  475. package/dist/esm/validators/isJWT.js +20 -0
  476. package/dist/esm/validators/isLatLong.d.ts +4 -0
  477. package/dist/esm/validators/isLatLong.js +26 -0
  478. package/dist/esm/validators/isLength.d.ts +7 -0
  479. package/dist/esm/validators/isLength.js +25 -0
  480. package/dist/esm/validators/isLicensePlate.d.ts +21 -0
  481. package/dist/esm/validators/isLicensePlate.js +40 -0
  482. package/dist/esm/validators/isLocale.d.ts +1 -0
  483. package/dist/esm/validators/isLocale.js +26 -0
  484. package/dist/esm/validators/isLowercase.d.ts +1 -0
  485. package/dist/esm/validators/isLowercase.js +9 -0
  486. package/dist/esm/validators/isLuhnNumber.d.ts +1 -0
  487. package/dist/esm/validators/isLuhnNumber.js +34 -0
  488. package/dist/esm/validators/isMACAddress.d.ts +6 -0
  489. package/dist/esm/validators/isMACAddress.js +31 -0
  490. package/dist/esm/validators/isMD5.d.ts +1 -0
  491. package/dist/esm/validators/isMD5.js +10 -0
  492. package/dist/esm/validators/isMagnetURI.d.ts +1 -0
  493. package/dist/esm/validators/isMagnetURI.js +13 -0
  494. package/dist/esm/validators/isMailtoURI.d.ts +4 -0
  495. package/dist/esm/validators/isMailtoURI.js +50 -0
  496. package/dist/esm/validators/isMimeType.d.ts +1 -0
  497. package/dist/esm/validators/isMimeType.js +12 -0
  498. package/dist/esm/validators/isMobilePhone.d.ts +171 -0
  499. package/dist/esm/validators/isMobilePhone.js +208 -0
  500. package/dist/esm/validators/isMongoId.d.ts +1 -0
  501. package/dist/esm/validators/isMongoId.js +8 -0
  502. package/dist/esm/validators/isMultibyte.d.ts +1 -0
  503. package/dist/esm/validators/isMultibyte.js +10 -0
  504. package/dist/esm/validators/isNotEmpty.d.ts +1 -0
  505. package/dist/esm/validators/isNotEmpty.js +7 -0
  506. package/dist/esm/validators/isNumeric.d.ts +5 -0
  507. package/dist/esm/validators/isNumeric.js +31 -0
  508. package/dist/esm/validators/isOctal.d.ts +1 -0
  509. package/dist/esm/validators/isOctal.js +10 -0
  510. package/dist/esm/validators/isPassportNumber.d.ts +69 -0
  511. package/dist/esm/validators/isPassportNumber.js +80 -0
  512. package/dist/esm/validators/isPort.d.ts +1 -0
  513. package/dist/esm/validators/isPort.js +4 -0
  514. package/dist/esm/validators/isPostalCode.d.ts +79 -0
  515. package/dist/esm/validators/isPostalCode.js +104 -0
  516. package/dist/esm/validators/isRFC3339.d.ts +1 -0
  517. package/dist/esm/validators/isRFC3339.js +25 -0
  518. package/dist/esm/validators/isRequired.d.ts +1 -0
  519. package/dist/esm/validators/isRequired.js +3 -0
  520. package/dist/esm/validators/isRgbColor.d.ts +5 -0
  521. package/dist/esm/validators/isRgbColor.js +35 -0
  522. package/dist/esm/validators/isSemVer.d.ts +1 -0
  523. package/dist/esm/validators/isSemVer.js +12 -0
  524. package/dist/esm/validators/isSlug.d.ts +1 -0
  525. package/dist/esm/validators/isSlug.js +10 -0
  526. package/dist/esm/validators/isStrongPassword.d.ts +8 -0
  527. package/dist/esm/validators/isStrongPassword.js +22 -0
  528. package/dist/esm/validators/isSurrogatePair.d.ts +1 -0
  529. package/dist/esm/validators/isSurrogatePair.js +10 -0
  530. package/dist/esm/validators/isTime.d.ts +5 -0
  531. package/dist/esm/validators/isTime.js +34 -0
  532. package/dist/esm/validators/isULID.d.ts +1 -0
  533. package/dist/esm/validators/isULID.js +9 -0
  534. package/dist/esm/validators/isURL.d.ts +22 -0
  535. package/dist/esm/validators/isURL.js +212 -0
  536. package/dist/esm/validators/isUUID.d.ts +5 -0
  537. package/dist/esm/validators/isUUID.js +28 -0
  538. package/dist/esm/validators/isUppercase.d.ts +1 -0
  539. package/dist/esm/validators/isUppercase.js +9 -0
  540. package/dist/esm/validators/isVAT.d.ts +75 -0
  541. package/dist/esm/validators/isVAT.js +130 -0
  542. package/dist/esm/validators/isVariableWidth.d.ts +1 -0
  543. package/dist/esm/validators/isVariableWidth.js +11 -0
  544. package/dist/esm/validators/isWhitelisted.d.ts +4 -0
  545. package/dist/esm/validators/isWhitelisted.js +20 -0
  546. package/dist/esm/validators/matches.d.ts +5 -0
  547. package/dist/esm/validators/matches.js +26 -0
  548. package/package.json +110 -4
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCurrency = isCurrency;
4
+ const merge_1 = require("../helpers/merge");
5
+ const string_1 = require("../convert/string");
6
+ const escapeRegExp_1 = require("../helpers/escapeRegExp");
7
+ const boundedCache_1 = require("../helpers/boundedCache");
8
+ const errors_1 = require("../helpers/errors");
9
+ function currencyRegex(options) {
10
+ let decimal_digits = `\\d{${options.digits_after_decimal[0]}}`;
11
+ options.digits_after_decimal.forEach((digit, index) => {
12
+ if (index !== 0)
13
+ decimal_digits = `${decimal_digits}|\\d{${digit}}`;
14
+ });
15
+ const symbol = `(${(0, escapeRegExp_1.escapeRegExp)(options.symbol)})${options.require_symbol ? '' : '?'}`, negative = '-?', whole_dollar_amount_without_sep = '[1-9]\\d*', whole_dollar_amount_with_sep = `[1-9]\\d{0,2}(${(0, escapeRegExp_1.escapeRegExp)(options.thousands_separator)}\\d{3})*`, valid_whole_dollar_amounts = [
16
+ '0',
17
+ whole_dollar_amount_without_sep,
18
+ whole_dollar_amount_with_sep,
19
+ ], whole_dollar_amount = `(${valid_whole_dollar_amounts.join('|')})?`, decimal_amount = `(${(0, escapeRegExp_1.escapeRegExp)(options.decimal_separator)}(${decimal_digits}))${options.require_decimal ? '' : '?'}`;
20
+ let pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');
21
+ if (options.allow_negatives && !options.parens_for_negatives) {
22
+ if (options.negative_sign_after_digits) {
23
+ pattern += negative;
24
+ }
25
+ else if (options.negative_sign_before_digits) {
26
+ pattern = negative + pattern;
27
+ }
28
+ }
29
+ if (options.allow_negative_sign_placeholder) {
30
+ pattern = `( (?!\\-))?${pattern}`;
31
+ }
32
+ else if (options.allow_space_after_symbol) {
33
+ pattern = ` ?${pattern}`;
34
+ }
35
+ else if (options.allow_space_after_digits) {
36
+ pattern += '( (?!$))?';
37
+ }
38
+ if (options.symbol_after_digits) {
39
+ pattern += symbol;
40
+ }
41
+ else {
42
+ pattern = symbol + pattern;
43
+ }
44
+ if (options.allow_negatives) {
45
+ if (options.parens_for_negatives) {
46
+ pattern = `(\\(${pattern}\\)|${pattern})`;
47
+ }
48
+ else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {
49
+ pattern = negative + pattern;
50
+ }
51
+ }
52
+ const notStartingWithSpaceOrSignedSpace = '(?!-? )';
53
+ const containingADigit = '(?=.*\\d)';
54
+ return new RegExp(`^${notStartingWithSpaceOrSignedSpace}${containingADigit}${pattern}$`);
55
+ }
56
+ const default_currency_options = {
57
+ symbol: '$',
58
+ require_symbol: false,
59
+ allow_space_after_symbol: false,
60
+ symbol_after_digits: false,
61
+ allow_negatives: true,
62
+ parens_for_negatives: false,
63
+ negative_sign_before_digits: false,
64
+ negative_sign_after_digits: false,
65
+ allow_negative_sign_placeholder: false,
66
+ thousands_separator: ',',
67
+ decimal_separator: '.',
68
+ allow_decimal: true,
69
+ require_decimal: false,
70
+ digits_after_decimal: [2],
71
+ allow_space_after_digits: false,
72
+ };
73
+ const currencyRegexCache = new boundedCache_1.BoundedCache();
74
+ function assertValidOptions(options) {
75
+ for (const key of ['symbol', 'thousands_separator', 'decimal_separator']) {
76
+ if (typeof options[key] !== 'string')
77
+ throw new errors_1.ValidationConfigError(`${key} must be a string`);
78
+ }
79
+ const digits = options.digits_after_decimal;
80
+ if (!Array.isArray(digits) ||
81
+ digits.length === 0 ||
82
+ !digits.every((d) => Number.isInteger(d) && d >= 0)) {
83
+ throw new errors_1.ValidationConfigError('digits_after_decimal must be a non-empty array of non-negative integers');
84
+ }
85
+ }
86
+ function getCurrencyRegex(options) {
87
+ assertValidOptions(options);
88
+ const key = JSON.stringify([
89
+ options.symbol,
90
+ options.require_symbol,
91
+ options.allow_space_after_symbol,
92
+ options.symbol_after_digits,
93
+ options.allow_negatives,
94
+ options.parens_for_negatives,
95
+ options.negative_sign_before_digits,
96
+ options.negative_sign_after_digits,
97
+ options.allow_negative_sign_placeholder,
98
+ options.thousands_separator,
99
+ options.decimal_separator,
100
+ options.allow_decimal,
101
+ options.require_decimal,
102
+ options.digits_after_decimal,
103
+ options.allow_space_after_digits,
104
+ ]);
105
+ return currencyRegexCache.getOrCreate(key, () => currencyRegex(options));
106
+ }
107
+ function isCurrency(value, options) {
108
+ const stringResult = (0, string_1.toString)(value);
109
+ if (!stringResult.ok)
110
+ return false;
111
+ const s = stringResult.value;
112
+ const opts = (0, merge_1.merge)(options, default_currency_options);
113
+ return getCurrencyRegex(opts).test(s);
114
+ }
@@ -0,0 +1 @@
1
+ export declare function isDataURI(value: unknown): boolean;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDataURI = isDataURI;
4
+ const string_1 = require("../convert/string");
5
+ const validMediaType = /^[a-z]+\/[a-z0-9\-+._]+$/i;
6
+ const validAttribute = /^[a-z-]+=[a-z0-9-]+$/i;
7
+ const validData = /^[a-z0-9!$&'()*+,;=\-._~:@/?%\s]*$/i;
8
+ function isDataURI(value) {
9
+ const stringResult = (0, string_1.toString)(value);
10
+ if (!stringResult.ok)
11
+ return false;
12
+ const s = stringResult.value;
13
+ const str = s;
14
+ const data = str.split(',');
15
+ if (data.length < 2) {
16
+ return false;
17
+ }
18
+ const attributes = data.shift().trim().split(';');
19
+ const schemeAndMediaType = attributes.shift();
20
+ if (schemeAndMediaType.slice(0, 5) !== 'data:') {
21
+ return false;
22
+ }
23
+ const mediaType = schemeAndMediaType.slice(5);
24
+ if (mediaType !== '' && !validMediaType.test(mediaType)) {
25
+ return false;
26
+ }
27
+ for (let i = 0; i < attributes.length; i++) {
28
+ if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') &&
29
+ !validAttribute.test(attributes[i])) {
30
+ return false;
31
+ }
32
+ }
33
+ for (const item of data) {
34
+ if (!validData.test(item)) {
35
+ return false;
36
+ }
37
+ }
38
+ return true;
39
+ }
@@ -0,0 +1,7 @@
1
+ export interface IsDateOptions {
2
+ format?: string;
3
+ strictMode?: boolean;
4
+ delimiters?: string[];
5
+ twoDigitYearPivot?: number;
6
+ }
7
+ export declare function isDate(value: unknown, options?: IsDateOptions): boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDate = isDate;
4
+ const date_1 = require("../convert/date");
5
+ const config_1 = require("../helpers/config");
6
+ function isDate(value, options) {
7
+ return (0, date_1.toDate)(value, (0, config_1.optionsOf)(options)).ok;
8
+ }
@@ -0,0 +1,6 @@
1
+ export interface IsDecimalOptions {
2
+ force_decimal?: boolean;
3
+ decimal_digits?: string;
4
+ locale?: string;
5
+ }
6
+ export declare function isDecimal(value: unknown, options?: IsDecimalOptions): boolean;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDecimal = isDecimal;
4
+ const errors_1 = require("../helpers/errors");
5
+ const hasOwn_1 = require("../helpers/hasOwn");
6
+ const merge_1 = require("../helpers/merge");
7
+ const string_1 = require("../convert/string");
8
+ const escapeRegExp_1 = require("../helpers/escapeRegExp");
9
+ const boundedCache_1 = require("../helpers/boundedCache");
10
+ const alpha_1 = require("./alpha");
11
+ const config_1 = require("../helpers/config");
12
+ const decimalRegexCache = new boundedCache_1.BoundedCache();
13
+ const DECIMAL_DIGITS_FORMAT = /^\d+(,\d*)?$/;
14
+ function isValidDecimalDigits(digits) {
15
+ if (typeof digits !== 'string' || !DECIMAL_DIGITS_FORMAT.test(digits))
16
+ return false;
17
+ const [min, max = ''] = digits.split(',');
18
+ const LARGEST_QUANTIFIER = 1000000;
19
+ return (Number(min) <= LARGEST_QUANTIFIER &&
20
+ (max === '' || (Number(min) <= Number(max) && Number(max) <= LARGEST_QUANTIFIER)));
21
+ }
22
+ function decimalRegExp(options) {
23
+ const key = JSON.stringify([options.locale, options.decimal_digits, options.force_decimal]);
24
+ return decimalRegexCache.getOrCreate(key, () => new RegExp(`^[-+]?([0-9]+)?(${(0, escapeRegExp_1.escapeRegExp)(alpha_1.decimal[options.locale])}[0-9]{${options.decimal_digits}})${options.force_decimal ? '' : '?'}$`));
25
+ }
26
+ const default_decimal_options = {
27
+ force_decimal: false,
28
+ decimal_digits: '1,',
29
+ locale: 'en-US',
30
+ };
31
+ const blacklist = ['', '-', '+'];
32
+ function isDecimal(value, options) {
33
+ const opts = (0, merge_1.merge)(options, default_decimal_options);
34
+ opts.locale = String(opts.locale);
35
+ if (!(0, hasOwn_1.hasOwn)(alpha_1.decimal, opts.locale)) {
36
+ throw new errors_1.ValidationConfigError(`Invalid locale '${(0, config_1.configText)(opts.locale)}'`);
37
+ }
38
+ if (!isValidDecimalDigits(opts.decimal_digits)) {
39
+ throw new errors_1.ValidationConfigError(`Invalid decimal_digits '${(0, config_1.configText)(opts.decimal_digits)}'`);
40
+ }
41
+ const stringResult = (0, string_1.toString)(value);
42
+ if (!stringResult.ok)
43
+ return false;
44
+ const s = stringResult.value;
45
+ return !blacklist.includes(s.replace(/ /g, '')) && decimalRegExp(opts).test(s);
46
+ }
@@ -0,0 +1,4 @@
1
+ export interface IsDivisibleByOptions {
2
+ num: number;
3
+ }
4
+ export declare function isDivisibleBy(value: unknown, options: IsDivisibleByOptions): boolean;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDivisibleBy = isDivisibleBy;
4
+ const string_1 = require("../convert/string");
5
+ const float_1 = require("../convert/float");
6
+ const config_1 = require("../helpers/config");
7
+ function isDivisibleBy(value, options) {
8
+ const { num } = (0, config_1.optionsOf)(options);
9
+ const stringResult = (0, string_1.toString)(value);
10
+ if (!stringResult.ok)
11
+ return false;
12
+ const s = stringResult.value;
13
+ const r = (0, float_1.toFloat)(s, { syntax: 'validator' });
14
+ return r.ok && r.value % parseInt(String(num), 10) === 0;
15
+ }
@@ -0,0 +1 @@
1
+ export declare function isEAN(value: unknown): boolean;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEAN = isEAN;
4
+ const string_1 = require("../convert/string");
5
+ const LENGTH_EAN_8 = 8;
6
+ const LENGTH_EAN_14 = 14;
7
+ const validEanRegex = /^(\d{8}|\d{13}|\d{14})$/;
8
+ function getPositionWeightThroughLengthAndIndex(length, index) {
9
+ if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {
10
+ return index % 2 === 0 ? 3 : 1;
11
+ }
12
+ return index % 2 === 0 ? 1 : 3;
13
+ }
14
+ function calculateCheckDigit(ean) {
15
+ const checksum = ean
16
+ .slice(0, -1)
17
+ .split('')
18
+ .map((char, index) => Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index))
19
+ .reduce((acc, partialSum) => acc + partialSum, 0);
20
+ const remainder = 10 - (checksum % 10);
21
+ return remainder < 10 ? remainder : 0;
22
+ }
23
+ function isEAN(value) {
24
+ const stringResult = (0, string_1.toString)(value);
25
+ if (!stringResult.ok)
26
+ return false;
27
+ const s = stringResult.value;
28
+ const str = s;
29
+ const actualCheckDigit = Number(str.slice(-1));
30
+ return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);
31
+ }
@@ -0,0 +1,14 @@
1
+ export interface IsEmailOptions {
2
+ allow_display_name?: boolean;
3
+ allow_underscores?: boolean;
4
+ require_display_name?: boolean;
5
+ allow_utf8_local_part?: boolean;
6
+ require_tld?: boolean;
7
+ blacklisted_chars?: string;
8
+ ignore_max_length?: boolean;
9
+ host_blacklist?: (string | RegExp)[];
10
+ host_whitelist?: (string | RegExp)[];
11
+ allow_ip_domain?: boolean;
12
+ domain_specific_validation?: boolean;
13
+ }
14
+ export declare function isEmail(value: unknown, options?: IsEmailOptions): boolean;
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmail = isEmail;
4
+ const string_1 = require("../convert/string");
5
+ const checkHost_1 = require("../helpers/checkHost");
6
+ const config_1 = require("../helpers/config");
7
+ const errors_1 = require("../helpers/errors");
8
+ const escapeRegExp_1 = require("../helpers/escapeRegExp");
9
+ const isByteLength_1 = require("./isByteLength");
10
+ const isFQDN_1 = require("./isFQDN");
11
+ const isIP_1 = require("./isIP");
12
+ const merge_1 = require("../helpers/merge");
13
+ const default_email_options = {
14
+ allow_display_name: false,
15
+ allow_underscores: false,
16
+ require_display_name: false,
17
+ allow_utf8_local_part: true,
18
+ require_tld: true,
19
+ blacklisted_chars: '',
20
+ ignore_max_length: false,
21
+ host_blacklist: [],
22
+ host_whitelist: [],
23
+ };
24
+ const splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
25
+ const emailUserPart = /^[a-z\d!#$%&'*+\-/=?^_`{|}~]+$/i;
26
+ const gmailUserPart = /^[a-z\d]+$/;
27
+ const quotedEmailUser = /^([\t \x21\x23-\x5b\x5d-\x7e]|(\\[\t\x20-\x7e]))*$/i;
28
+ const emailUserUtf8Part = /^[a-z\d!#$%&'*+\-/=?^_`{|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
29
+ const quotedEmailUserUtf8 = /^([\t \x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\t\x20-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
30
+ const defaultMaxEmailLength = 254;
31
+ const invisibleLocalPart = /[\p{Cf}\p{Cs}\p{Zl}\p{Zp}\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/u;
32
+ function validateDisplayName(display_name) {
33
+ const display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1');
34
+ if (!display_name_without_quotes.trim()) {
35
+ return false;
36
+ }
37
+ const contains_illegal = /[.";<>]/.test(display_name_without_quotes);
38
+ if (contains_illegal) {
39
+ const is_quoted = display_name_without_quotes !== display_name;
40
+ if (!is_quoted) {
41
+ return false;
42
+ }
43
+ const all_start_with_back_slash = display_name_without_quotes.split('"').length ===
44
+ display_name_without_quotes.split('\\"').length;
45
+ if (!all_start_with_back_slash) {
46
+ return false;
47
+ }
48
+ }
49
+ return true;
50
+ }
51
+ function isEmail(value, options) {
52
+ const stringResult = (0, string_1.toString)(value);
53
+ if (!stringResult.ok)
54
+ return false;
55
+ const s = stringResult.value;
56
+ let strVal = s;
57
+ options = (0, merge_1.merge)(options, default_email_options);
58
+ if (options.require_display_name || options.allow_display_name) {
59
+ const display_email = strVal.match(splitNameAddress);
60
+ if (display_email) {
61
+ let display_name = display_email[1];
62
+ const address = strVal.replace(display_name, '');
63
+ if (!address.endsWith('>')) {
64
+ return false;
65
+ }
66
+ strVal = address.slice(1, -1);
67
+ if (display_name.endsWith(' ')) {
68
+ display_name = display_name.slice(0, -1);
69
+ }
70
+ if (!validateDisplayName(display_name)) {
71
+ return false;
72
+ }
73
+ }
74
+ else if (options.require_display_name) {
75
+ return false;
76
+ }
77
+ }
78
+ if (!options.ignore_max_length && strVal.length > defaultMaxEmailLength) {
79
+ return false;
80
+ }
81
+ const parts = strVal.split('@');
82
+ const domain = parts.pop();
83
+ const lower_domain = domain.toLowerCase();
84
+ const host_blacklist = (0, checkHost_1.hostList)(options.host_blacklist, 'host_blacklist');
85
+ const host_whitelist = (0, checkHost_1.hostList)(options.host_whitelist, 'host_whitelist');
86
+ if (host_blacklist.length > 0 && (0, checkHost_1.checkHost)(lower_domain, host_blacklist)) {
87
+ return false;
88
+ }
89
+ if (host_whitelist.length > 0 && !(0, checkHost_1.checkHost)(lower_domain, host_whitelist)) {
90
+ return false;
91
+ }
92
+ let user = parts.join('@');
93
+ if (options.domain_specific_validation &&
94
+ (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
95
+ user = user.toLowerCase();
96
+ const username = user.split('+')[0];
97
+ if (!(0, isByteLength_1.isByteLength)(username.replace(/\./g, ''), { min: 6, max: 30 })) {
98
+ return false;
99
+ }
100
+ const user_parts = username.split('.');
101
+ for (const part of user_parts) {
102
+ if (!gmailUserPart.test(part)) {
103
+ return false;
104
+ }
105
+ }
106
+ }
107
+ if (!options.ignore_max_length &&
108
+ (!(0, isByteLength_1.isByteLength)(user, { max: 64 }) || !(0, isByteLength_1.isByteLength)(domain, { max: 254 }))) {
109
+ return false;
110
+ }
111
+ if (!(0, isFQDN_1.isFQDN)(domain, {
112
+ require_tld: options.require_tld,
113
+ ignore_max_length: options.ignore_max_length,
114
+ allow_underscores: options.allow_underscores,
115
+ })) {
116
+ if (!options.allow_ip_domain) {
117
+ return false;
118
+ }
119
+ if (!(0, isIP_1.isIP)(domain)) {
120
+ if (!domain.startsWith('[') || !domain.endsWith(']')) {
121
+ return false;
122
+ }
123
+ const noBracketdomain = domain.slice(1, -1);
124
+ if (noBracketdomain.length === 0 || !(0, isIP_1.isIP)(noBracketdomain)) {
125
+ return false;
126
+ }
127
+ }
128
+ }
129
+ if (options.blacklisted_chars) {
130
+ if (typeof options.blacklisted_chars !== 'string') {
131
+ throw new errors_1.ValidationConfigError(`blacklisted_chars must be a string, got ${(0, config_1.configText)(options.blacklisted_chars)}`);
132
+ }
133
+ if (new RegExp(`[${(0, escapeRegExp_1.escapeRegExp)(options.blacklisted_chars)}]`).test(user))
134
+ return false;
135
+ }
136
+ if (invisibleLocalPart.test(user)) {
137
+ return false;
138
+ }
139
+ if (user[0] === '"' && user[user.length - 1] === '"') {
140
+ user = user.slice(1, user.length - 1);
141
+ return options.allow_utf8_local_part
142
+ ? quotedEmailUserUtf8.test(user)
143
+ : quotedEmailUser.test(user);
144
+ }
145
+ const pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
146
+ const user_parts = user.split('.');
147
+ for (const part of user_parts) {
148
+ if (!pattern.test(part)) {
149
+ return false;
150
+ }
151
+ }
152
+ return true;
153
+ }
@@ -0,0 +1,4 @@
1
+ export interface IsEmptyOptions {
2
+ ignore_whitespace?: boolean;
3
+ }
4
+ export declare function isEmpty(value: unknown, options?: IsEmptyOptions): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmpty = isEmpty;
4
+ const string_1 = require("../convert/string");
5
+ const merge_1 = require("../helpers/merge");
6
+ const default_is_empty_options = {
7
+ ignore_whitespace: false,
8
+ };
9
+ function isEmpty(value, options) {
10
+ const stringResult = (0, string_1.toString)(value);
11
+ if (!stringResult.ok)
12
+ return false;
13
+ const s = stringResult.value;
14
+ const str = s;
15
+ options = (0, merge_1.merge)(options, default_is_empty_options);
16
+ return (options.ignore_whitespace ? str.trim().length : str.length) === 0;
17
+ }
@@ -0,0 +1 @@
1
+ export declare function isEthereumAddress(value: unknown): boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEthereumAddress = isEthereumAddress;
4
+ const string_1 = require("../convert/string");
5
+ const eth = /^(0x)[0-9a-f]{40}$/i;
6
+ function isEthereumAddress(value) {
7
+ const stringResult = (0, string_1.toString)(value);
8
+ if (!stringResult.ok)
9
+ return false;
10
+ const s = stringResult.value;
11
+ const str = s;
12
+ return eth.test(str);
13
+ }
@@ -0,0 +1,9 @@
1
+ export interface IsFQDNOptions {
2
+ require_tld?: boolean;
3
+ allow_underscores?: boolean;
4
+ allow_trailing_dot?: boolean;
5
+ allow_numeric_tld?: boolean;
6
+ allow_wildcard?: boolean;
7
+ ignore_max_length?: boolean;
8
+ }
9
+ export declare function isFQDN(value: unknown, options?: IsFQDNOptions): boolean;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isFQDN = isFQDN;
4
+ const string_1 = require("../convert/string");
5
+ const merge_1 = require("../helpers/merge");
6
+ const default_fqdn_options = {
7
+ require_tld: true,
8
+ allow_underscores: false,
9
+ allow_trailing_dot: false,
10
+ allow_numeric_tld: false,
11
+ allow_wildcard: false,
12
+ ignore_max_length: false,
13
+ };
14
+ const tldRegex = /^([a-z¡-¨ª-퟿豈-﷏ﷰ-￯]{2,}|xn[a-z0-9-]{2,})$/i;
15
+ const numericRegex = /^\d+$/;
16
+ const partCharsRegex = /^[a-z_¡-￿0-9-]+$/i;
17
+ const fullWidthRegex = /[!-~]/;
18
+ const hyphenEdgeRegex = /^-|-$/;
19
+ const underscoreRegex = /_/;
20
+ const invisibleRegex = /[\p{Cc}\p{Cf}\p{Cs}\p{Z}]/u;
21
+ function isFQDN(value, options) {
22
+ const stringResult = (0, string_1.toString)(value);
23
+ if (!stringResult.ok)
24
+ return false;
25
+ const s = stringResult.value;
26
+ let strVal = s;
27
+ options = (0, merge_1.merge)(options, default_fqdn_options);
28
+ if (options.allow_trailing_dot && strVal[strVal.length - 1] === '.') {
29
+ strVal = strVal.substring(0, strVal.length - 1);
30
+ }
31
+ if (options.allow_wildcard === true && strVal.indexOf('*.') === 0) {
32
+ strVal = strVal.substring(2);
33
+ }
34
+ if (invisibleRegex.test(strVal)) {
35
+ return false;
36
+ }
37
+ const parts = strVal.split('.');
38
+ const tld = parts[parts.length - 1];
39
+ if (options.require_tld) {
40
+ if (parts.length < 2) {
41
+ return false;
42
+ }
43
+ if (!options.allow_numeric_tld && !tldRegex.test(tld)) {
44
+ return false;
45
+ }
46
+ }
47
+ if (!options.allow_numeric_tld && numericRegex.test(tld)) {
48
+ return false;
49
+ }
50
+ return parts.every((part) => {
51
+ if (part.length > 63 && !options.ignore_max_length) {
52
+ return false;
53
+ }
54
+ if (!partCharsRegex.test(part)) {
55
+ return false;
56
+ }
57
+ if (fullWidthRegex.test(part)) {
58
+ return false;
59
+ }
60
+ if (hyphenEdgeRegex.test(part)) {
61
+ return false;
62
+ }
63
+ if (!options.allow_underscores && underscoreRegex.test(part)) {
64
+ return false;
65
+ }
66
+ return true;
67
+ });
68
+ }
@@ -0,0 +1,9 @@
1
+ export interface IsFloatOptions {
2
+ min?: number;
3
+ max?: number;
4
+ lt?: number;
5
+ gt?: number;
6
+ locale?: string;
7
+ }
8
+ export declare function isFloat(value: unknown, options?: IsFloatOptions): boolean;
9
+ export declare const locales: readonly string[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.locales = void 0;
4
+ exports.isFloat = isFloat;
5
+ const float_1 = require("../convert/float");
6
+ const alpha_1 = require("./alpha");
7
+ const string_1 = require("../convert/string");
8
+ const errors_1 = require("../helpers/errors");
9
+ const hasOwn_1 = require("../helpers/hasOwn");
10
+ const config_1 = require("../helpers/config");
11
+ function isFloat(value, options) {
12
+ const opts = options || {};
13
+ if (typeof value !== 'number') {
14
+ if (!(0, string_1.toString)(value).ok)
15
+ return false;
16
+ if (opts.locale && !(0, hasOwn_1.hasOwn)(alpha_1.decimal, opts.locale)) {
17
+ throw new errors_1.ValidationConfigError(`Invalid locale '${(0, config_1.configText)(opts.locale)}'`);
18
+ }
19
+ }
20
+ const decimalSeparator = opts.locale ? alpha_1.decimal[opts.locale] : '.';
21
+ const r = (0, float_1.toFloat)(value, { syntax: 'validator', decimalSeparator });
22
+ if (!r.ok)
23
+ return false;
24
+ const n = r.value;
25
+ return ((opts.min == null || n >= opts.min) &&
26
+ (opts.max == null || n <= opts.max) &&
27
+ (opts.lt == null || n < opts.lt) &&
28
+ (opts.gt == null || n > opts.gt));
29
+ }
30
+ exports.locales = Object.freeze(Object.keys(alpha_1.decimal));
@@ -0,0 +1,2 @@
1
+ export declare const fullWidth: RegExp;
2
+ export declare function isFullWidth(value: unknown): boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fullWidth = void 0;
4
+ exports.isFullWidth = isFullWidth;
5
+ const string_1 = require("../convert/string");
6
+ exports.fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
7
+ function isFullWidth(value) {
8
+ const stringResult = (0, string_1.toString)(value);
9
+ if (!stringResult.ok)
10
+ return false;
11
+ const s = stringResult.value;
12
+ const str = s;
13
+ return exports.fullWidth.test(str);
14
+ }
@@ -0,0 +1 @@
1
+ export declare function isHSL(value: unknown): boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHSL = isHSL;
4
+ const string_1 = require("../convert/string");
5
+ const hslComma = /^hsla?\(((\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?)%){2}(,((\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?)%?))?\)$/i;
6
+ const hslSpace = /^hsla?\(((\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?)%){2}\s?(\/\s((\+|-)?([0-9]+(\.[0-9]+)?(e(\+|-)?[0-9]+)?|\.[0-9]+(e(\+|-)?[0-9]+)?)%?)\s?)?\)$/i;
7
+ function isHSL(value) {
8
+ const stringResult = (0, string_1.toString)(value);
9
+ if (!stringResult.ok)
10
+ return false;
11
+ const s = stringResult.value;
12
+ const str = s;
13
+ const strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/gi, '$1');
14
+ if (strippedStr.indexOf(',') !== -1) {
15
+ return hslComma.test(strippedStr);
16
+ }
17
+ return hslSpace.test(strippedStr);
18
+ }
@@ -0,0 +1,2 @@
1
+ export declare const halfWidth: RegExp;
2
+ export declare function isHalfWidth(value: unknown): boolean;