@spoosh/plugin-refetch 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +35 -35
- package/dist/index.mjs +35 -35
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ function refetchPlugin(config = {}) {
|
|
|
29
29
|
const { refetchOnFocus = false, refetchOnReconnect = false } = config;
|
|
30
30
|
const listenersByHook = /* @__PURE__ */ new Map();
|
|
31
31
|
const isBrowser = typeof window !== "undefined";
|
|
32
|
-
const setupFocusListener = (
|
|
32
|
+
const setupFocusListener = (instanceId, queryKey, eventEmitter) => {
|
|
33
33
|
if (!isBrowser) return;
|
|
34
34
|
const visibilityHandler = () => {
|
|
35
35
|
if (document.visibilityState === "visible") {
|
|
@@ -47,15 +47,15 @@ function refetchPlugin(config = {}) {
|
|
|
47
47
|
};
|
|
48
48
|
document.addEventListener("visibilitychange", visibilityHandler);
|
|
49
49
|
window.addEventListener("focus", focusHandler);
|
|
50
|
-
const entry = listenersByHook.get(
|
|
50
|
+
const entry = listenersByHook.get(instanceId) ?? { queryKey };
|
|
51
51
|
entry.queryKey = queryKey;
|
|
52
52
|
entry.focusCleanup = () => {
|
|
53
53
|
document.removeEventListener("visibilitychange", visibilityHandler);
|
|
54
54
|
window.removeEventListener("focus", focusHandler);
|
|
55
55
|
};
|
|
56
|
-
listenersByHook.set(
|
|
56
|
+
listenersByHook.set(instanceId, entry);
|
|
57
57
|
};
|
|
58
|
-
const setupReconnectListener = (
|
|
58
|
+
const setupReconnectListener = (instanceId, queryKey, eventEmitter) => {
|
|
59
59
|
if (!isBrowser) return;
|
|
60
60
|
const handler = () => {
|
|
61
61
|
eventEmitter.emit("refetch", {
|
|
@@ -64,36 +64,36 @@ function refetchPlugin(config = {}) {
|
|
|
64
64
|
});
|
|
65
65
|
};
|
|
66
66
|
window.addEventListener("online", handler);
|
|
67
|
-
const entry = listenersByHook.get(
|
|
67
|
+
const entry = listenersByHook.get(instanceId) ?? { queryKey };
|
|
68
68
|
entry.queryKey = queryKey;
|
|
69
69
|
entry.reconnectCleanup = () => {
|
|
70
70
|
window.removeEventListener("online", handler);
|
|
71
71
|
};
|
|
72
|
-
listenersByHook.set(
|
|
72
|
+
listenersByHook.set(instanceId, entry);
|
|
73
73
|
};
|
|
74
|
-
const cleanupHook = (
|
|
75
|
-
const entry = listenersByHook.get(
|
|
74
|
+
const cleanupHook = (instanceId) => {
|
|
75
|
+
const entry = listenersByHook.get(instanceId);
|
|
76
76
|
if (entry) {
|
|
77
77
|
entry.focusCleanup?.();
|
|
78
78
|
entry.reconnectCleanup?.();
|
|
79
|
-
listenersByHook.delete(
|
|
79
|
+
listenersByHook.delete(instanceId);
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
-
const hasFocusListener = (
|
|
83
|
-
return listenersByHook.get(
|
|
82
|
+
const hasFocusListener = (instanceId) => {
|
|
83
|
+
return listenersByHook.get(instanceId)?.focusCleanup !== void 0;
|
|
84
84
|
};
|
|
85
|
-
const hasReconnectListener = (
|
|
86
|
-
return listenersByHook.get(
|
|
85
|
+
const hasReconnectListener = (instanceId) => {
|
|
86
|
+
return listenersByHook.get(instanceId)?.reconnectCleanup !== void 0;
|
|
87
87
|
};
|
|
88
|
-
const removeFocusListener = (
|
|
89
|
-
const entry = listenersByHook.get(
|
|
88
|
+
const removeFocusListener = (instanceId) => {
|
|
89
|
+
const entry = listenersByHook.get(instanceId);
|
|
90
90
|
if (entry?.focusCleanup) {
|
|
91
91
|
entry.focusCleanup();
|
|
92
92
|
entry.focusCleanup = void 0;
|
|
93
93
|
}
|
|
94
94
|
};
|
|
95
|
-
const removeReconnectListener = (
|
|
96
|
-
const entry = listenersByHook.get(
|
|
95
|
+
const removeReconnectListener = (instanceId) => {
|
|
96
|
+
const entry = listenersByHook.get(instanceId);
|
|
97
97
|
if (entry?.reconnectCleanup) {
|
|
98
98
|
entry.reconnectCleanup();
|
|
99
99
|
entry.reconnectCleanup = void 0;
|
|
@@ -104,43 +104,43 @@ function refetchPlugin(config = {}) {
|
|
|
104
104
|
operations: ["read", "infiniteRead"],
|
|
105
105
|
lifecycle: {
|
|
106
106
|
onMount(context) {
|
|
107
|
-
const { queryKey, eventEmitter,
|
|
108
|
-
if (!
|
|
107
|
+
const { queryKey, eventEmitter, instanceId } = context;
|
|
108
|
+
if (!instanceId) return;
|
|
109
109
|
const pluginOptions = context.pluginOptions;
|
|
110
110
|
const shouldRefetchOnFocus = pluginOptions?.refetchOnFocus ?? refetchOnFocus;
|
|
111
111
|
const shouldRefetchOnReconnect = pluginOptions?.refetchOnReconnect ?? refetchOnReconnect;
|
|
112
112
|
if (shouldRefetchOnFocus) {
|
|
113
|
-
setupFocusListener(
|
|
113
|
+
setupFocusListener(instanceId, queryKey, eventEmitter);
|
|
114
114
|
}
|
|
115
115
|
if (shouldRefetchOnReconnect) {
|
|
116
|
-
setupReconnectListener(
|
|
116
|
+
setupReconnectListener(instanceId, queryKey, eventEmitter);
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
119
|
onUpdate(context) {
|
|
120
|
-
const { queryKey, eventEmitter,
|
|
121
|
-
if (!
|
|
120
|
+
const { queryKey, eventEmitter, instanceId } = context;
|
|
121
|
+
if (!instanceId) return;
|
|
122
122
|
const pluginOptions = context.pluginOptions;
|
|
123
123
|
const shouldRefetchOnFocus = pluginOptions?.refetchOnFocus ?? refetchOnFocus;
|
|
124
124
|
const shouldRefetchOnReconnect = pluginOptions?.refetchOnReconnect ?? refetchOnReconnect;
|
|
125
|
-
const entry = listenersByHook.get(
|
|
125
|
+
const entry = listenersByHook.get(instanceId);
|
|
126
126
|
const queryKeyChanged = entry && entry.queryKey !== queryKey;
|
|
127
127
|
if (queryKeyChanged) {
|
|
128
|
-
cleanupHook(
|
|
128
|
+
cleanupHook(instanceId);
|
|
129
129
|
}
|
|
130
|
-
if (shouldRefetchOnFocus && !hasFocusListener(
|
|
131
|
-
setupFocusListener(
|
|
132
|
-
} else if (!shouldRefetchOnFocus && hasFocusListener(
|
|
133
|
-
removeFocusListener(
|
|
130
|
+
if (shouldRefetchOnFocus && !hasFocusListener(instanceId)) {
|
|
131
|
+
setupFocusListener(instanceId, queryKey, eventEmitter);
|
|
132
|
+
} else if (!shouldRefetchOnFocus && hasFocusListener(instanceId)) {
|
|
133
|
+
removeFocusListener(instanceId);
|
|
134
134
|
}
|
|
135
|
-
if (shouldRefetchOnReconnect && !hasReconnectListener(
|
|
136
|
-
setupReconnectListener(
|
|
137
|
-
} else if (!shouldRefetchOnReconnect && hasReconnectListener(
|
|
138
|
-
removeReconnectListener(
|
|
135
|
+
if (shouldRefetchOnReconnect && !hasReconnectListener(instanceId)) {
|
|
136
|
+
setupReconnectListener(instanceId, queryKey, eventEmitter);
|
|
137
|
+
} else if (!shouldRefetchOnReconnect && hasReconnectListener(instanceId)) {
|
|
138
|
+
removeReconnectListener(instanceId);
|
|
139
139
|
}
|
|
140
140
|
},
|
|
141
141
|
onUnmount(context) {
|
|
142
|
-
if (context.
|
|
143
|
-
cleanupHook(context.
|
|
142
|
+
if (context.instanceId) {
|
|
143
|
+
cleanupHook(context.instanceId);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ function refetchPlugin(config = {}) {
|
|
|
3
3
|
const { refetchOnFocus = false, refetchOnReconnect = false } = config;
|
|
4
4
|
const listenersByHook = /* @__PURE__ */ new Map();
|
|
5
5
|
const isBrowser = typeof window !== "undefined";
|
|
6
|
-
const setupFocusListener = (
|
|
6
|
+
const setupFocusListener = (instanceId, queryKey, eventEmitter) => {
|
|
7
7
|
if (!isBrowser) return;
|
|
8
8
|
const visibilityHandler = () => {
|
|
9
9
|
if (document.visibilityState === "visible") {
|
|
@@ -21,15 +21,15 @@ function refetchPlugin(config = {}) {
|
|
|
21
21
|
};
|
|
22
22
|
document.addEventListener("visibilitychange", visibilityHandler);
|
|
23
23
|
window.addEventListener("focus", focusHandler);
|
|
24
|
-
const entry = listenersByHook.get(
|
|
24
|
+
const entry = listenersByHook.get(instanceId) ?? { queryKey };
|
|
25
25
|
entry.queryKey = queryKey;
|
|
26
26
|
entry.focusCleanup = () => {
|
|
27
27
|
document.removeEventListener("visibilitychange", visibilityHandler);
|
|
28
28
|
window.removeEventListener("focus", focusHandler);
|
|
29
29
|
};
|
|
30
|
-
listenersByHook.set(
|
|
30
|
+
listenersByHook.set(instanceId, entry);
|
|
31
31
|
};
|
|
32
|
-
const setupReconnectListener = (
|
|
32
|
+
const setupReconnectListener = (instanceId, queryKey, eventEmitter) => {
|
|
33
33
|
if (!isBrowser) return;
|
|
34
34
|
const handler = () => {
|
|
35
35
|
eventEmitter.emit("refetch", {
|
|
@@ -38,36 +38,36 @@ function refetchPlugin(config = {}) {
|
|
|
38
38
|
});
|
|
39
39
|
};
|
|
40
40
|
window.addEventListener("online", handler);
|
|
41
|
-
const entry = listenersByHook.get(
|
|
41
|
+
const entry = listenersByHook.get(instanceId) ?? { queryKey };
|
|
42
42
|
entry.queryKey = queryKey;
|
|
43
43
|
entry.reconnectCleanup = () => {
|
|
44
44
|
window.removeEventListener("online", handler);
|
|
45
45
|
};
|
|
46
|
-
listenersByHook.set(
|
|
46
|
+
listenersByHook.set(instanceId, entry);
|
|
47
47
|
};
|
|
48
|
-
const cleanupHook = (
|
|
49
|
-
const entry = listenersByHook.get(
|
|
48
|
+
const cleanupHook = (instanceId) => {
|
|
49
|
+
const entry = listenersByHook.get(instanceId);
|
|
50
50
|
if (entry) {
|
|
51
51
|
entry.focusCleanup?.();
|
|
52
52
|
entry.reconnectCleanup?.();
|
|
53
|
-
listenersByHook.delete(
|
|
53
|
+
listenersByHook.delete(instanceId);
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
-
const hasFocusListener = (
|
|
57
|
-
return listenersByHook.get(
|
|
56
|
+
const hasFocusListener = (instanceId) => {
|
|
57
|
+
return listenersByHook.get(instanceId)?.focusCleanup !== void 0;
|
|
58
58
|
};
|
|
59
|
-
const hasReconnectListener = (
|
|
60
|
-
return listenersByHook.get(
|
|
59
|
+
const hasReconnectListener = (instanceId) => {
|
|
60
|
+
return listenersByHook.get(instanceId)?.reconnectCleanup !== void 0;
|
|
61
61
|
};
|
|
62
|
-
const removeFocusListener = (
|
|
63
|
-
const entry = listenersByHook.get(
|
|
62
|
+
const removeFocusListener = (instanceId) => {
|
|
63
|
+
const entry = listenersByHook.get(instanceId);
|
|
64
64
|
if (entry?.focusCleanup) {
|
|
65
65
|
entry.focusCleanup();
|
|
66
66
|
entry.focusCleanup = void 0;
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
|
-
const removeReconnectListener = (
|
|
70
|
-
const entry = listenersByHook.get(
|
|
69
|
+
const removeReconnectListener = (instanceId) => {
|
|
70
|
+
const entry = listenersByHook.get(instanceId);
|
|
71
71
|
if (entry?.reconnectCleanup) {
|
|
72
72
|
entry.reconnectCleanup();
|
|
73
73
|
entry.reconnectCleanup = void 0;
|
|
@@ -78,43 +78,43 @@ function refetchPlugin(config = {}) {
|
|
|
78
78
|
operations: ["read", "infiniteRead"],
|
|
79
79
|
lifecycle: {
|
|
80
80
|
onMount(context) {
|
|
81
|
-
const { queryKey, eventEmitter,
|
|
82
|
-
if (!
|
|
81
|
+
const { queryKey, eventEmitter, instanceId } = context;
|
|
82
|
+
if (!instanceId) return;
|
|
83
83
|
const pluginOptions = context.pluginOptions;
|
|
84
84
|
const shouldRefetchOnFocus = pluginOptions?.refetchOnFocus ?? refetchOnFocus;
|
|
85
85
|
const shouldRefetchOnReconnect = pluginOptions?.refetchOnReconnect ?? refetchOnReconnect;
|
|
86
86
|
if (shouldRefetchOnFocus) {
|
|
87
|
-
setupFocusListener(
|
|
87
|
+
setupFocusListener(instanceId, queryKey, eventEmitter);
|
|
88
88
|
}
|
|
89
89
|
if (shouldRefetchOnReconnect) {
|
|
90
|
-
setupReconnectListener(
|
|
90
|
+
setupReconnectListener(instanceId, queryKey, eventEmitter);
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
93
|
onUpdate(context) {
|
|
94
|
-
const { queryKey, eventEmitter,
|
|
95
|
-
if (!
|
|
94
|
+
const { queryKey, eventEmitter, instanceId } = context;
|
|
95
|
+
if (!instanceId) return;
|
|
96
96
|
const pluginOptions = context.pluginOptions;
|
|
97
97
|
const shouldRefetchOnFocus = pluginOptions?.refetchOnFocus ?? refetchOnFocus;
|
|
98
98
|
const shouldRefetchOnReconnect = pluginOptions?.refetchOnReconnect ?? refetchOnReconnect;
|
|
99
|
-
const entry = listenersByHook.get(
|
|
99
|
+
const entry = listenersByHook.get(instanceId);
|
|
100
100
|
const queryKeyChanged = entry && entry.queryKey !== queryKey;
|
|
101
101
|
if (queryKeyChanged) {
|
|
102
|
-
cleanupHook(
|
|
102
|
+
cleanupHook(instanceId);
|
|
103
103
|
}
|
|
104
|
-
if (shouldRefetchOnFocus && !hasFocusListener(
|
|
105
|
-
setupFocusListener(
|
|
106
|
-
} else if (!shouldRefetchOnFocus && hasFocusListener(
|
|
107
|
-
removeFocusListener(
|
|
104
|
+
if (shouldRefetchOnFocus && !hasFocusListener(instanceId)) {
|
|
105
|
+
setupFocusListener(instanceId, queryKey, eventEmitter);
|
|
106
|
+
} else if (!shouldRefetchOnFocus && hasFocusListener(instanceId)) {
|
|
107
|
+
removeFocusListener(instanceId);
|
|
108
108
|
}
|
|
109
|
-
if (shouldRefetchOnReconnect && !hasReconnectListener(
|
|
110
|
-
setupReconnectListener(
|
|
111
|
-
} else if (!shouldRefetchOnReconnect && hasReconnectListener(
|
|
112
|
-
removeReconnectListener(
|
|
109
|
+
if (shouldRefetchOnReconnect && !hasReconnectListener(instanceId)) {
|
|
110
|
+
setupReconnectListener(instanceId, queryKey, eventEmitter);
|
|
111
|
+
} else if (!shouldRefetchOnReconnect && hasReconnectListener(instanceId)) {
|
|
112
|
+
removeReconnectListener(instanceId);
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
115
|
onUnmount(context) {
|
|
116
|
-
if (context.
|
|
117
|
-
cleanupHook(context.
|
|
116
|
+
if (context.instanceId) {
|
|
117
|
+
cleanupHook(context.instanceId);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spoosh/plugin-refetch",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Auto-refetch plugin for Spoosh - refetch on focus and reconnect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@spoosh/core": ">=0.
|
|
37
|
+
"@spoosh/core": ">=0.12.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@spoosh/core": "0.
|
|
41
|
-
"@spoosh/test-utils": "0.1.
|
|
40
|
+
"@spoosh/core": "0.12.0",
|
|
41
|
+
"@spoosh/test-utils": "0.1.8"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"dev": "tsup --watch",
|