nodly
Version:
Nodly is an interactive CLI for scaffolding modern Node.js/Express.js backend projects with instant setup for databases, mailers, queues, sockets, and more. Skip boilerplate and start building features fast.
56 lines (46 loc) • 1.84 kB
JavaScript
import { randomUUID, randomBytes } from "crypto";
// Generate UUID v4
export const generateUUID = () => {
return randomUUID();
};
// Short Alphanumeric ID (e.g., "aZ3fL9")
export const generateShortId = (length = 6) => {
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join("");
};
// Numeric ID (e.g., OTPs)
export const generateNumericId = (length = 6) => {
const digits = "0123456789";
return Array.from({ length }, () => digits[Math.floor(Math.random() * digits.length)]).join("");
};
// Timestamp + short ID (e.g., "20250614125059_x7Kz")
export const generateTimestampId = () => {
const timestamp = new Date().toISOString().replace(/[-:.TZ]/g, "");
return `${timestamp}_${generateShortId(4)}`;
};
// Custom prefix ID (e.g., "user_4fD8kL")
export const generateCustomId = (prefix = "id", length = 6) => {
return `${prefix}_${generateShortId(length)}`;
};
// Simulated Credit Card ID (16-digit number)
export const generateCCID = () => {
const start = ["4", "5", "3"]; // Visa, MasterCard, AMEX
let cc = start[Math.floor(Math.random() * start.length)];
while (cc.length < 16) {
cc += Math.floor(Math.random() * 10);
}
return cc;
};
// Order-like ID (e.g., "ORD-8fK2-X7L9")
export const generateOrderId = () => {
return `ORD-${generateShortId(4).toUpperCase()}-${generateShortId(4).toUpperCase()}`;
};
// MongoDB-like ObjectID (24 hex chars)
export const generateObjectId = () => {
return randomBytes(12).toString("hex");
};
// NanoID (Optional)
export const generateNanoId = (length = 12) => {
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-";
return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join("");
};