1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports.saveState = exports.store = exports.configureStore = exports.readState = exports.emitter = void 0;
|
7 |
|
8 | var _redux = require("redux");
|
9 |
|
10 | var _mitt = _interopRequireDefault(require("mitt"));
|
11 |
|
12 | var _reduxThunk = _interopRequireDefault(require("redux-thunk"));
|
13 |
|
14 | var _reducers = _interopRequireDefault(require("./reducers"));
|
15 |
|
16 | var _persist = require("./persist");
|
17 |
|
18 | const emitter = (0, _mitt.default)();
|
19 |
|
20 | exports.emitter = emitter;
|
21 |
|
22 | const readState = () => {
|
23 | try {
|
24 | const state = (0, _persist.readFromCache)();
|
25 |
|
26 | if (state.nodes) {
|
27 |
|
28 | state.nodesByType = new Map();
|
29 | state.nodes.forEach(node => {
|
30 | const {
|
31 | type
|
32 | } = node.internal;
|
33 |
|
34 | if (!state.nodesByType.has(type)) {
|
35 | state.nodesByType.set(type, new Map());
|
36 | }
|
37 |
|
38 | state.nodesByType.get(type).set(node.id, node);
|
39 | });
|
40 | }
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | delete state[`jsonDataPaths`];
|
46 | return state;
|
47 | } catch (e) {}
|
48 |
|
49 |
|
50 |
|
51 |
|
52 | return {};
|
53 | };
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | exports.readState = readState;
|
60 |
|
61 | const multi = ({
|
62 | dispatch
|
63 | }) => next => action => Array.isArray(action) ? action.filter(Boolean).map(dispatch) : next(action);
|
64 |
|
65 | const configureStore = initialState => (0, _redux.createStore)((0, _redux.combineReducers)(Object.assign({}, _reducers.default)), initialState, (0, _redux.applyMiddleware)(_reduxThunk.default, multi));
|
66 |
|
67 | exports.configureStore = configureStore;
|
68 | const store = configureStore(readState());
|
69 |
|
70 | exports.store = store;
|
71 |
|
72 | const saveState = () => {
|
73 | const state = store.getState();
|
74 | return (0, _persist.writeToCache)({
|
75 | nodes: state.nodes,
|
76 | status: state.status,
|
77 | componentDataDependencies: state.componentDataDependencies,
|
78 | components: state.components,
|
79 | jobsV2: state.jobsV2,
|
80 | staticQueryComponents: state.staticQueryComponents,
|
81 | webpackCompilationHash: state.webpackCompilationHash,
|
82 | pageDataStats: state.pageDataStats
|
83 | });
|
84 | };
|
85 |
|
86 | exports.saveState = saveState;
|
87 | store.subscribe(() => {
|
88 | const lastAction = store.getState().lastAction;
|
89 | emitter.emit(lastAction.type, lastAction);
|
90 | });
|
91 |
|
\ | No newline at end of file |