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";constidSeq=newIdSeq();constid1=idSeq.acquire();// id1.seq === 0id1.release();constid2=idSeq.acquire();// id2.seq === 0 (reused)constid3=idSeq.acquire();// id3.seq === 1id2.release();id3.release();constid4=idSeq.acquire();// id4.seq === 0constid5=idSeq.acquire();// id5.seq === 1id4.release();constid6=idSeq.acquire();// id6.seq === 0constid7=idSeq.acquire();// id7.seq === 2id5.release();constid8=idSeq.acquire();// id8.seq === 1 (reused)constid9=idSeq.acquire();// id9.seq === 3Creates 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