1 | "use strict";
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.nodesByTypeReducer = void 0;
|
5 | const 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 | };
|
18 | const 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 | };
|
52 | exports.nodesByTypeReducer = nodesByTypeReducer;
|
53 |
|
\ | No newline at end of file |