hono
Version:
Web framework built on Web Standards
93 lines (92 loc) • 2.46 kB
JavaScript
// 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
};