moleculer-api
Version:
A dynamic API Gateway for MoleculerJS which updates REST endpoints and aggregated GraphQL schema, access control policy for each action calls from metadata of remote services schema without restart or deployment.
40 lines • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CookieContextFactory = void 0;
const tslib_1 = require("tslib");
const _ = tslib_1.__importStar(require("lodash"));
const cookie_parser_1 = require("cookie-parser");
const cookie_1 = require("cookie");
const factory_1 = require("./factory");
/*
Cookie Context Factory
ref: https://github.com/expressjs/cors#configuration-options
*/
class CookieContextFactory extends factory_1.APIRequestContextFactory {
constructor(props, opts) {
super(props);
this.props = props;
this.opts = _.defaultsDeep(opts || {}, CookieContextFactory.autoLoadOptions);
const { secrets } = this.opts;
this.opts.secrets = !secrets || Array.isArray(secrets) ? (secrets || []) : [secrets];
}
create({ headers }) {
if (!headers.cookie) {
return {};
}
const _a = this.opts, { secrets } = _a, parseOptions = tslib_1.__rest(_a, ["secrets"]);
const cookies = cookie_1.parse(headers.cookie, parseOptions);
// parse signed cookies
if (secrets.length !== 0) {
Object.assign(cookies, cookie_parser_1.signedCookies(cookies, secrets));
}
// parse JSON cookies
return cookie_parser_1.JSONCookies(cookies);
}
}
exports.CookieContextFactory = CookieContextFactory;
CookieContextFactory.key = "cookie";
CookieContextFactory.autoLoadOptions = {
secrets: [],
};
//# sourceMappingURL=cookie.js.map