@tanstack/query-core 5.0.0-alpha.84 → 5.0.0-alpha.86

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.
@@ -4,7 +4,6 @@ var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.le
4
4
  var subscribable = require('./subscribable.legacy.cjs');
5
5
  var utils = require('./utils.legacy.cjs');
6
6
 
7
- const onlineEvents = ['online', 'offline'];
8
7
  var _online = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("online");
9
8
  var _cleanup = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("cleanup");
10
9
  var _setup = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("setup");
@@ -13,7 +12,7 @@ class OnlineManager extends subscribable.Subscribable {
13
12
  super();
14
13
  Object.defineProperty(this, _online, {
15
14
  writable: true,
16
- value: void 0
15
+ value: true
17
16
  });
18
17
  Object.defineProperty(this, _cleanup, {
19
18
  writable: true,
@@ -27,16 +26,15 @@ class OnlineManager extends subscribable.Subscribable {
27
26
  // addEventListener does not exist in React Native, but window does
28
27
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
29
28
  if (!utils.isServer && window.addEventListener) {
30
- const listener = () => onOnline();
29
+ const onlineListener = () => onOnline(true);
30
+ const offlineListener = () => onOnline(false);
31
31
  // Listen to online
32
- onlineEvents.forEach(event => {
33
- window.addEventListener(event, listener, false);
34
- });
32
+ window.addEventListener('online', onlineListener, false);
33
+ window.addEventListener('offline', offlineListener, false);
35
34
  return () => {
36
35
  // Be sure to unsubscribe if a new handler is set
37
- onlineEvents.forEach(event => {
38
- window.removeEventListener(event, listener);
39
- });
36
+ window.removeEventListener('online', onlineListener);
37
+ window.removeEventListener('offline', offlineListener);
40
38
  };
41
39
  }
42
40
  return;
@@ -58,34 +56,19 @@ class OnlineManager extends subscribable.Subscribable {
58
56
  var _classPrivateFieldLoo3, _classPrivateFieldLoo4;
59
57
  _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _setup)[_setup] = setup;
60
58
  (_classPrivateFieldLoo3 = (_classPrivateFieldLoo4 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _cleanup))[_cleanup]) == null ? void 0 : _classPrivateFieldLoo3.call(_classPrivateFieldLoo4);
61
- _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = setup(online => {
62
- if (typeof online === 'boolean') {
63
- this.setOnline(online);
64
- } else {
65
- this.onOnline();
66
- }
67
- });
59
+ _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = setup(this.setOnline.bind(this));
68
60
  }
69
61
  setOnline(online) {
70
62
  const changed = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _online)[_online] !== online;
71
63
  if (changed) {
72
64
  _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _online)[_online] = online;
73
- this.onOnline();
65
+ this.listeners.forEach(listener => {
66
+ listener(online);
67
+ });
74
68
  }
75
69
  }
76
- onOnline() {
77
- this.listeners.forEach(listener => {
78
- listener();
79
- });
80
- }
81
70
  isOnline() {
82
- if (typeof _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _online)[_online] === 'boolean') {
83
- return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _online)[_online];
84
- }
85
- if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
86
- return true;
87
- }
88
- return navigator.onLine;
71
+ return _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _online)[_online];
89
72
  }
90
73
  }
91
74
  const onlineManager = new OnlineManager();
