UNPKG

@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;" />

72 lines (70 loc) 2.48 kB
require("reflect-metadata"); //#region src/v2/runtime/core/fetch-cors.ts const DEFAULT_METHODS = [ "GET", "HEAD", "PUT", "POST", "DELETE", "PATCH", "OPTIONS" ]; const DEFAULT_HEADERS = ["*"]; function resolveOrigin(config, requestOrigin) { const { origin } = config; if (!origin) return "*"; if (typeof origin === "string") return origin; if (Array.isArray(origin)) { if (!requestOrigin) return null; return origin.includes(requestOrigin) ? requestOrigin : null; } if (typeof origin === "function") return requestOrigin ? origin(requestOrigin) : null; return "*"; } function setCorsHeaders(headers, config, requestOrigin) { let allowedOrigin = resolveOrigin(config, requestOrigin); if (!allowedOrigin) return; if (config.credentials && allowedOrigin === "*") if (requestOrigin) allowedOrigin = requestOrigin; else return; headers.set("Access-Control-Allow-Origin", allowedOrigin); if (config.credentials) headers.set("Access-Control-Allow-Credentials", "true"); if (config.exposeHeaders?.length) headers.set("Access-Control-Expose-Headers", config.exposeHeaders.join(", ")); if (allowedOrigin !== "*") headers.append("Vary", "Origin"); } /** * Handle CORS preflight (OPTIONS) requests. * Returns a 204 Response if it's a preflight, or null if not. */ function handleCors(request, config) { if (request.method !== "OPTIONS") return null; const requestOrigin = request.headers.get("origin"); const headers = new Headers(); setCorsHeaders(headers, config, requestOrigin); const methods = config.allowMethods ?? DEFAULT_METHODS; headers.set("Access-Control-Allow-Methods", methods.join(", ")); const allowHeaders = config.allowHeaders ?? DEFAULT_HEADERS; headers.set("Access-Control-Allow-Headers", allowHeaders.join(", ")); if (config.maxAge != null) headers.set("Access-Control-Max-Age", String(config.maxAge)); headers.append("Vary", "Access-Control-Request-Headers"); headers.append("Vary", "Access-Control-Request-Method"); return new Response(null, { status: 204, headers }); } /** * Add CORS headers to an existing response. */ function addCorsHeaders(response, config, requestOrigin) { const headers = new Headers(response.headers); setCorsHeaders(headers, config, requestOrigin); return new Response(response.body, { status: response.status, statusText: response.statusText, headers }); } //#endregion exports.addCorsHeaders = addCorsHeaders; exports.handleCors = handleCors; //# sourceMappingURL=fetch-cors.cjs.map