Skip to content

borko-rajkovic/ts-jmbg

Repository files navigation

TS-JMBG

npm version GitHub npm Travis (.org) Coveralls github

TS-JMBG - Library for validating, decoding and generating random JMBG written in Typescript.

It is heavily based on two existing packages:

https://www.npmjs.com/package/jmbg

https://www.npmjs.com/package/oiblib

JMBG is personal ID number given to all citizens of Yugoslavia from 1976. It's still in use in all countries that consisted Yugoslavia.

More about JMBG here:

https://sr.wikipedia.org/sr-el/Јединствени_матични_број_грађанина

NPM

Installation

npm

npm i ts-jmbg --save

yarn

yarn add ts-jmbg

Examples

Is Valid

import { isValidJMBG } from 'ts-jmbg';

// Valid JMBG
console.log(isValidJMBG('0101990360007')); // true

// Invalid JMBG
console.log(isValidJMBG('0101001890123')); // false

Validate

import { validateJMBG } from 'ts-jmbg';

// Valid JMBG
const validJMBG = validateJMBG('0101990360007');

console.log(validJMBG.valid); // true

// Invalid JMBG
const invalidJMBG = validateJMBG('0101001890123');

console.log(invalidJMBG.valid); // false
console.log(invalidJMBG.reason); // INVALID_CONTROL_NUMBER

Generate Random JMBG

import { generateRandomJMBG, isValidJMBG } from 'ts-jmbg';

// Generate new valid JMBG
const newJMBG = generateRandomJMBG();

console.log(`Random JMBG: ${newJMBG}, is valid: ${isValidJMBG(newJMBG)}`);

Decode JMBG

import { decodeJMBG } from 'ts-jmbg';

try {
  const decodedJMBG = decodeJMBG('0101001250028');

  // {
  //   day: 1,
  //   gender: 'Male',
  //   month: 1,
  //   place: 'Cetinje',
  //   region: 'Crna Gora',
  //   year: 2001,
  // }
} catch (error) {
  //  invalid JMBG
}

Related

Todo

  • validateJMBG should check if region is correct. (RR)
  • Random JMBG generator - better random distribution
  • Pass params to random JBMG generator to respect predefined options like (DD, MM, YYY, RR, BBB, K)

Thanks

Contributing

  • Fork this repo
  • Clone your repo
  • Install dependencies
  • Checkout a feature branch
  • Feel free to add your features
  • Make sure your features are fully tested
  • Open a pull request, and enjoy <3