@whatwg-node/server-plugin-cookies
Version:
Cookies Plugin
26 lines (25 loc) • 1.05 kB
JavaScript
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);
});
},
};
}