Generate UUID
Generate UUIDs (v1, v4, v5)
Source Code
import fs from "fs";
import path from "path";
import { v4 as uuidv4, v5 as uuidv5, v1 as uuidv1 } from "uuid";
const [version = "v4", countStr = "1", outputPath = "", namespace = "", name = ""] = process.argv.slice(2);
// Well-known namespace UUIDs
const NAMESPACES = {
DNS: "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
URL: "6ba7b811-9dad-11d1-80b4-00c04fd430c8",
OID: "6ba7b812-9dad-11d1-80b4-00c04fd430c8",
X500: "6ba7b814-9dad-11d1-80b4-00c04fd430c8",
};
try {
console.log(`Generating UUIDs...`);
const count = parseInt(countStr, 10);
if (isNaN(count) || count < 1) {
console.error("Count must be a positive integer");
process.exit(1);
}
console.log(` Version: ${version}`);
console.log(` Count: ${count}`);
const uuids = [];
for (let i = 0; i < count; i++) {
let uuid;
switch (version.toLowerCase()) {
case "v1":
case "1":
uuid = uuidv1();
break;
case "v4":
case "4":
uuid = uuidv4();
break;
case "v5":
case "5":
if (!namespace || !name) {
console.error("v5 requires namespace and name arguments");
process.exit(1);
}
// Resolve namespace
let ns = namespace.toUpperCase();
if (ns in NAMESPACES) {
ns = NAMESPACES[ns];
}
// For generating multiple v5 UUIDs, append index to name
const nameToUse = count > 1 ? `${name}-${i}` : name;
uuid = uuidv5(nameToUse, ns);
break;
default:
console.error(`Unknown version: ${version}. Use: v1, v4, v5`);
process.exit(1);
}
uuids.push(uuid);
}
// Output to file if specified
if (outputPath) {
const dir = path.dirname(outputPath);
if (dir && dir !== ".") {
fs.mkdirSync(dir, { recursive: true });
}
const ext = path.extname(outputPath).toLowerCase();
if (ext === ".json") {
fs.writeFileSync(outputPath, JSON.stringify(uuids, null, 2));
} else {
fs.writeFileSync(outputPath, uuids.join("\n"));
}
console.log(` Written to: ${outputPath}`);
}
// Show generated UUIDs
console.log(`\nā Generated ${count} UUID${count > 1 ? "s" : ""}`);
for (const uuid of uuids.slice(0, 5)) {
console.log(` ${uuid}`);
}
if (uuids.length > 5) {
console.log(` ... and ${uuids.length - 5} more`);
}
console.log(
JSON.stringify({
success: true,
version,
count: uuids.length,
uuids: uuids.length <= 10 ? uuids : uuids.slice(0, 10),
outputPath: outputPath || null,
})
);
} catch (error) {
console.error("Error:", error.message);
process.exit(1);
}