diff options
author | polwex <polwex@sortug.com> | 2025-05-21 14:00:28 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-05-21 14:00:28 +0700 |
commit | e839a5f61f0faa21ca8b4bd5767f7575d5e576ee (patch) | |
tree | 53e5bcc3977b6ebef687521a7ac387a89aeb21c8 /src/lib/server/cookiebridge.ts | |
parent | 4f2bd597beaa778476b84c10b571db1b13524301 (diff) |
the card flip animation is legit
Diffstat (limited to 'src/lib/server/cookiebridge.ts')
-rw-r--r-- | src/lib/server/cookiebridge.ts | 76 |
1 files changed, 45 insertions, 31 deletions
diff --git a/src/lib/server/cookiebridge.ts b/src/lib/server/cookiebridge.ts index 4dce095..778fc2c 100644 --- a/src/lib/server/cookiebridge.ts +++ b/src/lib/server/cookiebridge.ts @@ -1,38 +1,52 @@ -import { getContextData } from "waku/middleware/context"; -import { - RequestCookies, - ResponseCookies, - type ResponseCookie, -} from "@edge-runtime/cookies"; -import { mergeSetCookies } from "./setcookie"; +import { getContext, getContextData } from "waku/middleware/context"; -const cookies = () => { - const ctx = getContextData() as { - headers: Record<string, string | string[]>; - cookies?: ResponseCookie[]; - }; - const headerObj = ctx.headers || {}; - headerObj["set-cookie"] = mergeSetCookies( - headerObj["set-cookie"] || [], - (ctx.cookies || []) as ResponseCookie[], - ); - const headers = new Headers(headerObj as Record<string, string>); - const reqCookies = new RequestCookies(headers); - const resCookies = new ResponseCookies(headers); +const useCookies = () => { + const ctx = getContext(); + const headers = ctx.req.headers; + console.log(headers.cookie); - 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; + const getCookie = (s: string) => { + const coki = headers.cookie; + if (!coki) return {}; + const cokiMap = parseCoki(coki); + return cokiMap; + }; + const setCookie = (s: string) => { + const ctxdata = getContextData(); + // (ctxdata.cokimap as Record<string, string>).sorlang = s; + // ctxdata.cookie = `sorlang=${s}; Secure` + ctxdata.cookie = `sorlang=${s};`; }; - const delCookie: ResponseCookies["delete"] = (...args) => { - const updated = resCookies.delete(...args); - ctx.cookies = updated.getAll(); - return updated; + const delCookie = (s: string) => { + const ctxdata = getContextData(); + delete (ctxdata.cokimap as Record<string, string>).sorlang; }; return { getCookie, setCookie, delCookie }; }; -export { cookies }; +export { useCookies }; + +function parseCoki(s: string) { + return s + .split(";") + .map((v) => v.split("=")) + .reduce((acc: Record<string, string>, v: any) => { + acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); + return acc; + }, {}); +} +function parseSetCoki(s: string) { + return s + .split(";") + .map((v) => v.split("=")) + .reduce((acc: Record<string, string>, v: any) => { + acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); + return acc; + }, {}); +} +function cokiToString(m: Record<string, string>): string { + return Object.entries(m).reduce((acc: string, item: [string, string]) => { + const [key, val] = item; + return `${acc} ${key}=${val};`; + }, ""); +} |