{"version":3,"sources":["jsdelivr-header.js","/npm/fodselsnummer-generator@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,OAAS,QAAQ,UAEjB,WAAa,SAAS,GAExB,OADI,GAAQ,MAAO,GAAU,KAAK,GAAQ,OAAO,IAC1C,CACT,EAEI,SAAW,SAAS,EAAG,GAEzB,EAAI,GAAK,EAGT,IAAI,EAAK,IAAO,GAJhB,EAAI,GAAK,GAIW,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,IAAM,GAIlG,GAHW,KAAP,IACF,EAAK,GAEI,KAAP,EACF,MAAO,UAGV,IAAI,EAAK,IAAO,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,GAAM,GAIxG,OAHW,KAAP,IACF,EAAK,GAEI,KAAP,EACK,UAGF,GAAK,EAAK,CACnB,EAEI,SAAW,SAAS,EAAa,GACnC,IASI,EARA,EAAgB,OAAO,GAEvB,EAAW,EAAc,OAAO,QAChC,EAAO,EAAc,OAAO,MAC5B,EAAQ,EAAc,OAAO,MAE7B,EADM,EAAc,OAAO,MACZ,EAAQ,EAGvB,EAAM,GACN,EAAM,GACN,EAAa,WACf,GAAM,CACR,EAgBA,GAdI,IAC2B,MAAzB,EAAI,cAAc,GACpB,EAAa,WACR,EAAI,GAAM,IAAG,GAAI,GACpB,GAAI,CACN,EACgC,KAAxB,EAAI,cAAc,KAC1B,EAAa,WACP,EAAI,GAAM,IAAG,GAAI,GACrB,GAAI,CACN,IAIA,GAAY,MAAQ,GAAY,KAClC,IAAI,EAAI,IAAK,GAAK,IAAK,EAAW,GAChC,EAAI,KAAK,WAAW,IAIxB,GAAI,GAAY,MAAQ,GAAY,KAClC,IAAI,EAAI,IAAK,GAAK,EAAK,EAAW,GAChC,EAAI,KAAK,WAAW,IAIxB,GAAI,GAAY,MAAQ,GAAY,KAClC,IAAI,EAAI,IAAK,GAAK,IAAK,EAAW,GAChC,EAAI,KAAK,WAAW,IAIxB,GAAI,GAAY,KAAQ,GAAY,KAClC,IAAI,EAAI,IAAK,GAAK,IAAK,EAAW,GAChC,EAAI,KAAK,WAAW,IASxB,OALA,EAAI,SAAQ,SAAS,GACnB,IAAI,EAAS,EAAS,EAAI,SAAS,EAAQ,GACrB,KAAlB,EAAO,QAAe,EAAI,KAAK,EACrC,IAEO,CACT,EAEA,OAAO,QAAU,CAAE,SAAU","file":"/npm/fodselsnummer-generator@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/fodselsnummer-generator@1.0.0/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","var moment = require('moment');\r\n\r\nvar addPadding = function(number) {\r\n  if (number<=999) { number = (\"00\"+number).slice(-3); }\r\n  return number;\r\n};\r\n\r\nvar checksum = function(d, n) {\r\n  d = \"\" + d;\r\n  n = \"\" + n;\r\n\r\n  // Information about checksum generation: http://www.fnrinfo.no/Teknisk/KontrollsifferSjekk.aspx\r\n  var c1 = 11 - ((3*d[0] + 7*d[1] + 6*d[2] + 1*d[3] + 8*d[4] + 9*d[5] + 4*n[0] + 5*n[1] + 2*n[2]) % 11);\r\n  if (c1 === 11){\r\n    c1 = 0;\r\n  }\r\n  if (c1 === 10){\r\n    return \"INVALID\";\r\n  }\r\n\r\n\tvar c2 = 11 - ((5*d[0] + 4*d[1] + 3*d[2] + 2*d[3] + 7*d[4] + 6*d[5] + 5*n[0] + 4*n[1] + 3*n[2] + 2*c1) % 11);\r\n  if (c2 === 11){\r\n    c2 = 0;\r\n  }\r\n  if (c2 === 10){\r\n    return \"INVALID\";\r\n  }\r\n\r\n  return \"\" + c1 + c2;\r\n};\r\n\r\nvar generate = function(dateOfBirth, sex){\r\n  var result = [];\r\n  var dateComponent = moment(dateOfBirth);\r\n\r\n  var fullYear = dateComponent.format('YYYY');\r\n  var year = dateComponent.format('YY');\r\n  var month = dateComponent.format('MM');\r\n  var day = dateComponent.format('DD');\r\n  var prefix = day + month + year;\r\n\r\n  var i;\r\n  var pnr = [];\r\n  var fnr = [];\r\n  var nextNumber = function(){\r\n    i = i-1;\r\n  }\r\n\r\n  if (sex) {\r\n    if (sex.toLowerCase()[0] === 'm'){\r\n      nextNumber = function(){\r\n        if(i % 2 === 0) i=i-1;\r\n        i=i-2;\r\n      };\r\n    } else if(sex.toLowerCase()[0] == 'f') {\r\n      nextNumber = function(){\r\n        if (i % 2 === 0) i=i-2;\r\n        i=i-1;\r\n      };\r\n    }\r\n  }\r\n\r\n  if (fullYear >= 1854 && fullYear <= 1899){\r\n    for(i = 749; i >= 500; nextNumber(i)){\r\n      pnr.push(addPadding(i));\r\n    }\r\n  }\r\n\r\n  if (fullYear >= 1900 && fullYear <= 1999){\r\n    for(i = 499; i >= 000; nextNumber(i)){\r\n      pnr.push(addPadding(i));\r\n    }\r\n  }\r\n\r\n  if (fullYear >= 1940 && fullYear <= 1999){\r\n    for(i = 999; i >= 900; nextNumber(i)){\r\n      pnr.push(addPadding(i));\r\n    }\r\n  }\r\n\r\n  if (fullYear >= 2000 && fullYear <= 2039){\r\n    for(i = 999; i >= 500; nextNumber(i)){\r\n      pnr.push(addPadding(i));\r\n    }\r\n  }\r\n\r\n  pnr.forEach(function(n){\r\n    var number = prefix + n + checksum(prefix, n);\r\n    if (number.length === 11) fnr.push(number);\r\n  });\r\n\r\n  return fnr;\r\n};\r\n\r\nmodule.exports = { generate: generate };\r"]}