{"version":3,"file":"index.js","mappings":"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","sources":["webpack://taiwanIdValidator/webpack/universalModuleDefinition","webpack://taiwanIdValidator/./src/index.ts","webpack://taiwanIdValidator/./src|sync","webpack://taiwanIdValidator/webpack/bootstrap","webpack://taiwanIdValidator/webpack/runtime/hasOwnProperty shorthand","webpack://taiwanIdValidator/webpack/before-startup","webpack://taiwanIdValidator/webpack/startup","webpack://taiwanIdValidator/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"taiwanIdValidator\"] = factory();\n\telse\n\t\troot[\"taiwanIdValidator\"] = factory();\n})(this, function() {\nreturn ","function zipWith<T, R>(a1: T[], a2: T[], f: (v1: T, v2: T) => R): R[] {\n  const length = Math.min(a1.length, a2.length)\n  const result: R[] = []\n\n  for (let i = 0; i < length; i++) result[i] = f(a1[i], a2[i])\n\n  return result\n}\n\nfunction add(a: number, b: number) {\n  return a + b\n}\n\nfunction multiply(a: number, b: number) {\n  return a * b\n}\n\n/**\n * Verify the input is a valid GUI Number (中華民國統一編號)\n *\n * @param { string | number } input GUI Number\n * @param { boolean } extended check input using extended format: https://www.fia.gov.tw/singlehtml/6?cntId=aaa97a9dcf2649d5bdd317f554e24f75\n * @returns { boolean } is `input` a valid GUI number\n */\nexport function isGuiNumberValid(\n  input: string | number,\n  extended = false\n): boolean {\n  if (typeof input !== 'string' && typeof input !== 'number') return false\n\n  /**\n   * Example: 12345675\n   * Step 1:\n   * 1 * 1 = 1\n   * 2 * 2 = 4\n   * 3 * 1 = 3\n   * 4 * 2 = 8\n   * 5 * 1 = 5\n   * 6 * 2 = 12\n   * 7 * 4 = 28\n   * 5 * 1 = 5\n   *\n   * Step 2:\n   * 1 -> 1\n   * 4 -> 4\n   * 3 -> 3\n   * 8 -> 8\n   * 5 -> 5\n   * 12 -> 1 + 2 = 3\n   * 28 -> 2 + 8 = 10\n   * 5 -> 5\n   *\n   * Step 3:\n   * (1 + 4 + 3 + 8 + 5 + 3 + 10 + 5) % 10 = 9\n   */\n\n  const GUI_NUMBER_COEFFICIENTS = [1, 2, 1, 2, 1, 2, 4, 1]\n\n  const n = input.toString()\n  const regex = /^\\d{8}$/\n\n  if (!regex.test(n)) return false\n\n  /**\n   * Step 1: 先把統一編號的每個數字分別乘上對應的係數 (1, 2, 1, 2, 1, 2, 4, 1)\n   * Step 2: 再把個別乘積的十位數與個位數相加，得出八個小於 10 的數字\n   */\n\n  const intRadix = 10\n  const checksum = zipWith(\n    GUI_NUMBER_COEFFICIENTS,\n    n.split('').map(c => parseInt(c, intRadix)),\n    multiply\n  )\n    .map(n => (n % 10) + Math.floor(n / 10))\n    .reduce(add, 0)\n\n  /**\n   * Step 3: 檢查把這 8 個數字相加之後計算此和除以 5 or 10 的餘數\n   * Step 4:\n   *  4-1: 若是餘數為 0，則為正確的統一編號\n   *  4-2: 若是餘數為 9，且原統一編號的第七位是 7，則也為正確的統一編號\n   */\n\n  const divisor = extended ? 5 : 10\n\n  return (\n    checksum % divisor === 0 ||\n    (parseInt(n.charAt(6), intRadix) === 7 && (checksum + 1) % divisor === 0)\n  )\n}\n\n/**\n * Verify the input is a valid National identification number (中華民國身分證字號)\n *\n * @param { string } input National identification number\n * @returns { boolean } is `input` a valid national ID number\n */\nexport function isNationalIdentificationNumberValid(input: string): boolean {\n  if (typeof input !== 'string') return false\n\n  const regex = /^[A-Z][1,2]\\d{8}$/\n\n  return regex.test(input) && verifyTaiwanIdIntermediateString(input)\n}\n\n/**\n * Verify the input is a valid resident certificate number (臺灣地區無戶籍國民、外國人、大陸地區人民及香港或澳門居民之專屬代號)\n *\n * @param { string } input resident certificate number\n * @returns { boolean } is `input` a valid resident certificate number\n */\nexport function isResidentCertificateNumberValid(input: string): boolean {\n  if (typeof input !== 'string') return false\n\n  return (\n    isNewResidentCertificateNumberValid(input) ||\n    isOriginalResidentCertificateNumberValid(input)\n  )\n}\n\n/**\n * Verify the input is a valid new resident certificate number (臺灣地區無戶籍國民、外國人、大陸地區人民及香港或澳門居民之專屬代號)\n *\n * @param { string } input resident certificate number\n * @returns { boolean } is `input` a valid new resident certificate number\n */\nexport function isNewResidentCertificateNumberValid(input: string): boolean {\n  if (typeof input !== 'string') return false\n\n  const regex = /^[A-Z][8,9]\\d{8}$/\n\n  return regex.test(input) && verifyTaiwanIdIntermediateString(input)\n}\n\n/**\n * Verify the input is a original valid resident certificate number (臺灣地區無戶籍國民、外國人、大陸地區人民及香港或澳門居民之專屬代號)\n *\n * @param { string } input resident certificate number\n * @returns { boolean } is `input` a valid original resident certificate number\n */\nexport function isOriginalResidentCertificateNumberValid(\n  input: string\n): boolean {\n  if (typeof input !== 'string') return false\n\n  const regex = /^[A-Z]{2}\\d{8}$/\n\n  return regex.test(input) && verifyTaiwanIdIntermediateString(input)\n}\n\n/**\n * Verify the input is a valid citizen digital certificate number (自然人憑證)\n *\n * @param { string } input citizen digital certificate number\n * @returns { boolean } is `input` a valid citizen digital certificate number\n */\nexport function isCitizenDigitalCertificateNumberValid(input: string): boolean {\n  if (typeof input !== 'string') return false\n\n  const n = input.toString()\n\n  // 驗證規則為兩碼英文 + 14 碼數字\n  const regex = /^[A-Z]{2}\\d{14}$/\n\n  return regex.test(n)\n}\n\n/**\n * Verify the input is a valid E-Invoice cell phone barcode (電子發票手機條碼)\n *\n * @param { string } input E-Invoice cell phone barcode\n * @returns { boolean } is `input` a valid e-invoice cell phone barcode\n */\nexport function isEInvoiceCellPhoneBarcodeValid(input: string): boolean {\n  if (typeof input !== 'string') return false\n\n  const n = input.toString()\n\n  /**\n   * 總長度為 8 碼\n   * 第 1 碼為 /\n   * 第 2-8 碼由 0-9 (數字), A-Z (大寫英文字母), .(period), -(hyphen), +(plus) 組成\n   */\n  const regex = /^\\/[\\dA-Z.\\-+]{7}$/\n\n  return regex.test(n)\n}\n\n/**\n * Verify the input is a valid E-Invoice donate code (電子發票捐贈碼)\n *\n * @param { string | number } input E-Invoice donate code\n * @returns { boolean } is `input` a valid e-invoice donate code\n */\nexport function isEInvoiceDonateCodeValid(input: string | number): boolean {\n  if (typeof input !== 'string' && typeof input !== 'number') return false\n\n  const n = input.toString()\n\n  // 總長度為 3-7 碼 0-9 的數字\n  const regex = /^[\\d]{3,7}$/\n\n  return regex.test(n)\n}\n\nexport type CreditCardValidationOptions = {\n  /**\n   * validate `input` with regex\n   * (Warning! Card issuers might introduce new card number patterns. Use this in production might cause unexpected results.)\n   */\n  checkIssuerRegexes?: boolean\n}\n\n/**\n * Verify the input is a valid credit card number (信用卡卡號)\n *\n * @param { string | number } input credit card number\n * @param { CreditCardValidationOptions } creditCardValidationOptions credit card validation options\n * @returns { boolean } is `input` a valid credit card number\n */\nexport function isCreditCardNumberValid(input: string, options: CreditCardValidationOptions = {}): boolean {\n  if (typeof input !== 'string') return false\n\n  const regex = /^[0-9]{12,19}$/\n\n  if (!regex.test(input)) return false\n\n  // ref:\n  //   https://stackoverflow.com/questions/9315647/regex-credit-card-number-tests\n  //   https://en.wikipedia.org/wiki/Payment_card_number\n  const issuerRegexes = [\n    /^3[47][0-9]{13}$/, // American Express\n    /^(6541|6556)[0-9]{12}$/, // BCGlobal\n    /^389[0-9]{11}$/, // Carte Blanche\n    /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/, // Diner's Club\n    /^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$/, // Discover\n    /^63[7-9][0-9]{13}$/, // Insta Payment\n    /^(?:2131|1800|35\\d{3})\\d{11}$/, // JCB\n    /^9[0-9]{15}$/, // KoreanLocalCard\n    /^(6304|6706|6709|6771)[0-9]{12,15}$/, // Laser\n    /^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/, // Maestro\n    /^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/, // Mastercard\n    /^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/, // Solo\n    /^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/, // Switch\n    /^(62[0-9]{14,17})$/, // Union Pay\n    /^4[0-9]{12}(?:[0-9]{3})?$/, // Visa\n    /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$/ // Visa Master\n  ]\n\n  const { checkIssuerRegexes = false } = options\n\n  if (checkIssuerRegexes && !issuerRegexes.some(regex => regex.test(input)))\n    return false\n\n  // Luhn algorithm\n  // ref: https://en.wikipedia.org/wiki/Luhn_algorithm\n  const digits = input.split('').map(d => parseInt(d, 10))\n  const sum = digits.reverse().reduce((acc, d, i) => {\n    if (i % 2 === 0) return acc + d\n    return acc + (d * 2 > 9 ? d * 2 - 9 : d * 2)\n  }, 0)\n\n  return sum % 10 === 0\n}\n\n/**\n * Verify the intermediate string for isNationalIdentificationNumberValid and isResidentCertificateNumberValid\n *\n * @param { string } input String to verify\n * @returns { boolean } is `input` a valid Taiwan ID intermediate string\n */\nfunction verifyTaiwanIdIntermediateString(input: string): boolean {\n  const intRadix = 10\n\n  /**\n   *  A=10 台北市     J=18 新竹縣     S=26 高雄縣\n   *  B=11 台中市     K=19 苗栗縣     T=27 屏東縣\n   *  C=12 基隆市     L=20 台中縣     U=28 花蓮縣\n   *  D=13 台南市     M=21 南投縣     V=29 台東縣\n   *  E=14 高雄市     N=22 彰化縣     W=32 金門縣*\n   *  F=15 台北縣     O=35 新竹市*    X=30 澎湖縣\n   *  G=16 宜蘭縣     P=23 雲林縣     Y=31 陽明山\n   *  H=17 桃園縣     Q=24 嘉義縣     Z=33 連江縣*\n   *  I=34 嘉義市*    R=25 台南縣\n   *\n   *  Step 1: 英文字母按照上表轉換為數字之後，十位數 * 1 + 個位數 * 9 相加\n   */\n  const TAIWAN_ID_LOCALE_CODE_LIST = [\n    1, // A -> 10 -> 1 * 1 + 9 * 0 = 1\n    10, // B -> 11 -> 1 * 1 + 9 * 1 = 10\n    19, // C -> 12 -> 1 * 1 + 9 * 2 = 19\n    28, // D\n    37, // E\n    46, // F\n    55, // G\n    64, // H\n    39, // I -> 34 -> 1 * 3 + 9 * 4 = 39\n    73, // J\n    82, // K\n    2, // L\n    11, // M\n    20, // N\n    48, // O -> 35 -> 1 * 3 + 9 * 5 = 48\n    29, // P\n    38, // Q\n    47, // R\n    56, // S\n    65, // T\n    74, // U\n    83, // V\n    21, // W -> 32 -> 1 * 3 + 9 * 2 = 21\n    3, // X\n    12, // Y\n    30 // Z -> 33 -> 1 * 3 + 9 * 3 = 30\n  ]\n\n  const RESIDENT_CERTIFICATE_NUMBER_LIST = [\n    0, // A\n    1, // B\n    2, // C\n    3, // D\n    4, // E\n    5, // F\n    6, // G\n    7, // H\n    4, // I\n    8, // J\n    9, // K\n    0, // L\n    1, // M\n    2, // N\n    5, // O\n    3, // P\n    4, // Q\n    5, // R\n    6, // S\n    7, // T\n    8, // U\n    9, // V\n    2, // W\n    0, // X\n    1, // Y\n    3 // Z\n  ]\n\n  const getCharOrder = (s: string, i: number) =>\n    s.charCodeAt(i) - 'A'.charCodeAt(0)\n\n  const firstDigit = TAIWAN_ID_LOCALE_CODE_LIST[getCharOrder(input, 0)]\n\n  const secondDigit = isNaN(parseInt(input[1], intRadix)) // if is not a number (舊版居留證編號)\n    ? RESIDENT_CERTIFICATE_NUMBER_LIST[getCharOrder(input, 1)]\n    : parseInt(input[1], intRadix)\n\n  const rest = input\n    .substring(2)\n    .split('')\n    .map(n => parseInt(n, intRadix))\n\n  const idInDigits = [firstDigit, secondDigit, ...rest]\n\n  // Step 2: 第 1 位數字 (只能為 1 or 2) 至第 8 位數字分別乘上 8, 7, 6, 5, 4, 3, 2, 1 後相加，再加上第 9 位數字\n\n  const ID_COEFFICIENTS = [1, 8, 7, 6, 5, 4, 3, 2, 1, 1]\n  const sum = zipWith(idInDigits, ID_COEFFICIENTS, multiply).reduce(add, 0)\n\n  // Step 3: 如果該數字為 10 的倍數，則為正確身分證字號\n\n  return sum % 10 === 0\n}\n\nexport const isGUI = isGuiNumberValid\nexport const isNI = isNationalIdentificationNumberValid\nexport const isRC = isResidentCertificateNumberValid\nexport const isNewRC = isNewResidentCertificateNumberValid\nexport const isOriginalRC = isOriginalResidentCertificateNumberValid\nexport const isCDC = isCitizenDigitalCertificateNumberValid\nexport const isCellPhoneBarcode = isEInvoiceCellPhoneBarcodeValid\nexport const isDonateCode = isEInvoiceDonateCodeValid\nexport const isCreditCard = isCreditCardNumberValid\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 875;\nmodule.exports = webpackEmptyContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n",""],"names":[],"sourceRoot":""}