{"version":3,"sources":["jsdelivr-header.js","/npm/personnummer@3.3.1/dist/cjs/index.js"],"names":[],"mappings":"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","file":"/npm/personnummer@3.3.1/dist/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/personnummer@3.3.1/dist/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  default: () => index_default,\n  parse: () => parse,\n  valid: () => valid\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/errors.ts\nvar PersonnummerError = class extends Error {\n  constructor() {\n    super(\"Invalid swedish personal identity number\");\n  }\n};\n\n// src/utils.ts\nvar compareAsc = (dateLeft, dateRight) => {\n  const diff = dateLeft.getTime() - dateRight.getTime();\n  return diff < 0 ? -1 : diff > 0 ? 1 : diff;\n};\nvar diffInYears = (dateLeft, dateRight) => {\n  const sign = compareAsc(dateLeft, dateRight);\n  const yearDiff = Math.abs(dateLeft.getFullYear() - dateRight.getFullYear());\n  dateLeft.setFullYear(dateLeft.getFullYear() - sign * yearDiff);\n  const isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n  const result = sign * (yearDiff - +isLastYearNotFull);\n  return result === 0 ? 0 : result;\n};\nvar luhn = (str) => {\n  let sum = 0;\n  str += \"\";\n  for (let i = 0, l = str.length; i < l; i++) {\n    let v = parseInt(str[i]);\n    v *= 2 - i % 2;\n    if (v > 9) {\n      v -= 9;\n    }\n    sum += v;\n  }\n  return Math.ceil(sum / 10) * 10 - sum || 0;\n};\nvar testDate = (year, month, day) => {\n  month -= 1;\n  const date = new Date(year, month, day);\n  return !(date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day);\n};\n\n// src/index.ts\nvar Personnummer = class _Personnummer {\n  /**\n   * Personnummer constructor.\n   *\n   * @param {string} pin\n   * @param {object} options\n   */\n  constructor(pin, options) {\n    /**\n     * Personnummer century.\n     *\n     * @var {string}\n     */\n    this._century = \"\";\n    /**\n     * Personnummer full year.\n     *\n     * @var {string}\n     */\n    this._fullYear = \"\";\n    /**\n     * Personnummer year.\n     *\n     * @var {string}\n     */\n    this._year = \"\";\n    /**\n     * Personnummer month.\n     *\n     * @var {string}\n     */\n    this._month = \"\";\n    /**\n     * Personnummer day.\n     *\n     * @var {string}\n     */\n    this._day = \"\";\n    /**\n     * Personnummer seperator.\n     *\n     * @var {string}\n     */\n    this._sep = \"\";\n    /**\n     * Personnumer first three of the last four numbers.\n     *\n     * @var {string}\n     */\n    this._num = \"\";\n    /**\n     * The last number of the personnummer.\n     *\n     * @var {string}\n     */\n    this._check = \"\";\n    this.parse(pin, {\n      allowCoordinationNumber: true,\n      allowInterimNumber: false,\n      ...options\n    });\n  }\n  /**\n   * Get century.\n   *\n   * @return {string}\n   */\n  get century() {\n    return this._century;\n  }\n  /**\n   * Get age.\n   *\n   * @return {string}\n   */\n  get fullYear() {\n    return this._fullYear;\n  }\n  /**\n   * Get age.\n   *\n   * @return {string}\n   */\n  get year() {\n    return this._year;\n  }\n  /**\n   * Get month.\n   *\n   * @return {string}\n   */\n  get month() {\n    return this._month;\n  }\n  /**\n   * Get day.\n   *\n   * @return {string}\n   */\n  get day() {\n    return this._day;\n  }\n  /**\n   * Get sep.\n   *\n   * @return {string}\n   */\n  get sep() {\n    return this._sep;\n  }\n  /**\n   * Get num.\n   *\n   * @return {string}\n   */\n  get num() {\n    return this._num;\n  }\n  /**\n   * Get check.\n   *\n   * @return {string}\n   */\n  get check() {\n    return this._check;\n  }\n  /**\n   * Parse personnummer.\n   *\n   * @param {string} pin\n   * @param {object} options\n   *\n   * @return {Personnummer}\n   */\n  static parse(pin, options) {\n    return new _Personnummer(pin, options);\n  }\n  /**\n   * Validate a Swedish personal identity number.\n   *\n   * @param {string} str\n   * @param {object} options\n   *\n   * @return {boolean}\n   */\n  static valid(pin, options) {\n    try {\n      _Personnummer.parse(pin, options);\n      return true;\n    } catch (_err) {\n      return false;\n    }\n  }\n  /**\n   * Parse personnummer and set class properties.\n   *\n   * @param {string} pin\n   * @param {object} options\n   */\n  parse(pin, options) {\n    if (pin.length < 10 || pin.length > 13) {\n      throw new PersonnummerError();\n    }\n    const reg = /^(\\d{2}){0,1}(\\d{2})(\\d{2})(\\d{2})([+-]?)((?!000)\\d{3}|[TRSUWXJKLMN]\\d{2})(\\d)$/;\n    const match = reg.exec(pin);\n    if (!match) {\n      throw new PersonnummerError();\n    }\n    const century = match[1];\n    const year = match[2];\n    const month = match[3];\n    const day = match[4];\n    const sep = match[5];\n    const num = match[6];\n    const check = match[7];\n    if (typeof century === \"undefined\" || !century.length) {\n      const d = /* @__PURE__ */ new Date();\n      let baseYear;\n      if (sep === \"+\") {\n        this._sep = \"+\";\n        baseYear = d.getFullYear() - 100;\n      } else {\n        this._sep = \"-\";\n        baseYear = d.getFullYear();\n      }\n      this._century = (\"\" + (baseYear - (baseYear - parseInt(year)) % 100)).substr(0, 2);\n    } else {\n      this._century = century;\n      if ((/* @__PURE__ */ new Date()).getFullYear() - parseInt(century + year, 10) < 100) {\n        this._sep = \"-\";\n      } else {\n        this._sep = \"+\";\n      }\n    }\n    this._year = year;\n    this._fullYear = this._century + year;\n    this._month = month;\n    this._day = day;\n    this._num = num;\n    this._check = check;\n    if (!this.valid()) {\n      throw new PersonnummerError();\n    }\n    if (!options?.allowCoordinationNumber && this.isCoordinationNumber()) {\n      throw new PersonnummerError();\n    }\n    if (!options?.allowInterimNumber && this.isInterimNumber()) {\n      throw new PersonnummerError();\n    }\n  }\n  /**\n   * Validate a Swedish personal identity number.\n   *\n   * @return {boolean}\n   */\n  valid() {\n    const valid2 = luhn(\n      this.year + this.month + this.day + this.num.replace(/[TRSUWXJKLMN]/, \"1\")\n    ) === +this.check && !!this.check;\n    if (valid2 && testDate(parseInt(this.century + this.year), +this.month, +this.day)) {\n      return valid2;\n    }\n    return valid2 && testDate(parseInt(this.century + this.year), +this.month, +this.day - 60);\n  }\n  /**\n   * Format a Swedish personal identity number as one of the official formats,\n   * A long format or a short format.\n   *\n   * If the input number could not be parsed a empty string will be returned.\n   *\n   * @param {boolean} longFormat\n   *\n   * @return {string}\n   */\n  format(longFormat = false) {\n    if (longFormat) {\n      return `${this.century}${this.year}${this.month}${this.day}${this.num}${this.check}`;\n    }\n    return `${this.year}${this.month}${this.day}${this.sep}${this.num}${this.check}`;\n  }\n  /**\n   * Get age from a Swedish personal identity number.\n   *\n   * @return {number}\n   */\n  getAge() {\n    const date = this.getDate();\n    return diffInYears(new Date(Date.now()), date);\n  }\n  /**\n   * Get date from a Swedish personal identity number.\n   *\n   * @return {Date}\n   */\n  getDate() {\n    let ageDay = +this.day;\n    if (this.isCoordinationNumber()) {\n      ageDay -= 60;\n    }\n    const ageDate = this.century + this.year + \"-\" + this.month + \"-\" + (ageDay < 10 ? \"0\" + ageDay : ageDay);\n    return new Date(ageDate);\n  }\n  /**\n   * Check if a Swedish personal identity number is a interim number or not.\n   *\n   * @return {boolean}\n   */\n  isInterimNumber() {\n    return /[TRSUWXJKLMN]/.test(this.num[0]);\n  }\n  /**\n   * Check if a Swedish personal identity number is a coordination number or not.\n   *\n   * @return {boolean}\n   */\n  isCoordinationNumber() {\n    return testDate(\n      parseInt(this.century + this.year),\n      +this.month,\n      +this.day - 60\n    );\n  }\n  /**\n   * Check if a Swedish personal identity number is for a female.\n   *\n   * @return {boolean}\n   */\n  isFemale() {\n    return !this.isMale();\n  }\n  /**\n   * Check if a Swedish personal identity number is for a male.\n   *\n   * @return {boolean}\n   */\n  isMale() {\n    const sexDigit = parseInt(this.num.substr(-1));\n    return sexDigit % 2 === 1;\n  }\n};\nvar valid = Personnummer.valid;\nvar parse = Personnummer.parse;\nvar index_default = Personnummer;\nmodule.exports = module.exports.default;\n"]}