{"version":3,"file":"isValidKortnummer.cjs","sources":["../../../../../src/utilities/validators/isValidKortnummer/isValidKortnummer.ts"],"sourcesContent":["const KORTNUMMER_REGEX = /^(\\d{4}\\s?){4}$/;\n\nconst luhn = (input: string) => {\n    const inputAsArray = input.replace(/\\D/g, \"\").split(\"\");\n\n    if (inputAsArray.length !== 15) {\n        return null;\n    }\n\n    function multiplyDigit(index: number, number: string) {\n        // Gang hver andre index med 2 (index 0, 2, 4, etc.)\n        const multiplier = index % 2 === 0 ? 2 : 1;\n        const rawNumber = Number.parseInt(number) * multiplier;\n        // Legg sammen sifrene hvis rawNumber har to sifre\n        const crossSum = Math.floor(rawNumber / 10) + (rawNumber % 10);\n\n        return crossSum;\n    }\n\n    const checksum = inputAsArray.reduce(\n        (sum, digit, index) => sum + multiplyDigit(index, digit),\n        0,\n    );\n    const checkDigit = Math.abs((checksum % 10) - 10);\n\n    return checkDigit;\n};\n\n/**\n * Sjekker at verdien er et gyldig kortnummer, mot Luhn-algoritmen (https://en.wikipedia.org/wiki/Luhn_algorithm).\n * @param input Verdien som skal valideres\n * @returns Om verdien validerer som et gyldig kortnummer\n */\nexport const isValidKortnummer = (input: string) => {\n    if (!KORTNUMMER_REGEX.test(input)) {\n        return false;\n    }\n\n    const strippedInput = input.replace(/\\D/g, \"\");\n    const checkDigit = Number.parseInt(strippedInput.slice(-1));\n    const firstFifteen = strippedInput.substring(0, strippedInput.length - 1);\n\n    return checkDigit === luhn(firstFifteen);\n};\n"],"names":["KORTNUMMER_REGEX","luhn","input","inputAsArray","replace","split","length","checksum","reduce","sum","digit","index","number","multiplier","rawNumber","Number","parseInt","Math","floor","multiplyDigit","abs","test","strippedInput","checkDigit","slice","firstFifteen","substring"],"mappings":"gFAAA,MAAMA,EAAmB,kBAEnBC,EAAQC,IACV,MAAMC,EAAeD,EAAME,QAAQ,MAAO,IAAIC,MAAM,IAEpD,GAA4B,KAAxBF,EAAaG,OACb,OAAO,KAaX,MAAMC,EAAWJ,EAAaK,OAC1B,CAACC,EAAKC,EAAOC,IAAUF,EAX3B,SAAuBE,EAAeC,GAElC,MAAMC,EAAaF,EAAQ,GAAM,EAAI,EAAI,EACnCG,EAAYC,OAAOC,SAASJ,GAAUC,EAI5C,OAFiBI,KAAKC,MAAMJ,EAAY,IAAOA,EAAY,EAG/D,CAGiCK,CAAcR,EAAOD,GAClD,GAIJ,OAFmBO,KAAKG,IAAKb,EAAW,GAAM,+BAUhBL,IAC9B,IAAKF,EAAiBqB,KAAKnB,GACvB,OAAO,EAGX,MAAMoB,EAAgBpB,EAAME,QAAQ,MAAO,IACrCmB,EAAaR,OAAOC,SAASM,EAAcE,OAAM,IACjDC,EAAeH,EAAcI,UAAU,EAAGJ,EAAchB,OAAS,GAEvE,OAAOiB,IAAetB,EAAKwB"}