popsicle-cookie-jar
Version:
Popsicle middleware for supporting cookies in node.js
32 lines • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cookies = exports.CookieJar = void 0;
const tough_cookie_1 = require("tough-cookie");
Object.defineProperty(exports, "CookieJar", { enumerable: true, get: function () { return tough_cookie_1.CookieJar; } });
/**
* Read and write cookies with a cookie jar.
*/
function cookies(jar = new tough_cookie_1.CookieJar()) {
return async function cookieJar(req, next) {
const prevCookies = req.headers.getAll("Cookie").join("; ");
const res = await new Promise((resolve, reject) => {
jar.getCookieString(req.url, (err, cookies) => {
if (err)
return reject(err);
if (cookies) {
req.headers.set("Cookie", prevCookies ? `${prevCookies}; ${cookies}` : cookies);
}
return resolve(next());
});
});
const cookies = res.headers.getAll("set-cookie");
await Promise.all(cookies.map(function (cookie) {
return new Promise(function (resolve, reject) {
jar.setCookie(cookie, req.url, { ignoreError: true }, (err) => (err ? reject(err) : resolve()));
});
}));
return res;
};
}
exports.cookies = cookies;
//# sourceMappingURL=index.js.map