UNPKG

@whatwg-node/server-plugin-cookies

Version:
26 lines (25 loc) 1.05 kB
import { CookieStore, getCookieString } from '@whatwg-node/cookie-store'; export function useCookies() { const cookieStringsByRequest = new WeakMap(); return { onRequest({ request }) { const cookieStrings = []; request.cookieStore = new CookieStore(request.headers.get('cookie') ?? ''); request.cookieStore.onchange = function ({ changed, deleted }) { changed.forEach(cookie => { cookieStrings.push(getCookieString(cookie)); }); deleted.forEach(cookie => { cookieStrings.push(getCookieString({ ...cookie, value: undefined })); }); }; cookieStringsByRequest.set(request, cookieStrings); }, onResponse({ request, response }) { const cookieStrings = cookieStringsByRequest.get(request); cookieStrings?.forEach(cookieString => { response.headers.append('Set-Cookie', cookieString); }); }, }; }