UNPKG

@fidaktk/ids

Version:

A lightweight, dependency-efficient ID generator package for Node.js and web projects. Supports BSON `ObjectId` (compatible with MongoDB/Mongoose), UUIDv4/v5, CUID2, and URL-safe slug IDs.

130 lines (94 loc) 3.23 kB
# @fidaktk/ids A lightweight, dependency-efficient ID generator package for Node.js and web projects. Supports BSON `ObjectId` (compatible with MongoDB/Mongoose), UUIDv4/v5, CUID2, and URL-safe slug IDs. ESM & CJS compatible Uses the official `bson` library for `ObjectId` Fully tested Browser-compatible --- ## ✨ Features - 🧠 **BSON `ObjectId`**: Directly uses the official `bson` library for 100% compatibility with MongoDB and Mongoose. - 🔐 **UUID v4 & v5**: Standard RFC4122 UUIDs. - **CUID2**: Modern, collision-resistant IDs. - 🌀 **Slug**: URL-friendly IDs via `slugid`. - **TypeScript Ready**: Fully typed for a great developer experience. - 📦 **Dual Module Support**: Works seamlessly with both CommonJS (`require`) and ESM (`import`). --- ## 📦 Installation ```bash npm install @fidaktk/ids # or yarn add @fidaktk/ids ``` --- ## 🚀 Usage ### ES Modules ```ts import { ObjectId, uuidv4, uuidv5, cuidId, slug } from '@fidaktk/ids'; // Create a new ObjectId const oid = new ObjectId(); console.log(oid.toHexString()); // e.g., '6693d8a8b2b7b2b7b2b7b2b7' // Create an ObjectId from a hex string const oidFromString = new ObjectId('6693d8a8b2b7b2b7b2b7b2b7'); // Other IDs const uid = uuidv4(); const namedUUID = uuidv5('my-namespace', uuidv5.URL); const cuid = cuidId(); const shortSlug = slug(); ``` ### CommonJS ```js const { ObjectId, uuidv4, uuidv5, cuidId, slug } = require('@fidaktk/ids'); const oid = new ObjectId(); console.log(oid.toHexString()); const uid = uuidv4(); const namedUUID = uuidv5('my-namespace', uuidv5.URL); const cuid = cuidId(); const shortSlug = slug(); ``` --- ## 🧪 API Reference ### `ObjectId` The `ObjectId` class is re-exported from the official `bson` library. It is fully compatible with Mongoose and other MongoDB tools. - `new ObjectId()`: Creates a new, random ObjectId. - `new ObjectId(hexString)`: Creates an ObjectId from a 24-character hex string. - `ObjectId.isValid(hexString)`: Checks if a string is a valid 24-character hex string. - `ObjectId.createFromTime(timeInSeconds)`: Creates an ObjectId from a Unix timestamp. - `.toHexString()`: Returns the 24-character hex string representation. - `.getTimestamp()`: Returns the `Date` object when the ID was created. - `.equals(other)`: Compares for equality with another ObjectId. ### `uuidv4()` - Generates a random UUID v4. ### `uuidv5(name, namespace)` - Generates a deterministic UUID v5 from a name and namespace. ### `cuidId()` - Generates a CUID2-compliant ID. ### `slug()` - Generates a short, URL-friendly ID (using `slugid`). --- ## 🔧 Compatibility | Platform | Supported | |-----------------------|-----------| | Node.js | >=16.20.1 | | Browser (via bundler) | | | CommonJS (`require`) | | | ESM (`import`) | | --- ## 📁 Project Structure ``` . ├── src/ ├── objectid.ts ├── uuid.ts ├── cuid.ts ├── index.ts ├── dist/ ├── test/ ├── package.json ├── tsconfig.json ├── jest.config.mjs └── README.md ``` --- ## 📜 License MIT License © [Fida ur Rehman](https://github.com/fidaktk)