Kennitala
Icelandic national ID (kennitölur) utilities for servers and clients. Now with TypeScript support!
Install with npm:
npm install kennitala
Examples
const kennitala = require('kennitala');
kennitala.isValid('3108962099');
kennitala.isValid('8281249124');
Heads up for storing in Databases
This library will validate kennitölur with -
spacers and no spacer, so remember to sanitize your kennitala before storing in a database!
This can be done with the included .sanitize
function like so:
const kennitala = require('kennitala');
kennitala.sanitize('310896-2099');
More examples
const kennitala = require('kennitala');
kennitala.info('3108962099');
{
kt: '3108962099',
valid: true,
type: 'person',
birthday: 1996-08-31T00:00:00.000Z,
birthdayReadable: 'Sat Aug 31 1996',
age: 27
}
kennitala.isPerson('3108962099');
kennitala.isPerson('601010-0890');
kennitala.isPerson(3108962099);
kennitala.isPerson('31^_^08!!96LOL20T_T99');
kennitala.isCompany('6010100890');
kennitala.isCompany('601010-0890');
kennitala.isCompany('3108962099');
kennitala.format('31089620');
kennitala.format('3108962099', '');
API documentation
kennitala.isValid(string, ?options: { allowTestDataset: false });
returns boolean
Checks if kennitala checksum is correct for either a person or company
If passed a string with non-digit characters included it removes them before validating
Allows passing optional options object to enable the test dataset
https://www.skra.is/um-okkur/frettir/frett/2020/10/13/Ny-utgafa-af-gervigognum-thjodskrar/
kennitala.info(string);
returns object with relevant information about this kennitala
{
kt: char(10),
valid: boolean,
type: enum("company", "person")
age: int,
birthday: Date object,
birthdayReadable: Human readable Date String
}
kennitala.isPerson(string, ?options: { allowTestDataset: false });
returns boolean
Checks if kennitala checksum is correct and if day of birth is between 1-31
If passed a string with non-digit characters included it removes them before validating
Allows passing optional options object to enable the test dataset
https://www.skra.is/um-okkur/frettir/frett/2020/10/13/Ny-utgafa-af-gervigognum-thjodskrar/
kennitala.isCompany(string);
returns boolean
Checks if kennitala checksum is correct and if day of birth is between 41-71
If passed a string with non-digit characters included it removes them before validating
kennitala.format(string, ?[string]);
returns string
Ensures datatype is string, then matches and removes all non-digit characters
and adds a traditional '-' spacer between 6th and 7th digit. This can be customized
with an optional 2nd parameter.
kennitala.sanitize(string);
returns string or undefined
Ensures datatype is string, then matches and removes all non-digit characters.
Does not ensure a valid kennitala, only used for sanitizing input.
kennitala.generatePerson([date]);
returns string
Takes Date object as a parameter and returns a new kennitala for a person
kennitala.generateCompany([date]);
returns string
Takes Date object as a parameter and returns a new kennitala for a company
Testing
Uses Mocha for testing. In order to execute the tests, you need to run npm install -g mocha
first. Once you've done that
you can open up a command line and point it to the root directory of the project. From there you should be able to type either npm test
or simply mocha
to run the tests.
Building
To build the project, you can type npm run dist
, which minifies the script and generates a source map, and places both in the dist/
folder.