import { getContext, getContextData } from "waku/middleware/context"; const useCookies = () => { const ctx = getContext(); const headers = ctx.req.headers; console.log(headers.cookie); 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).sorlang = s; // ctxdata.cookie = `sorlang=${s}; Secure` ctxdata.cookie = `sorlang=${s};`; }; const delCookie = (s: string) => { const ctxdata = getContextData(); delete (ctxdata.cokimap as Record).sorlang; }; return { getCookie, setCookie, delCookie }; }; export { useCookies }; function parseCoki(s: string) { return s .split(";") .map((v) => v.split("=")) .reduce((acc: Record, 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, v: any) => { acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); return acc; }, {}); } function cokiToString(m: Record): string { return Object.entries(m).reduce((acc: string, item: [string, string]) => { const [key, val] = item; return `${acc} ${key}=${val};`; }, ""); }