snowflakify
Version:
The most complete Snowflake ID generator in TypeScript
34 lines (33 loc) • 854 B
TypeScript
import { SnowflakifyOptions } from '../@types';
export default class CircularBuffer {
private readonly bufferSize;
private readonly indexBitMask;
private readonly thresholdIndex;
private readonly tailTA;
private readonly headTA;
private readonly bufferTA;
private readonly bufferRefiller;
private readonly semaphoreTA;
constructor(
bufferSize: number,
generatorOptions: SnowflakifyOptions,
refillTheshold?: number,
workerCount?: number,
);
get size(): number;
get tail(): number;
private set tail(value);
get head(): number;
private set head(value);
get buffer(): BigInt64Array;
push(value: bigint): void;
pop(): bigint;
isFull(): boolean;
isEmpty(): boolean;
private incrementTail;
private incrementHead;
private static distance;
private nextIndex;
private acquire;
private release;
}