Skip to content

Latest commit

 

History

History
59 lines (35 loc) · 1.25 KB

File metadata and controls

59 lines (35 loc) · 1.25 KB

id-seq - Sequential unique ID manager

Efficiently manage sequential, reusable numeric IDs.

Features

  • Always generates the smallest available non-negative integer
  • IDs can be released and reused in future acquire() calls
  • Simple and efficient

Usage

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

API

new IdSeq()

Creates a new ID manager.

idSeq.acquire(): { seq: number, release: () => void }

Acquires the next available non-negative integer ID and returns an object containing:

  • seq: the acquired ID
  • release(): 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.

License

MIT