crypt-uniid
v2.1.0
Published
A secure, efficient, and machine-aware unique ID generator using timestamp, counter, and SHA-256 hashing.
Maintainers
Readme
Unique ID Generator
This package provides a simple and efficient way to generate unique IDs using timestamps, collision handling, and SHA-256 hashing. This library can generate billions of unique IDs, and we guarantee that every ID generated will be 100% unique. Using the v1 method provided by Crypt-uniid, you can generate millions or even billions of IDs in an hour, a minute, a second, or even a nanosecond, depending on your machine's performance. You can be completely confident that every generated ID will be unique. This library is very lightweight and runs everything in less than 85 lines of JS code. No other dependencies are needed.
Features
- Generates unique IDs based on system time (in nanoseconds) to ensure uniqueness.
- Uses SHA-256 hashing for added security and consistency.
- Can be used across different machines using unique machine IDs for distributed systems.
Encoding formats
Accepted parameters optionsl use lowercase (recomended) default "hex"
- Hexadecimal (Hex)
- Base64
- Binary
- utf8
- Raw (Binary Buffer)
- Base32
Documentation
- Official documentation github link: https://github.com/mdmarufa/crypt-uniid
Password Structure
The unique ID is generated based on the following structure:
- Timestamp: The current system time in nanoseconds.
- Collision Handling: If the timestamp is the same as the previous one, the counter is incremented.
- Machine ID: A unique machine identifier (
MACHIN_ID), which is configured in the.envfile. This ensures uniqueness across multiple machines. - Hashing: The final ID is hashed using the SHA-256 algorithm to provide a consistent, fixed-length ID.
Installation
To get started, you need to install the package:
npm install crypt-uniidNote
MACHIN_ID: The MACHIN_ID should be set in your .env file to ensure that IDs are unique across different machines. The format of the MACHIN_ID should be a string with at least 8 characters, including a mix of uppercase and lowercase letters, numbers, and special characters.
Example .env file: MACHIN_ID=Your Password #for unique you machin in distributed system
Configuaration
If MACHIN_ID is not set correctly or not found in .env file, you will get the following error: Error: Machine ID not found. Message: It's likely that you haven't configured the 'MACHIN_ID' in your environment variables. Please refer to the documentation for more details. Code: 9332 ```
- **Once installed and configured, you can import the package and start generating unique IDs.
Use
const { v1 } = require("crypt-uniid");
const uniqueId = v1(); // parameters optional
console.log("Generated Unique ID: ", uniqueId);- **If the MACHIN_ID is not set in your .env file or is incorrect, the package will throw a CustomError with a descriptive message.
- **The error message includes guidance to help you configure the MACHIN_ID correctly.
