UNPKG

@dwp/govuk-casa

Version:

A framework for building GOVUK Collect-And-Submit-Applications

38 lines 2.05 kB
"use strict"; 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