respond-framework
Version:
create as fast you think
67 lines (64 loc) • 2.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setSessionState = exports.getSessionState = void 0;
var _utils = require("../../utils.js");
var _revive = require("./revive.js");
const getSessionState = respond => {
const json = respond.sessionStorage.getItem('sessionState');
if (!json) return [];
const reviver = (0, _revive.createStateReviver)(respond);
const curr = JSON.parse(json, reviver);
const prev = JSON.parse(respond.sessionStorage.getItem('prevState'), reviver);
return [curr, prev];
};
exports.getSessionState = getSessionState;
const setSessionState = (state, e) => {
const {
sessionStorage,
replayState,
basenames,
prevUrl,
cache,
system
} = state.respond;
sessionStorage.setItem('sessionSystemState', JSON.stringify({
replayState,
basenames,
prevUrl,
cache
}));
sessionStorage.setItem('prevState', JSON.stringify(state.prevState)); // prevState doesn't need replacer, as replacer only handles maintaining object references for duplicate objects in state, which prevState wipes away anyway
sessionStorage.setItem('sessionState', stringify(state));
if (_utils.isProd) return;
if (e.event.module.id === 'replayTools') return; // no need to save latest seed state when triggering events in replayTools
const prevSeed = sessionStorage.getItem('seed');
if (prevSeed) sessionStorage.setItem('prevSeed', prevSeed); // HMR needs prevSeed to properly replay last event
sessionStorage.setItem('seed', JSON.stringify(system.seed));
};
exports.setSessionState = setSessionState;
const stringify = state => {
const replacer = (0, _revive.createReplacer)(state.respond);
if (!state.replayTools) return JSON.stringify(state, replacer);
const {
tests,
selectedTestId
} = state.replayTools;
state = {
...state,
replayTools: {
...state.replayTools,
tests: selectedTestId ? {
[selectedTestId]: tests[selectedTestId]
} : undefined,
// don't waste cycles on tons of tests with their events -- preserve selected test, as it may be used without the Tests tab first visited
configs: undefined,
// will be reset to last "checkpoint" by createReplays
settings: undefined,
// will be reset to last "checkpoint" by createReplays
focusedbranch: undefined // will be reset to last "checkpoint" by createReplays
}
};
return JSON.stringify(state, replacer);
};