Efficiently manage sequential, reusable numeric IDs.
- Always generates the smallest available non-negative integer
- IDs can be released and reused in future
acquire()
calls - Simple and efficient
import { IdSeq } from "id-seq";
const idSeq = new IdSeq();
const id1 = idSeq.acquire(); // id1.seq === 0
id1.release();
const id2 = idSeq.acquire(); // id2.seq === 0 (reused)
const id3 = idSeq.acquire(); // id3.seq === 1
id2.release();
id3.release();
const id4 = idSeq.acquire(); // id4.seq === 0
const id5 = idSeq.acquire(); // id5.seq === 1
id4.release();
const id6 = idSeq.acquire(); // id6.seq === 0
const id7 = idSeq.acquire(); // id7.seq === 2
id5.release();
const id8 = idSeq.acquire(); // id8.seq === 1 (reused)
const id9 = idSeq.acquire(); // id9.seq === 3
Creates a new ID manager.
Acquires the next available non-negative integer ID and returns an object containing:
seq
: the acquired IDrelease()
: a function to release the ID, making it available for reuse
Released IDs are always reused before allocating new ones, and the smallest available ID is returned first.
MIT