UNPKG

@samual/cookie

Version:

Set and get cookies with optional type validation with a Standard Schema.

25 lines (24 loc) 873 B
function assertValidCookieName(name) { if (!/^[!#-+-.\d^-z|~]+$/i.test(name)) throw SyntaxError("Invalid cookie name") } function parseCookies(cookies) { const parsedCookies = new Map() if (cookies) for (const cookie of cookies.split("; ")) { const index = cookie.indexOf("=") ;-1 == index ? parsedCookies.set("", cookie) : parsedCookies.set(cookie.slice(0, index), cookie.slice(index + 1)) } return parsedCookies } function setCookie(name, value, options) { assertValidCookieName(name) if (!/^(?:[!#-+--:<-[\]-~]*)|(?:"[!#-+--:<-[\]-~]*")$/.test(value)) throw SyntaxError("Invalid cookie value") return `${name}=${value}${options?.attributes || ";max-age=31536000;path=/;sameSite=lax"}` } function deleteCookie(name) { assertValidCookieName(name) return name + "=;max-age=0;path=/;sameSite=lax" } export { deleteCookie, parseCookies, setCookie }