PATH:
opt
/
bitninja-dispatcher
/
node_modules
/
validator
/
lib
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = isISIN; var _assertString = _interopRequireDefault(require("./util/assertString")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: // https://www.isin.org/isin-format/. it is a little bit // odd in that it works with digits, not numbers. in order // to make only one pass through the ISIN characters, the // each alpha character is handled as 2 characters within // the loop. function isISIN(str) { (0, _assertString.default)(str); if (!isin.test(str)) { return false; } var double = true; var sum = 0; // convert values for (var i = str.length - 2; i >= 0; i--) { if (str[i] >= 'A' && str[i] <= 'Z') { var value = str[i].charCodeAt(0) - 55; var lo = value % 10; var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order // and high order digits separately. for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { var digit = _arr[_i]; if (double) { if (digit >= 5) { sum += 1 + (digit - 5) * 2; } else { sum += digit * 2; } } else { sum += digit; } double = !double; } } else { var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); if (double) { if (_digit >= 5) { sum += 1 + (_digit - 5) * 2; } else { sum += _digit * 2; } } else { sum += _digit; } double = !double; } } var check = Math.trunc((sum + 9) / 10) * 10 - sum; return +str[str.length - 1] === check; } module.exports = exports.default; module.exports.default = exports.default;
[-] isISO31661Alpha3.js
[edit]
[-] isBtcAddress.js
[edit]
[-] isBoolean.js
[edit]
[-] isHexColor.js
[edit]
[-] equals.js
[edit]
[-] isUppercase.js
[edit]
[-] isLocale.js
[edit]
[-] toInt.js
[edit]
[-] toDate.js
[edit]
[-] isIn.js
[edit]
[-] isDivisibleBy.js
[edit]
[-] isEthereumAddress.js
[edit]
[-] isMagnetURI.js
[edit]
[-] toBoolean.js
[edit]
[-] isHexadecimal.js
[edit]
[-] isVAT.js
[edit]
[-] isHSL.js
[edit]
[+]
..
[-] isMobilePhone.js
[edit]
[-] isMD5.js
[edit]
[-] stripLow.js
[edit]
[-] contains.js
[edit]
[-] isMimeType.js
[edit]
[-] isIdentityCard.js
[edit]
[-] blacklist.js
[edit]
[-] isJSON.js
[edit]
[-] isHash.js
[edit]
[-] isPassportNumber.js
[edit]
[-] isURL.js
[edit]
[-] isISO31661Alpha2.js
[edit]
[-] toFloat.js
[edit]
[-] isNumeric.js
[edit]
[-] isVariableWidth.js
[edit]
[-] isUUID.js
[edit]
[-] isBIC.js
[edit]
[-] isDate.js
[edit]
[-] isIPRange.js
[edit]
[-] isStrongPassword.js
[edit]
[-] unescape.js
[edit]
[-] isISRC.js
[edit]
[-] isSemVer.js
[edit]
[-] isInt.js
[edit]
[-] isEAN.js
[edit]
[-] alpha.js
[edit]
[-] isISSN.js
[edit]
[-] rtrim.js
[edit]
[-] isPostalCode.js
[edit]
[-] isSurrogatePair.js
[edit]
[-] isMongoId.js
[edit]
[-] isBase58.js
[edit]
[-] isCreditCard.js
[edit]
[-] isIMEI.js
[edit]
[-] isFullWidth.js
[edit]
[-] isISO8601.js
[edit]
[-] isBase64.js
[edit]
[-] isHalfWidth.js
[edit]
[-] isIBAN.js
[edit]
[-] isByteLength.js
[edit]
[-] isDataURI.js
[edit]
[-] isAfter.js
[edit]
[-] isISIN.js
[edit]
[-] normalizeEmail.js
[edit]
[-] isAlpha.js
[edit]
[-] isBefore.js
[edit]
[+]
util
[-] isCurrency.js
[edit]
[-] isRFC3339.js
[edit]
[-] isJWT.js
[edit]
[-] isWhitelisted.js
[edit]
[-] isMACAddress.js
[edit]
[-] isISO4217.js
[edit]
[-] isOctal.js
[edit]
[-] ltrim.js
[edit]
[-] isLength.js
[edit]
[-] whitelist.js
[edit]
[-] isDecimal.js
[edit]
[-] isRgbColor.js
[edit]
[-] isLatLong.js
[edit]
[-] isPort.js
[edit]
[-] isMultibyte.js
[edit]
[-] matches.js
[edit]
[-] isTaxID.js
[edit]
[-] isBase32.js
[edit]
[-] trim.js
[edit]
[-] isAlphanumeric.js
[edit]
[-] isAscii.js
[edit]
[-] isSlug.js
[edit]
[-] isEmpty.js
[edit]
[-] escape.js
[edit]
[-] isEmail.js
[edit]
[-] isLowercase.js
[edit]
[-] isFloat.js
[edit]
[-] isISBN.js
[edit]
[-] isIP.js
[edit]
[-] isFQDN.js
[edit]
[-] isLicensePlate.js
[edit]