UNPKG

2.61 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.saveState = exports.store = exports.configureStore = exports.readState = exports.emitter = void 0;
7
8var _redux = require("redux");
9
10var _mitt = _interopRequireDefault(require("mitt"));
11
12var _reduxThunk = _interopRequireDefault(require("redux-thunk"));
13
14var _reducers = _interopRequireDefault(require("./reducers"));
15
16var _persist = require("./persist");
17
18const emitter = (0, _mitt.default)(); // Read old node data from cache.
19
20exports.emitter = emitter;
21
22const readState = () => {
23 try {
24 const state = (0, _persist.readFromCache)();
25
26 if (state.nodes) {
27 // re-create nodesByType
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 } // jsonDataPaths was removed in the per-page-manifest
41 // changes. Explicitly delete it here to cover case where user
42 // runs gatsby the first time after upgrading.
43
44
45 delete state[`jsonDataPaths`];
46 return state;
47 } catch (e) {} // ignore errors.
48 // BUG: Would this not cause downstream bugs? seems likely. Why wouldn't we just
49 // throw and kill the program?
50
51
52 return {};
53};
54/**
55 * Redux middleware handling array of actions
56 */
57
58
59exports.readState = readState;
60
61const multi = ({
62 dispatch
63}) => next => action => Array.isArray(action) ? action.filter(Boolean).map(dispatch) : next(action);
64
65const configureStore = initialState => (0, _redux.createStore)((0, _redux.combineReducers)(Object.assign({}, _reducers.default)), initialState, (0, _redux.applyMiddleware)(_reduxThunk.default, multi));
66
67exports.configureStore = configureStore;
68const store = configureStore(readState()); // Persist state.
69
70exports.store = store;
71
72const 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
86exports.saveState = saveState;
87store.subscribe(() => {
88 const lastAction = store.getState().lastAction;
89 emitter.emit(lastAction.type, lastAction);
90});
91//# sourceMappingURL=index.js.map
\No newline at end of file