@copilotkit/runtime
Version:
<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />
63 lines (61 loc) • 2.02 kB
JavaScript
require("reflect-metadata");
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
const require_fetch_handler = require('../core/fetch-handler.cjs');
const require_express_fetch_bridge = require('./express-fetch-bridge.cjs');
let express = require("express");
express = require_runtime.__toESM(express);
let cors = require("cors");
cors = require_runtime.__toESM(cors);
//#region src/v2/runtime/endpoints/express.ts
function createCopilotExpressHandler({ runtime, basePath, mode = "multi-route", cors: corsOption = true, hooks }) {
const normalizedBase = normalizeBasePath(basePath);
const nodeHandler = require_express_fetch_bridge.createExpressNodeHandler(require_fetch_handler.createCopilotRuntimeHandler({
runtime,
basePath: normalizedBase,
mode,
cors: false,
hooks
}));
const expressHandler = async (req, res, next) => {
try {
await nodeHandler(req, res);
} catch (err) {
next(err);
}
};
const router = express.default.Router();
if (corsOption) {
const corsConfig = corsOption === true ? {
origin: "*",
methods: [
"GET",
"HEAD",
"PUT",
"POST",
"DELETE",
"PATCH",
"OPTIONS"
],
allowedHeaders: ["*"]
} : corsOption;
router.use((0, cors.default)(corsConfig));
}
if (mode === "single-route") {
router.post(normalizedBase, expressHandler);
router.options(normalizedBase, expressHandler);
} else if (normalizedBase === "/") router.all(/.*/, expressHandler);
else router.all(new RegExp(`^${escapeRegExp(normalizedBase)}(\\/.*)?$`), expressHandler);
return router;
}
function escapeRegExp(s) {
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function normalizeBasePath(path) {
if (!path) throw new Error("basePath must be provided for Express endpoint");
if (!path.startsWith("/")) return `/${path}`;
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
return path;
}
//#endregion
exports.createCopilotExpressHandler = createCopilotExpressHandler;
//# sourceMappingURL=express.cjs.map