@whatwg-node/server-plugin-cookies
Version:
Cookies Plugin
29 lines (28 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useCookies = useCookies;
const cookie_store_1 = require("@whatwg-node/cookie-store");
function useCookies() {
const cookieStringsByRequest = new WeakMap();
return {
onRequest({ request }) {
const cookieStrings = [];
request.cookieStore = new cookie_store_1.CookieStore(request.headers.get('cookie') ?? '');
request.cookieStore.onchange = function ({ changed, deleted }) {
changed.forEach(cookie => {
cookieStrings.push((0, cookie_store_1.getCookieString)(cookie));
});
deleted.forEach(cookie => {
cookieStrings.push((0, cookie_store_1.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);
});
},
};
}