{"_id":"@bakissation/houwiya","_rev":"4-629757197c62e626262fb0498eb8b2a4","name":"@bakissation/houwiya","dist-tags":{"latest":"1.1.0","dev":"1.1.0-alpha.1","staging":"1.1.0-beta.1"},"versions":{"1.0.0":{"name":"@bakissation/houwiya","version":"1.0.0","keywords":["algeria","identifiers","nin","nif","nis","registre-commerce","rib","iban","ccp","validation","parser","luhn","checksum","wilaya","typescript","fintech","kyc"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/houwiya@1.0.0","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/houwiya#readme","bugs":{"url":"https://github.com/bakissation/houwiya/issues"},"dist":{"shasum":"30908d115d89ab00d6c78bae530e448baadd9807","tarball":"https://registry.npmjs.org/@bakissation/houwiya/-/houwiya-1.0.0.tgz","fileCount":9,"integrity":"sha512-tCNwGOG93oy50ypbYKcoxBk4PRMyfjziVI4IrIuuY8xexNREW9XOrMVu5kqRqZi59I2/jZXgHlWFr2sZ1bKVxw==","signatures":[{"sig":"MEUCIQCX45hQDLmrwxMaNQimAFNXYut/BdjpdH6KujBByu5CCgIgXx0dQpyqB+orY8VG7Te9m7gsLco+f/O4mOucbGl4y18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113848},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"093049f9773437d137f6b8fc62e8412f04c6ff0b","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"},"repository":{"url":"git+https://github.com/bakissation/houwiya.git","type":"git"},"_npmVersion":"10.9.3","description":"Validate, parse, and extract Algerian identifiers in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS — with checksums (Luhn, mod-97), wilaya extraction and entity-type detection. Zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/houwiya_1.0.0_1779488906615_0.34462368859807446","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-alpha.1":{"name":"@bakissation/houwiya","version":"1.1.0-alpha.1","keywords":["algeria","identifiers","nin","nif","nis","registre-commerce","rib","iban","ccp","validation","parser","luhn","checksum","wilaya","typescript","fintech","kyc"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/houwiya@1.1.0-alpha.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/houwiya#readme","bugs":{"url":"https://github.com/bakissation/houwiya/issues"},"dist":{"shasum":"9cd8e8f304f8f70fda15b34cb9cb70de3af5bbe1","tarball":"https://registry.npmjs.org/@bakissation/houwiya/-/houwiya-1.1.0-alpha.1.tgz","fileCount":9,"integrity":"sha512-VUu+Etm5cb5jZxmvaIuJWAUI9d/0as/yNC13ypXGMjkqWGNXhreglJtHacJvaqDUUN3NIkDtSLJQaLcUbvKOCw==","signatures":[{"sig":"MEYCIQCGxbNFoZ12ajHAjs6YZuA0wzeWhqMibHkiaLTECPDUPQIhAKgkLuTiETOmGCVVBstNBE1w8FR4mQZ5mMYzYGCx8rt1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fhouwiya@1.1.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117755},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c16b36950fe55dc72dd1c651a0543607a461e3ba","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e489624-82eb-44dc-a20c-bdb6524b193e"}},"repository":{"url":"git+https://github.com/bakissation/houwiya.git","type":"git"},"_npmVersion":"11.15.0","description":"Validate, parse, and extract Algerian identifiers in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS — with checksums (Luhn, mod-97), wilaya extraction and entity-type detection. Zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/houwiya_1.1.0-alpha.1_1779489385086_0.8946209684382773","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.1":{"name":"@bakissation/houwiya","version":"1.1.0-beta.1","keywords":["algeria","identifiers","nin","nif","nis","registre-commerce","rib","iban","ccp","validation","parser","luhn","checksum","wilaya","typescript","fintech","kyc"],"author":{"url":"@bakissation","name":"Abdelbaki Berkati"},"license":"MIT","_id":"@bakissation/houwiya@1.1.0-beta.1","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"homepage":"https://github.com/bakissation/houwiya#readme","bugs":{"url":"https://github.com/bakissation/houwiya/issues"},"dist":{"shasum":"1eb33bfc04ebdede8c84697890119093b9234ed0","tarball":"https://registry.npmjs.org/@bakissation/houwiya/-/houwiya-1.1.0-beta.1.tgz","fileCount":9,"integrity":"sha512-uaL0bFSQ4aSscmLkbGMEDbM+lX4RS8cb3KYf+W7MYJy/eEeRyB/cjNxy1XmRd4YhOKcqPptfT2V6p+Ma4pbDbg==","signatures":[{"sig":"MEYCIQD4rERVm1dD4upu47I6V7ipZu2a06HT2Ztk7bw7Dg8WsAIhAKfSivwPopquh4mzAKyosL6KWnpi0EczPzQw0VTjXu80","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fhouwiya@1.1.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117754},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"91d4d950f3e4d3efcc09d2355c802f72c7475979","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e489624-82eb-44dc-a20c-bdb6524b193e"}},"repository":{"url":"git+https://github.com/bakissation/houwiya.git","type":"git"},"_npmVersion":"11.15.0","description":"Validate, parse, and extract Algerian identifiers in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS — with checksums (Luhn, mod-97), wilaya extraction and entity-type detection. Zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.1","eslint":"^9.18.0","vitest":"^1.2.0","@eslint/js":"^9.18.0","typescript":"^5.3.3","@types/node":"^20.10.0","semantic-release":"^25.0.3","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/houwiya_1.1.0-beta.1_1779489432886_0.6152258972929288","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bakissation/houwiya","version":"1.1.0","description":"Validate, parse, and extract Algerian identifiers in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS — with checksums (Luhn, mod-97), wilaya extraction and entity-type detection. Zero dependencies.","author":{"name":"Abdelbaki Berkati","url":"@bakissation"},"license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"eslint .","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"devDependencies":{"@eslint/js":"^9.18.0","@types/node":"^20.10.0","eslint":"^9.18.0","semantic-release":"^25.0.3","tsup":"^8.0.1","typescript":"^5.3.3","typescript-eslint":"^8.20.0","vitest":"^1.2.0"},"keywords":["algeria","identifiers","nin","nif","nis","registre-commerce","rib","iban","ccp","validation","parser","luhn","checksum","wilaya","typescript","fintech","kyc"],"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/bakissation/houwiya.git"},"bugs":{"url":"https://github.com/bakissation/houwiya/issues"},"homepage":"https://github.com/bakissation/houwiya#readme","gitHead":"807391ff9ca86678b4b603d7f0b420898f25d052","_id":"@bakissation/houwiya@1.1.0","_nodeVersion":"24.15.0","_npmVersion":"11.15.0","dist":{"integrity":"sha512-0CGWC//2xGdEHf2c3kD5jnhMIAYtyWttc3V55WGPPnAzwgN7EBgTcZ1qql4ltdL0GMrPYM1ZwS0S5dPmoTPdhw==","shasum":"638e9996cde10b68bfd4711a7b95e7addce2fcc4","tarball":"https://registry.npmjs.org/@bakissation/houwiya/-/houwiya-1.1.0.tgz","fileCount":9,"unpackedSize":117747,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bakissation%2fhouwiya@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvH/raV51NX43Mo/u4y4CpaHNmzq1ThE4nRedu4k9OSQIgNYBqZr9dpeHuNimEgFgOtixwIUEShCoJf7gYvaYKESI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2e489624-82eb-44dc-a20c-bdb6524b193e"}},"directories":{},"maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/houwiya_1.1.0_1779489482613_0.26152453270882625"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T22:28:26.517Z","modified":"2026-05-22T22:38:03.049Z","1.0.0":"2026-05-22T22:28:26.772Z","1.1.0-alpha.1":"2026-05-22T22:36:25.230Z","1.1.0-beta.1":"2026-05-22T22:37:13.032Z","1.1.0":"2026-05-22T22:38:02.775Z"},"bugs":{"url":"https://github.com/bakissation/houwiya/issues"},"author":{"name":"Abdelbaki Berkati","url":"@bakissation"},"license":"MIT","homepage":"https://github.com/bakissation/houwiya#readme","keywords":["algeria","identifiers","nin","nif","nis","registre-commerce","rib","iban","ccp","validation","parser","luhn","checksum","wilaya","typescript","fintech","kyc"],"repository":{"type":"git","url":"git+https://github.com/bakissation/houwiya.git"},"description":"Validate, parse, and extract Algerian identifiers in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS — with checksums (Luhn, mod-97), wilaya extraction and entity-type detection. Zero dependencies.","maintainers":[{"name":"bakissation","email":"abdelbaki.berkati@gmail.com"}],"readme":"# @bakissation/houwiya\n\n**Validate, parse, and extract Algerian identifiers** in TypeScript — NIN, NIF, NIS, RC, RIB/CCP/IBAN, CNAS. Don't just check validity: pull out exactly the part you need (the wilaya of an RC, the sex from a NIN, the account from a RIB). **Zero runtime dependencies.**\n\n[![npm](https://img.shields.io/npm/v/@bakissation/houwiya?label=npm&color=cb3837)](https://www.npmjs.com/package/@bakissation/houwiya)\n[![CI](https://github.com/bakissation/houwiya/actions/workflows/ci.yml/badge.svg)](https://github.com/bakissation/houwiya/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/@bakissation/houwiya?color=blue)](./LICENSE)\n\n- 🔎 **Parse, don't just validate** — every `parse*` returns a typed object you can read one field from.\n- ✅ **Real checksums** — NIN (Luhn), RIB / CCP / IBAN (mod-97). Structural validation for the rest.\n- 🧩 **Semantic extraction** — wilaya (NIF/NIS/RC/CNAS), entity type (RC `A/B`), sex + birth year (NIN), bank/agency/account (RIB).\n- 🇩🇿 **Algeria-aware** — 69 wilayas (2026 reform), Latin **and** Arabic input (`أ/ب`, Arabic-Indic digits), the CCP↔RIB \"BaridiMob\" bridge.\n- 🧱 **Strict TypeScript, ESM + CommonJS, zero dependencies.**\n\n## Install\n\n```bash\nnpm install @bakissation/houwiya\n```\n\nRequires **Node.js ≥ 18**.\n\n## Quick start\n\n```typescript\nimport { parseRc, parseNin, parseRib, isValidIban } from '@bakissation/houwiya';\n\n// Extract just the part you need\nparseRc('24B1282577').wilaya;       // { code: '16', name: 'Alger' } (when present)\nparseRc('24B1282577').entityType;   // 'morale'   (A/أ → physique, B/ب → morale)\nparseNin('119881234056700007').sex; // 'female'   (+ birthYearDigits, communeCode…) — Luhn-checked\nparseRib('00100023456...').account; // decomposed; mod-97 verified\nisValidIban('DZ58 0002 1000 ...');  // ISO mod-97\n```\n\nLenient by design: even when `valid` is `false`, any parts that could be extracted are still returned.\n\n## Supported identifiers\n\n| Identifier | Function | Checksum | Extracts |\n|---|---|---|---|\n| **NIN** (national ID) | `parseNin` | Luhn | sex, birth year, commune, act sequence |\n| **NIF** (tax) | `parseNif` | — | 15-digit core, establishment suffix |\n| **NIS** (statistical) | `parseNis` | — | wilaya, commune, secondary suffix |\n| **RC** (trade register) | `parseRc` | — | entity type (A/B/أ/ب), year, sequence, wilaya |\n| **RIB** (bank) | `parseRib` | mod-97 | bank, agency, account, key |\n| **CCP / RIP** (postal) | `parseCcp` | mod-97 | account, key, bridged RIB |\n| **IBAN** (DZ) | `parseIban` | ISO mod-97 | country, check, underlying RIB |\n| **CNAS** (employer) | `parseCnasEmployer` | — | wilaya, sequence |\n\nPlus `WILAYAS` / `lookupWilaya` (the 69 provinces) and the `mod97` / `luhnValid` / `luhnCheckDigit` / `computeRibKey` helpers.\n\n## Documentation\n\nFull docs in **[`docs/`](./docs/)**: [getting started](./docs/getting-started.md) · [API reference](./docs/api-reference.md) · [identifiers reference](./docs/identifiers.md) (formats, checksums, legal basis) · [architecture](./docs/architecture.md).\n\n## A note on accuracy\n\nWhere the law fixes a format (e.g. NIS = 15 digits, décret 97-396) the library enforces it. Where it doesn't (e.g. the RC digit layout, which is CNRC convention) the library parses **leniently** and never invents a checksum. See [docs/identifiers.md](./docs/identifiers.md) for the per-identifier legal basis and caveats. These values are PII — don't log them in clear.\n\n## Contributing\n\nIssues and PRs welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md) and the [Code of Conduct](./CODE_OF_CONDUCT.md). Releases are automated from [Conventional Commits](https://www.conventionalcommits.org/); don't bump the version or edit the changelog by hand.\n\n## Credits\n\nBuilt and maintained by **Abdelbaki Berkati** — [berkati.xyz](https://berkati.xyz) · [@bakissation](https://github.com/bakissation).\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}