@tanstack/query-core 5.0.0-alpha.85 → 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.
@@ -3,9 +3,8 @@
3
3
  var subscribable = require('./subscribable.cjs');
4
4
  var utils = require('./utils.cjs');
5
5
 
6
- const onlineEvents = ['online', 'offline'];
7
6
  class OnlineManager extends subscribable.Subscribable {
8
- #online;
7
+ #online = true;
9
8
  #cleanup;
10
9
  #setup;
11
10
  constructor() {
@@ -14,16 +13,15 @@ class OnlineManager extends subscribable.Subscribable {
14
13
  // addEventListener does not exist in React Native, but window does
15
14
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
16
15
  if (!utils.isServer && window.addEventListener) {
17
- const listener = () => onOnline();
16
+ const onlineListener = () => onOnline(true);
17
+ const offlineListener = () => onOnline(false);
18
18
  // Listen to online
19
- onlineEvents.forEach(event => {
20
- window.addEventListener(event, listener, false);
21
- });
19
+ window.addEventListener('online', onlineListener, false);
20
+ window.addEventListener('offline', offlineListener, false);
22
21
  return () => {
23
22
  // Be sure to unsubscribe if a new handler is set
24
- onlineEvents.forEach(event => {
25
- window.removeEventListener(event, listener);
26
- });
23
+ window.removeEventListener('online', onlineListener);
24
+ window.removeEventListener('offline', offlineListener);
27
25
  };
28
26
  }
29
27
  return;
@@ -43,34 +41,19 @@ class OnlineManager extends subscribable.Subscribable {
43
41
  setEventListener(setup) {
44
42
  this.#setup = setup;
45
43
  this.#cleanup?.();
46
- this.#cleanup = setup(online => {
47
- if (typeof online === 'boolean') {
48
- this.setOnline(online);
49
- } else {
50
- this.onOnline();
51
- }
52
- });
44
+ this.#cleanup = setup(this.setOnline.bind(this));
53
45
  }
54
46
  setOnline(online) {
55
47
  const changed = this.#online !== online;
56
48
  if (changed) {
57
49
  this.#online = online;
58
- this.onOnline();
50
+ this.listeners.forEach(listener => {
51
+ listener(online);
52
+ });
59
53
  }
60
54
  }
61
- onOnline() {
62
- this.listeners.forEach(listener => {
63
- listener();
64
- });
65
- }
66
55
  isOnline() {
67
- if (typeof this.#online === 'boolean') {
68
- return this.#online;
69
- }
70
- if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
71
- return true;
72
- }
73
- return navigator.onLine;
56
+ return this.#online;
74
57
  }
75
58
  }
76
59
  const onlineManager = new OnlineManager();
@@ -1 +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 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","OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","online","setOnline","changed","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":"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"}
1
+ {"version":3,"file":"onlineManager.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":["OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","onlineListener","offlineListener","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","setOnline","bind","online","changed","listeners","forEach","listener","isOnline","onlineManager"],"mappings":";;;;;AAMO,MAAMA,aAAa,SAASC,yBAAY,CAAW;EACxD,OAAO,GAAG,IAAI,CAAA;AACd,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,cAAc,GAAGA,MAAMJ,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC3C,QAAA,MAAMK,eAAe,GAAGA,MAAML,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7C;QACAE,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,cAAc,EAAE,KAAK,CAAC,CAAA;QACxDF,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEE,eAAe,EAAE,KAAK,CAAC,CAAA;AAE1D,QAAA,OAAO,MAAM;AACX;AACAH,UAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,cAAc,CAAC,CAAA;AACpDF,UAAAA,MAAM,CAACI,mBAAmB,CAAC,SAAS,EAAED,eAAe,CAAC,CAAA;SACvD,CAAA;AACH,OAAA;AAEA,MAAA,OAAA;KACD,CAAA;AACH,GAAA;AAEUE,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,CAAC,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAClD,GAAA;EAEAD,SAASA,CAACE,MAAe,EAAQ;AAC/B,IAAA,MAAMC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAKD,MAAM,CAAA;AAEvC,IAAA,IAAIC,OAAO,EAAE;AACX,MAAA,IAAI,CAAC,OAAO,GAAGD,MAAM,CAAA;AACrB,MAAA,IAAI,CAACE,SAAS,CAACC,OAAO,CAAEC,QAAQ,IAAK;QACnCA,QAAQ,CAACJ,MAAM,CAAC,CAAA;AAClB,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;AAEAK,EAAAA,QAAQA,GAAY;IAClB,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,GAAA;AACF,CAAA;MAEaC,aAAa,GAAG,IAAIxB,aAAa;;;;;"}
@@ -1,13 +1,13 @@
1
1
  import { Subscribable } from './subscribable';
