@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.
- package/LICENSE +28 -0
- package/README.md +345 -2
- package/dist/cjs/canBe/array.d.ts +1 -0
- package/dist/cjs/canBe/array.js +7 -0
- package/dist/cjs/canBe/boolean.d.ts +1 -0
- package/dist/cjs/canBe/boolean.js +7 -0
- package/dist/cjs/canBe/date.d.ts +1 -0
- package/dist/cjs/canBe/date.js +7 -0
- package/dist/cjs/canBe/enum.d.ts +1 -0
- package/dist/cjs/canBe/enum.js +7 -0
- package/dist/cjs/canBe/float.d.ts +1 -0
- package/dist/cjs/canBe/float.js +7 -0
- package/dist/cjs/canBe/index.d.ts +8 -0
- package/dist/cjs/canBe/index.js +20 -0
- package/dist/cjs/canBe/integer.d.ts +1 -0
- package/dist/cjs/canBe/integer.js +7 -0
- package/dist/cjs/canBe/json.d.ts +2 -0
- package/dist/cjs/canBe/json.js +9 -0
- package/dist/cjs/canBe/string.d.ts +1 -0
- package/dist/cjs/canBe/string.js +7 -0
- package/dist/cjs/convert/any-to-string.d.ts +1 -0
- package/dist/cjs/convert/any-to-string.js +64 -0
- package/dist/cjs/convert/array.d.ts +2 -0
- package/dist/cjs/convert/array.js +25 -0
- package/dist/cjs/convert/boolean.d.ts +5 -0
- package/dist/cjs/convert/boolean.js +30 -0
- package/dist/cjs/convert/date.d.ts +11 -0
- package/dist/cjs/convert/date.js +162 -0
- package/dist/cjs/convert/enum.d.ts +2 -0
- package/dist/cjs/convert/enum.js +11 -0
- package/dist/cjs/convert/float.d.ts +6 -0
- package/dist/cjs/convert/float.js +46 -0
- package/dist/cjs/convert/index.d.ts +16 -0
- package/dist/cjs/convert/index.js +24 -0
- package/dist/cjs/convert/integer.d.ts +6 -0
- package/dist/cjs/convert/integer.js +41 -0
- package/dist/cjs/convert/json.d.ts +7 -0
- package/dist/cjs/convert/json.js +81 -0
- package/dist/cjs/convert/result.d.ts +26 -0
- package/dist/cjs/convert/result.js +23 -0
- package/dist/cjs/convert/string.d.ts +2 -0
- package/dist/cjs/convert/string.js +13 -0
- package/dist/cjs/decorator/validate.d.ts +23 -0
- package/dist/cjs/decorator/validate.js +62 -0
- package/dist/cjs/decorator/validations.d.ts +35 -0
- package/dist/cjs/decorator/validations.js +75 -0
- package/dist/cjs/helpers/algorithms.d.ts +1 -0
- package/dist/cjs/helpers/algorithms.js +10 -0
- package/dist/cjs/helpers/analyzePassword.d.ts +9 -0
- package/dist/cjs/helpers/analyzePassword.js +41 -0
- package/dist/cjs/helpers/assertString.d.ts +1 -0
- package/dist/cjs/helpers/assertString.js +9 -0
- package/dist/cjs/helpers/boundedCache.d.ts +9 -0
- package/dist/cjs/helpers/boundedCache.js +33 -0
- package/dist/cjs/helpers/checkHost.d.ts +2 -0
- package/dist/cjs/helpers/checkHost.js +36 -0
- package/dist/cjs/helpers/config.d.ts +10 -0
- package/dist/cjs/helpers/config.js +34 -0
- package/dist/cjs/helpers/errors.d.ts +3 -0
- package/dist/cjs/helpers/errors.js +10 -0
- package/dist/cjs/helpers/escapeRegExp.d.ts +1 -0
- package/dist/cjs/helpers/escapeRegExp.js +6 -0
- package/dist/cjs/helpers/hasOwn.d.ts +1 -0
- package/dist/cjs/helpers/hasOwn.js +6 -0
- package/dist/cjs/helpers/merge.d.ts +1 -0
- package/dist/cjs/helpers/merge.js +15 -0
- package/dist/cjs/helpers/scorePassword.d.ts +9 -0
- package/dist/cjs/helpers/scorePassword.js +37 -0
- package/dist/cjs/index.d.ts +103 -0
- package/dist/cjs/index.js +220 -0
- package/dist/cjs/sanitizer/blacklist.d.ts +1 -0
- package/dist/cjs/sanitizer/blacklist.js +11 -0
- package/dist/cjs/sanitizer/escape.d.ts +1 -0
- package/dist/cjs/sanitizer/escape.js +16 -0
- package/dist/cjs/sanitizer/index.d.ts +10 -0
- package/dist/cjs/sanitizer/index.js +21 -0
- package/dist/cjs/sanitizer/ltrim.d.ts +1 -0
- package/dist/cjs/sanitizer/ltrim.js +13 -0
- package/dist/cjs/sanitizer/normalizeEmail.d.ts +16 -0
- package/dist/cjs/sanitizer/normalizeEmail.js +194 -0
- package/dist/cjs/sanitizer/rtrim.d.ts +1 -0
- package/dist/cjs/sanitizer/rtrim.js +21 -0
- package/dist/cjs/sanitizer/stripLow.d.ts +1 -0
- package/dist/cjs/sanitizer/stripLow.js +10 -0
- package/dist/cjs/sanitizer/trim.d.ts +1 -0
- package/dist/cjs/sanitizer/trim.js +14 -0
- package/dist/cjs/sanitizer/unescape.d.ts +1 -0
- package/dist/cjs/sanitizer/unescape.js +16 -0
- package/dist/cjs/sanitizer/whitelist.d.ts +1 -0
- package/dist/cjs/sanitizer/whitelist.js +11 -0
- package/dist/cjs/validators/alpha.d.ts +105 -0
- package/dist/cjs/validators/alpha.js +202 -0
- package/dist/cjs/validators/contains.d.ts +6 -0
- package/dist/cjs/validators/contains.js +27 -0
- package/dist/cjs/validators/equals.d.ts +4 -0
- package/dist/cjs/validators/equals.js +14 -0
- package/dist/cjs/validators/index.d.ts +242 -0
- package/dist/cjs/validators/index.js +193 -0
- package/dist/cjs/validators/isAbaRouting.d.ts +1 -0
- package/dist/cjs/validators/isAbaRouting.js +24 -0
- package/dist/cjs/validators/isAfter.d.ts +4 -0
- package/dist/cjs/validators/isAfter.js +15 -0
- package/dist/cjs/validators/isAlpha.d.ts +8 -0
- package/dist/cjs/validators/isAlpha.js +35 -0
- package/dist/cjs/validators/isAlphanumeric.d.ts +8 -0
- package/dist/cjs/validators/isAlphanumeric.js +35 -0
- package/dist/cjs/validators/isAscii.d.ts +1 -0
- package/dist/cjs/validators/isAscii.js +13 -0
- package/dist/cjs/validators/isBIC.d.ts +1 -0
- package/dist/cjs/validators/isBIC.js +18 -0
- package/dist/cjs/validators/isBase32.d.ts +4 -0
- package/dist/cjs/validators/isBase32.js +21 -0
- package/dist/cjs/validators/isBase58.d.ts +1 -0
- package/dist/cjs/validators/isBase58.js +13 -0
- package/dist/cjs/validators/isBase64.d.ts +5 -0
- package/dist/cjs/validators/isBase64.js +28 -0
- package/dist/cjs/validators/isBefore.d.ts +4 -0
- package/dist/cjs/validators/isBefore.js +15 -0
- package/dist/cjs/validators/isBoolean.d.ts +4 -0
- package/dist/cjs/validators/isBoolean.js +7 -0
- package/dist/cjs/validators/isBtcAddress.d.ts +1 -0
- package/dist/cjs/validators/isBtcAddress.js +14 -0
- package/dist/cjs/validators/isByteLength.d.ts +5 -0
- package/dist/cjs/validators/isByteLength.js +36 -0
- package/dist/cjs/validators/isCreditCard.d.ts +15 -0
- package/dist/cjs/validators/isCreditCard.js +50 -0
- package/dist/cjs/validators/isCurrency.d.ts +18 -0
- package/dist/cjs/validators/isCurrency.js +114 -0
- package/dist/cjs/validators/isDataURI.d.ts +1 -0
- package/dist/cjs/validators/isDataURI.js +39 -0
- package/dist/cjs/validators/isDate.d.ts +7 -0
- package/dist/cjs/validators/isDate.js +8 -0
- package/dist/cjs/validators/isDecimal.d.ts +6 -0
- package/dist/cjs/validators/isDecimal.js +46 -0
- package/dist/cjs/validators/isDivisibleBy.d.ts +4 -0
- package/dist/cjs/validators/isDivisibleBy.js +15 -0
- package/dist/cjs/validators/isEAN.d.ts +1 -0
- package/dist/cjs/validators/isEAN.js +31 -0
- package/dist/cjs/validators/isEmail.d.ts +14 -0
- package/dist/cjs/validators/isEmail.js +153 -0
- package/dist/cjs/validators/isEmpty.d.ts +4 -0
- package/dist/cjs/validators/isEmpty.js +17 -0
- package/dist/cjs/validators/isEthereumAddress.d.ts +1 -0
- package/dist/cjs/validators/isEthereumAddress.js +13 -0
- package/dist/cjs/validators/isFQDN.d.ts +9 -0
- package/dist/cjs/validators/isFQDN.js +68 -0
- package/dist/cjs/validators/isFloat.d.ts +9 -0
- package/dist/cjs/validators/isFloat.js +30 -0
- package/dist/cjs/validators/isFullWidth.d.ts +2 -0
- package/dist/cjs/validators/isFullWidth.js +14 -0
- package/dist/cjs/validators/isHSL.d.ts +1 -0
- package/dist/cjs/validators/isHSL.js +18 -0
- package/dist/cjs/validators/isHalfWidth.d.ts +2 -0
- package/dist/cjs/validators/isHalfWidth.js +14 -0
- package/dist/cjs/validators/isHash.d.ts +21 -0
- package/dist/cjs/validators/isHash.js +34 -0
- package/dist/cjs/validators/isHexColor.d.ts +4 -0
- package/dist/cjs/validators/isHexColor.js +20 -0
- package/dist/cjs/validators/isHexadecimal.d.ts +1 -0
- package/dist/cjs/validators/isHexadecimal.js +13 -0
- package/dist/cjs/validators/isIBAN.d.ts +6 -0
- package/dist/cjs/validators/isIBAN.js +145 -0
- package/dist/cjs/validators/isIMEI.d.ts +4 -0
- package/dist/cjs/validators/isIMEI.js +45 -0
- package/dist/cjs/validators/isIP.d.ts +5 -0
- package/dist/cjs/validators/isIP.js +38 -0
- package/dist/cjs/validators/isIPRange.d.ts +5 -0
- package/dist/cjs/validators/isIPRange.js +43 -0
- package/dist/cjs/validators/isISBN.d.ts +5 -0
- package/dist/cjs/validators/isISBN.js +51 -0
- package/dist/cjs/validators/isISIN.d.ts +1 -0
- package/dist/cjs/validators/isISIN.js +55 -0
- package/dist/cjs/validators/isISO15924.d.ts +2 -0
- package/dist/cjs/validators/isISO15924.js +287 -0
- package/dist/cjs/validators/isISO31661Alpha2.d.ts +5 -0
- package/dist/cjs/validators/isISO31661Alpha2.js +277 -0
- package/dist/cjs/validators/isISO31661Alpha3.d.ts +4 -0
- package/dist/cjs/validators/isISO31661Alpha3.js +275 -0
- package/dist/cjs/validators/isISO31661Numeric.d.ts +1 -0
- package/dist/cjs/validators/isISO31661Numeric.js +263 -0
- package/dist/cjs/validators/isISO4217.d.ts +2 -0
- package/dist/cjs/validators/isISO4217.js +195 -0
- package/dist/cjs/validators/isISO6346.d.ts +2 -0
- package/dist/cjs/validators/isISO6346.js +43 -0
- package/dist/cjs/validators/isISO6391.d.ts +1 -0
- package/dist/cjs/validators/isISO6391.js +199 -0
- package/dist/cjs/validators/isISO8601.d.ts +5 -0
- package/dist/cjs/validators/isISO8601.js +42 -0
- package/dist/cjs/validators/isISRC.d.ts +1 -0
- package/dist/cjs/validators/isISRC.js +13 -0
- package/dist/cjs/validators/isISSN.d.ts +5 -0
- package/dist/cjs/validators/isISSN.js +27 -0
- package/dist/cjs/validators/isIdentityCard.d.ts +24 -0
- package/dist/cjs/validators/isIdentityCard.js +442 -0
- package/dist/cjs/validators/isIn.d.ts +4 -0
- package/dist/cjs/validators/isIn.js +36 -0
- package/dist/cjs/validators/isInt.d.ts +8 -0
- package/dist/cjs/validators/isInt.js +29 -0
- package/dist/cjs/validators/isJSON.d.ts +5 -0
- package/dist/cjs/validators/isJSON.js +10 -0
- package/dist/cjs/validators/isJWT.d.ts +1 -0
- package/dist/cjs/validators/isJWT.js +23 -0
- package/dist/cjs/validators/isLatLong.d.ts +4 -0
- package/dist/cjs/validators/isLatLong.js +29 -0
- package/dist/cjs/validators/isLength.d.ts +7 -0
- package/dist/cjs/validators/isLength.js +28 -0
- package/dist/cjs/validators/isLicensePlate.d.ts +21 -0
- package/dist/cjs/validators/isLicensePlate.js +43 -0
- package/dist/cjs/validators/isLocale.d.ts +1 -0
- package/dist/cjs/validators/isLocale.js +29 -0
- package/dist/cjs/validators/isLowercase.d.ts +1 -0
- package/dist/cjs/validators/isLowercase.js +12 -0
- package/dist/cjs/validators/isLuhnNumber.d.ts +1 -0
- package/dist/cjs/validators/isLuhnNumber.js +37 -0
- package/dist/cjs/validators/isMACAddress.d.ts +6 -0
- package/dist/cjs/validators/isMACAddress.js +34 -0
- package/dist/cjs/validators/isMD5.d.ts +1 -0
- package/dist/cjs/validators/isMD5.js +13 -0
- package/dist/cjs/validators/isMagnetURI.d.ts +1 -0
- package/dist/cjs/validators/isMagnetURI.js +16 -0
- package/dist/cjs/validators/isMailtoURI.d.ts +4 -0
- package/dist/cjs/validators/isMailtoURI.js +53 -0
- package/dist/cjs/validators/isMimeType.d.ts +1 -0
- package/dist/cjs/validators/isMimeType.js +15 -0
- package/dist/cjs/validators/isMobilePhone.d.ts +171 -0
- package/dist/cjs/validators/isMobilePhone.js +212 -0
- package/dist/cjs/validators/isMongoId.d.ts +1 -0
- package/dist/cjs/validators/isMongoId.js +11 -0
- package/dist/cjs/validators/isMultibyte.d.ts +1 -0
- package/dist/cjs/validators/isMultibyte.js +13 -0
- package/dist/cjs/validators/isNotEmpty.d.ts +1 -0
- package/dist/cjs/validators/isNotEmpty.js +10 -0
- package/dist/cjs/validators/isNumeric.d.ts +5 -0
- package/dist/cjs/validators/isNumeric.js +34 -0
- package/dist/cjs/validators/isOctal.d.ts +1 -0
- package/dist/cjs/validators/isOctal.js +13 -0
- package/dist/cjs/validators/isPassportNumber.d.ts +69 -0
- package/dist/cjs/validators/isPassportNumber.js +84 -0
- package/dist/cjs/validators/isPort.d.ts +1 -0
- package/dist/cjs/validators/isPort.js +7 -0
- package/dist/cjs/validators/isPostalCode.d.ts +79 -0
- package/dist/cjs/validators/isPostalCode.js +108 -0
- package/dist/cjs/validators/isRFC3339.d.ts +1 -0
- package/dist/cjs/validators/isRFC3339.js +28 -0
- package/dist/cjs/validators/isRequired.d.ts +1 -0
- package/dist/cjs/validators/isRequired.js +6 -0
- package/dist/cjs/validators/isRgbColor.d.ts +5 -0
- package/dist/cjs/validators/isRgbColor.js +38 -0
- package/dist/cjs/validators/isSemVer.d.ts +1 -0
- package/dist/cjs/validators/isSemVer.js +15 -0
- package/dist/cjs/validators/isSlug.d.ts +1 -0
- package/dist/cjs/validators/isSlug.js +13 -0
- package/dist/cjs/validators/isStrongPassword.d.ts +8 -0
- package/dist/cjs/validators/isStrongPassword.js +25 -0
- package/dist/cjs/validators/isSurrogatePair.d.ts +1 -0
- package/dist/cjs/validators/isSurrogatePair.js +13 -0
- package/dist/cjs/validators/isTime.d.ts +5 -0
- package/dist/cjs/validators/isTime.js +37 -0
- package/dist/cjs/validators/isULID.d.ts +1 -0
- package/dist/cjs/validators/isULID.js +12 -0
- package/dist/cjs/validators/isURL.d.ts +22 -0
- package/dist/cjs/validators/isURL.js +215 -0
- package/dist/cjs/validators/isUUID.d.ts +5 -0
- package/dist/cjs/validators/isUUID.js +31 -0
- package/dist/cjs/validators/isUppercase.d.ts +1 -0
- package/dist/cjs/validators/isUppercase.js +12 -0
- package/dist/cjs/validators/isVAT.d.ts +75 -0
- package/dist/cjs/validators/isVAT.js +134 -0
- package/dist/cjs/validators/isVariableWidth.d.ts +1 -0
- package/dist/cjs/validators/isVariableWidth.js +14 -0
- package/dist/cjs/validators/isWhitelisted.d.ts +4 -0
- package/dist/cjs/validators/isWhitelisted.js +23 -0
- package/dist/cjs/validators/matches.d.ts +5 -0
- package/dist/cjs/validators/matches.js +29 -0
- package/dist/esm/canBe/array.d.ts +1 -0
- package/dist/esm/canBe/array.js +4 -0
- package/dist/esm/canBe/boolean.d.ts +1 -0
- package/dist/esm/canBe/boolean.js +4 -0
- package/dist/esm/canBe/date.d.ts +1 -0
- package/dist/esm/canBe/date.js +4 -0
- package/dist/esm/canBe/enum.d.ts +1 -0
- package/dist/esm/canBe/enum.js +4 -0
- package/dist/esm/canBe/float.d.ts +1 -0
- package/dist/esm/canBe/float.js +4 -0
- package/dist/esm/canBe/index.d.ts +8 -0
- package/dist/esm/canBe/index.js +8 -0
- package/dist/esm/canBe/integer.d.ts +1 -0
- package/dist/esm/canBe/integer.js +4 -0
- package/dist/esm/canBe/json.d.ts +2 -0
- package/dist/esm/canBe/json.js +5 -0
- package/dist/esm/canBe/string.d.ts +1 -0
- package/dist/esm/canBe/string.js +4 -0
- package/dist/esm/convert/any-to-string.d.ts +1 -0
- package/dist/esm/convert/any-to-string.js +61 -0
- package/dist/esm/convert/array.d.ts +2 -0
- package/dist/esm/convert/array.js +22 -0
- package/dist/esm/convert/boolean.d.ts +5 -0
- package/dist/esm/convert/boolean.js +27 -0
- package/dist/esm/convert/date.d.ts +11 -0
- package/dist/esm/convert/date.js +158 -0
- package/dist/esm/convert/enum.d.ts +2 -0
- package/dist/esm/convert/enum.js +8 -0
- package/dist/esm/convert/float.d.ts +6 -0
- package/dist/esm/convert/float.js +43 -0
- package/dist/esm/convert/index.d.ts +16 -0
- package/dist/esm/convert/index.js +10 -0
- package/dist/esm/convert/integer.d.ts +6 -0
- package/dist/esm/convert/integer.js +38 -0
- package/dist/esm/convert/json.d.ts +7 -0
- package/dist/esm/convert/json.js +77 -0
- package/dist/esm/convert/result.d.ts +26 -0
- package/dist/esm/convert/result.js +18 -0
- package/dist/esm/convert/string.d.ts +2 -0
- package/dist/esm/convert/string.js +10 -0
- package/dist/esm/decorator/validate.d.ts +23 -0
- package/dist/esm/decorator/validate.js +59 -0
- package/dist/esm/decorator/validations.d.ts +35 -0
- package/dist/esm/decorator/validations.js +68 -0
- package/dist/esm/helpers/algorithms.d.ts +1 -0
- package/dist/esm/helpers/algorithms.js +7 -0
- package/dist/esm/helpers/analyzePassword.d.ts +9 -0
- package/dist/esm/helpers/analyzePassword.js +38 -0
- package/dist/esm/helpers/assertString.d.ts +1 -0
- package/dist/esm/helpers/assertString.js +6 -0
- package/dist/esm/helpers/boundedCache.d.ts +9 -0
- package/dist/esm/helpers/boundedCache.js +29 -0
- package/dist/esm/helpers/checkHost.d.ts +2 -0
- package/dist/esm/helpers/checkHost.js +32 -0
- package/dist/esm/helpers/config.d.ts +10 -0
- package/dist/esm/helpers/config.js +29 -0
- package/dist/esm/helpers/errors.d.ts +3 -0
- package/dist/esm/helpers/errors.js +6 -0
- package/dist/esm/helpers/escapeRegExp.d.ts +1 -0
- package/dist/esm/helpers/escapeRegExp.js +3 -0
- package/dist/esm/helpers/hasOwn.d.ts +1 -0
- package/dist/esm/helpers/hasOwn.js +3 -0
- package/dist/esm/helpers/merge.d.ts +1 -0
- package/dist/esm/helpers/merge.js +12 -0
- package/dist/esm/helpers/scorePassword.d.ts +9 -0
- package/dist/esm/helpers/scorePassword.js +34 -0
- package/dist/esm/index.d.ts +103 -0
- package/dist/esm/index.js +98 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/sanitizer/blacklist.d.ts +1 -0
- package/dist/esm/sanitizer/blacklist.js +8 -0
- package/dist/esm/sanitizer/escape.d.ts +1 -0
- package/dist/esm/sanitizer/escape.js +13 -0
- package/dist/esm/sanitizer/index.d.ts +10 -0
- package/dist/esm/sanitizer/index.js +9 -0
- package/dist/esm/sanitizer/ltrim.d.ts +1 -0
- package/dist/esm/sanitizer/ltrim.js +10 -0
- package/dist/esm/sanitizer/normalizeEmail.d.ts +16 -0
- package/dist/esm/sanitizer/normalizeEmail.js +191 -0
- package/dist/esm/sanitizer/rtrim.d.ts +1 -0
- package/dist/esm/sanitizer/rtrim.js +18 -0
- package/dist/esm/sanitizer/stripLow.d.ts +1 -0
- package/dist/esm/sanitizer/stripLow.js +7 -0
- package/dist/esm/sanitizer/trim.d.ts +1 -0
- package/dist/esm/sanitizer/trim.js +11 -0
- package/dist/esm/sanitizer/unescape.d.ts +1 -0
- package/dist/esm/sanitizer/unescape.js +13 -0
- package/dist/esm/sanitizer/whitelist.d.ts +1 -0
- package/dist/esm/sanitizer/whitelist.js +8 -0
- package/dist/esm/validators/alpha.d.ts +105 -0
- package/dist/esm/validators/alpha.js +199 -0
- package/dist/esm/validators/contains.d.ts +6 -0
- package/dist/esm/validators/contains.js +24 -0
- package/dist/esm/validators/equals.d.ts +4 -0
- package/dist/esm/validators/equals.js +11 -0
- package/dist/esm/validators/index.d.ts +242 -0
- package/dist/esm/validators/index.js +190 -0
- package/dist/esm/validators/isAbaRouting.d.ts +1 -0
- package/dist/esm/validators/isAbaRouting.js +21 -0
- package/dist/esm/validators/isAfter.d.ts +4 -0
- package/dist/esm/validators/isAfter.js +12 -0
- package/dist/esm/validators/isAlpha.d.ts +8 -0
- package/dist/esm/validators/isAlpha.js +31 -0
- package/dist/esm/validators/isAlphanumeric.d.ts +8 -0
- package/dist/esm/validators/isAlphanumeric.js +31 -0
- package/dist/esm/validators/isAscii.d.ts +1 -0
- package/dist/esm/validators/isAscii.js +10 -0
- package/dist/esm/validators/isBIC.d.ts +1 -0
- package/dist/esm/validators/isBIC.js +15 -0
- package/dist/esm/validators/isBase32.d.ts +4 -0
- package/dist/esm/validators/isBase32.js +18 -0
- package/dist/esm/validators/isBase58.d.ts +1 -0
- package/dist/esm/validators/isBase58.js +10 -0
- package/dist/esm/validators/isBase64.d.ts +5 -0
- package/dist/esm/validators/isBase64.js +25 -0
- package/dist/esm/validators/isBefore.d.ts +4 -0
- package/dist/esm/validators/isBefore.js +12 -0
- package/dist/esm/validators/isBoolean.d.ts +4 -0
- package/dist/esm/validators/isBoolean.js +4 -0
- package/dist/esm/validators/isBtcAddress.d.ts +1 -0
- package/dist/esm/validators/isBtcAddress.js +11 -0
- package/dist/esm/validators/isByteLength.d.ts +5 -0
- package/dist/esm/validators/isByteLength.js +33 -0
- package/dist/esm/validators/isCreditCard.d.ts +15 -0
- package/dist/esm/validators/isCreditCard.js +47 -0
- package/dist/esm/validators/isCurrency.d.ts +18 -0
- package/dist/esm/validators/isCurrency.js +111 -0
- package/dist/esm/validators/isDataURI.d.ts +1 -0
- package/dist/esm/validators/isDataURI.js +36 -0
- package/dist/esm/validators/isDate.d.ts +7 -0
- package/dist/esm/validators/isDate.js +5 -0
- package/dist/esm/validators/isDecimal.d.ts +6 -0
- package/dist/esm/validators/isDecimal.js +43 -0
- package/dist/esm/validators/isDivisibleBy.d.ts +4 -0
- package/dist/esm/validators/isDivisibleBy.js +12 -0
- package/dist/esm/validators/isEAN.d.ts +1 -0
- package/dist/esm/validators/isEAN.js +28 -0
- package/dist/esm/validators/isEmail.d.ts +14 -0
- package/dist/esm/validators/isEmail.js +150 -0
- package/dist/esm/validators/isEmpty.d.ts +4 -0
- package/dist/esm/validators/isEmpty.js +14 -0
- package/dist/esm/validators/isEthereumAddress.d.ts +1 -0
- package/dist/esm/validators/isEthereumAddress.js +10 -0
- package/dist/esm/validators/isFQDN.d.ts +9 -0
- package/dist/esm/validators/isFQDN.js +65 -0
- package/dist/esm/validators/isFloat.d.ts +9 -0
- package/dist/esm/validators/isFloat.js +26 -0
- package/dist/esm/validators/isFullWidth.d.ts +2 -0
- package/dist/esm/validators/isFullWidth.js +10 -0
- package/dist/esm/validators/isHSL.d.ts +1 -0
- package/dist/esm/validators/isHSL.js +15 -0
- package/dist/esm/validators/isHalfWidth.d.ts +2 -0
- package/dist/esm/validators/isHalfWidth.js +10 -0
- package/dist/esm/validators/isHash.d.ts +21 -0
- package/dist/esm/validators/isHash.js +31 -0
- package/dist/esm/validators/isHexColor.d.ts +4 -0
- package/dist/esm/validators/isHexColor.js +17 -0
- package/dist/esm/validators/isHexadecimal.d.ts +1 -0
- package/dist/esm/validators/isHexadecimal.js +10 -0
- package/dist/esm/validators/isIBAN.d.ts +6 -0
- package/dist/esm/validators/isIBAN.js +141 -0
- package/dist/esm/validators/isIMEI.d.ts +4 -0
- package/dist/esm/validators/isIMEI.js +42 -0
- package/dist/esm/validators/isIP.d.ts +5 -0
- package/dist/esm/validators/isIP.js +35 -0
- package/dist/esm/validators/isIPRange.d.ts +5 -0
- package/dist/esm/validators/isIPRange.js +40 -0
- package/dist/esm/validators/isISBN.d.ts +5 -0
- package/dist/esm/validators/isISBN.js +48 -0
- package/dist/esm/validators/isISIN.d.ts +1 -0
- package/dist/esm/validators/isISIN.js +52 -0
- package/dist/esm/validators/isISO15924.d.ts +2 -0
- package/dist/esm/validators/isISO15924.js +283 -0
- package/dist/esm/validators/isISO31661Alpha2.d.ts +5 -0
- package/dist/esm/validators/isISO31661Alpha2.js +273 -0
- package/dist/esm/validators/isISO31661Alpha3.d.ts +4 -0
- package/dist/esm/validators/isISO31661Alpha3.js +272 -0
- package/dist/esm/validators/isISO31661Numeric.d.ts +1 -0
- package/dist/esm/validators/isISO31661Numeric.js +260 -0
- package/dist/esm/validators/isISO4217.d.ts +2 -0
- package/dist/esm/validators/isISO4217.js +191 -0
- package/dist/esm/validators/isISO6346.d.ts +2 -0
- package/dist/esm/validators/isISO6346.js +39 -0
- package/dist/esm/validators/isISO6391.d.ts +1 -0
- package/dist/esm/validators/isISO6391.js +196 -0
- package/dist/esm/validators/isISO8601.d.ts +5 -0
- package/dist/esm/validators/isISO8601.js +39 -0
- package/dist/esm/validators/isISRC.d.ts +1 -0
- package/dist/esm/validators/isISRC.js +10 -0
- package/dist/esm/validators/isISSN.d.ts +5 -0
- package/dist/esm/validators/isISSN.js +24 -0
- package/dist/esm/validators/isIdentityCard.d.ts +24 -0
- package/dist/esm/validators/isIdentityCard.js +439 -0
- package/dist/esm/validators/isIn.d.ts +4 -0
- package/dist/esm/validators/isIn.js +33 -0
- package/dist/esm/validators/isInt.d.ts +8 -0
- package/dist/esm/validators/isInt.js +26 -0
- package/dist/esm/validators/isJSON.d.ts +5 -0
- package/dist/esm/validators/isJSON.js +7 -0
- package/dist/esm/validators/isJWT.d.ts +1 -0
- package/dist/esm/validators/isJWT.js +20 -0
- package/dist/esm/validators/isLatLong.d.ts +4 -0
- package/dist/esm/validators/isLatLong.js +26 -0
- package/dist/esm/validators/isLength.d.ts +7 -0
- package/dist/esm/validators/isLength.js +25 -0
- package/dist/esm/validators/isLicensePlate.d.ts +21 -0
- package/dist/esm/validators/isLicensePlate.js +40 -0
- package/dist/esm/validators/isLocale.d.ts +1 -0
- package/dist/esm/validators/isLocale.js +26 -0
- package/dist/esm/validators/isLowercase.d.ts +1 -0
- package/dist/esm/validators/isLowercase.js +9 -0
- package/dist/esm/validators/isLuhnNumber.d.ts +1 -0
- package/dist/esm/validators/isLuhnNumber.js +34 -0
- package/dist/esm/validators/isMACAddress.d.ts +6 -0
- package/dist/esm/validators/isMACAddress.js +31 -0
- package/dist/esm/validators/isMD5.d.ts +1 -0
- package/dist/esm/validators/isMD5.js +10 -0
- package/dist/esm/validators/isMagnetURI.d.ts +1 -0
- package/dist/esm/validators/isMagnetURI.js +13 -0
- package/dist/esm/validators/isMailtoURI.d.ts +4 -0
- package/dist/esm/validators/isMailtoURI.js +50 -0
- package/dist/esm/validators/isMimeType.d.ts +1 -0
- package/dist/esm/validators/isMimeType.js +12 -0
- package/dist/esm/validators/isMobilePhone.d.ts +171 -0
- package/dist/esm/validators/isMobilePhone.js +208 -0
- package/dist/esm/validators/isMongoId.d.ts +1 -0
- package/dist/esm/validators/isMongoId.js +8 -0
- package/dist/esm/validators/isMultibyte.d.ts +1 -0
- package/dist/esm/validators/isMultibyte.js +10 -0
- package/dist/esm/validators/isNotEmpty.d.ts +1 -0
- package/dist/esm/validators/isNotEmpty.js +7 -0
- package/dist/esm/validators/isNumeric.d.ts +5 -0
- package/dist/esm/validators/isNumeric.js +31 -0
- package/dist/esm/validators/isOctal.d.ts +1 -0
- package/dist/esm/validators/isOctal.js +10 -0
- package/dist/esm/validators/isPassportNumber.d.ts +69 -0
- package/dist/esm/validators/isPassportNumber.js +80 -0
- package/dist/esm/validators/isPort.d.ts +1 -0
- package/dist/esm/validators/isPort.js +4 -0
- package/dist/esm/validators/isPostalCode.d.ts +79 -0
- package/dist/esm/validators/isPostalCode.js +104 -0
- package/dist/esm/validators/isRFC3339.d.ts +1 -0
- package/dist/esm/validators/isRFC3339.js +25 -0
- package/dist/esm/validators/isRequired.d.ts +1 -0
- package/dist/esm/validators/isRequired.js +3 -0
- package/dist/esm/validators/isRgbColor.d.ts +5 -0
- package/dist/esm/validators/isRgbColor.js +35 -0
- package/dist/esm/validators/isSemVer.d.ts +1 -0
- package/dist/esm/validators/isSemVer.js +12 -0
- package/dist/esm/validators/isSlug.d.ts +1 -0
- package/dist/esm/validators/isSlug.js +10 -0
- package/dist/esm/validators/isStrongPassword.d.ts +8 -0
- package/dist/esm/validators/isStrongPassword.js +22 -0
- package/dist/esm/validators/isSurrogatePair.d.ts +1 -0
- package/dist/esm/validators/isSurrogatePair.js +10 -0
- package/dist/esm/validators/isTime.d.ts +5 -0
- package/dist/esm/validators/isTime.js +34 -0
- package/dist/esm/validators/isULID.d.ts +1 -0
- package/dist/esm/validators/isULID.js +9 -0
- package/dist/esm/validators/isURL.d.ts +22 -0
- package/dist/esm/validators/isURL.js +212 -0
- package/dist/esm/validators/isUUID.d.ts +5 -0
- package/dist/esm/validators/isUUID.js +28 -0
- package/dist/esm/validators/isUppercase.d.ts +1 -0
- package/dist/esm/validators/isUppercase.js +9 -0
- package/dist/esm/validators/isVAT.d.ts +75 -0
- package/dist/esm/validators/isVAT.js +130 -0
- package/dist/esm/validators/isVariableWidth.d.ts +1 -0
- package/dist/esm/validators/isVariableWidth.js +11 -0
- package/dist/esm/validators/isWhitelisted.d.ts +4 -0
- package/dist/esm/validators/isWhitelisted.js +20 -0
- package/dist/esm/validators/matches.d.ts +5 -0
- package/dist/esm/validators/matches.js +26 -0
- package/package.json +110 -4
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import { toString } from '../convert/string.js';
|
|
2
|
+
import { isCalendarDate } from '../convert/date.js';
|
|
3
|
+
import { ValidationConfigError } from '../helpers/errors.js';
|
|
4
|
+
import { hasOwn } from '../helpers/hasOwn.js';
|
|
5
|
+
import { isInt } from './isInt.js';
|
|
6
|
+
import { configText, optionsOf } from '../helpers/config.js';
|
|
7
|
+
const validators = {
|
|
8
|
+
PL: (str) => {
|
|
9
|
+
const weightOfDigits = {
|
|
10
|
+
1: 1,
|
|
11
|
+
2: 3,
|
|
12
|
+
3: 7,
|
|
13
|
+
4: 9,
|
|
14
|
+
5: 1,
|
|
15
|
+
6: 3,
|
|
16
|
+
7: 7,
|
|
17
|
+
8: 9,
|
|
18
|
+
9: 1,
|
|
19
|
+
10: 3,
|
|
20
|
+
11: 0,
|
|
21
|
+
};
|
|
22
|
+
if (str != null && str.length === 11 && isInt(str, { allow_leading_zeroes: true })) {
|
|
23
|
+
const digits = str.split('').slice(0, -1);
|
|
24
|
+
const sum = digits.reduce((acc, digit, index) => acc + Number(digit) * weightOfDigits[index + 1], 0);
|
|
25
|
+
const modulo = sum % 10;
|
|
26
|
+
const lastDigit = Number(str.charAt(str.length - 1));
|
|
27
|
+
if ((modulo === 0 && lastDigit === 0) || lastDigit === 10 - modulo) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
},
|
|
33
|
+
ES: (str) => {
|
|
34
|
+
const DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
|
|
35
|
+
const charsValue = {
|
|
36
|
+
X: 0,
|
|
37
|
+
Y: 1,
|
|
38
|
+
Z: 2,
|
|
39
|
+
};
|
|
40
|
+
const controlDigits = [
|
|
41
|
+
'T',
|
|
42
|
+
'R',
|
|
43
|
+
'W',
|
|
44
|
+
'A',
|
|
45
|
+
'G',
|
|
46
|
+
'M',
|
|
47
|
+
'Y',
|
|
48
|
+
'F',
|
|
49
|
+
'P',
|
|
50
|
+
'D',
|
|
51
|
+
'X',
|
|
52
|
+
'B',
|
|
53
|
+
'N',
|
|
54
|
+
'J',
|
|
55
|
+
'Z',
|
|
56
|
+
'S',
|
|
57
|
+
'Q',
|
|
58
|
+
'V',
|
|
59
|
+
'H',
|
|
60
|
+
'L',
|
|
61
|
+
'C',
|
|
62
|
+
'K',
|
|
63
|
+
'E',
|
|
64
|
+
];
|
|
65
|
+
const sanitized = str.trim().toUpperCase();
|
|
66
|
+
if (!DNI.test(sanitized)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, (char) => charsValue[char]);
|
|
70
|
+
return sanitized.endsWith(controlDigits[number % 23]);
|
|
71
|
+
},
|
|
72
|
+
FI: (str) => {
|
|
73
|
+
if (str.length !== 11) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
if (!str.match(/^\d{6}[-A+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';
|
|
80
|
+
const idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);
|
|
81
|
+
const remainder = idAsNumber % 31;
|
|
82
|
+
const checkDigit = checkDigits[remainder];
|
|
83
|
+
return checkDigit === str.slice(10, 11);
|
|
84
|
+
},
|
|
85
|
+
IN: (str) => {
|
|
86
|
+
const DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/;
|
|
87
|
+
const verhoeffMultiplication = [
|
|
88
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
89
|
+
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
|
|
90
|
+
[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
|
|
91
|
+
[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
|
|
92
|
+
[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
|
|
93
|
+
[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
|
|
94
|
+
[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
|
|
95
|
+
[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
|
|
96
|
+
[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
|
|
97
|
+
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
|
|
98
|
+
];
|
|
99
|
+
const verhoeffPermutation = [
|
|
100
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
101
|
+
[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
|
|
102
|
+
[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
|
|
103
|
+
[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
|
|
104
|
+
[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
|
|
105
|
+
[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
|
|
106
|
+
[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
|
|
107
|
+
[7, 0, 4, 6, 9, 1, 3, 2, 5, 8],
|
|
108
|
+
];
|
|
109
|
+
const sanitized = str.trim();
|
|
110
|
+
if (!DNI.test(sanitized)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
let checksum = 0;
|
|
114
|
+
const invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse();
|
|
115
|
+
invertedArray.forEach((val, i) => {
|
|
116
|
+
checksum = verhoeffMultiplication[checksum][verhoeffPermutation[i % 8][val]];
|
|
117
|
+
});
|
|
118
|
+
return checksum === 0;
|
|
119
|
+
},
|
|
120
|
+
IR: (str) => {
|
|
121
|
+
if (!str.match(/^\d{10}$/))
|
|
122
|
+
return false;
|
|
123
|
+
str = `0000${str}`.slice(str.length - 6);
|
|
124
|
+
if (parseInt(str.slice(3, 9), 10) === 0)
|
|
125
|
+
return false;
|
|
126
|
+
const lastNumber = parseInt(str.slice(9, 10), 10);
|
|
127
|
+
let sum = 0;
|
|
128
|
+
for (let i = 0; i < 9; i++) {
|
|
129
|
+
sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);
|
|
130
|
+
}
|
|
131
|
+
sum %= 11;
|
|
132
|
+
return (sum < 2 && lastNumber === sum) || (sum >= 2 && lastNumber === 11 - sum);
|
|
133
|
+
},
|
|
134
|
+
IT: function IT(str) {
|
|
135
|
+
if (str.length !== 9)
|
|
136
|
+
return false;
|
|
137
|
+
if (str === 'CA00000AA')
|
|
138
|
+
return false;
|
|
139
|
+
return str.search(/C[A-Z]\d{5}[A-Z]{2}/is) > -1;
|
|
140
|
+
},
|
|
141
|
+
NO: (str) => {
|
|
142
|
+
const sanitized = str.trim();
|
|
143
|
+
if (isNaN(Number(sanitized)))
|
|
144
|
+
return false;
|
|
145
|
+
if (sanitized.length !== 11)
|
|
146
|
+
return false;
|
|
147
|
+
if (sanitized === '00000000000')
|
|
148
|
+
return false;
|
|
149
|
+
const f = sanitized.split('').map(Number);
|
|
150
|
+
const k1 = (11 -
|
|
151
|
+
((3 * f[0] +
|
|
152
|
+
7 * f[1] +
|
|
153
|
+
6 * f[2] +
|
|
154
|
+
1 * f[3] +
|
|
155
|
+
8 * f[4] +
|
|
156
|
+
9 * f[5] +
|
|
157
|
+
4 * f[6] +
|
|
158
|
+
5 * f[7] +
|
|
159
|
+
2 * f[8]) %
|
|
160
|
+
11)) %
|
|
161
|
+
11;
|
|
162
|
+
const k2 = (11 -
|
|
163
|
+
((5 * f[0] +
|
|
164
|
+
4 * f[1] +
|
|
165
|
+
3 * f[2] +
|
|
166
|
+
2 * f[3] +
|
|
167
|
+
7 * f[4] +
|
|
168
|
+
6 * f[5] +
|
|
169
|
+
5 * f[6] +
|
|
170
|
+
4 * f[7] +
|
|
171
|
+
3 * f[8] +
|
|
172
|
+
2 * k1) %
|
|
173
|
+
11)) %
|
|
174
|
+
11;
|
|
175
|
+
if (k1 !== f[9] || k2 !== f[10])
|
|
176
|
+
return false;
|
|
177
|
+
return true;
|
|
178
|
+
},
|
|
179
|
+
TH: (str) => {
|
|
180
|
+
if (!str.match(/^[1-8]\d{12}$/))
|
|
181
|
+
return false;
|
|
182
|
+
let sum = 0;
|
|
183
|
+
for (let i = 0; i < 12; i++) {
|
|
184
|
+
sum += parseInt(str[i], 10) * (13 - i);
|
|
185
|
+
}
|
|
186
|
+
return str[12] === ((11 - (sum % 11)) % 10).toString();
|
|
187
|
+
},
|
|
188
|
+
LK: (str) => {
|
|
189
|
+
const old_nic = /^[1-9]\d{8}[vx]$/i;
|
|
190
|
+
const new_nic = /^[1-9]\d{11}$/i;
|
|
191
|
+
if (str.length === 10 && old_nic.test(str))
|
|
192
|
+
return true;
|
|
193
|
+
if (str.length === 12 && new_nic.test(str))
|
|
194
|
+
return true;
|
|
195
|
+
return false;
|
|
196
|
+
},
|
|
197
|
+
'he-IL': (str) => {
|
|
198
|
+
const DNI = /^\d{9}$/;
|
|
199
|
+
const sanitized = str.trim();
|
|
200
|
+
if (!DNI.test(sanitized)) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
const id = sanitized;
|
|
204
|
+
let sum = 0, incNum;
|
|
205
|
+
for (let i = 0; i < id.length; i++) {
|
|
206
|
+
incNum = Number(id[i]) * ((i % 2) + 1);
|
|
207
|
+
sum += incNum > 9 ? incNum - 9 : incNum;
|
|
208
|
+
}
|
|
209
|
+
return sum % 10 === 0;
|
|
210
|
+
},
|
|
211
|
+
'ar-LY': (str) => {
|
|
212
|
+
const NIN = /^(1|2)\d{11}$/;
|
|
213
|
+
const sanitized = str.trim();
|
|
214
|
+
return NIN.test(sanitized);
|
|
215
|
+
},
|
|
216
|
+
'ar-TN': (str) => {
|
|
217
|
+
const DNI = /^\d{8}$/;
|
|
218
|
+
const sanitized = str.trim();
|
|
219
|
+
return DNI.test(sanitized);
|
|
220
|
+
},
|
|
221
|
+
'zh-CN': (str) => {
|
|
222
|
+
const provincesAndCities = [
|
|
223
|
+
'11',
|
|
224
|
+
'12',
|
|
225
|
+
'13',
|
|
226
|
+
'14',
|
|
227
|
+
'15',
|
|
228
|
+
'21',
|
|
229
|
+
'22',
|
|
230
|
+
'23',
|
|
231
|
+
'31',
|
|
232
|
+
'32',
|
|
233
|
+
'33',
|
|
234
|
+
'34',
|
|
235
|
+
'35',
|
|
236
|
+
'36',
|
|
237
|
+
'37',
|
|
238
|
+
'41',
|
|
239
|
+
'42',
|
|
240
|
+
'43',
|
|
241
|
+
'44',
|
|
242
|
+
'45',
|
|
243
|
+
'46',
|
|
244
|
+
'50',
|
|
245
|
+
'51',
|
|
246
|
+
'52',
|
|
247
|
+
'53',
|
|
248
|
+
'54',
|
|
249
|
+
'61',
|
|
250
|
+
'62',
|
|
251
|
+
'63',
|
|
252
|
+
'64',
|
|
253
|
+
'65',
|
|
254
|
+
'71',
|
|
255
|
+
'81',
|
|
256
|
+
'82',
|
|
257
|
+
'91',
|
|
258
|
+
];
|
|
259
|
+
const powers = [
|
|
260
|
+
'7',
|
|
261
|
+
'9',
|
|
262
|
+
'10',
|
|
263
|
+
'5',
|
|
264
|
+
'8',
|
|
265
|
+
'4',
|
|
266
|
+
'2',
|
|
267
|
+
'1',
|
|
268
|
+
'6',
|
|
269
|
+
'3',
|
|
270
|
+
'7',
|
|
271
|
+
'9',
|
|
272
|
+
'10',
|
|
273
|
+
'5',
|
|
274
|
+
'8',
|
|
275
|
+
'4',
|
|
276
|
+
'2',
|
|
277
|
+
];
|
|
278
|
+
const parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
|
279
|
+
const checkAddressCode = (addressCode) => provincesAndCities.includes(addressCode);
|
|
280
|
+
const checkBirthDayCode = (birDayCode) => {
|
|
281
|
+
const yyyy = parseInt(birDayCode.substring(0, 4), 10);
|
|
282
|
+
const mm = parseInt(birDayCode.substring(4, 6), 10);
|
|
283
|
+
const dd = parseInt(birDayCode.substring(6), 10);
|
|
284
|
+
if (!isCalendarDate(yyyy, mm, dd))
|
|
285
|
+
return false;
|
|
286
|
+
return new Date(yyyy, mm - 1, dd) <= new Date();
|
|
287
|
+
};
|
|
288
|
+
const getParityBit = (idCardNo) => {
|
|
289
|
+
const id17 = idCardNo.substring(0, 17);
|
|
290
|
+
let power = 0;
|
|
291
|
+
for (let i = 0; i < 17; i++) {
|
|
292
|
+
power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);
|
|
293
|
+
}
|
|
294
|
+
const mod = power % 11;
|
|
295
|
+
return parityBit[mod];
|
|
296
|
+
};
|
|
297
|
+
const checkParityBit = (idCardNo) => getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();
|
|
298
|
+
const check15IdCardNo = (idCardNo) => {
|
|
299
|
+
let check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
|
|
300
|
+
if (!check)
|
|
301
|
+
return false;
|
|
302
|
+
const addressCode = idCardNo.substring(0, 2);
|
|
303
|
+
check = checkAddressCode(addressCode);
|
|
304
|
+
if (!check)
|
|
305
|
+
return false;
|
|
306
|
+
const birDayCode = `19${idCardNo.substring(6, 12)}`;
|
|
307
|
+
check = checkBirthDayCode(birDayCode);
|
|
308
|
+
if (!check)
|
|
309
|
+
return false;
|
|
310
|
+
return true;
|
|
311
|
+
};
|
|
312
|
+
const check18IdCardNo = (idCardNo) => {
|
|
313
|
+
let check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
|
|
314
|
+
if (!check)
|
|
315
|
+
return false;
|
|
316
|
+
const addressCode = idCardNo.substring(0, 2);
|
|
317
|
+
check = checkAddressCode(addressCode);
|
|
318
|
+
if (!check)
|
|
319
|
+
return false;
|
|
320
|
+
const birDayCode = idCardNo.substring(6, 14);
|
|
321
|
+
check = checkBirthDayCode(birDayCode);
|
|
322
|
+
if (!check)
|
|
323
|
+
return false;
|
|
324
|
+
return checkParityBit(idCardNo);
|
|
325
|
+
};
|
|
326
|
+
const checkIdCardNo = (idCardNo) => {
|
|
327
|
+
const check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
|
|
328
|
+
if (!check)
|
|
329
|
+
return false;
|
|
330
|
+
if (idCardNo.length === 15) {
|
|
331
|
+
return check15IdCardNo(idCardNo);
|
|
332
|
+
}
|
|
333
|
+
return check18IdCardNo(idCardNo);
|
|
334
|
+
};
|
|
335
|
+
return checkIdCardNo(str);
|
|
336
|
+
},
|
|
337
|
+
'zh-HK': (str) => {
|
|
338
|
+
str = str.trim();
|
|
339
|
+
const regexHKID = /^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/;
|
|
340
|
+
const regexIsDigit = /^[0-9]$/;
|
|
341
|
+
str = str.toUpperCase();
|
|
342
|
+
if (!regexHKID.test(str))
|
|
343
|
+
return false;
|
|
344
|
+
str = str.replace(/\[|\]|\(|\)/g, '');
|
|
345
|
+
if (str.length === 8)
|
|
346
|
+
str = `3${str}`;
|
|
347
|
+
let checkSumVal = 0;
|
|
348
|
+
for (let i = 0; i <= 7; i++) {
|
|
349
|
+
let convertedChar;
|
|
350
|
+
if (!regexIsDigit.test(str[i]))
|
|
351
|
+
convertedChar = (str[i].charCodeAt(0) - 55) % 11;
|
|
352
|
+
else
|
|
353
|
+
convertedChar = str[i];
|
|
354
|
+
checkSumVal += convertedChar * (9 - i);
|
|
355
|
+
}
|
|
356
|
+
checkSumVal %= 11;
|
|
357
|
+
let checkSumConverted;
|
|
358
|
+
if (checkSumVal === 0)
|
|
359
|
+
checkSumConverted = '0';
|
|
360
|
+
else if (checkSumVal === 1)
|
|
361
|
+
checkSumConverted = 'A';
|
|
362
|
+
else
|
|
363
|
+
checkSumConverted = String(11 - checkSumVal);
|
|
364
|
+
if (checkSumConverted === str[str.length - 1])
|
|
365
|
+
return true;
|
|
366
|
+
return false;
|
|
367
|
+
},
|
|
368
|
+
'zh-TW': (str) => {
|
|
369
|
+
const ALPHABET_CODES = {
|
|
370
|
+
A: 10,
|
|
371
|
+
B: 11,
|
|
372
|
+
C: 12,
|
|
373
|
+
D: 13,
|
|
374
|
+
E: 14,
|
|
375
|
+
F: 15,
|
|
376
|
+
G: 16,
|
|
377
|
+
H: 17,
|
|
378
|
+
I: 34,
|
|
379
|
+
J: 18,
|
|
380
|
+
K: 19,
|
|
381
|
+
L: 20,
|
|
382
|
+
M: 21,
|
|
383
|
+
N: 22,
|
|
384
|
+
O: 35,
|
|
385
|
+
P: 23,
|
|
386
|
+
Q: 24,
|
|
387
|
+
R: 25,
|
|
388
|
+
S: 26,
|
|
389
|
+
T: 27,
|
|
390
|
+
U: 28,
|
|
391
|
+
V: 29,
|
|
392
|
+
W: 32,
|
|
393
|
+
X: 30,
|
|
394
|
+
Y: 31,
|
|
395
|
+
Z: 33,
|
|
396
|
+
};
|
|
397
|
+
const sanitized = str.trim().toUpperCase();
|
|
398
|
+
if (!/^[A-Z][0-9]{9}$/.test(sanitized))
|
|
399
|
+
return false;
|
|
400
|
+
return Array.from(sanitized).reduce((sum, char, index) => {
|
|
401
|
+
if (index === 0) {
|
|
402
|
+
const code = ALPHABET_CODES[char];
|
|
403
|
+
return (code % 10) * 9 + Math.floor(code / 10);
|
|
404
|
+
}
|
|
405
|
+
if (index === 9) {
|
|
406
|
+
return (10 - (sum % 10) - Number(char)) % 10 === 0;
|
|
407
|
+
}
|
|
408
|
+
return sum + Number(char) * (9 - index);
|
|
409
|
+
}, 0);
|
|
410
|
+
},
|
|
411
|
+
PK: (str) => {
|
|
412
|
+
const CNIC = /^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/;
|
|
413
|
+
const sanitized = str.trim();
|
|
414
|
+
return CNIC.test(sanitized);
|
|
415
|
+
},
|
|
416
|
+
};
|
|
417
|
+
export function isIdentityCard(value, options) {
|
|
418
|
+
const { locale = 'any' } = optionsOf(options);
|
|
419
|
+
const stringResult = toString(value);
|
|
420
|
+
if (!stringResult.ok)
|
|
421
|
+
return false;
|
|
422
|
+
const s = stringResult.value;
|
|
423
|
+
const str = s;
|
|
424
|
+
if (hasOwn(validators, locale)) {
|
|
425
|
+
return validators[locale](str);
|
|
426
|
+
}
|
|
427
|
+
if (locale === 'any') {
|
|
428
|
+
for (const key in validators) {
|
|
429
|
+
if (Object.prototype.hasOwnProperty.call(validators, key)) {
|
|
430
|
+
const validator = validators[key];
|
|
431
|
+
if (validator(str)) {
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
438
|
+
throw new ValidationConfigError(`Invalid locale '${configText(locale)}'`);
|
|
439
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { toString } from '../convert/string.js';
|
|
2
|
+
import { toEnum } from '../convert/enum.js';
|
|
3
|
+
import { configText, optionsOf } from '../helpers/config.js';
|
|
4
|
+
import { ValidationConfigError } from '../helpers/errors.js';
|
|
5
|
+
export function isIn(value, options) {
|
|
6
|
+
const { values } = optionsOf(options);
|
|
7
|
+
const stringResult = toString(value);
|
|
8
|
+
if (!stringResult.ok)
|
|
9
|
+
return false;
|
|
10
|
+
const s = stringResult.value;
|
|
11
|
+
const str = s;
|
|
12
|
+
let i;
|
|
13
|
+
if (Object.prototype.toString.call(values) === '[object Array]') {
|
|
14
|
+
const array = [];
|
|
15
|
+
for (i in values) {
|
|
16
|
+
if ({}.hasOwnProperty.call(values, i)) {
|
|
17
|
+
const item = toString(values[i]);
|
|
18
|
+
if (item.ok)
|
|
19
|
+
array[i] = item.value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return toEnum(str, array).ok;
|
|
23
|
+
}
|
|
24
|
+
if (values !== null && typeof values === 'object') {
|
|
25
|
+
return Object.prototype.hasOwnProperty.call(values, str);
|
|
26
|
+
}
|
|
27
|
+
if (values === undefined || values === null)
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof values === 'string') {
|
|
30
|
+
return values.indexOf(str) >= 0;
|
|
31
|
+
}
|
|
32
|
+
throw new ValidationConfigError(`values must be an array, an object or a string, got ${configText(values)}`);
|
|
33
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toInteger } from '../convert/integer.js';
|
|
2
|
+
import { ConvertMessages } from '../convert/result.js';
|
|
3
|
+
import { toString } from '../convert/string.js';
|
|
4
|
+
export function isInt(value, options) {
|
|
5
|
+
const opts = options || {};
|
|
6
|
+
const r = toInteger(value, {
|
|
7
|
+
syntax: 'validator',
|
|
8
|
+
allowLeadingZeroes: opts.allow_leading_zeroes,
|
|
9
|
+
});
|
|
10
|
+
if (!r.ok && r.error !== ConvertMessages.INTEGER_OVERFLOW)
|
|
11
|
+
return false;
|
|
12
|
+
const text = typeof value === 'number' ? undefined : toString(value).value;
|
|
13
|
+
const n = r.ok ? r.value : Number(text);
|
|
14
|
+
const big = text !== undefined && !Number.isSafeInteger(n) ? BigInt(text) : undefined;
|
|
15
|
+
const compare = (bound) => {
|
|
16
|
+
if (big !== undefined && Number.isInteger(bound)) {
|
|
17
|
+
const b = BigInt(bound);
|
|
18
|
+
return big < b ? -1 : big > b ? 1 : 0;
|
|
19
|
+
}
|
|
20
|
+
return n < bound ? -1 : n > bound ? 1 : 0;
|
|
21
|
+
};
|
|
22
|
+
return ((opts.min == null || compare(opts.min) >= 0) &&
|
|
23
|
+
(opts.max == null || compare(opts.max) <= 0) &&
|
|
24
|
+
(opts.lt == null || compare(opts.lt) < 0) &&
|
|
25
|
+
(opts.gt == null || compare(opts.gt) > 0));
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isJWT(value: unknown): boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { toString } from '../convert/string.js';
|
|
2
|
+
import { isBase64 } from './isBase64.js';
|
|
3
|
+
export function isJWT(value) {
|
|
4
|
+
const stringResult = toString(value);
|
|
5
|
+
if (!stringResult.ok)
|
|
6
|
+
return false;
|
|
7
|
+
const s = stringResult.value;
|
|
8
|
+
const str = s;
|
|
9
|
+
const dotSplit = str.split('.');
|
|
10
|
+
const len = dotSplit.length;
|
|
11
|
+
if (len !== 3) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const [header, payload, signature] = dotSplit;
|
|
15
|
+
if (header === '' || payload === '')
|
|
16
|
+
return false;
|
|
17
|
+
return (isBase64(header, { urlSafe: true }) &&
|
|
18
|
+
isBase64(payload, { urlSafe: true }) &&
|
|
19
|
+
isBase64(signature, { urlSafe: true }));
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toString } from '../convert/string.js';
|
|
2
|
+
import { merge } from '../helpers/merge.js';
|
|
3
|
+
const lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/;
|
|
4
|
+
const long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;
|
|
5
|
+
const latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i;
|
|
6
|
+
const longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i;
|
|
7
|
+
const defaultLatLongOptions = {
|
|
8
|
+
checkDMS: false,
|
|
9
|
+
};
|
|
10
|
+
export function isLatLong(value, options) {
|
|
11
|
+
const stringResult = toString(value);
|
|
12
|
+
if (!stringResult.ok)
|
|
13
|
+
return false;
|
|
14
|
+
const s = stringResult.value;
|
|
15
|
+
options = merge(options, defaultLatLongOptions);
|
|
16
|
+
const pair = s.split(',');
|
|
17
|
+
if (pair.length !== 2)
|
|
18
|
+
return false;
|
|
19
|
+
if ((pair[0].startsWith('(') && !pair[1].endsWith(')')) ||
|
|
20
|
+
(pair[1].endsWith(')') && !pair[0].startsWith('(')))
|
|
21
|
+
return false;
|
|
22
|
+
if (options.checkDMS) {
|
|
23
|
+
return latDMS.test(pair[0]) && longDMS.test(pair[1]);
|
|
24
|
+
}
|
|
25
|
+
return lat.test(pair[0]) && long.test(pair[1]);
|
|
26
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { toString } from '../convert/string.js';
|
|
2
|
+
import { boundsOf } from '../helpers/config.js';
|
|
3
|
+
function countCodePointsWithoutPresentationSelectors(s) {
|
|
4
|
+
const presentationSequences = s.match(/[^\uFE0F\uFE0E][\uFE0F\uFE0E]/g) || [];
|
|
5
|
+
const surrogatePairs = s.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
|
|
6
|
+
return s.length - presentationSequences.length - surrogatePairs.length;
|
|
7
|
+
}
|
|
8
|
+
let segmenter;
|
|
9
|
+
function countGraphemes(s) {
|
|
10
|
+
segmenter ?? (segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' }));
|
|
11
|
+
return Array.from(segmenter.segment(s)).length;
|
|
12
|
+
}
|
|
13
|
+
export function isLength(value, options) {
|
|
14
|
+
const stringResult = toString(value);
|
|
15
|
+
if (!stringResult.ok)
|
|
16
|
+
return false;
|
|
17
|
+
const s = stringResult.value;
|
|
18
|
+
const { options: opts, min, max } = boundsOf(options);
|
|
19
|
+
const len = opts.graphemes ? countGraphemes(s) : countCodePointsWithoutPresentationSelectors(s);
|
|
20
|
+
const isInsideRange = len >= min && (typeof max === 'undefined' || len <= max);
|
|
21
|
+
if (isInsideRange && Array.isArray(opts.discreteLengths)) {
|
|
22
|
+
return opts.discreteLengths.some((discreteLen) => discreteLen === len);
|
|
23
|
+
}
|
|
24
|
+
return isInsideRange;
|
|
25
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare const validators: {
|
|
2
|
+
'cs-CZ': (str: any) => boolean;
|
|
3
|
+
'de-DE': (str: any) => boolean;
|
|
4
|
+
'de-LI': (str: any) => boolean;
|
|
5
|
+
'en-IN': (str: any) => boolean;
|
|
6
|
+
'en-SG': (str: any) => boolean;
|
|
7
|
+
'es-AR': (str: any) => boolean;
|
|
8
|
+
'fi-FI': (str: any) => boolean;
|
|
9
|
+
'hu-HU': (str: any) => boolean;
|
|
10
|
+
'pt-BR': (str: any) => boolean;
|
|
11
|
+
'pt-PT': (str: any) => boolean;
|
|
12
|
+
'sq-AL': (str: any) => boolean;
|
|
13
|
+
'sv-SE': (str: any) => boolean;
|
|
14
|
+
'en-PK': (str: any) => boolean;
|
|
15
|
+
};
|
|
16
|
+
export type LicensePlateLocale = keyof typeof validators | 'any' | (string & {});
|
|
17
|
+
export interface IsLicensePlateOptions {
|
|
18
|
+
locale: LicensePlateLocale;
|
|
19
|
+
}
|
|
20
|
+
export declare function isLicensePlate(value: unknown, options: IsLicensePlateOptions): boolean;
|
|
21
|
+
export {};
|