@tanstack/query-core 5.0.0-alpha.6 → 5.0.0-alpha.61
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/build/lib/{focusManager.mjs → focusManager.cjs} +9 -6
- package/build/lib/{focusManager.mjs.map → focusManager.cjs.map} +1 -1
- package/build/lib/focusManager.d.ts +2 -1
- package/build/lib/focusManager.d.ts.map +1 -0
- package/build/lib/focusManager.js +20 -39
- package/build/lib/focusManager.js.map +1 -1
- package/build/lib/{hydration.mjs → hydration.cjs} +11 -20
- package/build/lib/hydration.cjs.map +1 -0
- package/build/lib/hydration.d.ts +3 -6
- package/build/lib/hydration.d.ts.map +1 -0
- package/build/lib/hydration.js +7 -28
- package/build/lib/hydration.js.map +1 -1
- package/build/lib/index.cjs +40 -0
- package/build/lib/index.cjs.map +1 -0
- package/build/lib/index.d.ts +5 -3
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +13 -39
- package/build/lib/index.js.map +1 -1
- package/build/lib/{infiniteQueryBehavior.mjs → infiniteQueryBehavior.cjs} +8 -4
- package/build/lib/{infiniteQueryBehavior.mjs.map → infiniteQueryBehavior.cjs.map} +1 -1
- package/build/lib/infiniteQueryBehavior.d.ts +1 -0
- package/build/lib/infiniteQueryBehavior.d.ts.map +1 -0
- package/build/lib/infiniteQueryBehavior.js +7 -12
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/{infiniteQueryObserver.mjs → infiniteQueryObserver.cjs} +11 -9
- package/build/lib/{infiniteQueryObserver.mjs.map → infiniteQueryObserver.cjs.map} +1 -1
- package/build/lib/infiniteQueryObserver.d.ts +2 -1
- package/build/lib/infiniteQueryObserver.d.ts.map +1 -0
- package/build/lib/infiniteQueryObserver.js +10 -13
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/{mutation.mjs → mutation.cjs} +13 -10
- package/build/lib/mutation.cjs.map +1 -0
- package/build/lib/mutation.d.ts +2 -1
- package/build/lib/mutation.d.ts.map +1 -0
- package/build/lib/mutation.js +107 -135
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/{mutationCache.mjs → mutationCache.cjs} +21 -18
- package/build/lib/mutationCache.cjs.map +1 -0
- package/build/lib/mutationCache.d.ts +3 -2
- package/build/lib/mutationCache.d.ts.map +1 -0
- package/build/lib/mutationCache.js +33 -47
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/{mutationObserver.mjs → mutationObserver.cjs} +13 -11
- package/build/lib/mutationObserver.cjs.map +1 -0
- package/build/lib/mutationObserver.d.ts +2 -1
- package/build/lib/mutationObserver.d.ts.map +1 -0
- package/build/lib/mutationObserver.js +59 -91
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/{notifyManager.mjs → notifyManager.cjs} +8 -5
- package/build/lib/{notifyManager.mjs.map → notifyManager.cjs.map} +1 -1
- package/build/lib/notifyManager.d.ts +4 -3
- package/build/lib/notifyManager.d.ts.map +1 -0
- package/build/lib/notifyManager.js +4 -7
- package/build/lib/notifyManager.js.map +1 -1
- package/build/lib/{onlineManager.mjs → onlineManager.cjs} +16 -10
- package/build/lib/onlineManager.cjs.map +1 -0
- package/build/lib/onlineManager.d.ts +2 -1
- package/build/lib/onlineManager.d.ts.map +1 -0
- package/build/lib/onlineManager.js +26 -41
- package/build/lib/onlineManager.js.map +1 -1
- package/build/lib/{queriesObserver.mjs → queriesObserver.cjs} +51 -26
- package/build/lib/queriesObserver.cjs.map +1 -0
- package/build/lib/queriesObserver.d.ts +14 -6
- package/build/lib/queriesObserver.d.ts.map +1 -0
- package/build/lib/queriesObserver.js +99 -107
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/{query.mjs → query.cjs} +22 -20
- package/build/lib/query.cjs.map +1 -0
- package/build/lib/query.d.ts +3 -2
- package/build/lib/query.d.ts.map +1 -0
- package/build/lib/query.js +173 -224
- package/build/lib/query.js.map +1 -1
- package/build/lib/{queryCache.mjs → queryCache.cjs} +28 -23
- package/build/lib/queryCache.cjs.map +1 -0
- package/build/lib/queryCache.d.ts +3 -3
- package/build/lib/queryCache.d.ts.map +1 -0
- package/build/lib/queryCache.js +31 -37
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/{queryClient.mjs → queryClient.cjs} +50 -42
- package/build/lib/queryClient.cjs.map +1 -0
- package/build/lib/queryClient.d.ts +2 -2
- package/build/lib/queryClient.d.ts.map +1 -0
- package/build/lib/queryClient.js +98 -134
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/{queryObserver.mjs → queryObserver.cjs} +40 -50
- package/build/lib/queryObserver.cjs.map +1 -0
- package/build/lib/queryObserver.d.ts +6 -7
- package/build/lib/queryObserver.d.ts.map +1 -0
- package/build/lib/queryObserver.js +208 -323
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/{removable.mjs → removable.cjs} +7 -5
- package/build/lib/{removable.mjs.map → removable.cjs.map} +1 -1
- package/build/lib/removable.d.ts +1 -0
- package/build/lib/removable.d.ts.map +1 -0
- package/build/lib/removable.js +9 -18
- package/build/lib/removable.js.map +1 -1
- package/build/lib/{retryer.mjs → retryer.cjs} +15 -8
- package/build/lib/{retryer.mjs.map → retryer.cjs.map} +1 -1
- package/build/lib/retryer.d.ts +5 -4
- package/build/lib/retryer.d.ts.map +1 -0
- package/build/lib/retryer.js +21 -25
- package/build/lib/retryer.js.map +1 -1
- package/build/lib/{subscribable.mjs → subscribable.cjs} +8 -6
- package/build/lib/subscribable.cjs.map +1 -0
- package/build/lib/subscribable.d.ts +3 -2
- package/build/lib/subscribable.d.ts.map +1 -0
- package/build/lib/subscribable.js +5 -7
- package/build/lib/subscribable.js.map +1 -1
- package/build/lib/tests/focusManager.test.d.ts +1 -0
- package/build/lib/tests/focusManager.test.d.ts.map +1 -0
- package/build/lib/tests/hydration.test.d.ts +1 -0
- package/build/lib/tests/hydration.test.d.ts.map +1 -0
- package/build/lib/tests/infiniteQueryBehavior.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryBehavior.test.d.ts.map +1 -0
- package/build/lib/tests/infiniteQueryObserver.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryObserver.test.d.ts.map +1 -0
- package/build/lib/tests/mutationCache.test.d.ts +1 -0
- package/build/lib/tests/mutationCache.test.d.ts.map +1 -0
- package/build/lib/tests/mutationObserver.test.d.ts +1 -0
- package/build/lib/tests/mutationObserver.test.d.ts.map +1 -0
- package/build/lib/tests/mutations.test.d.ts +1 -0
- package/build/lib/tests/mutations.test.d.ts.map +1 -0
- package/build/lib/tests/notifyManager.test.d.ts +1 -0
- package/build/lib/tests/notifyManager.test.d.ts.map +1 -0
- package/build/lib/tests/onlineManager.test.d.ts +1 -0
- package/build/lib/tests/onlineManager.test.d.ts.map +1 -0
- package/build/lib/tests/queriesObserver.test.d.ts +1 -0
- package/build/lib/tests/queriesObserver.test.d.ts.map +1 -0
- package/build/lib/tests/query.test.d.ts +1 -0
- package/build/lib/tests/query.test.d.ts.map +1 -0
- package/build/lib/tests/queryCache.test.d.ts +1 -0
- package/build/lib/tests/queryCache.test.d.ts.map +1 -0
- package/build/lib/tests/queryClient.test.d.ts +1 -0
- package/build/lib/tests/queryClient.test.d.ts.map +1 -0
- package/build/lib/tests/queryObserver.test.d.ts +1 -0
- package/build/lib/tests/queryObserver.test.d.ts.map +1 -0
- package/build/lib/tests/utils.d.ts +3 -2
- package/build/lib/tests/utils.d.ts.map +1 -0
- package/build/lib/tests/utils.test.d.ts +1 -0
- package/build/lib/tests/utils.test.d.ts.map +1 -0
- package/build/lib/types.d.ts +34 -46
- package/build/lib/types.d.ts.map +1 -0
- package/build/lib/{utils.mjs → utils.cjs} +23 -2
- package/build/lib/{utils.mjs.map → utils.cjs.map} +1 -1
- package/build/lib/utils.d.ts +4 -3
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +2 -23
- package/build/lib/utils.js.map +1 -1
- package/package.json +13 -9
- package/src/hydration.ts +18 -37
- package/src/index.ts +3 -4
- package/src/mutation.ts +1 -1
- package/src/mutationCache.ts +4 -4
- package/src/mutationObserver.ts +1 -1
- package/src/onlineManager.ts +8 -4
- package/src/queriesObserver.ts +75 -25
- package/src/query.ts +4 -4
- package/src/queryCache.ts +5 -8
- package/src/queryClient.ts +20 -20
- package/src/queryObserver.ts +47 -55
- package/src/subscribable.ts +5 -5
- package/src/tests/hydration.test.tsx +7 -3
- package/src/tests/query.test.tsx +1 -1
- package/src/tests/queryCache.test.tsx +1 -19
- package/src/tests/queryClient.test.tsx +39 -3
- package/src/tests/queryObserver.test.tsx +121 -0
- package/src/types.ts +14 -21
- package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js +0 -13
- package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js.map +0 -1
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js +0 -16
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/lib/focusManager.esm.js +0 -87
- package/build/lib/focusManager.esm.js.map +0 -1
- package/build/lib/hydration.esm.js +0 -100
- package/build/lib/hydration.esm.js.map +0 -1
- package/build/lib/hydration.mjs.map +0 -1
- package/build/lib/index.esm.js +0 -14
- package/build/lib/index.esm.js.map +0 -1
- package/build/lib/index.mjs +0 -14
- package/build/lib/index.mjs.map +0 -1
- package/build/lib/infiniteQueryBehavior.esm.js +0 -127
- package/build/lib/infiniteQueryBehavior.esm.js.map +0 -1
- package/build/lib/infiniteQueryObserver.esm.js +0 -76
- package/build/lib/infiniteQueryObserver.esm.js.map +0 -1
- package/build/lib/mutation.esm.js +0 -259
- package/build/lib/mutation.esm.js.map +0 -1
- package/build/lib/mutation.mjs.map +0 -1
- package/build/lib/mutationCache.esm.js +0 -95
- package/build/lib/mutationCache.esm.js.map +0 -1
- package/build/lib/mutationCache.mjs.map +0 -1
- package/build/lib/mutationObserver.esm.js +0 -126
- package/build/lib/mutationObserver.esm.js.map +0 -1
- package/build/lib/mutationObserver.mjs.map +0 -1
- package/build/lib/notifyManager.esm.js +0 -89
- package/build/lib/notifyManager.esm.js.map +0 -1
- package/build/lib/onlineManager.esm.js +0 -88
- package/build/lib/onlineManager.esm.js.map +0 -1
- package/build/lib/onlineManager.mjs.map +0 -1
- package/build/lib/queriesObserver.esm.js +0 -165
- package/build/lib/queriesObserver.esm.js.map +0 -1
- package/build/lib/queriesObserver.mjs.map +0 -1
- package/build/lib/query.esm.js +0 -469
- package/build/lib/query.esm.js.map +0 -1
- package/build/lib/query.mjs.map +0 -1
- package/build/lib/queryCache.esm.js +0 -108
- package/build/lib/queryCache.esm.js.map +0 -1
- package/build/lib/queryCache.mjs.map +0 -1
- package/build/lib/queryClient.esm.js +0 -317
- package/build/lib/queryClient.esm.js.map +0 -1
- package/build/lib/queryClient.mjs.map +0 -1
- package/build/lib/queryObserver.esm.js +0 -541
- package/build/lib/queryObserver.esm.js.map +0 -1
- package/build/lib/queryObserver.mjs.map +0 -1
- package/build/lib/removable.esm.js +0 -36
- package/build/lib/removable.esm.js.map +0 -1
- package/build/lib/retryer.esm.js +0 -151
- package/build/lib/retryer.esm.js.map +0 -1
- package/build/lib/subscribable.esm.js +0 -26
- package/build/lib/subscribable.esm.js.map +0 -1
- package/build/lib/subscribable.mjs.map +0 -1
- package/build/lib/utils.esm.js +0 -227
- package/build/lib/utils.esm.js.map +0 -1
- package/build/umd/index.development.js +0 -2683
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -2
- package/build/umd/index.production.js.map +0 -1
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var utils = require('./utils.js');
|
|
1
|
+
import { scheduleMicrotask } from './utils.js';
|
|
4
2
|
|
|
5
3
|
// TYPES
|
|
6
4
|
|
|
@@ -30,7 +28,7 @@ function createNotifyManager() {
|
|
|
30
28
|
if (transactions) {
|
|
31
29
|
queue.push(callback);
|
|
32
30
|
} else {
|
|
33
|
-
|
|
31
|
+
scheduleMicrotask(() => {
|
|
34
32
|
notifyFn(callback);
|
|
35
33
|
});
|
|
36
34
|
}
|
|
@@ -50,7 +48,7 @@ function createNotifyManager() {
|
|
|
50
48
|
const originalQueue = queue;
|
|
51
49
|
queue = [];
|
|
52
50
|
if (originalQueue.length) {
|
|
53
|
-
|
|
51
|
+
scheduleMicrotask(() => {
|
|
54
52
|
batchNotifyFn(() => {
|
|
55
53
|
originalQueue.forEach(callback => {
|
|
56
54
|
notifyFn(callback);
|
|
@@ -87,6 +85,5 @@ function createNotifyManager() {
|
|
|
87
85
|
// SINGLETON
|
|
88
86
|
const notifyManager = createNotifyManager();
|
|
89
87
|
|
|
90
|
-
|
|
91
|
-
exports.notifyManager = notifyManager;
|
|
88
|
+
export { createNotifyManager, notifyManager };
|
|
92
89
|
//# sourceMappingURL=notifyManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifyManager.js","sources":["../../src/notifyManager.ts"],"sourcesContent":["import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n"],"names":["createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","batch","result","flush","schedule","push","scheduleMicrotask","batchCalls","args","originalQueue","length","forEach","setNotifyFunction","fn","setBatchNotifyFunction","notifyManager"],"mappings":"
|
|
1
|
+
{"version":3,"file":"notifyManager.js","sources":["../../src/notifyManager.ts"],"sourcesContent":["import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n"],"names":["createNotifyManager","queue","transactions","notifyFn","callback","batchNotifyFn","batch","result","flush","schedule","push","scheduleMicrotask","batchCalls","args","originalQueue","length","forEach","setNotifyFunction","fn","setBatchNotifyFunction","notifyManager"],"mappings":";;AAEA;;AAQO,SAASA,mBAAmBA,GAAG;EACpC,IAAIC,KAAuB,GAAG,EAAE,CAAA;EAChC,IAAIC,YAAY,GAAG,CAAC,CAAA;EACpB,IAAIC,QAAwB,GAAIC,QAAQ,IAAK;AAC3CA,IAAAA,QAAQ,EAAE,CAAA;GACX,CAAA;EACD,IAAIC,aAAkC,GAAID,QAAoB,IAAK;AACjEA,IAAAA,QAAQ,EAAE,CAAA;GACX,CAAA;EAED,MAAME,KAAK,GAAOF,QAAiB,IAAQ;AACzC,IAAA,IAAIG,MAAM,CAAA;AACVL,IAAAA,YAAY,EAAE,CAAA;IACd,IAAI;MACFK,MAAM,GAAGH,QAAQ,EAAE,CAAA;AACrB,KAAC,SAAS;AACRF,MAAAA,YAAY,EAAE,CAAA;MACd,IAAI,CAACA,YAAY,EAAE;AACjBM,QAAAA,KAAK,EAAE,CAAA;AACT,OAAA;AACF,KAAA;AACA,IAAA,OAAOD,MAAM,CAAA;GACd,CAAA;EAED,MAAME,QAAQ,GAAIL,QAAwB,IAAW;AACnD,IAAA,IAAIF,YAAY,EAAE;AAChBD,MAAAA,KAAK,CAACS,IAAI,CAACN,QAAQ,CAAC,CAAA;AACtB,KAAC,MAAM;AACLO,MAAAA,iBAAiB,CAAC,MAAM;QACtBR,QAAQ,CAACC,QAAQ,CAAC,CAAA;AACpB,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;;AAED;AACF;AACA;EACE,MAAMQ,UAAU,GAAwBR,QAAW,IAAQ;IACzD,OAAQ,CAAC,GAAGS,IAAW,KAAK;AAC1BJ,MAAAA,QAAQ,CAAC,MAAM;QACbL,QAAQ,CAAC,GAAGS,IAAI,CAAC,CAAA;AACnB,OAAC,CAAC,CAAA;KACH,CAAA;GACF,CAAA;EAED,MAAML,KAAK,GAAGA,MAAY;IACxB,MAAMM,aAAa,GAAGb,KAAK,CAAA;AAC3BA,IAAAA,KAAK,GAAG,EAAE,CAAA;IACV,IAAIa,aAAa,CAACC,MAAM,EAAE;AACxBJ,MAAAA,iBAAiB,CAAC,MAAM;AACtBN,QAAAA,aAAa,CAAC,MAAM;AAClBS,UAAAA,aAAa,CAACE,OAAO,CAAEZ,QAAQ,IAAK;YAClCD,QAAQ,CAACC,QAAQ,CAAC,CAAA;AACpB,WAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACJ,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,CAAA;;AAED;AACF;AACA;AACA;EACE,MAAMa,iBAAiB,GAAIC,EAAkB,IAAK;AAChDf,IAAAA,QAAQ,GAAGe,EAAE,CAAA;GACd,CAAA;;AAED;AACF;AACA;AACA;EACE,MAAMC,sBAAsB,GAAID,EAAuB,IAAK;AAC1Db,IAAAA,aAAa,GAAGa,EAAE,CAAA;GACnB,CAAA;EAED,OAAO;IACLZ,KAAK;IACLM,UAAU;IACVH,QAAQ;IACRQ,iBAAiB;AACjBE,IAAAA,sBAAAA;GACD,CAAA;AACH,CAAA;;AAEA;AACaC,MAAAA,aAAa,GAAGpB,mBAAmB;;;;"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { isServer } from './utils.mjs';
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
var subscribable = require('./subscribable.cjs');
|
|
4
|
+
var utils = require('./utils.cjs');
|
|
5
|
+
|
|
6
|
+
const onlineEvents = ['online', 'offline'];
|
|
7
|
+
class OnlineManager extends subscribable.Subscribable {
|
|
5
8
|
#online;
|
|
6
9
|
#cleanup;
|
|
7
10
|
#setup;
|
|
@@ -10,15 +13,17 @@ class OnlineManager extends Subscribable {
|
|
|
10
13
|
this.#setup = onOnline => {
|
|
11
14
|
// addEventListener does not exist in React Native, but window does
|
|
12
15
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
13
|
-
if (!isServer && window.addEventListener) {
|
|
16
|
+
if (!utils.isServer && window.addEventListener) {
|
|
14
17
|
const listener = () => onOnline();
|
|
15
18
|
// Listen to online
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
onlineEvents.forEach(event => {
|
|
20
|
+
window.addEventListener(event, listener, false);
|
|
21
|
+
});
|
|
18
22
|
return () => {
|
|
19
23
|
// Be sure to unsubscribe if a new handler is set
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
onlineEvents.forEach(event => {
|
|
25
|
+
window.removeEventListener(event, listener);
|
|
26
|
+
});
|
|
22
27
|
};
|
|
23
28
|
}
|
|
24
29
|
return;
|
|
@@ -69,5 +74,6 @@ class OnlineManager extends Subscribable {
|
|
|
69
74
|
}
|
|
70
75
|
const onlineManager = new OnlineManager();
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
exports.OnlineManager = OnlineManager;
|
|
78
|
+
exports.onlineManager = onlineManager;
|
|
79
|
+
//# sourceMappingURL=onlineManager.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onlineManager.cjs","sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setOnline: (online?: boolean) => void,\n) => (() => void) | undefined\n\nconst onlineEvents = ['online', 'offline'] as const\n\nexport class OnlineManager extends Subscribable {\n #online?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline()\n // Listen to online\n onlineEvents.forEach((event) => {\n window.addEventListener(event, listener, false)\n })\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n onlineEvents.forEach((event) => {\n window.removeEventListener(event, listener)\n })\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((online?: boolean) => {\n if (typeof online === 'boolean') {\n this.setOnline(online)\n } else {\n this.onOnline()\n }\n })\n }\n\n setOnline(online?: boolean): void {\n this.#online = online\n\n if (online) {\n this.onOnline()\n }\n }\n\n onOnline(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isOnline(): boolean {\n if (typeof this.#online === 'boolean') {\n return this.#online\n }\n\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.onLine === 'undefined'\n ) {\n return true\n }\n\n return navigator.onLine\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"],"names":["onlineEvents","OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","online","setOnline","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":";;;;;AAOA,MAAMA,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAA;AAE5C,MAAMC,aAAa,SAASC,yBAAY,CAAC;AAC9C,EAAA,OAAO,CAAA;AACP,EAAA,QAAQ,CAAA;AAER,EAAA,MAAM,CAAA;AAENC,EAAAA,WAAWA,GAAG;AACZ,IAAA,KAAK,EAAE,CAAA;AACP,IAAA,IAAI,CAAC,MAAM,GAAIC,QAAQ,IAAK;AAC1B;AACA;AACA,MAAA,IAAI,CAACC,cAAQ,IAAIC,MAAM,CAACC,gBAAgB,EAAE;AACxC,QAAA,MAAMC,QAAQ,GAAGA,MAAMJ,QAAQ,EAAE,CAAA;AACjC;AACAJ,QAAAA,YAAY,CAACS,OAAO,CAAEC,KAAK,IAAK;UAC9BJ,MAAM,CAACC,gBAAgB,CAACG,KAAK,EAAEF,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjD,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,MAAM;AACX;AACAR,UAAAA,YAAY,CAACS,OAAO,CAAEC,KAAK,IAAK;AAC9BJ,YAAAA,MAAM,CAACK,mBAAmB,CAACD,KAAK,EAAEF,QAAQ,CAAC,CAAA;AAC7C,WAAC,CAAC,CAAA;SACH,CAAA;AACH,OAAA;AAEA,MAAA,OAAA;KACD,CAAA;AACH,GAAA;AAEUI,EAAAA,WAAWA,GAAS;AAC5B,IAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,MAAA,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AAEUC,EAAAA,aAAaA,GAAG;AACxB,IAAA,IAAI,CAAC,IAAI,CAACC,YAAY,EAAE,EAAE;AACxB,MAAA,IAAI,CAAC,QAAQ,IAAI,CAAA;AACjB,MAAA,IAAI,CAAC,QAAQ,GAAGC,SAAS,CAAA;AAC3B,KAAA;AACF,GAAA;EAEAH,gBAAgBA,CAACI,KAAc,EAAQ;AACrC,IAAA,IAAI,CAAC,MAAM,GAAGA,KAAK,CAAA;AACnB,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAA;AACjB,IAAA,IAAI,CAAC,QAAQ,GAAGA,KAAK,CAAEC,MAAgB,IAAK;AAC1C,MAAA,IAAI,OAAOA,MAAM,KAAK,SAAS,EAAE;AAC/B,QAAA,IAAI,CAACC,SAAS,CAACD,MAAM,CAAC,CAAA;AACxB,OAAC,MAAM;QACL,IAAI,CAACd,QAAQ,EAAE,CAAA;AACjB,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEAe,SAASA,CAACD,MAAgB,EAAQ;AAChC,IAAA,IAAI,CAAC,OAAO,GAAGA,MAAM,CAAA;AAErB,IAAA,IAAIA,MAAM,EAAE;MACV,IAAI,CAACd,QAAQ,EAAE,CAAA;AACjB,KAAA;AACF,GAAA;AAEAA,EAAAA,QAAQA,GAAS;AACf,IAAA,IAAI,CAACgB,SAAS,CAACX,OAAO,CAAED,QAAQ,IAAK;AACnCA,MAAAA,QAAQ,EAAE,CAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAa,EAAAA,QAAQA,GAAY;AAClB,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;MACrC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,KAAA;IAEA,IACE,OAAOC,SAAS,KAAK,WAAW,IAChC,OAAOA,SAAS,CAACC,MAAM,KAAK,WAAW,EACvC;AACA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;IAEA,OAAOD,SAAS,CAACC,MAAM,CAAA;AACzB,GAAA;AACF,CAAA;MAEaC,aAAa,GAAG,IAAIvB,aAAa;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Subscribable } from './subscribable';
|
|
2
|
-
|
|
2
|
+
type SetupFn = (setOnline: (online?: boolean) => void) => (() => void) | undefined;
|
|
3
3
|
export declare class OnlineManager extends Subscribable {
|
|
4
4
|
#private;
|
|
5
5
|
constructor();
|
|
@@ -12,3 +12,4 @@ export declare class OnlineManager extends Subscribable {
|
|
|
12
12
|
}
|
|
13
13
|
export declare const onlineManager: OnlineManager;
|
|
14
14
|
export {};
|
|
15
|
+
//# sourceMappingURL=onlineManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onlineManager.d.ts","sourceRoot":"","sources":["../../src/onlineManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,KAAK,OAAO,GAAG,CACb,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,KAClC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;AAI7B,qBAAa,aAAc,SAAQ,YAAY;;;IA8B7C,SAAS,CAAC,WAAW,IAAI,IAAI;IAM7B,SAAS,CAAC,aAAa;IAOvB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAYtC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAQjC,QAAQ,IAAI,IAAI;IAMhB,QAAQ,IAAI,OAAO;CAcpB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
|
|
@@ -1,61 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
import { Subscribable } from './subscribable.js';
|
|
2
|
+
import { isServer } from './utils.js';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _cleanup = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("cleanup");
|
|
9
|
-
var _setup = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("setup");
|
|
10
|
-
class OnlineManager extends subscribable.Subscribable {
|
|
4
|
+
const onlineEvents = ['online', 'offline'];
|
|
5
|
+
class OnlineManager extends Subscribable {
|
|
6
|
+
#online;
|
|
7
|
+
#cleanup;
|
|
8
|
+
#setup;
|
|
11
9
|
constructor() {
|
|
12
10
|
super();
|
|
13
|
-
|
|
14
|
-
writable: true,
|
|
15
|
-
value: void 0
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(this, _cleanup, {
|
|
18
|
-
writable: true,
|
|
19
|
-
value: void 0
|
|
20
|
-
});
|
|
21
|
-
Object.defineProperty(this, _setup, {
|
|
22
|
-
writable: true,
|
|
23
|
-
value: void 0
|
|
24
|
-
});
|
|
25
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _setup)[_setup] = onOnline => {
|
|
11
|
+
this.#setup = onOnline => {
|
|
26
12
|
// addEventListener does not exist in React Native, but window does
|
|
27
13
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
28
|
-
if (!
|
|
14
|
+
if (!isServer && window.addEventListener) {
|
|
29
15
|
const listener = () => onOnline();
|
|
30
16
|
// Listen to online
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
onlineEvents.forEach(event => {
|
|
18
|
+
window.addEventListener(event, listener, false);
|
|
19
|
+
});
|
|
33
20
|
return () => {
|
|
34
21
|
// Be sure to unsubscribe if a new handler is set
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
onlineEvents.forEach(event => {
|
|
23
|
+
window.removeEventListener(event, listener);
|
|
24
|
+
});
|
|
37
25
|
};
|
|
38
26
|
}
|
|
39
27
|
return;
|
|
40
28
|
};
|
|
41
29
|
}
|
|
42
30
|
onSubscribe() {
|
|
43
|
-
if (!
|
|
44
|
-
this.setEventListener(
|
|
31
|
+
if (!this.#cleanup) {
|
|
32
|
+
this.setEventListener(this.#setup);
|
|
45
33
|
}
|
|
46
34
|
}
|
|
47
35
|
onUnsubscribe() {
|
|
48
36
|
if (!this.hasListeners()) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = undefined;
|
|
37
|
+
this.#cleanup?.();
|
|
38
|
+
this.#cleanup = undefined;
|
|
52
39
|
}
|
|
53
40
|
}
|
|
54
41
|
setEventListener(setup) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = setup(online => {
|
|
42
|
+
this.#setup = setup;
|
|
43
|
+
this.#cleanup?.();
|
|
44
|
+
this.#cleanup = setup(online => {
|
|
59
45
|
if (typeof online === 'boolean') {
|
|
60
46
|
this.setOnline(online);
|
|
61
47
|
} else {
|
|
@@ -64,7 +50,7 @@ class OnlineManager extends subscribable.Subscribable {
|
|
|
64
50
|
});
|
|
65
51
|
}
|
|
66
52
|
setOnline(online) {
|
|
67
|
-
|
|
53
|
+
this.#online = online;
|
|
68
54
|
if (online) {
|
|
69
55
|
this.onOnline();
|
|
70
56
|
}
|
|
@@ -75,8 +61,8 @@ class OnlineManager extends subscribable.Subscribable {
|
|
|
75
61
|
});
|
|
76
62
|
}
|
|
77
63
|
isOnline() {
|
|
78
|
-
if (typeof
|
|
79
|
-
return
|
|
64
|
+
if (typeof this.#online === 'boolean') {
|
|
65
|
+
return this.#online;
|
|
80
66
|
}
|
|
81
67
|
if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
|
|
82
68
|
return true;
|
|
@@ -86,6 +72,5 @@ class OnlineManager extends subscribable.Subscribable {
|
|
|
86
72
|
}
|
|
87
73
|
const onlineManager = new OnlineManager();
|
|
88
74
|
|
|
89
|
-
|
|
90
|
-
exports.onlineManager = onlineManager;
|
|
75
|
+
export { OnlineManager, onlineManager };
|
|
91
76
|
//# sourceMappingURL=onlineManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onlineManager.js","sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setOnline: (online?: boolean) => void,\n) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n #online?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline()\n // Listen to online\n
|
|
1
|
+
{"version":3,"file":"onlineManager.js","sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setOnline: (online?: boolean) => void,\n) => (() => void) | undefined\n\nconst onlineEvents = ['online', 'offline'] as const\n\nexport class OnlineManager extends Subscribable {\n #online?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline()\n // Listen to online\n onlineEvents.forEach((event) => {\n window.addEventListener(event, listener, false)\n })\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n onlineEvents.forEach((event) => {\n window.removeEventListener(event, listener)\n })\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((online?: boolean) => {\n if (typeof online === 'boolean') {\n this.setOnline(online)\n } else {\n this.onOnline()\n }\n })\n }\n\n setOnline(online?: boolean): void {\n this.#online = online\n\n if (online) {\n this.onOnline()\n }\n }\n\n onOnline(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isOnline(): boolean {\n if (typeof this.#online === 'boolean') {\n return this.#online\n }\n\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.onLine === 'undefined'\n ) {\n return true\n }\n\n return navigator.onLine\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"],"names":["onlineEvents","OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","online","setOnline","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":";;;AAOA,MAAMA,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAA;AAE5C,MAAMC,aAAa,SAASC,YAAY,CAAC;AAC9C,EAAA,OAAO,CAAA;AACP,EAAA,QAAQ,CAAA;AAER,EAAA,MAAM,CAAA;AAENC,EAAAA,WAAWA,GAAG;AACZ,IAAA,KAAK,EAAE,CAAA;AACP,IAAA,IAAI,CAAC,MAAM,GAAIC,QAAQ,IAAK;AAC1B;AACA;AACA,MAAA,IAAI,CAACC,QAAQ,IAAIC,MAAM,CAACC,gBAAgB,EAAE;AACxC,QAAA,MAAMC,QAAQ,GAAGA,MAAMJ,QAAQ,EAAE,CAAA;AACjC;AACAJ,QAAAA,YAAY,CAACS,OAAO,CAAEC,KAAK,IAAK;UAC9BJ,MAAM,CAACC,gBAAgB,CAACG,KAAK,EAAEF,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjD,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,MAAM;AACX;AACAR,UAAAA,YAAY,CAACS,OAAO,CAAEC,KAAK,IAAK;AAC9BJ,YAAAA,MAAM,CAACK,mBAAmB,CAACD,KAAK,EAAEF,QAAQ,CAAC,CAAA;AAC7C,WAAC,CAAC,CAAA;SACH,CAAA;AACH,OAAA;AAEA,MAAA,OAAA;KACD,CAAA;AACH,GAAA;AAEUI,EAAAA,WAAWA,GAAS;AAC5B,IAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,MAAA,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AAEUC,EAAAA,aAAaA,GAAG;AACxB,IAAA,IAAI,CAAC,IAAI,CAACC,YAAY,EAAE,EAAE;AACxB,MAAA,IAAI,CAAC,QAAQ,IAAI,CAAA;AACjB,MAAA,IAAI,CAAC,QAAQ,GAAGC,SAAS,CAAA;AAC3B,KAAA;AACF,GAAA;EAEAH,gBAAgBA,CAACI,KAAc,EAAQ;AACrC,IAAA,IAAI,CAAC,MAAM,GAAGA,KAAK,CAAA;AACnB,IAAA,IAAI,CAAC,QAAQ,IAAI,CAAA;AACjB,IAAA,IAAI,CAAC,QAAQ,GAAGA,KAAK,CAAEC,MAAgB,IAAK;AAC1C,MAAA,IAAI,OAAOA,MAAM,KAAK,SAAS,EAAE;AAC/B,QAAA,IAAI,CAACC,SAAS,CAACD,MAAM,CAAC,CAAA;AACxB,OAAC,MAAM;QACL,IAAI,CAACd,QAAQ,EAAE,CAAA;AACjB,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEAe,SAASA,CAACD,MAAgB,EAAQ;AAChC,IAAA,IAAI,CAAC,OAAO,GAAGA,MAAM,CAAA;AAErB,IAAA,IAAIA,MAAM,EAAE;MACV,IAAI,CAACd,QAAQ,EAAE,CAAA;AACjB,KAAA;AACF,GAAA;AAEAA,EAAAA,QAAQA,GAAS;AACf,IAAA,IAAI,CAACgB,SAAS,CAACX,OAAO,CAAED,QAAQ,IAAK;AACnCA,MAAAA,QAAQ,EAAE,CAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAa,EAAAA,QAAQA,GAAY;AAClB,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;MACrC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,KAAA;IAEA,IACE,OAAOC,SAAS,KAAK,WAAW,IAChC,OAAOA,SAAS,CAACC,MAAM,KAAK,WAAW,EACvC;AACA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;IAEA,OAAOD,SAAS,CAACC,MAAM,CAAA;AACzB,GAAA;AACF,CAAA;MAEaC,aAAa,GAAG,IAAIvB,aAAa;;;;"}
|
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var notifyManager = require('./notifyManager.cjs');
|
|
4
|
+
var queryObserver = require('./queryObserver.cjs');
|
|
5
|
+
var subscribable = require('./subscribable.cjs');
|
|
6
|
+
var utils = require('./utils.cjs');
|
|
4
7
|
|
|
5
8
|
function difference(array1, array2) {
|
|
6
|
-
return array1.filter(x => array2.
|
|
9
|
+
return array1.filter(x => !array2.includes(x));
|
|
7
10
|
}
|
|
8
11
|
function replaceAt(array, index, value) {
|
|
9
12
|
const copy = array.slice(0);
|
|
10
13
|
copy[index] = value;
|
|
11
14
|
return copy;
|
|
12
15
|
}
|
|
13
|
-
class QueriesObserver extends Subscribable {
|
|
16
|
+
class QueriesObserver extends subscribable.Subscribable {
|
|
14
17
|
#client;
|
|
15
18
|
#result;
|
|
16
19
|
#queries;
|
|
17
20
|
#observers;
|
|
18
|
-
|
|
21
|
+
#options;
|
|
22
|
+
#combinedResult;
|
|
23
|
+
constructor(client, queries, options) {
|
|
19
24
|
super();
|
|
20
25
|
this.#client = client;
|
|
21
26
|
this.#queries = [];
|
|
22
|
-
this.#result = [];
|
|
23
27
|
this.#observers = [];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
this.#setResult([]);
|
|
29
|
+
this.setQueries(queries, options);
|
|
30
|
+
}
|
|
31
|
+
#setResult(value) {
|
|
32
|
+
this.#result = value;
|
|
33
|
+
this.#combinedResult = this.#combineResult(value);
|
|
27
34
|
}
|
|
28
35
|
onSubscribe() {
|
|
29
|
-
if (this.listeners.
|
|
36
|
+
if (this.listeners.size === 1) {
|
|
30
37
|
this.#observers.forEach(observer => {
|
|
31
38
|
observer.subscribe(result => {
|
|
32
39
|
this.#onUpdate(observer, result);
|
|
@@ -35,19 +42,20 @@ class QueriesObserver extends Subscribable {
|
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
44
|
onUnsubscribe() {
|
|
38
|
-
if (!this.listeners.
|
|
45
|
+
if (!this.listeners.size) {
|
|
39
46
|
this.destroy();
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
destroy() {
|
|
43
|
-
this.listeners =
|
|
50
|
+
this.listeners = new Set();
|
|
44
51
|
this.#observers.forEach(observer => {
|
|
45
52
|
observer.destroy();
|
|
46
53
|
});
|
|
47
54
|
}
|
|
48
|
-
setQueries(queries, notifyOptions) {
|
|
55
|
+
setQueries(queries, options, notifyOptions) {
|
|
49
56
|
this.#queries = queries;
|
|
50
|
-
|
|
57
|
+
this.#options = options;
|
|
58
|
+
notifyManager.notifyManager.batch(() => {
|
|
51
59
|
const prevObservers = this.#observers;
|
|
52
60
|
const newObserverMatches = this.#findMatchingObservers(this.#queries);
|
|
53
61
|
|
|
@@ -60,7 +68,7 @@ class QueriesObserver extends Subscribable {
|
|
|
60
68
|
return;
|
|
61
69
|
}
|
|
62
70
|
this.#observers = newObservers;
|
|
63
|
-
this.#
|
|
71
|
+
this.#setResult(newResult);
|
|
64
72
|
if (!this.hasListeners()) {
|
|
65
73
|
return;
|
|
66
74
|
}
|
|
@@ -76,7 +84,7 @@ class QueriesObserver extends Subscribable {
|
|
|
76
84
|
});
|
|
77
85
|
}
|
|
78
86
|
getCurrentResult() {
|
|
79
|
-
return this.#
|
|
87
|
+
return this.#combinedResult;
|
|
80
88
|
}
|
|
81
89
|
getQueries() {
|
|
82
90
|
return this.#observers.map(observer => observer.getCurrentQuery());
|
|
@@ -85,13 +93,30 @@ class QueriesObserver extends Subscribable {
|
|
|
85
93
|
return this.#observers;
|
|
86
94
|
}
|
|
87
95
|
getOptimisticResult(queries) {
|
|
88
|
-
|
|
96
|
+
const matches = this.#findMatchingObservers(queries);
|
|
97
|
+
const result = matches.map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));
|
|
98
|
+
return [result, r => {
|
|
99
|
+
return this.#combineResult(r ?? result);
|
|
100
|
+
}, () => {
|
|
101
|
+
return matches.map((match, index) => {
|
|
102
|
+
const observerResult = result[index];
|
|
103
|
+
return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult) : observerResult;
|
|
104
|
+
});
|
|
105
|
+
}];
|
|
106
|
+
}
|
|
107
|
+
#combineResult(input) {
|
|
108
|
+
const combine = this.#options?.combine;
|
|
109
|
+
if (combine) {
|
|
110
|
+
return utils.replaceEqualDeep(this.#combinedResult, combine(input));
|
|
111
|
+
}
|
|
112
|
+
return input;
|
|
89
113
|
}
|
|
90
114
|
#findMatchingObservers(queries) {
|
|
91
115
|
const prevObservers = this.#observers;
|
|
116
|
+
const prevObserversMap = new Map(prevObservers.map(observer => [observer.options.queryHash, observer]));
|
|
92
117
|
const defaultedQueryOptions = queries.map(options => this.#client.defaultQueryOptions(options));
|
|
93
118
|
const matchingObservers = defaultedQueryOptions.flatMap(defaultedOptions => {
|
|
94
|
-
const match =
|
|
119
|
+
const match = prevObserversMap.get(defaultedOptions.queryHash);
|
|
95
120
|
if (match != null) {
|
|
96
121
|
return [{
|
|
97
122
|
defaultedQueryOptions: defaultedOptions,
|
|
@@ -100,12 +125,12 @@ class QueriesObserver extends Subscribable {
|
|
|
100
125
|
}
|
|
101
126
|
return [];
|
|
102
127
|
});
|
|
103
|
-
const matchedQueryHashes = matchingObservers.map(match => match.defaultedQueryOptions.queryHash);
|
|
104
|
-
const unmatchedQueries = defaultedQueryOptions.filter(defaultedOptions => !matchedQueryHashes.
|
|
128
|
+
const matchedQueryHashes = new Set(matchingObservers.map(match => match.defaultedQueryOptions.queryHash));
|
|
129
|
+
const unmatchedQueries = defaultedQueryOptions.filter(defaultedOptions => !matchedQueryHashes.has(defaultedOptions.queryHash));
|
|
105
130
|
const getObserver = options => {
|
|
106
131
|
const defaultedOptions = this.#client.defaultQueryOptions(options);
|
|
107
132
|
const currentObserver = this.#observers.find(o => o.options.queryHash === defaultedOptions.queryHash);
|
|
108
|
-
return currentObserver ?? new QueryObserver(this.#client, defaultedOptions);
|
|
133
|
+
return currentObserver ?? new queryObserver.QueryObserver(this.#client, defaultedOptions);
|
|
109
134
|
};
|
|
110
135
|
const newOrReusedObservers = unmatchedQueries.map(options => {
|
|
111
136
|
return {
|
|
@@ -119,12 +144,12 @@ class QueriesObserver extends Subscribable {
|
|
|
119
144
|
#onUpdate(observer, result) {
|
|
120
145
|
const index = this.#observers.indexOf(observer);
|
|
121
146
|
if (index !== -1) {
|
|
122
|
-
this.#
|
|
147
|
+
this.#setResult(replaceAt(this.#result, index, result));
|
|
123
148
|
this.#notify();
|
|
124
149
|
}
|
|
125
150
|
}
|
|
126
151
|
#notify() {
|
|
127
|
-
notifyManager.batch(() => {
|
|
152
|
+
notifyManager.notifyManager.batch(() => {
|
|
128
153
|
this.listeners.forEach(listener => {
|
|
129
154
|
listener(this.#result);
|
|
130
155
|
});
|
|
@@ -132,5 +157,5 @@ class QueriesObserver extends Subscribable {
|
|
|
132
157
|
}
|
|
133
158
|
}
|
|
134
159
|
|
|
135
|
-
|
|
136
|
-
//# sourceMappingURL=queriesObserver.
|
|
160
|
+
exports.QueriesObserver = QueriesObserver;
|
|
161
|
+
//# sourceMappingURL=queriesObserver.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queriesObserver.cjs","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep } from './utils'\n\nfunction difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => !array2.includes(x))\n}\n\nfunction replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport interface QueriesObserverOptions<\n TCombinedResult = QueryObserverResult[],\n> {\n combine?: (result: QueryObserverResult[]) => TCombinedResult\n}\n\nexport class QueriesObserver<\n TCombinedResult = QueryObserverResult[],\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: QueryObserverResult[]\n #queries: QueryObserverOptions[]\n #observers: QueryObserver[]\n #options?: QueriesObserverOptions<TCombinedResult>\n #combinedResult!: TCombinedResult\n\n constructor(\n client: QueryClient,\n queries: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#queries = []\n this.#observers = []\n\n this.#setResult([])\n this.setQueries(queries, options)\n }\n\n #setResult(value: QueryObserverResult[]) {\n this.#result = value\n this.#combinedResult = this.#combineResult(value)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.size) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n notifyOptions?: NotifyOptions,\n ): void {\n this.#queries = queries\n this.#options = options\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.#observers = newObservers\n this.#setResult(newResult)\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n\n this.#notify()\n })\n }\n\n getCurrentResult(): TCombinedResult {\n return this.#combinedResult\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(\n queries: QueryObserverOptions[],\n ): [\n rawResult: QueryObserverResult[],\n combineResult: (r?: QueryObserverResult[]) => TCombinedResult,\n trackResult: () => QueryObserverResult[],\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n\n return [\n result,\n (r?: QueryObserverResult[]) => {\n return this.#combineResult(r ?? result)\n },\n () => {\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult)\n : observerResult\n })\n },\n ]\n }\n\n #combineResult(input: QueryObserverResult[]): TCombinedResult {\n const combine = this.#options?.combine\n if (combine) {\n return replaceEqualDeep(this.#combinedResult, combine(input))\n }\n return input as any\n }\n\n #findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.#observers\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n\n const defaultedQueryOptions = queries.map((options) =>\n this.#client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash)\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash),\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash,\n )\n return (\n currentObserver ?? new QueryObserver(this.#client, defaultedOptions)\n )\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#setResult(replaceAt(this.#result, index, result))\n this.#notify()\n }\n }\n\n #notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["difference","array1","array2","filter","x","includes","replaceAt","array","index","value","copy","slice","QueriesObserver","Subscribable","constructor","client","queries","options","setQueries","#setResult","onSubscribe","listeners","size","forEach","observer","subscribe","result","onUnsubscribe","destroy","Set","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","match","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","length","hasListeners","getQueries","getCurrentQuery","getObservers","getOptimisticResult","matches","r","observerResult","notifyOnChangeProps","trackResult","#combineResult","input","combine","replaceEqualDeep","#findMatchingObservers","prevObserversMap","Map","queryHash","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","get","matchedQueryHashes","unmatchedQueries","has","getObserver","currentObserver","find","o","QueryObserver","newOrReusedObservers","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","#onUpdate","#notify","listener"],"mappings":"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"}
|
|
@@ -3,17 +3,25 @@ import type { QueryClient } from './queryClient';
|
|
|
3
3
|
import type { NotifyOptions } from './queryObserver';
|
|
4
4
|
import { QueryObserver } from './queryObserver';
|
|
5
5
|
import { Subscribable } from './subscribable';
|
|
6
|
-
|
|
7
|
-
export
|
|
6
|
+
type QueriesObserverListener = (result: QueryObserverResult[]) => void;
|
|
7
|
+
export interface QueriesObserverOptions<TCombinedResult = QueryObserverResult[]> {
|
|
8
|
+
combine?: (result: QueryObserverResult[]) => TCombinedResult;
|
|
9
|
+
}
|
|
10
|
+
export declare class QueriesObserver<TCombinedResult = QueryObserverResult[]> extends Subscribable<QueriesObserverListener> {
|
|
8
11
|
#private;
|
|
9
|
-
constructor(client: QueryClient, queries
|
|
12
|
+
constructor(client: QueryClient, queries: QueryObserverOptions[], options?: QueriesObserverOptions<TCombinedResult>);
|
|
10
13
|
protected onSubscribe(): void;
|
|
11
14
|
protected onUnsubscribe(): void;
|
|
12
15
|
destroy(): void;
|
|
13
|
-
setQueries(queries: QueryObserverOptions[], notifyOptions?: NotifyOptions): void;
|
|
14
|
-
getCurrentResult():
|
|
16
|
+
setQueries(queries: QueryObserverOptions[], options?: QueriesObserverOptions<TCombinedResult>, notifyOptions?: NotifyOptions): void;
|
|
17
|
+
getCurrentResult(): TCombinedResult;
|
|
15
18
|
getQueries(): import("./query").Query<unknown, Error, unknown, import("./types").QueryKey>[];
|
|
16
19
|
getObservers(): QueryObserver<unknown, Error, unknown, unknown, import("./types").QueryKey>[];
|
|
17
|
-
getOptimisticResult(queries: QueryObserverOptions[]):
|
|
20
|
+
getOptimisticResult(queries: QueryObserverOptions[]): [
|
|
21
|
+
rawResult: QueryObserverResult[],
|
|
22
|
+
combineResult: (r?: QueryObserverResult[]) => TCombinedResult,
|
|
23
|
+
trackResult: () => QueryObserverResult[]
|
|
24
|
+
];
|
|
18
25
|
}
|
|
19
26
|
export {};
|
|
27
|
+
//# sourceMappingURL=queriesObserver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queriesObserver.d.ts","sourceRoot":"","sources":["../../src/queriesObserver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAa7C,KAAK,uBAAuB,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAA;AAEtE,MAAM,WAAW,sBAAsB,CACrC,eAAe,GAAG,mBAAmB,EAAE;IAEvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,eAAe,CAAA;CAC7D;AAED,qBAAa,eAAe,CAC1B,eAAe,GAAG,mBAAmB,EAAE,CACvC,SAAQ,YAAY,CAAC,uBAAuB,CAAC;;gBAS3C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC;IAiBnD,SAAS,CAAC,WAAW,IAAI,IAAI;IAU7B,SAAS,CAAC,aAAa,IAAI,IAAI;IAM/B,OAAO,IAAI,IAAI;IAOf,UAAU,CACR,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,EACjD,aAAa,CAAC,EAAE,aAAa,GAC5B,IAAI;IA+CP,gBAAgB,IAAI,eAAe;IAInC,UAAU;IAIV,YAAY;IAIZ,mBAAmB,CACjB,OAAO,EAAE,oBAAoB,EAAE,GAC9B;QACD,SAAS,EAAE,mBAAmB,EAAE;QAChC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,eAAe;QAC7D,WAAW,EAAE,MAAM,mBAAmB,EAAE;KACzC;CAwGF"}
|