2
- type SetupFn = (setOnline: (online?: boolean) => void) => (() => void) | undefined;
3
- export declare class OnlineManager extends Subscribable {
2
+ type Listener = (online: boolean) => void;
3
+ type SetupFn = (setOnline: Listener) => (() => void) | undefined;
4
+ export declare class OnlineManager extends Subscribable<Listener> {
4
5
  #private;
5
6
  constructor();
6
7
  protected onSubscribe(): void;
7
8
  protected onUnsubscribe(): void;
8
9
  setEventListener(setup: SetupFn): void;
9
- setOnline(online?: boolean): void;
10
- onOnline(): void;
10
+ setOnline(online: boolean): void;
11
11
  isOnline(): boolean;
12
12
  }
13
13
  export declare const onlineManager: OnlineManager;
@@ -1 +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;IASjC,QAAQ,IAAI,IAAI;IAMhB,QAAQ,IAAI,OAAO;CAcpB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
1
+ {"version":3,"file":"onlineManager.d.ts","sourceRoot":"","sources":["../../src/onlineManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;AACzC,KAAK,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;AAEhE,qBAAa,aAAc,SAAQ,YAAY,CAAC,QAAQ,CAAC;;;IA6BvD,SAAS,CAAC,WAAW,IAAI,IAAI;IAM7B,SAAS,CAAC,aAAa;IAOvB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAMtC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAWhC,QAAQ,IAAI,OAAO;CAGpB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
@@ -1,9 +1,8 @@
1
1
  import { Subscribable } from './subscribable.js';
2
2
  import { isServer } from './utils.js';
3
3
 
4
- const onlineEvents = ['online', 'offline'];
5
4
  class OnlineManager extends Subscribable {
6
- #online;
5
+ #online = true;
7
6
  #cleanup;
8
7
  #setup;
9
8
  constructor() {
@@ -12,16 +11,15 @@ class OnlineManager extends Subscribable {
12
11
  // addEventListener does not exist in React Native, but window does
13
12
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
14
13
  if (!isServer && window.addEventListener) {
15
- const listener = () => onOnline();
14
+ const onlineListener = () => onOnline(true);
15
+ const offlineListener = () => onOnline(false);
16
16
  // Listen to online
17
- onlineEvents.forEach(event => {
18
- window.addEventListener(event, listener, false);
19
- });
17
+ window.addEventListener('online', onlineListener, false);
18
+ window.addEventListener('offline', offlineListener, false);
20
19
  return () => {
21
20
  // Be sure to unsubscribe if a new handler is set
22
- onlineEvents.forEach(event => {
23
- window.removeEventListener(event, listener);
24
- });
21
+ window.removeEventListener('online', onlineListener);
22
+ window.removeEventListener('offline', offlineListener);
25
23
  };
26
24
  }
27
25
  return;
@@ -41,34 +39,19 @@ class OnlineManager extends Subscribable {
41
39
  setEventListener(setup) {
42
40
  this.#setup = setup;
43
41
  this.#cleanup?.();
44
- this.#cleanup = setup(online => {
45
- if (typeof online === 'boolean') {
46
- this.setOnline(online);
47
- } else {
48
- this.onOnline();
49
- }
50
- });
42
+ this.#cleanup = setup(this.setOnline.bind(this));
51
43
  }
52
44
  setOnline(online) {
53
45
  const changed = this.#online !== online;
54
46
  if (changed) {
55
47
  this.#online = online;
56
- this.onOnline();
48
+ this.listeners.forEach(listener => {
49
+ listener(online);
50
+ });
57
51
  }
58
52
  }
59
- onOnline() {
60
- this.listeners.forEach(listener => {
61
- listener();
62
- });
63
- }
64
53
  isOnline() {
65
- if (typeof this.#online === 'boolean') {
66
- return this.#online;
67
- }
68
- if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
69
- return true;
70
- }
71
- return navigator.onLine;
54
+ return this.#online;
72
55
  }
73
56
  }
74
57
  const onlineManager = new OnlineManager();
@@ -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\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","OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","listener","forEach","event","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","online","setOnline","changed","listeners","isOnline","navigator","onLine","onlineManager"],"mappings":"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"}
1
+ {"version":3,"file":"onlineManager.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":["OnlineManager","Subscribable","constructor","onOnline","isServer","window","addEventListener","onlineListener","offlineListener","removeEventListener","onSubscribe","setEventListener","onUnsubscribe","hasListeners","undefined","setup","setOnline","bind","online","changed","listeners","forEach","listener","isOnline","onlineManager"],"mappings":";;;AAMO,MAAMA,aAAa,SAASC,YAAY,CAAW;EACxD,OAAO,GAAG,IAAI,CAAA;AACd,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,cAAc,GAAGA,MAAMJ,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC3C,QAAA,MAAMK,eAAe,GAAGA,MAAML,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7C;QACAE,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,cAAc,EAAE,KAAK,CAAC,CAAA;QACxDF,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEE,eAAe,EAAE,KAAK,CAAC,CAAA;AAE1D,QAAA,OAAO,MAAM;AACX;AACAH,UAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,cAAc,CAAC,CAAA;AACpDF,UAAAA,MAAM,CAACI,mBAAmB,CAAC,SAAS,EAAED,eAAe,CAAC,CAAA;SACvD,CAAA;AACH,OAAA;AAEA,MAAA,OAAA;KACD,CAAA;AACH,GAAA;AAEUE,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,CAAC,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAClD,GAAA;EAEAD,SAASA,CAACE,MAAe,EAAQ;AAC/B,IAAA,MAAMC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAKD,MAAM,CAAA;AAEvC,IAAA,IAAIC,OAAO,EAAE;AACX,MAAA,IAAI,CAAC,OAAO,GAAGD,MAAM,CAAA;AACrB,MAAA,IAAI,CAACE,SAAS,CAACC,OAAO,CAAEC,QAAQ,IAAK;QACnCA,QAAQ,CAACJ,MAAM,CAAC,CAAA;AAClB,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;AAEAK,EAAAA,QAAQA,GAAY;IAClB,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,GAAA;AACF,CAAA;MAEaC,aAAa,GAAG,IAAIxB,aAAa;;;;"}
@@ -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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"}
@@ -4,7 +4,7 @@ import type { SpyInstance } from 'vitest';
4
4
  import type { MutationOptions, QueryClientConfig } from '..';
5
5
  export declare function createQueryClient(config?: QueryClientConfig): QueryClient;
6
6
  export declare function mockVisibilityState(value: DocumentVisibilityState): SpyInstance<[], DocumentVisibilityState>;
7
- export declare function mockNavigatorOnLine(value: boolean): SpyInstance<[], boolean>;
7
+ export declare function mockOnlineManagerIsOnline(value: boolean): SpyInstance<[], boolean>;
8
8
  export declare function queryKey(): Array<string>;
9
9
  export declare function sleep(timeout: number): Promise<void>;
10
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":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAEhC,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,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAE5E;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.85",
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",
@@ -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
 
@@ -5,7 +5,7 @@ import { MutationCache } from '../mutationCache'
5
5
  import {
6
6
  createQueryClient,
7
7
  executeMutation,
8
- mockNavigatorOnLine,
8
+ mockOnlineManagerIsOnline,
9
9
  sleep,
10
10
  } from './utils'
11
11
 
@@ -347,7 +347,7 @@ describe('dehydration and rehydration', () => {
347
347
  test('should be able to dehydrate mutations and continue on hydration', async () => {
348
348
  const consoleMock = vi.spyOn(console, 'error')
349
349
  consoleMock.mockImplementation(() => undefined)
350
- const onlineMock = mockNavigatorOnLine(false)
350
+ const onlineMock = mockOnlineManagerIsOnline(false)
351
351
 
352
352
  const serverAddTodo = vi
353
353
  .fn()
@@ -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
  })
@@ -1,7 +1,6 @@
1
1
  import { waitFor } from '@testing-library/react'
2
2
  import '@testing-library/jest-dom'
3
3
 
4
- import { vi } from 'vitest'
5
4
  import {
6
5
  MutationObserver,
7
6
  QueryObserver,
@@ -11,7 +10,7 @@ import {
11
10
  import { noop } from '../utils'
12
11
  import {
13
12
  createQueryClient,
14
- mockNavigatorOnLine,
13
+ mockOnlineManagerIsOnline,
15
14
  queryKey,
16
15
  sleep,
17
16
  } from './utils'
@@ -1074,7 +1073,7 @@ describe('queryClient', () => {
1074
1073
  const key1 = queryKey()
1075
1074
  const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1')
1076
1075
  await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 })
1077
- const onlineMock = mockNavigatorOnLine(false)
1076
+ const onlineMock = mockOnlineManagerIsOnline(false)
1078
1077
 
1079
1078
  await queryClient.refetchQueries({ queryKey: key1 })
1080
1079
 
@@ -1088,7 +1087,7 @@ describe('queryClient', () => {
1088
1087
  queryClient.setQueryDefaults(key1, { networkMode: 'always' })
1089
1088
  const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1')
1090
1089
  await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 })
1091
- const onlineMock = mockNavigatorOnLine(false)
1090
+ const onlineMock = mockOnlineManagerIsOnline(false)
1092
1091
 
1093
1092
  await queryClient.refetchQueries({ queryKey: key1 })
1094
1093
 
@@ -1394,7 +1393,7 @@ describe('queryClient', () => {
1394
1393
  queryCacheOnFocusSpy.mockRestore()
1395
1394
  queryCacheOnOnlineSpy.mockRestore()
1396
1395
  mutationCacheResumePausedMutationsSpy.mockRestore()
1397
- onlineManager.setOnline(undefined)
1396
+ onlineManager.setOnline(true)
1398
1397
  })
1399
1398
 
1400
1399
  test('should resume paused mutations when coming online', async () => {
@@ -1424,7 +1423,7 @@ describe('queryClient', () => {
1424
1423
  expect(observer1.getCurrentResult().status).toBe('success')
1425
1424
  })
1426
1425
 
1427
- onlineManager.setOnline(undefined)
1426
+ onlineManager.setOnline(true)
1428
1427
  })
1429
1428
 
1430
1429
  test('should resume paused mutations one after the other when invoked manually at the same time', async () => {
@@ -1459,7 +1458,7 @@ describe('queryClient', () => {
1459
1458
  expect(observer2.getCurrentResult().isPaused).toBeTruthy()
1460
1459
  })
1461
1460
 
1462
- onlineManager.setOnline(undefined)
1461
+ onlineManager.setOnline(true)
1463
1462
  void queryClient.resumePausedMutations()
1464
1463
  await sleep(5)
1465
1464
  await queryClient.resumePausedMutations()
@@ -1491,6 +1490,7 @@ describe('queryClient', () => {
1491
1490
  'resumePausedMutations',
1492
1491
  )
1493
1492
 
1493
+ onlineManager.setOnline(false)
1494
1494
  onlineManager.setOnline(true)
1495
1495
  expect(queryCacheOnOnlineSpy).toHaveBeenCalledTimes(1)
1496
1496
  expect(mutationCacheResumePausedMutationsSpy).toHaveBeenCalledTimes(1)
@@ -1503,7 +1503,7 @@ describe('queryClient', () => {
1503
1503
  queryCacheOnOnlineSpy.mockRestore()
1504
1504
  mutationCacheResumePausedMutationsSpy.mockRestore()
1505
1505
  focusManager.setFocused(undefined)
1506
- onlineManager.setOnline(undefined)
1506
+ onlineManager.setOnline(true)
1507
1507
  })
1508
1508
 
1509
1509
  test('should not notify queryCache and mutationCache after multiple mounts/unmounts', async () => {
@@ -1538,7 +1538,7 @@ describe('queryClient', () => {
1538
1538
  queryCacheOnOnlineSpy.mockRestore()
1539
1539
  mutationCacheResumePausedMutationsSpy.mockRestore()
1540
1540
  focusManager.setFocused(undefined)
1541
- onlineManager.setOnline(undefined)
1541
+ onlineManager.setOnline(true)
1542
1542
  })
1543
1543
  })
1544
1544
 
@@ -1,6 +1,6 @@
1
1
  import { act } from '@testing-library/react'
2
2
  import { vi } from 'vitest'
3
- import { QueryClient } from '..'
3
+ import { QueryClient, onlineManager } from '..'
4
4
  import * as utils from '../utils'
5
5
  import type { SpyInstance } from 'vitest'
6
6
  import type { MutationOptions, QueryClientConfig } from '..'
@@ -15,8 +15,10 @@ export function mockVisibilityState(
15
15
  return vi.spyOn(document, 'visibilityState', 'get').mockReturnValue(value)
16
16
  }
17
17
 
18
- export function mockNavigatorOnLine(value: boolean): SpyInstance<[], boolean> {
19
- return vi.spyOn(navigator, 'onLine', 'get').mockReturnValue(value)
18
+ export function mockOnlineManagerIsOnline(
19
+ value: boolean,
20
+ ): SpyInstance<[], boolean> {
21
+ return vi.spyOn(onlineManager, 'isOnline').mockReturnValue(value)
20
22
  }
21
23
 
22
24
  let queryKeyCount = 0