@@ -1 +1 @@
1
- {"version":3,"file":"onlineManager.legacy.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 const changed = this.#online !== online\n\n if (changed) {\n this.#online = 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","_online","_classPrivateFieldLooseKey","_cleanup","_setup","OnlineManager","Subscribable","constructor","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","_classPrivateFieldLoo","_classPrivateFieldLoo2","call","undefined","setup","_classPrivateFieldLoo3","_classPrivateFieldLoo4","online","setOnline","changed","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":"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"}
1
+ {"version":3,"file":"onlineManager.legacy.cjs","sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable<Listener> {\n #online = true\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 onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\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(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"],"names":["_online","_classPrivateFieldLooseKey","_cleanup","_setup","OnlineManager","Subscribable","constructor","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","onOnline","isServer","window","addEventListener","onlineListener","offlineListener","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","_classPrivateFieldLoo","_classPrivateFieldLoo2","call","undefined","setup","_classPrivateFieldLoo3","_classPrivateFieldLoo4","setOnline","bind","online","changed","listeners","forEach","listener","isOnline","onlineManager"],"mappings":"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"}
@@ -2,7 +2,6 @@ import { classPrivateFieldLooseBase as _classPrivateFieldLooseBase, classPrivate
2
2
  import { Subscribable } from './subscribable.legacy.js';
3
3
  import { isServer } from './utils.legacy.js';
4
4
 
5
- const onlineEvents = ['online', 'offline'];
6
5
  var _online = /*#__PURE__*/_classPrivateFieldLooseKey("online");
7
6
  var _cleanup = /*#__PURE__*/_classPrivateFieldLooseKey("cleanup");
8
7
  var _setup = /*#__PURE__*/_classPrivateFieldLooseKey("setup");
@@ -11,7 +10,7 @@ class OnlineManager extends Subscribable {
11
10
  super();
12
11
  Object.defineProperty(this, _online, {
13
12
  writable: true,
14
- value: void 0
13
+ value: true
15
14
  });
16
15
  Object.defineProperty(this, _cleanup, {
17
16
  writable: true,
@@ -25,16 +24,15 @@ class OnlineManager extends Subscribable {
25
24
  // addEventListener does not exist in React Native, but window does
26
25
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
27
26
  if (!isServer && window.addEventListener) {
28
- const listener = () => onOnline();
27
+ const onlineListener = () => onOnline(true);
28
+ const offlineListener = () => onOnline(false);
29
29
  // Listen to online
30
- onlineEvents.forEach(event => {
31
- window.addEventListener(event, listener, false);
32
- });
30
+ window.addEventListener('online', onlineListener, false);
31
+ window.addEventListener('offline', offlineListener, false);
33
32
  return () => {
34
33
  // Be sure to unsubscribe if a new handler is set
35
- onlineEvents.forEach(event => {
36
- window.removeEventListener(event, listener);
37
- });
34
+ window.removeEventListener('online', onlineListener);
35
+ window.removeEventListener('offline', offlineListener);
38
36
  };
39
37
  }
40
38
  return;
@@ -56,34 +54,19 @@ class OnlineManager extends Subscribable {
56
54
  var _classPrivateFieldLoo3, _classPrivateFieldLoo4;
57
55
  _classPrivateFieldLooseBase(this, _setup)[_setup] = setup;
58
56
  (_classPrivateFieldLoo3 = (_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this, _cleanup))[_cleanup]) == null ? void 0 : _classPrivateFieldLoo3.call(_classPrivateFieldLoo4);
59
- _classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = setup(online => {
60
- if (typeof online === 'boolean') {
61
- this.setOnline(online);
62
- } else {
63
- this.onOnline();
64
- }
65
- });
57
+ _classPrivateFieldLooseBase(this, _cleanup)[_cleanup] = setup(this.setOnline.bind(this));
66
58
  }
67
59
  setOnline(online) {
68
60
  const changed = _classPrivateFieldLooseBase(this, _online)[_online] !== online;
69
61
  if (changed) {
70
62
  _classPrivateFieldLooseBase(this, _online)[_online] = online;
71
- this.onOnline();
63
+ this.listeners.forEach(listener => {
64
+ listener(online);
65
+ });
72
66
  }
73
67
  }
74
- onOnline() {
75
- this.listeners.forEach(listener => {
76
- listener();
77
- });
78
- }
79
68
  isOnline() {
80
- if (typeof _classPrivateFieldLooseBase(this, _online)[_online] === 'boolean') {
81
- return _classPrivateFieldLooseBase(this, _online)[_online];
82
- }
83
- if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
84
- return true;
85
- }
86
- return navigator.onLine;
69
+ return _classPrivateFieldLooseBase(this, _online)[_online];
87
70
  }
88
71
  }
89
72
  const onlineManager = new OnlineManager();
@@ -1 +1 @@
1
- {"version":3,"file":"onlineManager.legacy.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 const changed = this.#online !== online\n\n if (changed) {\n this.#online = 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","_online","_classPrivateFieldLooseKey","_cleanup","_setup","OnlineManager","Subscribable","constructor","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","_classPrivateFieldLoo","_classPrivateFieldLoo2","call","undefined","setup","_classPrivateFieldLoo3","_classPrivateFieldLoo4","online","setOnline","changed","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":"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"}
1
+ {"version":3,"file":"onlineManager.legacy.js","sources":["../../src/onlineManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable<Listener> {\n #online = true\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 onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\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(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n"],"names":["_online","_classPrivateFieldLooseKey","_cleanup","_setup","OnlineManager","Subscribable","constructor","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","onOnline","isServer","window","addEventListener","onlineListener","offlineListener","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","_classPrivateFieldLoo","_classPrivateFieldLoo2","call","undefined","setup","_classPrivateFieldLoo3","_classPrivateFieldLoo4","setOnline","bind","online","changed","listeners","forEach","listener","isOnline","onlineManager"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import { QueryClient } from '..';
3
+ import type { SpyInstance } from 'vitest';
3
4
  import type { MutationOptions, QueryClientConfig } from '..';
4
5
  export declare function createQueryClient(config?: QueryClientConfig): QueryClient;
5
- export declare function mockVisibilityState(value: DocumentVisibilityState): import("vitest/dist/index-1cfc7f58").S<[], DocumentVisibilityState>;
6
- export declare function mockNavigatorOnLine(value: boolean): import("vitest/dist/index-1cfc7f58").S<[], boolean>;
6
+ export declare function mockVisibilityState(value: DocumentVisibilityState): SpyInstance<[], DocumentVisibilityState>;
7
+ export declare function mockOnlineManagerIsOnline(value: boolean): SpyInstance<[], boolean>;
7
8
  export declare function queryKey(): Array<string>;
8
9
  export declare function sleep(timeout: number): Promise<void>;
9
10
  export declare function setActTimeout(fn: () => void, ms?: number): NodeJS.Timeout;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,uEAEjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,uDAEjD;AAGD,wBAAgB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAGxC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,kBAMxD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,eAAc,IAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,4BACb,WAAW,6FAQzB,CAAA;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,cAW5C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAiB,MAAM,IAAI,CAAA;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,uBAAuB,GAC7B,WAAW,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAE1C;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAE1B;AAGD,wBAAgB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAGxC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,kBAMxD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,eAAc,IAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,4BACb,WAAW,6FAQzB,CAAA;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,cAW5C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/query-core",
3
- "version": "5.0.0-alpha.84",
3
+ "version": "5.0.0-alpha.86",
4
4
  "description": "The framework agnostic core that powers TanStack Query",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
package/src/hydration.ts CHANGED
@@ -2,8 +2,10 @@ import type { QueryClient } from './queryClient'
2
2
  import type { Query, QueryState } from './query'
3
3
  import type {
4
4
  MutationKey,
5
+ MutationMeta,
5
6
  MutationOptions,
6
7
  QueryKey,
8
+ QueryMeta,
7
9
  QueryOptions,
8
10
  } from './types'
9
11
  import type { Mutation, MutationState } from './mutation'
@@ -25,12 +27,14 @@ export interface HydrateOptions {
25
27
  interface DehydratedMutation {
26
28
  mutationKey?: MutationKey
27
29
  state: MutationState
30
+ meta?: MutationMeta
28
31
  }
29
32
 
30
33
  interface DehydratedQuery {
31
34
  queryHash: string
32
35
  queryKey: QueryKey
33
36
  state: QueryState
37
+ meta?: QueryMeta
34
38
  }
35
39
 
36
40
  export interface DehydratedState {
@@ -44,6 +48,7 @@ function dehydrateMutation(mutation: Mutation): DehydratedMutation {
44
48
  return {
45
49
  mutationKey: mutation.options.mutationKey,
46
50
  state: mutation.state,
51
+ ...(mutation.meta && { meta: mutation.meta }),
47
52
  }
48
53
  }
49
54
 
@@ -56,6 +61,7 @@ function dehydrateQuery(query: Query): DehydratedQuery {
56
61
  state: query.state,
57
62
  queryKey: query.queryKey,
58
63
  queryHash: query.queryHash,
64
+ ...(query.meta && { meta: query.meta }),
59
65
  }
60
66
  }
61
67
 
@@ -115,6 +121,7 @@ export function hydrate(
115
121
  {
116
122
  ...options?.defaultOptions?.mutations,
117
123
  mutationKey: dehydratedMutation.mutationKey,
124
+ meta: dehydratedMutation.meta,
118
125
  },
119
126
  dehydratedMutation.state,
120
127
  )
@@ -145,6 +152,7 @@ export function hydrate(
145
152
  ...options?.defaultOptions?.queries,
146
153
  queryKey: dehydratedQuery.queryKey,
147
154
  queryHash: dehydratedQuery.queryHash,
155
+ meta: dehydratedQuery.meta,
148
156
  },
149
157
  dehydratedQueryState,
150
158
  )
@@ -1,14 +1,11 @@
1
1
  import { Subscribable } from './subscribable'
2
2
  import { isServer } from './utils'
3
3
 
4
- type SetupFn = (
5
- setOnline: (online?: boolean) => void,
6
- ) => (() => void) | undefined
4
+ type Listener = (online: boolean) => void
5
+ type SetupFn = (setOnline: Listener) => (() => void) | undefined
7
6
 
8
- const onlineEvents = ['online', 'offline'] as const
9
-
10
- export class OnlineManager extends Subscribable {
11
- #online?: boolean
7
+ export class OnlineManager extends Subscribable<Listener> {
8
+ #online = true
12
9
  #cleanup?: () => void
13
10
 
14
11
  #setup: SetupFn
@@ -19,17 +16,16 @@ export class OnlineManager extends Subscribable {
19
16
  // addEventListener does not exist in React Native, but window does
20
17
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21
18
  if (!isServer && window.addEventListener) {
22
- const listener = () => onOnline()
19
+ const onlineListener = () => onOnline(true)
20
+ const offlineListener = () => onOnline(false)
23
21
  // Listen to online
24
- onlineEvents.forEach((event) => {
25
- window.addEventListener(event, listener, false)
26
- })
22
+ window.addEventListener('online', onlineListener, false)
23
+ window.addEventListener('offline', offlineListener, false)
27
24
 
28
25
  return () => {
29
26
  // Be sure to unsubscribe if a new handler is set
30
- onlineEvents.forEach((event) => {
31
- window.removeEventListener(event, listener)
32
- })
27
+ window.removeEventListener('online', onlineListener)
28
+ window.removeEventListener('offline', offlineListener)
33
29
  }
34
30
  }
35
31
 
@@ -53,43 +49,22 @@ export class OnlineManager extends Subscribable {
53
49
  setEventListener(setup: SetupFn): void {
54
50
  this.#setup = setup
55
51
  this.#cleanup?.()
56
- this.#cleanup = setup((online?: boolean) => {
57
- if (typeof online === 'boolean') {
58
- this.setOnline(online)
59
- } else {
60
- this.onOnline()
61
- }
62
- })
52
+ this.#cleanup = setup(this.setOnline.bind(this))
63
53
  }
64
54
 
65
- setOnline(online?: boolean): void {
55
+ setOnline(online: boolean): void {
66
56
  const changed = this.#online !== online
67
57
 
68
58
  if (changed) {
69
59
  this.#online = online
70
- this.onOnline()
60
+ this.listeners.forEach((listener) => {
61
+ listener(online)
62
+ })
71
63
  }
72
64
  }
73
65
 
74
- onOnline(): void {
75
- this.listeners.forEach((listener) => {
76
- listener()
77
- })
78
- }
79
-
80
66
  isOnline(): boolean {
81
- if (typeof this.#online === 'boolean') {
82
- return this.#online
83
- }
84
-
85
- if (
86
- typeof navigator === 'undefined' ||
87
- typeof navigator.onLine === 'undefined'
88
- ) {
89
- return true
90
- }
91
-
92
- return navigator.onLine
67
+ return this.#online
93
68
  }
94
69
  }
95
70
 
@@ -1,10 +1,11 @@
1
- import { vi } from 'vitest'
1
+ import { expect, vi } from 'vitest'
2
2
  import { QueryCache } from '../queryCache'
3
3
  import { dehydrate, hydrate } from '../hydration'
4
+ import { MutationCache } from '../mutationCache'
4
5
  import {
5
6
  createQueryClient,
6
7
  executeMutation,
7
- mockNavigatorOnLine,
8
+ mockOnlineManagerIsOnline,
8
9
  sleep,
9
10
  } from './utils'
10
11
 
@@ -346,7 +347,7 @@ describe('dehydration and rehydration', () => {
346
347
  test('should be able to dehydrate mutations and continue on hydration', async () => {
347
348
  const consoleMock = vi.spyOn(console, 'error')
348
349
  consoleMock.mockImplementation(() => undefined)
349
- const onlineMock = mockNavigatorOnLine(false)
350
+ const onlineMock = mockOnlineManagerIsOnline(false)
350
351
 
351
352
  const serverAddTodo = vi
352
353
  .fn()
@@ -557,4 +558,114 @@ describe('dehydration and rehydration', () => {
557
558
  hydrationCache.find({ queryKey: ['string'] })?.state.fetchStatus,
558
559
  ).toBe('idle')
559
560
  })
561
+
562
+ test('should dehydrate and hydrate meta for queries', async () => {
563
+ const queryCache = new QueryCache()
564
+ const queryClient = createQueryClient({ queryCache })
565
+ await queryClient.prefetchQuery({
566
+ queryKey: ['meta'],
567
+ queryFn: () => Promise.resolve('meta'),
568
+ meta: {
569
+ some: 'meta',
570
+ },
571
+ })
572
+ await queryClient.prefetchQuery({
573
+ queryKey: ['no-meta'],
574
+ queryFn: () => Promise.resolve('no-meta'),
575
+ })
576
+
577
+ const dehydrated = dehydrate(queryClient)
578
+
579
+ expect(
580
+ dehydrated.queries.find((q) => q.queryHash === '["meta"]')?.meta,
581
+ ).toEqual({
582
+ some: 'meta',
583
+ })
584
+
585
+ expect(
586
+ dehydrated.queries.find((q) => q.queryHash === '["no-meta"]')?.meta,
587
+ ).toEqual(undefined)
588
+
589
+ expect(
590
+ Object.keys(
591
+ dehydrated.queries.find((q) => q.queryHash === '["no-meta"]')!,
592
+ ),
593
+ ).not.toEqual(expect.arrayContaining(['meta']))
594
+
595
+ const stringified = JSON.stringify(dehydrated)
596
+
597
+ // ---
598
+
599
+ const parsed = JSON.parse(stringified)
600
+ const hydrationCache = new QueryCache()
601
+ const hydrationClient = createQueryClient({
602
+ queryCache: hydrationCache,
603
+ })
604
+ hydrate(hydrationClient, parsed)
605
+ expect(hydrationCache.find({ queryKey: ['meta'] })?.meta).toEqual({
606
+ some: 'meta',
607
+ })
608
+ expect(hydrationCache.find({ queryKey: ['no-meta'] })?.meta).toEqual(
609
+ undefined,
610
+ )
611
+ })
612
+
613
+ test('should dehydrate and hydrate meta for mutations', async () => {
614
+ const mutationCache = new MutationCache()
615
+ const queryClient = createQueryClient({ mutationCache })
616
+
617
+ await executeMutation(
618
+ queryClient,
619
+ {
620
+ mutationKey: ['meta'],
621
+ mutationFn: () => Promise.resolve('meta'),
622
+ meta: {
623
+ some: 'meta',
624
+ },
625
+ },
626
+ undefined,
627
+ )
628
+
629
+ await executeMutation(
630
+ queryClient,
631
+ {
632
+ mutationKey: ['no-meta'],
633
+ mutationFn: () => Promise.resolve('no-meta'),
634
+ },
635
+ undefined,
636
+ )
637
+
638
+ const dehydrated = dehydrate(queryClient, {
639
+ shouldDehydrateMutation: () => true,
640
+ })
641
+
642
+ expect(Object.keys(dehydrated.mutations[0]!)).toEqual(
643
+ expect.arrayContaining(['meta']),
644
+ )
645
+ expect(dehydrated.mutations[0]?.meta).toEqual({
646
+ some: 'meta',
647
+ })
648
+
649
+ expect(Object.keys(dehydrated.mutations[1]!)).not.toEqual(
650
+ expect.arrayContaining(['meta']),
651
+ )
652
+ expect(dehydrated.mutations[1]?.meta).toEqual(undefined)
653
+
654
+ const stringified = JSON.stringify(dehydrated)
655
+
656
+ // ---
657
+
658
+ const parsed = JSON.parse(stringified)
659
+ const hydrationCache = new MutationCache()
660
+ const hydrationClient = createQueryClient({
661
+ mutationCache: hydrationCache,
662
+ })
663
+ hydrate(hydrationClient, parsed)
664
+ expect(hydrationCache.find({ mutationKey: ['meta'] })?.meta).toEqual({
665
+ some: 'meta',
666
+ })
667
+ expect(hydrationCache.find({ mutationKey: ['no-meta'] })?.meta).toEqual(
668
+ undefined,
669
+ )
670
+ })
560
671
  })
@@ -31,7 +31,7 @@ describe('onlineManager', () => {
31
31
  test('setEventListener should use online boolean arg', async () => {
32
32
  let count = 0
33
33
 
34
- const setup = (setOnline: (online?: boolean) => void) => {
34
+ const setup = (setOnline: (online: boolean) => void) => {
35
35
  setTimeout(() => {
36
36
  count++
37
37
  setOnline(false)
@@ -154,19 +154,15 @@ describe('onlineManager', () => {
154
154
 
155
155
  onlineManager.subscribe(listener)
156
156
 
157
- onlineManager.setOnline(true)
158
- onlineManager.setOnline(true)
159
-
160
- expect(listener).toHaveBeenCalledTimes(1)
161
-
162
157
  onlineManager.setOnline(false)
163
158
  onlineManager.setOnline(false)
164
159
 
165
- expect(listener).toHaveBeenCalledTimes(2)
160
+ expect(listener).toHaveBeenNthCalledWith(1, false)
166
161
 
167
- onlineManager.setOnline(undefined)
168
- onlineManager.setOnline(undefined)
162
+ onlineManager.setOnline(true)
163
+ onlineManager.setOnline(true)
169
164
 
170
- expect(listener).toHaveBeenCalledTimes(3)
165
+ expect(listener).toHaveBeenCalledTimes(2)
166
+ expect(listener).toHaveBeenNthCalledWith(2, true)
171
167
  })
172
168
  })