Comparing version 1.2.6 to 2.0.0-beta.0
{ | ||
"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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
38772
365
2