123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563 |
- "use strict";
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = isTaxID;
- var _assertString = _interopRequireDefault(require("./util/assertString"));
- var algorithms = _interopRequireWildcard(require("./util/algorithms"));
- var _isDate = _interopRequireDefault(require("./isDate"));
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
- function bgBgCheck(tin) {
-
- var century_year = tin.slice(0, 2);
- var month = parseInt(tin.slice(2, 4), 10);
- if (month > 40) {
- month -= 40;
- century_year = "20".concat(century_year);
- } else if (month > 20) {
- month -= 20;
- century_year = "18".concat(century_year);
- } else {
- century_year = "19".concat(century_year);
- }
- if (month < 10) {
- month = "0".concat(month);
- }
- var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];
- var checksum = 0;
- for (var i = 0; i < multip_lookup.length; i++) {
- checksum += digits[i] * multip_lookup[i];
- }
- checksum = checksum % 11 === 10 ? 0 : checksum % 11;
- return checksum === digits[9];
- }
- function isCanadianSIN(input) {
- var digitsArray = input.split('');
- var even = digitsArray.filter(function (_, idx) {
- return idx % 2;
- }).map(function (i) {
- return Number(i) * 2;
- }).join('').split('');
- var total = digitsArray.filter(function (_, idx) {
- return !(idx % 2);
- }).concat(even).map(function (i) {
- return Number(i);
- }).reduce(function (acc, cur) {
- return acc + cur;
- });
- return total % 10 === 0;
- }
- function csCzCheck(tin) {
- tin = tin.replace(/\W/, '');
- var full_year = parseInt(tin.slice(0, 2), 10);
- if (tin.length === 10) {
- if (full_year < 54) {
- full_year = "20".concat(full_year);
- } else {
- full_year = "19".concat(full_year);
- }
- } else {
- if (tin.slice(6) === '000') {
- return false;
- }
- if (full_year < 54) {
- full_year = "19".concat(full_year);
- } else {
- return false;
- }
- }
- if (full_year.length === 3) {
- full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');
- }
- var month = parseInt(tin.slice(2, 4), 10);
- if (month > 50) {
- month -= 50;
- }
- if (month > 20) {
-
- if (parseInt(full_year, 10) < 2004) {
- return false;
- }
- month -= 20;
- }
- if (month < 10) {
- month = "0".concat(month);
- }
- var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- if (tin.length === 10) {
- if (parseInt(tin, 10) % 11 !== 0) {
-
-
- var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;
- if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {
- if (parseInt(tin.slice(9), 10) !== 0) {
- return false;
- }
- } else {
- return false;
- }
- }
- }
- return true;
- }
- function deAtCheck(tin) {
- return algorithms.luhnCheck(tin);
- }
- function deDeCheck(tin) {
-
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var occurences = [];
- for (var i = 0; i < digits.length - 1; i++) {
- occurences.push('');
- for (var j = 0; j < digits.length - 1; j++) {
- if (digits[i] === digits[j]) {
- occurences[i] += j;
- }
- }
- }
- occurences = occurences.filter(function (a) {
- return a.length > 1;
- });
- if (occurences.length !== 2 && occurences.length !== 3) {
- return false;
- }
- if (occurences[0].length === 3) {
- var trip_locations = occurences[0].split('').map(function (a) {
- return parseInt(a, 10);
- });
- var recurrent = 0;
- for (var _i = 0; _i < trip_locations.length - 1; _i++) {
- if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {
- recurrent += 1;
- }
- }
- if (recurrent === 2) {
- return false;
- }
- }
- return algorithms.iso7064Check(tin);
- }
- function dkDkCheck(tin) {
- tin = tin.replace(/\W/, '');
- var year = parseInt(tin.slice(4, 6), 10);
- var century_digit = tin.slice(6, 7);
- switch (century_digit) {
- case '0':
- case '1':
- case '2':
- case '3':
- year = "19".concat(year);
- break;
- case '4':
- case '9':
- if (year < 37) {
- year = "20".concat(year);
- } else {
- year = "19".concat(year);
- }
- break;
- default:
- if (year < 37) {
- year = "20".concat(year);
- } else if (year > 58) {
- year = "18".concat(year);
- } else {
- return false;
- }
- break;
- }
- if (year.length === 3) {
- year = [year.slice(0, 2), '0', year.slice(2)].join('');
- }
- var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var checksum = 0;
- var weight = 4;
- for (var i = 0; i < 9; i++) {
- checksum += digits[i] * weight;
- weight -= 1;
- if (weight === 1) {
- weight = 7;
- }
- }
- checksum %= 11;
- if (checksum === 1) {
- return false;
- }
- return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;
- }
- function elCyCheck(tin) {
-
- var digits = tin.slice(0, 8).split('').map(function (a) {
- return parseInt(a, 10);
- });
- var checksum = 0;
- for (var i = 1; i < digits.length; i += 2) {
- checksum += digits[i];
- }
- for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {
- if (digits[_i2] < 2) {
- checksum += 1 - digits[_i2];
- } else {
- checksum += 2 * (digits[_i2] - 2) + 5;
- if (digits[_i2] > 4) {
- checksum += 2;
- }
- }
- }
- return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);
- }
- function elGrCheck(tin) {
-
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var checksum = 0;
- for (var i = 0; i < 8; i++) {
- checksum += digits[i] * Math.pow(2, 8 - i);
- }
- return checksum % 11 % 10 === digits[8];
- }
- function enIeCheck(tin) {
- var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
- return parseInt(a, 10);
- }), 8);
- if (tin.length === 9 && tin[8] !== 'W') {
- checksum += (tin[8].charCodeAt(0) - 64) * 9;
- }
- checksum %= 23;
- if (checksum === 0) {
- return tin[7].toUpperCase() === 'W';
- }
- return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);
- }
- var enUsCampusPrefix = {
- andover: ['10', '12'],
- atlanta: ['60', '67'],
- austin: ['50', '53'],
- brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],
- cincinnati: ['30', '32', '35', '36', '37', '38', '61'],
- fresno: ['15', '24'],
- internet: ['20', '26', '27', '45', '46', '47'],
- kansas: ['40', '44'],
- memphis: ['94', '95'],
- ogden: ['80', '90'],
- philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],
- sba: ['31']
- };
- function enUsGetPrefixes() {
- var prefixes = [];
- for (var location in enUsCampusPrefix) {
-
-
- if (enUsCampusPrefix.hasOwnProperty(location)) {
- prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));
- }
- }
- return prefixes;
- }
- function enUsCheck(tin) {
- return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;
- }
- function esEsCheck(tin) {
-
- var chars = tin.toUpperCase().split('');
- if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {
- var lead_replace = 0;
- switch (chars[0]) {
- case 'Y':
- lead_replace = 1;
- break;
- case 'Z':
- lead_replace = 2;
- break;
- default:
- }
- chars.splice(0, 1, lead_replace);
- } else {
- while (chars.length < 9) {
- chars.unshift(0);
- }
- }
- var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
- chars = chars.join('');
- var checksum = parseInt(chars.slice(0, 8), 10) % 23;
- return chars[8] === lookup[checksum];
- }
- function etEeCheck(tin) {
-
- var full_year = tin.slice(1, 3);
- var century_digit = tin.slice(0, 1);
- switch (century_digit) {
- case '1':
- case '2':
- full_year = "18".concat(full_year);
- break;
- case '3':
- case '4':
- full_year = "19".concat(full_year);
- break;
- default:
- full_year = "20".concat(full_year);
- break;
- }
- var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var checksum = 0;
- var weight = 1;
- for (var i = 0; i < 10; i++) {
- checksum += digits[i] * weight;
- weight += 1;
- if (weight === 10) {
- weight = 1;
- }
- }
- if (checksum % 11 === 10) {
- checksum = 0;
- weight = 3;
- for (var _i3 = 0; _i3 < 10; _i3++) {
- checksum += digits[_i3] * weight;
- weight += 1;
- if (weight === 10) {
- weight = 1;
- }
- }
- if (checksum % 11 === 10) {
- return digits[10] === 0;
- }
- }
- return checksum % 11 === digits[10];
- }
- function fiFiCheck(tin) {
-
- var full_year = tin.slice(4, 6);
- var century_symbol = tin.slice(6, 7);
- switch (century_symbol) {
- case '+':
- full_year = "18".concat(full_year);
- break;
- case '-':
- full_year = "19".concat(full_year);
- break;
- default:
- full_year = "20".concat(full_year);
- break;
- }
- var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;
- if (checksum < 10) {
- return checksum === parseInt(tin.slice(10), 10);
- }
- checksum -= 10;
- var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];
- return letters_lookup[checksum] === tin.slice(10);
- }
- function frBeCheck(tin) {
-
- if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {
-
- var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6));
- if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
- return false;
- }
- }
- var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;
- var checkdigits = parseInt(tin.slice(9, 11), 10);
- if (checksum !== checkdigits) {
- checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97;
- if (checksum !== checkdigits) {
- return false;
- }
- }
- return true;
- }
- function frFrCheck(tin) {
- tin = tin.replace(/\s/g, '');
- var checksum = parseInt(tin.slice(0, 10), 10) % 511;
- var checkdigits = parseInt(tin.slice(10, 13), 10);
- return checksum === checkdigits;
- }
- function frLuCheck(tin) {
-
- var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- if (!algorithms.luhnCheck(tin.slice(0, 12))) {
- return false;
- }
- return algorithms.verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12]));
- }
- function hrHrCheck(tin) {
- return algorithms.iso7064Check(tin);
- }
- function huHuCheck(tin) {
-
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var checksum = 8;
- for (var i = 1; i < 9; i++) {
- checksum += digits[i] * (i + 1);
- }
- return checksum % 11 === digits[9];
- }
- function itItNameCheck(name) {
-
- var vowelflag = false;
-
- var xflag = false;
- for (var i = 0; i < 3; i++) {
- if (!vowelflag && /[AEIOU]/.test(name[i])) {
- vowelflag = true;
- } else if (!xflag && vowelflag && name[i] === 'X') {
- xflag = true;
- } else if (i > 0) {
- if (vowelflag && !xflag) {
- if (!/[AEIOU]/.test(name[i])) {
- return false;
- }
- }
- if (xflag) {
- if (!/X/.test(name[i])) {
- return false;
- }
- }
- }
- }
- return true;
- }
- function itItCheck(tin) {
-
- var chars = tin.toUpperCase().split('');
- if (!itItNameCheck(chars.slice(0, 3))) {
- return false;
- }
- if (!itItNameCheck(chars.slice(3, 6))) {
- return false;
- }
- var number_locations = [6, 7, 9, 10, 12, 13, 14];
- var number_replace = {
- L: '0',
- M: '1',
- N: '2',
- P: '3',
- Q: '4',
- R: '5',
- S: '6',
- T: '7',
- U: '8',
- V: '9'
- };
- for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {
- var i = _number_locations[_i4];
- if (chars[i] in number_replace) {
- chars.splice(i, 1, number_replace[chars[i]]);
- }
- }
- var month_replace = {
- A: '01',
- B: '02',
- C: '03',
- D: '04',
- E: '05',
- H: '06',
- L: '07',
- M: '08',
- P: '09',
- R: '10',
- S: '11',
- T: '12'
- };
- var month = month_replace[chars[8]];
- var day = parseInt(chars[9] + chars[10], 10);
- if (day > 40) {
- day -= 40;
- }
- if (day < 10) {
- day = "0".concat(day);
- }
- var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day);
- if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
- return false;
- }
- var checksum = 0;
- for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {
- var char_to_int = parseInt(chars[_i5], 10);
- if (isNaN(char_to_int)) {
- char_to_int = chars[_i5].charCodeAt(0) - 65;
- }
- checksum += char_to_int;
- }
- var odd_convert = {
-
- A: 1,
- B: 0,
- C: 5,
- D: 7,
- E: 9,
- F: 13,
- G: 15,
- H: 17,
- I: 19,
- J: 21,
- K: 2,
- L: 4,
- M: 18,
- N: 20,
- O: 11,
- P: 3,
- Q: 6,
- R: 8,
- S: 12,
- T: 14,
- U: 16,
- V: 10,
- W: 22,
- X: 25,
- Y: 24,
- Z: 23,
- 0: 1,
- 1: 0
- };
- for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {
- var _char_to_int = 0;
- if (chars[_i6] in odd_convert) {
- _char_to_int = odd_convert[chars[_i6]];
- } else {
- var multiplier = parseInt(chars[_i6], 10);
- _char_to_int = 2 * multiplier + 1;
- if (multiplier > 4) {
- _char_to_int += 2;
- }
- }
- checksum += _char_to_int;
- }
- if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {
- return false;
- }
- return true;
- }
- function lvLvCheck(tin) {
- tin = tin.replace(/\W/, '');
- var day = tin.slice(0, 2);
- if (day !== '32') {
-
- var month = tin.slice(2, 4);
- if (month !== '00') {
-
- var full_year = tin.slice(4, 6);
- switch (tin[6]) {
- case '0':
- full_year = "18".concat(full_year);
- break;
- case '1':
- full_year = "19".concat(full_year);
- break;
- default:
- full_year = "20".concat(full_year);
- break;
- }
- var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day);
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- }
- var checksum = 1101;
- var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
- for (var i = 0; i < tin.length - 1; i++) {
- checksum -= parseInt(tin[i], 10) * multip_lookup[i];
- }
- return parseInt(tin[10], 10) === checksum % 11;
- }
- return true;
- }
- function mtMtCheck(tin) {
- if (tin.length !== 9) {
-
- var chars = tin.toUpperCase().split('');
- while (chars.length < 8) {
- chars.unshift(0);
- }
- switch (tin[7]) {
- case 'A':
- case 'P':
- if (parseInt(chars[6], 10) === 0) {
- return false;
- }
- break;
- default:
- {
- var first_part = parseInt(chars.join('').slice(0, 5), 10);
- if (first_part > 32000) {
- return false;
- }
- var second_part = parseInt(chars.join('').slice(5, 7), 10);
- if (first_part === second_part) {
- return false;
- }
- }
- }
- }
- return true;
- }
- function nlNlCheck(tin) {
- return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
- return parseInt(a, 10);
- }), 9) % 11 === parseInt(tin[8], 10);
- }
- function plPlCheck(tin) {
-
- if (tin.length === 10) {
-
- var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];
- var _checksum = 0;
- for (var i = 0; i < lookup.length; i++) {
- _checksum += parseInt(tin[i], 10) * lookup[i];
- }
- _checksum %= 11;
- if (_checksum === 10) {
- return false;
- }
- return _checksum === parseInt(tin[9], 10);
- }
-
- var full_year = tin.slice(0, 2);
- var month = parseInt(tin.slice(2, 4), 10);
- if (month > 80) {
- full_year = "18".concat(full_year);
- month -= 80;
- } else if (month > 60) {
- full_year = "22".concat(full_year);
- month -= 60;
- } else if (month > 40) {
- full_year = "21".concat(full_year);
- month -= 40;
- } else if (month > 20) {
- full_year = "20".concat(full_year);
- month -= 20;
- } else {
- full_year = "19".concat(full_year);
- }
- if (month < 10) {
- month = "0".concat(month);
- }
- var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var checksum = 0;
- var multiplier = 1;
- for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {
- checksum += parseInt(tin[_i7], 10) * multiplier % 10;
- multiplier += 2;
- if (multiplier > 10) {
- multiplier = 1;
- } else if (multiplier === 5) {
- multiplier += 2;
- }
- }
- checksum = 10 - checksum % 10;
- return checksum === parseInt(tin[10], 10);
- }
- function ptBrCheck(tin) {
- if (tin.length === 11) {
- var _sum;
- var remainder;
- _sum = 0;
- if (
- tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;
- for (var i = 1; i <= 9; i++) {
- _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);
- }
- remainder = _sum * 10 % 11;
- if (remainder === 10) remainder = 0;
- if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;
- _sum = 0;
- for (var _i8 = 1; _i8 <= 10; _i8++) {
- _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);
- }
- remainder = _sum * 10 % 11;
- if (remainder === 10) remainder = 0;
- if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;
- return true;
- }
- if (
- tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {
- return false;
- }
- var length = tin.length - 2;
- var identifiers = tin.substring(0, length);
- var verificators = tin.substring(length);
- var sum = 0;
- var pos = length - 7;
- for (var _i9 = length; _i9 >= 1; _i9--) {
- sum += identifiers.charAt(length - _i9) * pos;
- pos -= 1;
- if (pos < 2) {
- pos = 9;
- }
- }
- var result = sum % 11 < 2 ? 0 : 11 - sum % 11;
- if (result !== parseInt(verificators.charAt(0), 10)) {
- return false;
- }
- length += 1;
- identifiers = tin.substring(0, length);
- sum = 0;
- pos = length - 7;
- for (var _i10 = length; _i10 >= 1; _i10--) {
- sum += identifiers.charAt(length - _i10) * pos;
- pos -= 1;
- if (pos < 2) {
- pos = 9;
- }
- }
- result = sum % 11 < 2 ? 0 : 11 - sum % 11;
- if (result !== parseInt(verificators.charAt(1), 10)) {
- return false;
- }
- return true;
- }
- function ptPtCheck(tin) {
- var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
- return parseInt(a, 10);
- }), 9) % 11;
- if (checksum > 9) {
- return parseInt(tin[8], 10) === 0;
- }
- return checksum === parseInt(tin[8], 10);
- }
- function roRoCheck(tin) {
- if (tin.slice(0, 4) !== '9000') {
-
-
- var full_year = tin.slice(1, 3);
- switch (tin[0]) {
- case '1':
- case '2':
- full_year = "19".concat(full_year);
- break;
- case '3':
- case '4':
- full_year = "18".concat(full_year);
- break;
- case '5':
- case '6':
- full_year = "20".concat(full_year);
- break;
- default:
- }
- var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
- if (date.length === 8) {
- if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
- return false;
- }
- } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- var digits = tin.split('').map(function (a) {
- return parseInt(a, 10);
- });
- var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
- var checksum = 0;
- for (var i = 0; i < multipliers.length; i++) {
- checksum += digits[i] * multipliers[i];
- }
- if (checksum % 11 === 10) {
- return digits[12] === 1;
- }
- return digits[12] === checksum % 11;
- }
- return true;
- }
- function skSkCheck(tin) {
- if (tin.length === 9) {
- tin = tin.replace(/\W/, '');
- if (tin.slice(6) === '000') {
- return false;
- }
-
- var full_year = parseInt(tin.slice(0, 2), 10);
- if (full_year > 53) {
- return false;
- }
- if (full_year < 10) {
- full_year = "190".concat(full_year);
- } else {
- full_year = "19".concat(full_year);
- }
- var month = parseInt(tin.slice(2, 4), 10);
- if (month > 50) {
- month -= 50;
- }
- if (month < 10) {
- month = "0".concat(month);
- }
- var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
- if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- }
- return true;
- }
- function slSiCheck(tin) {
- var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
- return parseInt(a, 10);
- }), 8) % 11;
- if (checksum === 10) {
- return parseInt(tin[7], 10) === 0;
- }
- return checksum === parseInt(tin[7], 10);
- }
- function svSeCheck(tin) {
-
- var tin_copy = tin.slice(0);
- if (tin.length > 11) {
- tin_copy = tin_copy.slice(2);
- }
- var full_year = '';
- var month = tin_copy.slice(2, 4);
- var day = parseInt(tin_copy.slice(4, 6), 10);
- if (tin.length > 11) {
- full_year = tin.slice(0, 4);
- } else {
- full_year = tin.slice(0, 2);
- if (tin.length === 11 && day < 60) {
-
-
- var current_year = new Date().getFullYear().toString();
- var current_century = parseInt(current_year.slice(0, 2), 10);
- current_year = parseInt(current_year, 10);
- if (tin[6] === '-') {
- if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) {
- full_year = "".concat(current_century - 1).concat(full_year);
- } else {
- full_year = "".concat(current_century).concat(full_year);
- }
- } else {
- full_year = "".concat(current_century - 1).concat(full_year);
- if (current_year - parseInt(full_year, 10) < 100) {
- return false;
- }
- }
- }
- }
- if (day > 60) {
- day -= 60;
- }
- if (day < 10) {
- day = "0".concat(day);
- }
- var date = "".concat(full_year, "/").concat(month, "/").concat(day);
- if (date.length === 8) {
- if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
- return false;
- }
- } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
- return false;
- }
- return algorithms.luhnCheck(tin.replace(/\W/, ''));
- }
- var taxIdFormat = {
- 'bg-BG': /^\d{10}$/,
- 'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/,
- 'de-AT': /^\d{9}$/,
- 'de-DE': /^[1-9]\d{10}$/,
- 'dk-DK': /^\d{6}-{0,1}\d{4}$/,
- 'el-CY': /^[09]\d{7}[A-Z]$/,
- 'el-GR': /^([0-4]|[7-9])\d{8}$/,
- 'en-CA': /^\d{9}$/,
- 'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,
- 'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i,
- 'en-US': /^\d{2}[- ]{0,1}\d{7}$/,
- 'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,
- 'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,
- 'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,
- 'fr-BE': /^\d{11}$/,
- 'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,
-
- 'fr-LU': /^\d{13}$/,
- 'hr-HR': /^\d{11}$/,
- 'hu-HU': /^8\d{9}$/,
- 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,
- 'lv-LV': /^\d{6}-{0,1}\d{5}$/,
-
- 'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,
- 'nl-NL': /^\d{9}$/,
- 'pl-PL': /^\d{10,11}$/,
- 'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/,
- 'pt-PT': /^\d{9}$/,
- 'ro-RO': /^\d{13}$/,
- 'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/,
- 'sl-SI': /^[1-9]\d{7}$/,
- 'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/
- };
- taxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];
- taxIdFormat['lt-LT'] = taxIdFormat['et-EE'];
- taxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];
- taxIdFormat['fr-CA'] = taxIdFormat['en-CA'];
- var taxIdCheck = {
- 'bg-BG': bgBgCheck,
- 'cs-CZ': csCzCheck,
- 'de-AT': deAtCheck,
- 'de-DE': deDeCheck,
- 'dk-DK': dkDkCheck,
- 'el-CY': elCyCheck,
- 'el-GR': elGrCheck,
- 'en-CA': isCanadianSIN,
- 'en-IE': enIeCheck,
- 'en-US': enUsCheck,
- 'es-ES': esEsCheck,
- 'et-EE': etEeCheck,
- 'fi-FI': fiFiCheck,
- 'fr-BE': frBeCheck,
- 'fr-FR': frFrCheck,
- 'fr-LU': frLuCheck,
- 'hr-HR': hrHrCheck,
- 'hu-HU': huHuCheck,
- 'it-IT': itItCheck,
- 'lv-LV': lvLvCheck,
- 'mt-MT': mtMtCheck,
- 'nl-NL': nlNlCheck,
- 'pl-PL': plPlCheck,
- 'pt-BR': ptBrCheck,
- 'pt-PT': ptPtCheck,
- 'ro-RO': roRoCheck,
- 'sk-SK': skSkCheck,
- 'sl-SI': slSiCheck,
- 'sv-SE': svSeCheck
- };
- taxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];
- taxIdCheck['lt-LT'] = taxIdCheck['et-EE'];
- taxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];
- taxIdCheck['fr-CA'] = taxIdCheck['en-CA'];
- var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g;
- var sanitizeRegexes = {
- 'de-AT': allsymbols,
- 'de-DE': /[\/\\]/g,
- 'fr-BE': allsymbols
- };
- sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];
- function isTaxID(str) {
- var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
- (0, _assertString.default)(str);
- var strcopy = str.slice(0);
- if (locale in taxIdFormat) {
- if (locale in sanitizeRegexes) {
- strcopy = strcopy.replace(sanitizeRegexes[locale], '');
- }
- if (!taxIdFormat[locale].test(strcopy)) {
- return false;
- }
- if (locale in taxIdCheck) {
- return taxIdCheck[locale](strcopy);
- }
- return true;
- }
- throw new Error("Invalid locale '".concat(locale, "'"));
- }
- module.exports = exports.default;
- module.exports.default = exports.default;
|