@multiplatform.one/typegraphql
Version:
typegraphql for multiplatform.one
56 lines (53 loc) • 1.67 kB
JavaScript
import {
__name
} from "./chunk-SHUYVCID.js";
// src/utils.ts
import { randomUUID } from "node:crypto";
import startCase from "lodash.startcase";
function getReqHeader(req, name, headers = {}) {
headers = Object.entries(headers).reduce((headers2, [key, value]) => {
headers2[key.toLowerCase()] = value;
return headers2;
}, {});
name = name.toLowerCase();
let header;
if (typeof req?.headers?.get === "function") {
header = req.headers.get(name);
}
if (!header && typeof req?.get === "function") {
header = req.headers.get(name);
}
if (!header && req.headers) header = req.headers?.[name];
if (!header) {
header = headers[name];
}
if (Array.isArray(header)) return header.join(", ");
return header || void 0;
}
__name(getReqHeader, "getReqHeader");
function setResHeader(res, name, value) {
name = startCase(name).replace(/\s/g, "-");
if (typeof res?.headers?.set === "function") {
res.headers.set(name, value);
} else if (typeof res?.setHeader === "function") {
res.setHeader(name, value);
} else if (typeof res?.set === "function") {
res.set(name, value);
} else if (typeof res?.headers === "object") {
res.headers[name] = value;
}
}
__name(setResHeader, "setResHeader");
function generateRequestId(req, res) {
if (req.requestId) return req.requestId;
const requestId = req.requestId || typeof req.id === "string" ? req.id : getReqHeader(req, "X-Request-Id") || randomUUID();
req.requestId = requestId;
setResHeader(res, "X-Request-Id", requestId);
return requestId;
}
__name(generateRequestId, "generateRequestId");
export {
getReqHeader,
setResHeader,
generateRequestId
};