nehoid
Version:
Advanced unique ID generation utility with multi-layer encoding, collision detection, and context-aware features
51 lines • 1.93 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) NEHONIX INC. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/**
* Express middleware integration for NehoID
* Provides request ID generation and tracking
*/
import { NehoID } from "../index";
/**
* Create Express middleware for request ID generation
* @param options Middleware configuration options
* @returns Express middleware function
*/
export function createMiddleware(options = {}) {
const { header = "X-Request-ID", format = "short", exposeHeader = true, addToRequest = true, generator, } = options;
// Return the middleware function
return function nehoidMiddleware(req, res, next) {
// Generate or use existing ID
let requestId = req.headers[header.toLowerCase()];
if (!requestId) {
// Generate new ID based on format or custom generator
if (generator) {
requestId = generator();
}
else if (format === "uuid") {
requestId = NehoID.uuid();
}
else if (format === "nano") {
requestId = NehoID.nanoid();
}
else if (format === "short") {
requestId = NehoID.short();
}
else {
requestId = NehoID.generate();
}
}
// Add ID to request object if enabled
if (addToRequest) {
req[options.name4Req || "NehoID"] = requestId;
}
// Add ID to response header if enabled
if (exposeHeader) {
res.setHeader(header, requestId);
}
// Continue with request
next();
};
}
//# sourceMappingURL=middleware.js.map