UNPKG

hono

Version:

Web framework built on Web Standards

93 lines (92 loc) 2.46 kB
// src/helper/cookie/index.ts import { parse, parseSigned, serialize, serializeSigned } from "../../utils/cookie.js"; var getCookie = (c, key, prefix) => { const cookie = c.req.raw.headers.get("Cookie"); if (typeof key === "string") { if (!cookie) { return void 0; } let finalKey = key; if (prefix === "secure") { finalKey = "__Secure-" + key; } else if (prefix === "host") { finalKey = "__Host-" + key; } const obj2 = parse(cookie, finalKey); return obj2[finalKey]; } if (!cookie) { return {}; } const obj = parse(cookie); return obj; }; var getSignedCookie = async (c, secret, key, prefix) => { const cookie = c.req.raw.headers.get("Cookie"); if (typeof key === "string") { if (!cookie) { return void 0; } let finalKey = key; if (prefix === "secure") { finalKey = "__Secure-" + key; } else if (prefix === "host") { finalKey = "__Host-" + key; } const obj2 = await parseSigned(cookie, secret, finalKey); return obj2[finalKey]; } if (!cookie) { return {}; } const obj = await parseSigned(cookie, secret); return obj; }; var setCookie = (c, name, value, opt) => { let cookie; if (opt?.prefix === "secure") { cookie = serialize("__Secure-" + name, value, { path: "/", ...opt, secure: true }); } else if (opt?.prefix === "host") { cookie = serialize("__Host-" + name, value, { ...opt, path: "/", secure: true, domain: void 0 }); } else { cookie = serialize(name, value, { path: "/", ...opt }); } c.header("set-cookie", cookie, { append: true }); }; var setSignedCookie = async (c, name, value, secret, opt) => { let cookie; if (opt?.prefix === "secure") { cookie = await serializeSigned("__Secure-" + name, value, secret, { path: "/", ...opt, secure: true }); } else if (opt?.prefix === "host") { cookie = await serializeSigned("__Host-" + name, value, secret, { ...opt, path: "/", secure: true, domain: void 0 }); } else { cookie = await serializeSigned(name, value, secret, { path: "/", ...opt }); } c.header("set-cookie", cookie, { append: true }); }; var deleteCookie = (c, name, opt) => { const deletedCookie = getCookie(c, name); setCookie(c, name, "", { ...opt, maxAge: 0 }); return deletedCookie; }; export { deleteCookie, getCookie, getSignedCookie, setCookie, setSignedCookie };