@dwp/govuk-casa
Version:
A framework for building GOVUK Collect-And-Submit-Applications
38 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteSnapshot = exports.recoverSnapshot = exports.createSnapshot = exports.reachedEditOrigin = exports.snapshotExists = exports.FLAG_FOR_PURGING = void 0;
/* eslint-disable security/detect-object-injection */
const casa_js_1 = require("../../../casa.js");
const SESSION_KEY = "casa_edit_snapshots";
exports.FLAG_FOR_PURGING = Symbol("flag_to_purge_edit_snapshot");
const snapshotExists = (req) => {
return (req?.session[SESSION_KEY] &&
Object.hasOwn(req.session[SESSION_KEY], req.casa.journeyContext.identity.id));
};
exports.snapshotExists = snapshotExists;
const reachedEditOrigin = (log, req) => {
const { pathname: currentPathname } = new URL(req.originalUrl, "https://placeholder.test/");
const { pathname: editOriginPathname } = new URL(req.casa.editOrigin, "https://placeholder.test/");
return editOriginPathname === currentPathname;
};
exports.reachedEditOrigin = reachedEditOrigin;
const createSnapshot = (log, req) => {
log.debug(`Creating a new edit snapshot for context '${req.casa.journeyContext.identity.id}'`);
req.session[SESSION_KEY] ??= Object.create(null);
req.session[SESSION_KEY][req.casa.journeyContext.identity.id] =
req.casa.journeyContext.toObject();
};
exports.createSnapshot = createSnapshot;
const recoverSnapshot = (log, req) => {
log.debug(`Recovering snapshot for context '${req.casa.journeyContext.identity.id}'`);
req.casa.journeyContext.configureFromObject(req.session[SESSION_KEY][req.casa.journeyContext.identity.id]);
casa_js_1.JourneyContext.putContext(req.session, req.casa.journeyContext);
(0, exports.deleteSnapshot)(log, req);
};
exports.recoverSnapshot = recoverSnapshot;
const deleteSnapshot = (log, req) => {
log.debug(`Purging edit snapshot for context '${req.casa.journeyContext.identity.id}'`);
req.session[SESSION_KEY][req.casa.journeyContext.identity.id] = undefined;
};
exports.deleteSnapshot = deleteSnapshot;
//# sourceMappingURL=utils.js.map