btuid
Version:
Btuid library provides an interface to generate UIDs (Unique Identifiers) that are safe, cryptographically secure, and unpredictable, ensuring that every UUID is unique. The library also supports B+tree indexing, which makes it ideal for use in database s
72 lines (71 loc) • 2.08 kB
TypeScript
export interface DegreeConfig {
pageSize: number;
keySize: number;
TIDSize: number;
indexTupleDataSize: number;
linePointerSize: number;
addingPaddingSize: number;
degree: number;
}
export interface RestConfigData {
depth: number;
degree: number;
chunkLength: bigint;
indexInCurrentDepth: bigint;
startValue: bigint;
usedIdCount: bigint;
}
export type ConstructorParams = {
degreeConfig?: DegreeConfig;
startValue?: bigint;
displacementRate?: number;
restConfigData?: RestConfigData | null;
DegreeComplications?: number;
path?: string;
saveTime?: number;
hexLength?: number;
randomLength?: number;
securityKey: string;
nodeNumber?: number;
};
export declare class BtuidGenerator {
private HEX_LENGTH;
private EXTRALENGTH;
private saveTime;
private degreeConfig;
private overhead;
private entryOverhead;
private degree;
private usedIdCount;
private depth;
private startValue;
private length;
private chunkLength;
private indexInCurrentDepth;
private chunkCount;
private shiftAmount;
private nodeNumber;
private restConfigData;
data: {
depth: number;
degree: number;
chunkLength: bigint;
indexInCurrentDepth: bigint;
startValue: bigint;
usedIdCount: bigint;
};
constructor({ degreeConfig, startValue, displacementRate, restConfigData, DegreeComplications, path, saveTime, hexLength, randomLength, securityKey, nodeNumber }: ConstructorParams);
private sumOverhead;
getExtraBtuid(): string;
shiftHexMonotone(text: string, shiftAmount: number[][]): string;
stringToArray16Random(input: string): number[][];
randomInRange(min: number, max: number): number;
getBtuid(): string;
private getId;
private padHex;
private bigIntToHex;
private getNextInDepthAndIndex;
syncSaveObject(path: string, obj: RestConfigData): void;
saveObject(path: string, obj: RestConfigData): void;
readObject(path: string): any;
}