terrible/app/state/cookie.server.js
2024-03-12 11:20:28 -05:00

21 lines
530 B
JavaScript

import {createCookie} from '@remix-run/node';
import {singleton} from '#utils/singleton';
const jar = singleton('jar', {});
export async function mutate(request, key, mutator) {
return serialize(key, await mutator(await parse(request, key)))
}
export async function parse(request, key, defaultValue) {
if (!jar[key]) {
jar[key] = createCookie(key);
}
return (await jar[key].parse(request.headers.get('Cookie'))) || defaultValue;
}
export async function serialize(key, data) {
return jar[key].serialize(data);
}