next-session
Version:
Simple promise-based session for Next.js
43 lines (35 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hash = hash;
exports.commitHeader = commitHeader;
var _cookie = _interopRequireDefault(require("cookie"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function hash(sess) {
return JSON.stringify(sess, (key, val) => key === "cookie" ? undefined : val);
}
function commitHeader(res, name, {
cookie,
id
}, encodeFn) {
if (res.headersSent) return;
const cookieStr = _cookie.default.serialize(name, encodeFn ? encodeFn(id) : id, {
path: cookie.path,
httpOnly: cookie.httpOnly,
expires: cookie.expires,
domain: cookie.domain,
sameSite: cookie.sameSite,
secure: cookie.secure
});
const prevSetCookie = res.getHeader("set-cookie");
if (prevSetCookie) {
if (Array.isArray(prevSetCookie)) {
res.setHeader("set-cookie", [...prevSetCookie, cookieStr]);
} else {
res.setHeader("set-cookie", [prevSetCookie, cookieStr]);
}
} else {
res.setHeader("set-cookie", cookieStr);
}
}