Nature's Powerful Meme

    nusantara-valid

    0.4.0 • Public • Published

    npm version Coverage Status JS gzip size Extended JS gzip size Code license

    Nusantara Valid logo

    Nusantara Valid

    Nusantara Valid is a data validator to validate any Indonesian specific civil data such as nik, nip, and many more.

    Baca petunjuk berbahasa Indonesia

    Table of contents

    What it can do?

    • ATM Number (Nomor Rekening)
    • Cellular Number / Mobile Number
    • Credit Card Number
    • E-Mail
    • NIK (Nomor Induk Kependudukan)
    • NIP (Nomor Induk Pegawai Negeri Sipil)
    • NISN (Nomor Induk Siswa Nasional)
    • NPWP (Nomor Pokok Wajib Pajak)
    • TNKB (Tanda Nomor Kendaraan Bermotor)
    • Telephon Number
    • ZIP Code (Kode Pos)

    Getting started

    There are some ways to import the package

    What's included

    The package includes multiple formats to support different build process.

    • /cjs/nusantara-valid.js - CommonJS module.
    • /esm/nusantara-valid.js - ES module.
    • /umd/nusantara-valid.js - UMD module. Can be used in browser with script tag

    We provide compiled JS (nusantara-valid.js), as well as compiled and minified JS (nusantara-valid.min.js) in each module. Extended JS files (nusantara-valid.extended.js and minified nusantara-valid.extended.min.js) include additional PROVINCE_DATA such as regencies and districts also some additional verification process.

    Folder structure

    nusantara-valid/
    └── dist/
        ├── cjs/
        │   ├── nusantara-valid.extended.js
        │   ├── nusantara-valid.extended.js.map
        │   ├── nusantara-valid.extended.min.js
        │   ├── nusantara-valid.extended.min.js.map
        │   ├── nusantara-valid.js
        │   ├── nusantara-valid.js.map
        │   ├── nusantara-valid.min.js
        │   └── nusantara-valid.min.js.map
        ├── esm/
        │   ├── nusantara-valid.extended.js
        │   ├── nusantara-valid.extended.js.map
        │   ├── nusantara-valid.extended.min.js
        │   ├── nusantara-valid.extended.min.js.map
        │   ├── nusantara-valid.js
        │   ├── nusantara-valid.js.map
        │   ├── nusantara-valid.min.js
        │   └── nusantara-valid.min.js.map
        └── umd/
            ├── nusantara-valid.extended.js
            ├── nusantara-valid.extended.js.map
            ├── nusantara-valid.extended.min.js
            ├── nusantara-valid.extended.min.js.map
            ├── nusantara-valid.js
            ├── nusantara-valid.js.map
            ├── nusantara-valid.min.js
            └── nusantara-valid.min.js.map
    

    Usage

    CommonJS module way (require())

    const NusantaraValid = require('nusantara-valid')

    ES module way (import)

    import NusantaraValid from './node_modules/nusantara-valid/dist/esm/nusantara-valid.js'

    Good-old-browser-way (<script></script>)

    Local

    <script src="../dist/umd/nusantara-valid.min.js"></script>

    CDN

    <script src="https://cdn.jsdelivr.net/npm/nusantara-valid@0.4.0/dist/umd/nusantara-valid.min.js"></script>

    API

    ATM Number (Nomor Rekening)
    isValidATMNumber(atm: string);
    
    isValidATMNumberWithComparison(atm: string, bankKey: string);
    Result:
    isValidATMNumber('87.800.000.00');
    // true
    
    isValidATMNumberWithComparison('1230005123000', 'MDRK');
    // true
    Bank
    getDataBank(bankKey: string);
    
    getDataBanks();

    Result:

    getDataBank('BCAK');
    // { key: 'BCAK', name: 'Bank Central Asia' }
    
    getDataBanks();
    // [
    //     { key: 'BCAK', name: 'Bank Central Asia' },
    //     { key: 'BCAS', name: 'Bank Central Asia Syariah' },
    //     { key: 'BNIK', name: 'Bank Negara Indonesia' },
    //     ...
    // ]
    Cellular Number (Nomor HP)
    isValidCellularNumber(cel: string);
    
    isValidCellularNumberWithComparison(cel: string, providerKey: string);
    
    getDataCellularNumber(cel: string);
    
    formatCellularNumber(cel: string, int:boolean = false)

    Result:

    isValidCellularNumber('081212341234');
    // true
    
    isValidCellularNumberWithComparison('081212341234', 'TELKOMSEL');
    // true
    
    getDataCellularNumber('085612341234');
    // {
    //     "number": "0856-1234-1234",
    //     "provider": {
    //         "key": "INDOSAT",
    //         "name": "Indosat Ooredoo"
    //     }
    // }
    
    formatCellularNumber('+6281812341234');
    // '0818-1234-1234'
    formatCellularNumber('085612341234', true);
    // '+62856-1234-1234'
    Cellular Provider
    getDataCellularProvider(key: string);
    
    getDataCellularProviders();

    Result:

    getDataCellularProvider('TELKOMSEL');
    // { "key": "TELKOMSEL", "name": "Telkomsel" }
    
    getDataCellularProviders();
    // [
    //     { key: 'TELKOMSEL', name: 'Telkomsel' },
    //     { key: 'INDOSAT', name: 'Indosat Ooredoo' },
    //     { key: 'XL', name: 'XL Axiata' },
    //     ...
    // ]
    Credit Card Number
    isValidCCNumber(cc: string);
    
    formatCCNumber(cc: string);

    Result:

    isValidCCNumber('4000123456789010');
    // true
    isValidCCNumber('5000 1234 5678 9010');
    // true
    
    formatCCNumber('4000123456789010');
    // '4000 1234 5678 9010'
    formatCCNumber('5000 1234 5678 9010');
    // '5000 1234 5678 9010'
    E-Mail
    isValidEmail(email: string);

    Result:

    isValidEmail('myawesom-email@domain.tld');
    // true
    Nomor Induk Kependudukan (NIK)
    isValidNIK(nik: string);
    
    isValidNIKWithComparison(nik: string, comparison: { provinceKy?: string, birthday?: string });
    
    getDataNIK(nik: string);

    Result:

    isValidNIK('3101011212930001');
    // true
    
    isValidNIKWithComparison('3101011212930001', { provinceKey: '31', birthday: '1993-12-12' });
    // true
    
    getDataNIK('3101011212930001');
    // {
    //     nik: '3101011212930001',
    //     birthday: 2006-12-20T00:00:00.000Z,
    //     sex: 'Male',
    //     province: {
    //         key: '31',
    //         name: 'Jakarta'
    //     }
    // }
    Nomor Induk Pegawai Negeri Sipil (NIP)
    isValidNIP(nip: string);

    Result:

    isValidNIP('198512262000051001');
    // true
    Nomor Induk Siswa Nasional (NISN)
    isValidNISN(nisn: string);

    Result:

    isValidNISN('0061230001');
    // true
    Nomor Pokok Wajib Pajak (NPWP)
    isValidNPWP(npwp: string);
    
    formatNPWP(npwp: string);

    Result:

    isValidNPWP('09.123.123.1-123.123');
    // true
    isValidNPWP('091231231123123');
    // true
    
    formatNPWP('091231231123123');
    // '09.123.123.1-123.123'
    Province
    getDataProvince(key: string);
    
    getDataProvinces();

    Result:

    getDataProvince('34');
    // { key: '34', name: 'Yogyakarta' }
    
    getDataProvinces();
    // [
    //     { bpsCode: '11', name: 'Aceh' },
    //     { bpsCode: '12', name: 'Sumatra Utara' },
    //     { bpsCode: '13', name: 'Sumatra Barat' },
    //     ...
    // ]
    Tanda Nomor Kendaraan Bermotor (TNKB)
    isValidTNKB(tnkb: string);
    
    getDataTNKB(tnkb: string);

    Result:

    isValidTNKB('AB1234XYZ');
    // true
    
    getDataTNKB('AB1234XYZ');
    // {
    //     areaCode: 'AB',
    //     index: 1234,
    //     detailedAreaCode: 'XYZ',
    //     province: {
    //         key: '34',
    //         name: 'Yogyakarta'
    //     }
    // }
    Telephone Number (Nomor Telefon)
    isValidTelephoneNumber(tel: string);
    
    getDataTelephoneNumber(cel: string);
    
    formatTelephoneNumber(tel: string, int:boolean = false)

    Result:

    isValidTelephoneNumber('0274123123');
    // true
    
    getDataTelephoneNumber('0274123123');
    // {
    //     "number": "0274-123123",
    //     "origin": {
    //         "key": "34",
    //         "name": "Yogyakarta"
    //     }
    // }
    
    formatTelephoneNumber('0274123123');
    // '0274-123123'
    formatTelephoneNumber('0274123123', true);
    // '+62274-123123'
    ZIP Code (Kode POS)
    isValidZIP(zip: string | number);
    
    isValidZIPWithComparison(zip: string | number, comparison: { provinceKy?: string });

    Result:

    isValidZIP('55264');
    // true
    isValidZIP(55264);
    // true
    
    isValidZIPWithComparison('55264', { provinceKey: '34' });
    // true
    isValidZIPWithComparison(55264, { provinceKey: '34' });
    // true

    API (Extended Only)

    Province
    getDataRegenciesInProvince(provinceBPSCode: string);
    
    getDataDistrictsInRegency(regencyBPSCode: string);

    Result:

    getDataRegenciesInProvince('31'); // Regencies and City (Kabupaten dan Kota) in Jakarta
    // [
    //   { bpsCode: '31.01', name: 'Kepulauan Seribu' },
    //   { bpsCode: '31.71', name: 'Jakarta Pusat' },
    //   { bpsCode: '31.72', name: 'Jakarta Utara' },
    //   ...
    // ]
    
    getDataDistrictsInRegency('31.71'); // Districts (Kecamatan) in Jakarta Pusat
    // [
    //   { name: 'Gambir', bpsCode: '31.71.01' },
    //   { name: 'Sawah Besar', bpsCode: '31.71.02' },
    //   { name: 'Kemayoran', bpsCode: '31.71.03' },
    //   ...
    // ]

    License

    Copyright (c) 2020 - Fajar Setya Budi.

    Nusantara Valid released under the MIT License.

    Install

    npm i nusantara-valid

    DownloadsWeekly Downloads

    79

    Version

    0.4.0

    License

    MIT

    Unpacked Size

    6.15 MB

    Total Files

    70

    Last publish

    Collaborators

    • agraris-o
    • magicjar