@grkndev/snowflakeid
Version:
A simple Snowflake ID generator for JavaScript and TypeScript
62 lines (61 loc) • 2.41 kB
TypeScript
/**
* 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;