srid
Version:
A library for generating secure shared, traceable, and country-aware IDs for users, wallets, and transactions.
103 lines (65 loc) β’ 2.61 kB
Markdown
# SRID β Shared Root Identifier Library
[](https://www.npmjs.com/package/srid)
[](LICENSE)
`SRID` is a library that provides a simple and consistent way to generate **linked, traceable, and country-aware unique IDs** for users, wallets, and transactions. Ideal for remittance platforms, fintech products, and audit-oriented systems.
## π Why SRID?
SRID establishes a common root identifier that ties together all related entities (user, wallet, transactions) in your system. Itβs lightweight, deterministic, and designed for traceability.
## β¨ Features
- Shared Root Identifier (SRID) generation
- Country code + date + hash-based format
- Linked User ID, Wallet ID, and Transaction ID
- Sequential transaction ID suffixes
- Lightweight, zero-dependency
## π¦ Installation
```bash
npm install srid
```
## π Usage
```ts
import SRID from 'srid';
const srid = new SRID('KE');
console.log(srid.getSharedId()); // e.g., KE250326-A7K2Z9
console.log(srid.generateUserId()); // e.g., USR-KE250326-A7K2Z9
console.log(srid.generateWalletId()); // e.g., WLT-KE250326-A7K2Z9
console.log(srid.generateTransactionId()); // e.g., TXN-KE250326-A7K2Z9-001
console.log(srid.generateTransactionId()); // e.g., TXN-KE250326-A7K2Z9-002
```
## π ID Structure
| ID Type | Format Example |
|------------------|-------------------------------------|
| Shared ID | `KE250326-A7K2Z9` |
| User ID | `USR-KE250326-A7K2Z9` |
| Wallet ID | `WLT-KE250326-A7K2Z9` |
| Transaction ID | `TXN-KE250326-A7K2Z9-001` |
> Format: `[Prefix]-[CountryCode][YYMMDD]-[HashChunk](-Sequence)`
## π§ͺ Running Tests
```bash
npm test
```
Tests are written using [Jest](https://jestjs.io/).
## π οΈ API Reference
### `new SRID(countryCode: string)`
Creates a new SRID instance using a country code (e.g., "KE").
### `getSharedId(): string`
Returns the core shared ID (used in all other IDs).
### `generateUserId(): string`
Returns a user ID with the shared root.
### `generateWalletId(): string`
Returns a wallet ID tied to the same root.
### `generateTransactionId(): string`
Returns a unique transaction ID with a sequential suffix.
## π‘ Use Cases
- Cross-border remittance and wallet platforms
- Systems that require linked IDs across entities
- Auditable financial record management
## π License
MIT Β© 2025