@zakkster/lite-id
v1.0.1
Published
Low-GC deterministic ID generator. A faster, seedable alternative to nanoid with shared buffer reuse.
Maintainers
Readme
@zakkster/lite-id
Low-GC, deterministic ID generator. A faster, seedable alternative to nanoid.
Why lite-id?
| Feature | lite-id | nanoid | uuid | cuid2 | |---|---|---|---|---| | Deterministic mode | Yes (seeded) | No | No | No | | Shared buffer reuse | Yes | No | No | No | | Crypto-secure mode | Yes | Yes | Yes | Yes | | SSR fallback | Yes | Partial | Yes | Yes | | Zero-dependency secure | Needs lite-random | Yes | Yes | No | | Bundle size | ~0.5KB | ~0.7KB | ~2KB | ~2KB |
Installation
npm install @zakkster/lite-idQuick Start
import { liteId, seed } from '@zakkster/lite-id';
// Secure (crypto-backed)
const id = liteId(); // "Xk9_mBqRtLzN2vP4wHs7a"
const short = liteId(8); // "k9_mBqRt"
// Deterministic (seeded)
seed(42);
const a = liteId(12, true); // Always the same for seed 42
seed(42);
const b = liteId(12, true); // b === a guaranteedRecipes
Entity IDs in a Game Loop
import { liteId, seed } from '@zakkster/lite-id';
seed(gameState.seed);
const bulletId = liteId(8, true); // Deterministic across clientsReact Key Generation
const items = data.map(item => ({
...item,
key: liteId(10), // Cryptographically unique
}));Deterministic Test Fixtures
beforeEach(() => seed(12345));
test('creates user', () => {
const id = liteId(21, true); // Same ID every test run
});API
| Export | Description |
|---|---|
| liteId(len?, deterministic?) | Generate an ID. Default: 21 chars, crypto-secure. |
| seed(n) | Seed the deterministic RNG. |
License
MIT
