94 lines
No EOL
2.4 KiB
TypeScript
94 lines
No EOL
2.4 KiB
TypeScript
/**
|
|
* A class for parsing snowflake ids
|
|
*/
|
|
export declare class Snowflake {
|
|
#private;
|
|
/**
|
|
* Alias for {@link deconstruct}
|
|
*/
|
|
decode: (id: string | bigint) => DeconstructedSnowflake;
|
|
/**
|
|
* @param epoch the epoch to use
|
|
*/
|
|
constructor(epoch: number | bigint | Date);
|
|
/**
|
|
* Generates a snowflake given an epoch and optionally a timestamp
|
|
* @param options options to pass into the generator, see {@link SnowflakeGenerateOptions}
|
|
*
|
|
* **note** when increment is not provided it defaults to the private increment of the instance
|
|
* @example
|
|
* ```ts
|
|
* const epoch = new Date('2000-01-01T00:00:00.000Z');
|
|
* const snowflake = new Snowflake(epoch).generate();
|
|
* ```
|
|
* @returns A unique snowflake
|
|
*/
|
|
generate({ increment, timestamp, workerID, processID }?: SnowflakeGenerateOptions): bigint;
|
|
/**
|
|
* Deconstructs a snowflake given a snowflake ID
|
|
* @param id the snowflake to deconstruct
|
|
* @returns a deconstructed snowflake
|
|
* @example
|
|
* ```ts
|
|
* const epoch = new Date('2000-01-01T00:00:00.000Z');
|
|
* const snowflake = new Snowflake(epoch).deconstruct('3971046231244935168');
|
|
* ```
|
|
*/
|
|
deconstruct(id: string | bigint): DeconstructedSnowflake;
|
|
}
|
|
/**
|
|
* Options for Snowflake#generate
|
|
*/
|
|
export interface SnowflakeGenerateOptions {
|
|
/**
|
|
* Timestamp or date of the snowflake to generate
|
|
* @default Date.now()
|
|
*/
|
|
timestamp?: number | bigint | Date;
|
|
/**
|
|
* The increment to use
|
|
* @default 0n
|
|
* @remark keep in mind that this bigint is auto-incremented between generate calls
|
|
*/
|
|
increment?: bigint;
|
|
/**
|
|
* The worker ID to use
|
|
* @default 1n
|
|
*/
|
|
workerID?: bigint;
|
|
/**
|
|
* The process ID to use
|
|
* @default 1n
|
|
*/
|
|
processID?: bigint;
|
|
}
|
|
/**
|
|
* Object returned by Snowflake#deconstruct
|
|
*/
|
|
export interface DeconstructedSnowflake {
|
|
/**
|
|
* The id in BigInt form
|
|
*/
|
|
id: bigint;
|
|
/**
|
|
* The timestamp stored in the snowflake
|
|
*/
|
|
timestamp: bigint;
|
|
/**
|
|
* The worker id stored in the snowflake
|
|
*/
|
|
workerID: bigint;
|
|
/**
|
|
* The process id stored in the snowflake
|
|
*/
|
|
processID: bigint;
|
|
/**
|
|
* The increment stored in the snowflake
|
|
*/
|
|
increment: bigint;
|
|
/**
|
|
* The epoch to use in the snowflake
|
|
*/
|
|
epoch: bigint;
|
|
}
|
|
//# sourceMappingURL=Snowflake.d.ts.map
|