Socket
Socket
Sign inDemoInstall

kennitala

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kennitala - npm Package Compare versions

Comparing version 1.2.6 to 2.0.0-beta.0

2

bower.json
{
"name": "kennitala",
"main": "dist/kennitala.min.js",
"version": "1.2.6",
"version": "2.0.0",
"homepage": "https://github.com/HermannBjorgvin/Kennitala",

@@ -6,0 +6,0 @@ "authors": [

@@ -6,3 +6,3 @@ declare module "kennitala" {

export function clean(kennitala: string | number): string;
export function sanitize(kennitala: string | number): string;
export function format(kennitala: string | number, spacer?: string): string;

@@ -9,0 +9,0 @@

@@ -1,2 +0,2 @@

!function(r,n){!function(){function r(r,n){var t=i(r);if(10!==t.length)return!1;if(n&&!n(t))return!1;var e=t.split("").reduce(function(r,n,t){return r+n*s[t]},0),a=11-e%11,u=parseInt(t.substr(8,1),0);return 11==a&&0===u||a===u}function n(r){var n=parseInt(r.substr(0,2),10),t=parseInt(r.substr(2,2),10);return n>0&&n<=31&&t>0&&t<=12}function t(r){var n=parseInt(r.substr(0,2),10),t=parseInt(r.substr(2,2),10);return n>40&&n<=71&&t>0&&t<=12}function e(r,t){function e(r){var t=""+Math.floor(10*Math.random()),a=""+Math.floor(10*Math.random());n(r)&&(t=""+Math.floor(8*Math.random()+2));for(var u=r+t+a,i=0,o=0;o<8;o++)i+=u[o]*s[o];return i=11-i%11,i=11==i?0:i,10==i?e(r):t+a+i}var a="",u=r.getDate();u<10&&(u="0"+u),u=""+u,u=t(u),a+=u;var i=r.getMonth();i+=1,i<10&&(i="0"+i),i=""+i,a+=i;var o=r.getFullYear();return o=""+o,o=o[2]+o[3],a+=o,a+=e(a),o=r.getFullYear(),o=""+o,a+=o[1]}function a(r){return r}function u(r){return""+(parseInt(r,10)+40)}function i(r){var n=""+r;return n=n.replace(/(\D)+/g,"")}var o={};o.isValid=function(e){var a=r(e,n),u=r(e,t);return a||u},o.isPerson=function(t){return r(t,n)},o.isCompany=function(n){return r(n,t)},o.clean=function(r){return i(r)},o.format=function(r,n){var t=i(r);return n=void 0!==n?n:"-",t=t.substring(0,6)+n+t.substring(6,10)},o.generatePerson=function(r){return e(r,a)},o.generateCompany=function(r){return e(r,u)},o.info=function(e){var a={};a.kt=i(e);var u=r(e,n),o=r(e,t);if(u||o){a.valid=!0,a.type=!0===u?"person":"company";var s=i(e),f=s.substring(0,2);f>31&&(f-=40);var c=s.substring(2,4),l=(0==s.substring(9,10)?20:19)+s.substring(4,6),v=new Date(l,c-1,f);a.birthday=v,a.birthdayReadable=v.toDateString();var d=new Date,g=d.getFullYear(),p=new Date(v);p.setFullYear(g);var b=g-v.getFullYear();return p>d&&b--,b<0?b+=100:b=b<1?(d.getTime()-v.getTime())/1e3/60/60/24/365.2422:b,a.age=b,a}return a.valid=!1,a};var s=[3,2,7,6,5,4,3,2,0,0];"undefined"!=typeof module&&module.exports?module.exports=o:"function"==typeof define&&define.amd?define(o):window&&(window.kennitala=o)}(),n[""]=r}({},function(){return this}());
!function(){function n(n,r){var t=s(n);if(10!==t.length)return!1;if(r&&!r(t))return!1;var e=t.split("").reduce(function(n,r,t){return n+r*f[t]},0),a=11-e%11,u=parseInt(t.substring(8,9),0);return 11==a&&0===u||a===u}function r(n){var r=s(n),t=parseInt(r.substring(0,2),10),e=parseInt(r.substring(2,4),10),a=parseInt(r.substring(4,6),10),u=parseInt(r.substring(9,10),10),i="";return t>40&&t<=71&&(t-=40),0===u?i="20":9===u?i="19":8===u&&(i="18"),!isNaN(new Date(i+a+"-"+e+"-"+t).getTime())}function t(n){var r=s(n),t=parseInt(r.substring(0,2),10),e=parseInt(r.substring(6,8),10);return t>0&&t<=31&&e>=20&&e<=99}function e(n){var r=s(n),t=parseInt(r.substring(0,2),10);return t>40&&t<=71}function a(n,r){function e(n){var r=""+Math.floor(10*Math.random()),a=""+Math.floor(10*Math.random());t(n)&&(r=""+Math.floor(8*Math.random()+2));for(var u=n+r+a,i=0,s=0;s<8;s++)i+=u[s]*f[s];return i=11-i%11,i=11==i?0:i,10==i?e(n):r+a+i}var a="",u=n.getDate();u<10&&(u="0"+u),u=""+u,u=r(u),a+=u;var i=n.getMonth();i+=1,i<10&&(i="0"+i),i=""+i,a+=i;var s=n.getFullYear();return s=""+s,s=s[2]+s[3],a+=s,a+=e(a),s=n.getFullYear(),s=""+s,a+=s[1]}function u(n){return n}function i(n){return""+(parseInt(n,10)+40)}function s(n){var r=""+n;return r=r.replace(/(\D)+/g,"")}var o={};o.isValid=function(a){var u=s(a);if(10===u.length&&("8"===u.substring(0,1)||"9"===u.substring(0,1)))return!0;var i=n(a,t),o=n(a,e);return r(a)&&(i||o)},o.isPerson=function(e){return r(e)&&n(e,t)},o.isCompany=function(t){return r(t)&&n(t,e)},o.isTemporary=function(n){var r=s(n);return 10===r.length&&("8"===r.substring(0,1)||"9"===r.substring(0,1))},o.sanitize=function(n){return s(n)},o.format=function(n,r){var t=s(n);return r=void 0!==r?r:"-",t=t.substring(0,6)+r+t.substring(6,10)},o.generatePerson=function(n){return a(n,u)},o.generateCompany=function(n){return a(n,i)},o.info=function(r){var a={};a.kt=s(r);var u=n(r,t),i=n(r,e);if(u||i){a.valid=!0,a.type=!0===u?"person":"company";var o=s(r),f=o.substring(0,2);f>31&&(f-=40);var g=o.substring(2,4),l=(0==o.substring(9,10)?20:19)+o.substring(4,6),v=new Date(l,g-1,f);a.birthday=v,a.birthdayReadable=v.toDateString();var c=new Date,d=c.getFullYear(),b=new Date(v);b.setFullYear(d);var p=d-v.getFullYear();return b>c&&p--,p<0?p+=100:p=p<1?(c.getTime()-v.getTime())/1e3/60/60/24/365.2422:p,a.age=p,a}return a.valid=!1,a};var f=[3,2,7,6,5,4,3,2,0,0];"undefined"!=typeof module&&module.exports?module.exports=o:"function"==typeof define&&define.amd?define(o):window&&(window.kennitala=o)}();
//# sourceMappingURL=kennitala.min.js.map

@@ -9,17 +9,37 @@ (function(){

kennitala.isValid = function(kennitala) {
// Adds support for temporary KT
var kt = formatKennitala(kennitala);
if (kt.length === 10 && (kt.substring(0, 1) === '8' || kt.substring(0, 1) === '9')) {
return true;
}
var person = evaluate(kennitala, isPerson);
var company = evaluate(kennitala, isCompany);
var dateValid = isValidDate(kennitala)
return (person || company);
return dateValid && (person || company);
}
kennitala.isPerson = function (kennitala) {
return evaluate(kennitala, isPerson);
kennitala.isPerson = function(kennitala) {
var dateValid = isValidDate(kennitala)
return dateValid && evaluate(kennitala, isPerson);
};
kennitala.isCompany = function (kennitala) {
return evaluate(kennitala, isCompany);
kennitala.isCompany = function(kennitala) {
var dateValid = isValidDate(kennitala)
return dateValid && evaluate(kennitala, isCompany);
};
kennitala.clean = function (kennitala) {
kennitala.isTemporary = function(kennitala) {
var kt = formatKennitala(kennitala)
if (kt.length === 10 && (kt.substring(0, 1) === '8' || kt.substring(0, 1) === '9')) {
return true;
} else {
return false;
}
}
kennitala.sanitize = function (kennitala) {
return formatKennitala(kennitala);

@@ -145,3 +165,3 @@ };

var remainder = 11 - (sum % 11);
var secretNr = parseInt(kt.substr(8, 1), 0);
var secretNr = parseInt(kt.substring(8, 9), 0);

@@ -151,16 +171,45 @@ return (remainder == 11 && secretNr === 0) || remainder === secretNr;

// Checks if date is valid. This function could probably be simplified.
function isValidDate(kennitala) {
var kt = formatKennitala(kennitala)
var d = parseInt(kt.substring(0, 2), 10);
var m = parseInt(kt.substring(2, 4), 10);
var y = parseInt(kt.substring(4, 6), 10);
var c = parseInt(kt.substring(9, 10), 10);
var yPre = ""
// For company kt we remove 40 from day
if (d > 40 && d <= 71) {
d = d - 40;
}
if (c === 0) {
yPre = "20"
} else if (c === 9) {
yPre = "19"
} else if (c === 8) {
yPre = "18"
}
return !isNaN(new Date(yPre+y+'-'+m+'-'+d).getTime())
}
// People have first two characters between 1-31
function isPerson(kt) {
var d = parseInt(kt.substr(0, 2), 10);
var m = parseInt(kt.substr(2, 2), 10);
function isPerson(kennitala) {
var kt = formatKennitala(kennitala)
var d = parseInt(kt.substring(0, 2), 10);
return d > 0 && d <= 31 && m > 0 && m <= 12;
// 7th and 8th characters for persons should be between incrementing from 20-99
var inc = parseInt(kt.substring(6, 8), 10);
return d > 0 && d <= 31 && inc >= 20 && inc <= 99;
}
// Companies have first two characters between 41-71
function isCompany(kt) {
var d = parseInt(kt.substr(0, 2), 10);
var m = parseInt(kt.substr(2, 2), 10);
function isCompany(kennitala) {
var kt = formatKennitala(kennitala)
var d = parseInt(kt.substring(0, 2), 10);
return d > 40 && d <= 71 && m > 0 && m <= 12;
return d > 40 && d <= 71;
}

@@ -167,0 +216,0 @@

{
"name": "kennitala",
"version": "1.2.6",
"version": "2.0.0-beta.0",
"description": "Icelandic social security number (kennitölur) utilities for servers and clients",

@@ -15,3 +15,3 @@ "main": "dist/kennitala.min.js",

"test": "node_modules/.bin/mocha",
"uglify": "node_modules/.bin/uglifyjs kennitala.js --wrap --compress --mangle --source-map dist/kennitala.min.js.map --source-map-url kennitala.min.js.map --output dist/kennitala.min.js",
"uglify": "node_modules/.bin/uglifyjs kennitala.js --compress --mangle --source-map dist/kennitala.min.js.map --source-map-url kennitala.min.js.map --output dist/kennitala.min.js",
"dist": "npm test && npm run uglify"

@@ -18,0 +18,0 @@ },

@@ -35,13 +35,28 @@ var kennitala = require('../kennitala.js');

describe("#clean", function () {
describe("#isTemporary", function () {
it("should validate temporary ids", function () {
kennitala.isTemporary('8241251291').should.equal(true);
kennitala.isTemporary('902412-2041').should.equal(true);
kennitala.isValid('8241251291').should.equal(true);
kennitala.isValid('902412-2041').should.equal(true);
kennitala.isValid(9591601299).should.equal(true);
kennitala.isTemporary(9591601299).should.equal(true);
})
it("should not validate invalid ids", function () {
kennitala.isTemporary('0925120590').should.equal(false);
});
});
describe("#sanitize inputs", function () {
it("should remove invalid characters in kennitölur", function () { // ég bara gat ekki skrifað kennitala-s einu sinni í viðbót >_<
kennitala.clean('310896DIRTYSSID2099').should.equal('3108962099');
kennitala.sanitize('310896DIRTYSSID2099').should.equal('3108962099');
kennitala.clean('6010sfa100890').should.equal('6010100890');
kennitala.sanitize('6010sfa100890').should.equal('6010100890');
});
it("should convert kennitölur of type int to string", function () {
kennitala.clean(3108962099).should.be.a('string').and.equal('3108962099');
kennitala.sanitize(3108962099).should.be.a('string').and.equal('3108962099');
});
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc