UNPKG

1.48 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.nodesByTypeReducer = void 0;
5const getNodesOfType = (node, state) => {
6 const {
7 type
8 } = node.internal;
9 if (!state.has(type)) {
10 state.set(type, new Map());
11 }
12 const nodeByType = state.get(type);
13 if (!nodeByType) {
14 throw new Error(`An error occurred finding a node by it's type. This is likely a bug in gatsby. If you experience this error please open an issue.`);
15 }
16 return nodeByType;
17};
18const nodesByTypeReducer = (state = new Map(), action) => {
19 switch (action.type) {
20 case `DELETE_CACHE`:
21 return new Map();
22 case `CREATE_NODE`:
23 {
24 const node = action.payload;
25 const nodesOfType = getNodesOfType(node, state);
26 nodesOfType.set(node.id, node);
27 return state;
28 }
29 case `ADD_FIELD_TO_NODE`:
30 case `ADD_CHILD_NODE_TO_PARENT_NODE`:
31 {
32 const node = action.payload;
33 const nodesOfType = getNodesOfType(node, state);
34 nodesOfType.set(node.id, node);
35 return state;
36 }
37 case `DELETE_NODE`:
38 {
39 const node = action.payload;
40 if (!node) return state;
41 const nodesOfType = getNodesOfType(node, state);
42 nodesOfType.delete(node.id);
43 if (!nodesOfType.size) {
44 state.delete(node.internal.type);
45 }
46 return state;
47 }
48 default:
49 return state;
50 }
51};
52exports.nodesByTypeReducer = nodesByTypeReducer;
53//# sourceMappingURL=nodes-by-type.js.map
\No newline at end of file