UNPKG

@grkndev/snowflakeid

Version:

A simple Snowflake ID generator for JavaScript and TypeScript

62 lines (61 loc) 2.41 kB
/** * Options for customizing Snowflake ID generation. */ interface SnowflakeOptions { /** Custom epoch timestamp (in milliseconds since Unix epoch) */ epoch?: number; /** Node ID (0-1023) for distributed systems */ nodeId?: number; /** Initial sequence number (0-4095) */ sequence?: number; } interface RandomIdOptions { useChars: boolean; useNumbers: boolean; } /** * Generates a Snowflake ID. * * @param {SnowflakeOptions} options - Custom options for ID generation * @param {number} [options.epoch=DEFAULT_EPOCH] - Custom epoch timestamp * @param {number} [options.nodeId=1] - Node ID for distributed systems * @param {number} [options.sequence] - Initial sequence number * @returns {string} The generated Snowflake ID as a string * @throws {Error} If nodeId is invalid or if the clock moves backwards */ declare function generateSnowflakeId(options?: SnowflakeOptions): string; /** * Parses a Snowflake ID into its component parts. * * @param {string} id - The Snowflake ID to parse * @param {number} [epoch=DEFAULT_EPOCH] - The epoch used in ID generation * @returns {{timestamp: Date, nodeId: number, sequence: number}} Parsed components of the Snowflake ID */ declare function parseSnowflakeId(id: string, epoch?: number): { timestamp: Date; nodeId: number; sequence: number; }; /** * Generates a random ID with a specified length. * @param {RandomIdOptions} options - Custom options for ID generation * @param {number} [lenght=6] - The length of the random ID * @param {boolean} [options.useChars=false] - Use characters in the ID * @param {boolean} [options.useNumbers=true] - Use numbers in the ID * @returns {string} The generated random ID (example: "aBc123") */ declare function randomId(length?: number, options?: RandomIdOptions): string; /** * Generates a UUID (Universally Unique Identifier). * @param {number} [split=4] - The number of parts to split the UUID into * @returns {string} The generated UUID (example: "aBcD-1234-EfGh-5678") */ declare function uuid(split?: number): string; export { generateSnowflakeId, parseSnowflakeId, randomId, uuid }; declare const _default: { generateSnowflakeId: typeof generateSnowflakeId; parseSnowflakeId: typeof parseSnowflakeId; randomId: typeof randomId; uuid: typeof uuid; }; export default _default;