From d56594d3289002566f4653d607f0837befd65109 Mon Sep 17 00:00:00 2001 From: polwex Date: Thu, 15 May 2025 10:13:00 +0700 Subject: wtf man --- src/lib/server/cookiebridge.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/lib/server/cookiebridge.ts (limited to 'src/lib/server/cookiebridge.ts') diff --git a/src/lib/server/cookiebridge.ts b/src/lib/server/cookiebridge.ts new file mode 100644 index 0000000..ca4bd44 --- /dev/null +++ b/src/lib/server/cookiebridge.ts @@ -0,0 +1,33 @@ +import { getContextData } from "waku/middleware/context"; +import { + RequestCookies, + ResponseCookies, + type ResponseCookie, +} from "@edge-runtime/cookies"; +import { mergeSetCookies } from "./setcookie"; + +const cookies = () => { + const ctx = getContextData() as { + headers: Record; + cookies?: ResponseCookie[]; + }; + const headerObj = ctx.headers || {}; + headerObj["set-cookie"] = mergeSetCookies( + headerObj["set-cookie"] || [], + (ctx.cookies || []) as ResponseCookie[], + ); + const headers = new Headers(headerObj as Record); + const reqCookies = new RequestCookies(headers); + const resCookies = new ResponseCookies(headers); + + const getCookie: ResponseCookies["get"] = (...args) => + resCookies.get(...args) || reqCookies.get(...args); + const setCookie: ResponseCookies["set"] = (...args) => { + const updated = resCookies.set(...args); + ctx.cookies = updated.getAll(); + return updated; + }; + return { getCookie, setCookie }; +}; + +export { cookies }; -- cgit v1.2.3