@tanstack/react-query-persist-client 4.24.10 → 5.0.0-alpha.1

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.
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core';
3
2
  import type { QueryClientProviderProps } from '@tanstack/react-query';
4
3
  export declare type PersistQueryClientProviderProps = QueryClientProviderProps & {
@@ -24,12 +24,13 @@ const PersistQueryClientProvider = ({
24
24
  React.useEffect(() => {
25
25
  let isStale = false;
26
26
  setIsRestoring(true);
27
- const [unsubscribe, promise] = persistQueryClient({ ...refs.current.persistOptions,
27
+ const [unsubscribe, promise] = persistQueryClient({
28
+ ...refs.current.persistOptions,
28
29
  queryClient: client
29
30
  });
30
31
  promise.then(() => {
31
32
  if (!isStale) {
32
- refs.current.onSuccess == null ? void 0 : refs.current.onSuccess();
33
+ refs.current.onSuccess?.();
33
34
  setIsRestoring(false);
34
35
  }
35
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PersistQueryClientProvider.esm.js","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then"],"mappings":";;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MADyC;EAEzCC,QAFyC;EAGzCC,cAHyC;EAIzCC,SAJyC;EAKzC,GAAGC,KAAAA;AALsC,CAAD,KAMU;EAClD,MAAM,CAACC,WAAD,EAAcC,cAAd,CAAA,GAAgCC,KAAK,CAACC,QAAN,CAAe,IAAf,CAAtC,CAAA;AACA,EAAA,MAAMC,IAAI,GAAGF,KAAK,CAACG,MAAN,CAAa;IAAER,cAAF;AAAkBC,IAAAA,SAAAA;AAAlB,GAAb,CAAb,CAAA;EAEAI,KAAK,CAACI,SAAN,CAAgB,MAAM;IACpBF,IAAI,CAACG,OAAL,GAAe;MAAEV,cAAF;AAAkBC,MAAAA,SAAAA;KAAjC,CAAA;GADF,CAAA,CAAA;EAIAI,KAAK,CAACI,SAAN,CAAgB,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAd,CAAA;IACAP,cAAc,CAAC,IAAD,CAAd,CAAA;AACA,IAAA,MAAM,CAACQ,WAAD,EAAcC,OAAd,CAAyBC,GAAAA,kBAAkB,CAAC,EAChD,GAAGP,IAAI,CAACG,OAAL,CAAaV,cADgC;AAEhDe,MAAAA,WAAW,EAAEjB,MAAAA;AAFmC,KAAD,CAAjD,CAAA;IAKAe,OAAO,CAACG,IAAR,CAAa,MAAM;MACjB,IAAI,CAACL,OAAL,EAAc;QACZJ,IAAI,CAACG,OAAL,CAAaT,SAAb,oBAAAM,IAAI,CAACG,OAAL,CAAaT,SAAb,EAAA,CAAA;QACAG,cAAc,CAAC,KAAD,CAAd,CAAA;AACD,OAAA;KAJH,CAAA,CAAA;AAOA,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAV,CAAA;MACAC,WAAW,EAAA,CAAA;KAFb,CAAA;GAfF,EAmBG,CAACd,MAAD,CAnBH,CAAA,CAAA;AAqBA,EAAA,oBACE,oBAAC,mBAAD,EAAA,QAAA,CAAA;AAAqB,IAAA,MAAM,EAAEA,MAAAA;GAAYI,EAAAA,KAAzC,CACE,eAAA,KAAA,CAAA,aAAA,CAAC,mBAAD,EAAA;AAAqB,IAAA,KAAK,EAAEC,WAAAA;GAAcJ,EAAAA,QAA1C,CADF,CADF,CAAA;AAKD;;;;"}
1
+ {"version":3,"file":"PersistQueryClientProvider.esm.js","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then"],"mappings":";;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MAAM;EACNC,QAAQ;EACRC,cAAc;EACdC,SAAS;EACT,GAAGC,KAAAA;AAC4B,CAAC,KAAkB;EAClD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1D,EAAA,MAAMC,IAAI,GAAGF,KAAK,CAACG,MAAM,CAAC;IAAER,cAAc;AAAEC,IAAAA,SAAAA;AAAU,GAAC,CAAC,CAAA;EAExDI,KAAK,CAACI,SAAS,CAAC,MAAM;IACpBF,IAAI,CAACG,OAAO,GAAG;MAAEV,cAAc;AAAEC,MAAAA,SAAAA;KAAW,CAAA;AAC9C,GAAC,CAAC,CAAA;EAEFI,KAAK,CAACI,SAAS,CAAC,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAK,CAAA;IACnBP,cAAc,CAAC,IAAI,CAAC,CAAA;AACpB,IAAA,MAAM,CAACQ,WAAW,EAAEC,OAAO,CAAC,GAAGC,kBAAkB,CAAC;AAChD,MAAA,GAAGP,IAAI,CAACG,OAAO,CAACV,cAAc;AAC9Be,MAAAA,WAAW,EAAEjB,MAAAA;AACf,KAAC,CAAC,CAAA;IAEFe,OAAO,CAACG,IAAI,CAAC,MAAM;MACjB,IAAI,CAACL,OAAO,EAAE;AACZJ,QAAAA,IAAI,CAACG,OAAO,CAACT,SAAS,IAAI,CAAA;QAC1BG,cAAc,CAAC,KAAK,CAAC,CAAA;AACvB,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAI,CAAA;AACdC,MAAAA,WAAW,EAAE,CAAA;KACd,CAAA;AACH,GAAC,EAAE,CAACd,MAAM,CAAC,CAAC,CAAA;AAEZ,EAAA,oBACE,oBAAC,mBAAmB,EAAA,QAAA,CAAA;AAAC,IAAA,MAAM,EAAEA,MAAAA;GAAYI,EAAAA,KAAK,CAC5C,eAAA,KAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA;AAAC,IAAA,KAAK,EAAEC,WAAAA;GAAcJ,EAAAA,QAAQ,CAAuB,CACrD,CAAA;AAE1B;;;;"}
@@ -1,14 +1,11 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
6
4
  var React = require('react');
7
5
  var queryPersistClientCore = require('@tanstack/query-persist-client-core');
8
6
  var reactQuery = require('@tanstack/react-query');
9
7
 
10
- function _interopNamespace(e) {
11
- if (e && e.__esModule) return e;
8
+ function _interopNamespaceDefault(e) {
12
9
  var n = Object.create(null);
13
10
  if (e) {
14
11
  Object.keys(e).forEach(function (k) {
@@ -21,11 +18,11 @@ function _interopNamespace(e) {
21
18
  }
22
19
  });
23
20
  }
24
- n["default"] = e;
21
+ n.default = e;
25
22
  return Object.freeze(n);
26
23
  }
27
24
 
28
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
25
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
26
 
30
27
  const PersistQueryClientProvider = ({
31
28
  client,
@@ -48,12 +45,13 @@ const PersistQueryClientProvider = ({
48
45
  React__namespace.useEffect(() => {
49
46
  let isStale = false;
50
47
  setIsRestoring(true);
51
- const [unsubscribe, promise] = queryPersistClientCore.persistQueryClient({ ...refs.current.persistOptions,
48
+ const [unsubscribe, promise] = queryPersistClientCore.persistQueryClient({
49
+ ...refs.current.persistOptions,
52
50
  queryClient: client
53
51
  });
54
52
  promise.then(() => {
55
53
  if (!isStale) {
56
- refs.current.onSuccess == null ? void 0 : refs.current.onSuccess();
54
+ refs.current.onSuccess?.();
57
55
  setIsRestoring(false);
58
56
  }
59
57
  });
@@ -62,7 +60,7 @@ const PersistQueryClientProvider = ({
62
60
  unsubscribe();
63
61
  };
64
62
  }, [client]);
65
- return /*#__PURE__*/React__namespace.createElement(reactQuery.QueryClientProvider, _rollupPluginBabelHelpers["extends"]({
63
+ return /*#__PURE__*/React__namespace.createElement(reactQuery.QueryClientProvider, _rollupPluginBabelHelpers.extends({
66
64
  client: client
67
65
  }, props), /*#__PURE__*/React__namespace.createElement(reactQuery.IsRestoringProvider, {
68
66
  value: isRestoring
@@ -1 +1 @@
1
- {"version":3,"file":"PersistQueryClientProvider.js","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then","QueryClientProvider","_extends","IsRestoringProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MADyC;EAEzCC,QAFyC;EAGzCC,cAHyC;EAIzCC,SAJyC;EAKzC,GAAGC,KAAAA;AALsC,CAAD,KAMU;EAClD,MAAM,CAACC,WAAD,EAAcC,cAAd,CAAA,GAAgCC,gBAAK,CAACC,QAAN,CAAe,IAAf,CAAtC,CAAA;AACA,EAAA,MAAMC,IAAI,GAAGF,gBAAK,CAACG,MAAN,CAAa;IAAER,cAAF;AAAkBC,IAAAA,SAAAA;AAAlB,GAAb,CAAb,CAAA;EAEAI,gBAAK,CAACI,SAAN,CAAgB,MAAM;IACpBF,IAAI,CAACG,OAAL,GAAe;MAAEV,cAAF;AAAkBC,MAAAA,SAAAA;KAAjC,CAAA;GADF,CAAA,CAAA;EAIAI,gBAAK,CAACI,SAAN,CAAgB,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAd,CAAA;IACAP,cAAc,CAAC,IAAD,CAAd,CAAA;AACA,IAAA,MAAM,CAACQ,WAAD,EAAcC,OAAd,CAAyBC,GAAAA,yCAAkB,CAAC,EAChD,GAAGP,IAAI,CAACG,OAAL,CAAaV,cADgC;AAEhDe,MAAAA,WAAW,EAAEjB,MAAAA;AAFmC,KAAD,CAAjD,CAAA;IAKAe,OAAO,CAACG,IAAR,CAAa,MAAM;MACjB,IAAI,CAACL,OAAL,EAAc;QACZJ,IAAI,CAACG,OAAL,CAAaT,SAAb,oBAAAM,IAAI,CAACG,OAAL,CAAaT,SAAb,EAAA,CAAA;QACAG,cAAc,CAAC,KAAD,CAAd,CAAA;AACD,OAAA;KAJH,CAAA,CAAA;AAOA,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAV,CAAA;MACAC,WAAW,EAAA,CAAA;KAFb,CAAA;GAfF,EAmBG,CAACd,MAAD,CAnBH,CAAA,CAAA;AAqBA,EAAA,oBACEO,+BAACY,8BAAD,EAAAC,oCAAA,CAAA;AAAqB,IAAA,MAAM,EAAEpB,MAAAA;GAAYI,EAAAA,KAAzC,CACE,eAAAG,gBAAA,CAAA,aAAA,CAACc,8BAAD,EAAA;AAAqB,IAAA,KAAK,EAAEhB,WAAAA;GAAcJ,EAAAA,QAA1C,CADF,CADF,CAAA;AAKD;;;;"}
1
+ {"version":3,"file":"PersistQueryClientProvider.js","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then","QueryClientProvider","_extends","IsRestoringProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MAAM;EACNC,QAAQ;EACRC,cAAc;EACdC,SAAS;EACT,GAAGC,KAAAA;AAC4B,CAAC,KAAkB;EAClD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,gBAAK,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1D,EAAA,MAAMC,IAAI,GAAGF,gBAAK,CAACG,MAAM,CAAC;IAAER,cAAc;AAAEC,IAAAA,SAAAA;AAAU,GAAC,CAAC,CAAA;EAExDI,gBAAK,CAACI,SAAS,CAAC,MAAM;IACpBF,IAAI,CAACG,OAAO,GAAG;MAAEV,cAAc;AAAEC,MAAAA,SAAAA;KAAW,CAAA;AAC9C,GAAC,CAAC,CAAA;EAEFI,gBAAK,CAACI,SAAS,CAAC,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAK,CAAA;IACnBP,cAAc,CAAC,IAAI,CAAC,CAAA;AACpB,IAAA,MAAM,CAACQ,WAAW,EAAEC,OAAO,CAAC,GAAGC,yCAAkB,CAAC;AAChD,MAAA,GAAGP,IAAI,CAACG,OAAO,CAACV,cAAc;AAC9Be,MAAAA,WAAW,EAAEjB,MAAAA;AACf,KAAC,CAAC,CAAA;IAEFe,OAAO,CAACG,IAAI,CAAC,MAAM;MACjB,IAAI,CAACL,OAAO,EAAE;AACZJ,QAAAA,IAAI,CAACG,OAAO,CAACT,SAAS,IAAI,CAAA;QAC1BG,cAAc,CAAC,KAAK,CAAC,CAAA;AACvB,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAI,CAAA;AACdC,MAAAA,WAAW,EAAE,CAAA;KACd,CAAA;AACH,GAAC,EAAE,CAACd,MAAM,CAAC,CAAC,CAAA;AAEZ,EAAA,oBACEO,+BAACY,8BAAmB,EAAAC,iCAAA,CAAA;AAAC,IAAA,MAAM,EAAEpB,MAAAA;GAAYI,EAAAA,KAAK,CAC5C,eAAAG,gBAAA,CAAA,aAAA,CAACc,8BAAmB,EAAA;AAAC,IAAA,KAAK,EAAEhB,WAAAA;GAAcJ,EAAAA,QAAQ,CAAuB,CACrD,CAAA;AAE1B;;;;"}
@@ -24,12 +24,13 @@ const PersistQueryClientProvider = ({
24
24
  React.useEffect(() => {
25
25
  let isStale = false;
26
26
  setIsRestoring(true);
27
- const [unsubscribe, promise] = persistQueryClient({ ...refs.current.persistOptions,
27
+ const [unsubscribe, promise] = persistQueryClient({
28
+ ...refs.current.persistOptions,
28
29
  queryClient: client
29
30
  });
30
31
  promise.then(() => {
31
32
  if (!isStale) {
32
- refs.current.onSuccess == null ? void 0 : refs.current.onSuccess();
33
+ refs.current.onSuccess?.();
33
34
  setIsRestoring(false);
34
35
  }
35
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PersistQueryClientProvider.mjs","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then"],"mappings":";;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MADyC;EAEzCC,QAFyC;EAGzCC,cAHyC;EAIzCC,SAJyC;EAKzC,GAAGC,KAAAA;AALsC,CAAD,KAMU;EAClD,MAAM,CAACC,WAAD,EAAcC,cAAd,CAAA,GAAgCC,KAAK,CAACC,QAAN,CAAe,IAAf,CAAtC,CAAA;AACA,EAAA,MAAMC,IAAI,GAAGF,KAAK,CAACG,MAAN,CAAa;IAAER,cAAF;AAAkBC,IAAAA,SAAAA;AAAlB,GAAb,CAAb,CAAA;EAEAI,KAAK,CAACI,SAAN,CAAgB,MAAM;IACpBF,IAAI,CAACG,OAAL,GAAe;MAAEV,cAAF;AAAkBC,MAAAA,SAAAA;KAAjC,CAAA;GADF,CAAA,CAAA;EAIAI,KAAK,CAACI,SAAN,CAAgB,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAd,CAAA;IACAP,cAAc,CAAC,IAAD,CAAd,CAAA;AACA,IAAA,MAAM,CAACQ,WAAD,EAAcC,OAAd,CAAyBC,GAAAA,kBAAkB,CAAC,EAChD,GAAGP,IAAI,CAACG,OAAL,CAAaV,cADgC;AAEhDe,MAAAA,WAAW,EAAEjB,MAAAA;AAFmC,KAAD,CAAjD,CAAA;IAKAe,OAAO,CAACG,IAAR,CAAa,MAAM;MACjB,IAAI,CAACL,OAAL,EAAc;QACZJ,IAAI,CAACG,OAAL,CAAaT,SAAb,oBAAAM,IAAI,CAACG,OAAL,CAAaT,SAAb,EAAA,CAAA;QACAG,cAAc,CAAC,KAAD,CAAd,CAAA;AACD,OAAA;KAJH,CAAA,CAAA;AAOA,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAV,CAAA;MACAC,WAAW,EAAA,CAAA;KAFb,CAAA;GAfF,EAmBG,CAACd,MAAD,CAnBH,CAAA,CAAA;AAqBA,EAAA,oBACE,oBAAC,mBAAD,EAAA,QAAA,CAAA;AAAqB,IAAA,MAAM,EAAEA,MAAAA;GAAYI,EAAAA,KAAzC,CACE,eAAA,KAAA,CAAA,aAAA,CAAC,mBAAD,EAAA;AAAqB,IAAA,KAAK,EAAEC,WAAAA;GAAcJ,EAAAA,QAA1C,CADF,CADF,CAAA;AAKD;;;;"}
1
+ {"version":3,"file":"PersistQueryClientProvider.mjs","sources":["../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then"],"mappings":";;;;;AAaO,MAAMA,0BAA0B,GAAG,CAAC;EACzCC,MAAM;EACNC,QAAQ;EACRC,cAAc;EACdC,SAAS;EACT,GAAGC,KAAAA;AAC4B,CAAC,KAAkB;EAClD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1D,EAAA,MAAMC,IAAI,GAAGF,KAAK,CAACG,MAAM,CAAC;IAAER,cAAc;AAAEC,IAAAA,SAAAA;AAAU,GAAC,CAAC,CAAA;EAExDI,KAAK,CAACI,SAAS,CAAC,MAAM;IACpBF,IAAI,CAACG,OAAO,GAAG;MAAEV,cAAc;AAAEC,MAAAA,SAAAA;KAAW,CAAA;AAC9C,GAAC,CAAC,CAAA;EAEFI,KAAK,CAACI,SAAS,CAAC,MAAM;IACpB,IAAIE,OAAO,GAAG,KAAK,CAAA;IACnBP,cAAc,CAAC,IAAI,CAAC,CAAA;AACpB,IAAA,MAAM,CAACQ,WAAW,EAAEC,OAAO,CAAC,GAAGC,kBAAkB,CAAC;AAChD,MAAA,GAAGP,IAAI,CAACG,OAAO,CAACV,cAAc;AAC9Be,MAAAA,WAAW,EAAEjB,MAAAA;AACf,KAAC,CAAC,CAAA;IAEFe,OAAO,CAACG,IAAI,CAAC,MAAM;MACjB,IAAI,CAACL,OAAO,EAAE;AACZJ,QAAAA,IAAI,CAACG,OAAO,CAACT,SAAS,IAAI,CAAA;QAC1BG,cAAc,CAAC,KAAK,CAAC,CAAA;AACvB,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM;AACXO,MAAAA,OAAO,GAAG,IAAI,CAAA;AACdC,MAAAA,WAAW,EAAE,CAAA;KACd,CAAA;AACH,GAAC,EAAE,CAACd,MAAM,CAAC,CAAC,CAAA;AAEZ,EAAA,oBACE,oBAAC,mBAAmB,EAAA,QAAA,CAAA;AAAC,IAAA,MAAM,EAAEA,MAAAA;GAAYI,EAAAA,KAAK,CAC5C,eAAA,KAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA;AAAC,IAAA,KAAK,EAAEC,WAAAA;GAAcJ,EAAAA,QAAQ,CAAuB,CACrD,CAAA;AAE1B;;;;"}
@@ -1,13 +1,7 @@
1
- /// <reference types="jest" />
2
1
  /// <reference types="node" />
3
2
  import type { QueryClientConfig } from '@tanstack/query-core';
4
3
  import { QueryClient } from '@tanstack/query-core';
5
4
  export declare function createQueryClient(config?: QueryClientConfig): QueryClient;
6
- export declare const mockLogger: {
7
- log: jest.Mock<any, any>;
8
- warn: jest.Mock<any, any>;
9
- error: jest.Mock<any, any>;
10
- };
11
5
  export declare function queryKey(): Array<string>;
12
6
  export declare function sleep(timeout: number): Promise<void>;
13
7
  export declare function setActTimeout(fn: () => void, ms?: number): NodeJS.Timeout;
@@ -2,14 +2,12 @@ function _extends() {
2
2
  _extends = Object.assign ? Object.assign.bind() : function (target) {
3
3
  for (var i = 1; i < arguments.length; i++) {
4
4
  var source = arguments[i];
5
-
6
5
  for (var key in source) {
7
6
  if (Object.prototype.hasOwnProperty.call(source, key)) {
8
7
  target[key] = source[key];
9
8
  }
10
9
  }
11
10
  }
12
-
13
11
  return target;
14
12
  };
15
13
  return _extends.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -1,23 +1,19 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  function _extends() {
6
4
  _extends = Object.assign ? Object.assign.bind() : function (target) {
7
5
  for (var i = 1; i < arguments.length; i++) {
8
6
  var source = arguments[i];
9
-
10
7
  for (var key in source) {
11
8
  if (Object.prototype.hasOwnProperty.call(source, key)) {
12
9
  target[key] = source[key];
13
10
  }
14
11
  }
15
12
  }
16
-
17
13
  return target;
18
14
  };
19
15
  return _extends.apply(this, arguments);
20
16
  }
21
17
 
22
- exports["extends"] = _extends;
18
+ exports.extends = _extends;
23
19
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -2,14 +2,12 @@ function _extends() {
2
2
  _extends = Object.assign ? Object.assign.bind() : function (target) {
3
3
  for (var i = 1; i < arguments.length; i++) {
4
4
  var source = arguments[i];
5
-
6
5
  for (var key in source) {
7
6
  if (Object.prototype.hasOwnProperty.call(source, key)) {
8
7
  target[key] = source[key];
9
8
  }
10
9
  }
11
10
  }
12
-
13
11
  return target;
14
12
  };
15
13
  return _extends.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var queryPersistClientCore = require('@tanstack/query-persist-client-core');
6
4
  var PersistQueryClientProvider = require('./PersistQueryClientProvider.js');
7
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -4,8 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactQueryPersistClient = {}, global.React, global.ReactQuery));
5
5
  })(this, (function (exports, React, reactQuery) { 'use strict';
6
6
 
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
7
+ function _interopNamespaceDefault(e) {
9
8
  var n = Object.create(null);
10
9
  if (e) {
11
10
  Object.keys(e).forEach(function (k) {
@@ -18,25 +17,27 @@
18
17
  }
19
18
  });
20
19
  }
21
- n["default"] = e;
20
+ n.default = e;
22
21
  return Object.freeze(n);
23
22
  }
24
23
 
25
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
24
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
26
25
 
27
26
  // TYPES
27
+
28
28
  // FUNCTIONS
29
+
29
30
  function dehydrateMutation(mutation) {
30
31
  return {
31
32
  mutationKey: mutation.options.mutationKey,
32
33
  state: mutation.state
33
34
  };
34
- } // Most config is not dehydrated but instead meant to configure again when
35
+ }
36
+
37
+ // Most config is not dehydrated but instead meant to configure again when
35
38
  // consuming the de/rehydrated data, typically with useQuery on the client.
36
39
  // Sometimes it might make sense to prefetch data on the server and include
37
40
  // in the html-payload, but not consume it on the initial render.
38
-
39
-
40
41
  function dehydrateQuery(query) {
41
42
  return {
42
43
  state: query.state,
@@ -44,7 +45,6 @@
44
45
  queryHash: query.queryHash
45
46
  };
46
47
  }
47
-
48
48
  function defaultShouldDehydrateMutation(mutation) {
49
49
  return mutation.state.isPaused;
50
50
  }
@@ -54,7 +54,6 @@
54
54
  function dehydrate(client, options = {}) {
55
55
  const mutations = [];
56
56
  const queries = [];
57
-
58
57
  if (options.dehydrateMutations !== false) {
59
58
  const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;
60
59
  client.getMutationCache().getAll().forEach(mutation => {
@@ -63,7 +62,6 @@
63
62
  }
64
63
  });
65
64
  }
66
-
67
65
  if (options.dehydrateQueries !== false) {
68
66
  const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;
69
67
  client.getQueryCache().getAll().forEach(query => {
@@ -72,7 +70,6 @@
72
70
  }
73
71
  });
74
72
  }
75
-
76
73
  return {
77
74
  mutations,
78
75
  queries
@@ -82,40 +79,40 @@
82
79
  if (typeof dehydratedState !== 'object' || dehydratedState === null) {
83
80
  return;
84
81
  }
85
-
86
82
  const mutationCache = client.getMutationCache();
87
- const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
88
-
89
- const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
83
+ const queryCache = client.getQueryCache();
90
84
 
85
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
86
+ const mutations = dehydratedState.mutations || [];
87
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
91
88
  const queries = dehydratedState.queries || [];
92
89
  mutations.forEach(dehydratedMutation => {
93
- var _options$defaultOptio;
94
-
95
- mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
90
+ mutationCache.build(client, {
91
+ ...options?.defaultOptions?.mutations,
96
92
  mutationKey: dehydratedMutation.mutationKey
97
93
  }, dehydratedMutation.state);
98
94
  });
99
95
  queries.forEach(dehydratedQuery => {
100
- var _options$defaultOptio2;
96
+ const query = queryCache.get(dehydratedQuery.queryHash);
101
97
 
102
- const query = queryCache.get(dehydratedQuery.queryHash); // Reset fetch status to idle in the dehydrated state to avoid
98
+ // Reset fetch status to idle in the dehydrated state to avoid
103
99
  // query being stuck in fetching state upon hydration
104
-
105
- const dehydratedQueryState = { ...dehydratedQuery.state,
100
+ const dehydratedQueryState = {
101
+ ...dehydratedQuery.state,
106
102
  fetchStatus: 'idle'
107
- }; // Do not hydrate if an existing query exists with newer data
103
+ };
108
104
 
105
+ // Do not hydrate if an existing query exists with newer data
109
106
  if (query) {
110
107
  if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {
111
108
  query.setState(dehydratedQueryState);
112
109
  }
113
-
114
110
  return;
115
- } // Restore query
116
-
111
+ }
117
112
 
118
- queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),
113
+ // Restore query
114
+ queryCache.build(client, {
115
+ ...options?.defaultOptions?.queries,
119
116
  queryKey: dehydratedQuery.queryKey,
120
117
  queryHash: dehydratedQuery.queryHash
121
118
  }, dehydratedQueryState);
@@ -127,18 +124,16 @@
127
124
  * Useful for persist, where we only want to trigger save when cache is changed.
128
125
  */
129
126
  const cacheableEventTypes = ['added', 'removed', 'updated'];
130
-
131
127
  function isCacheableEventType(eventType) {
132
128
  return cacheableEventTypes.includes(eventType);
133
129
  }
130
+
134
131
  /**
135
132
  * Restores persisted data to the QueryCache
136
133
  * - data obtained from persister.restoreClient
137
134
  * - data is hydrated using hydrateOptions
138
135
  * If data is expired, busted, empty, or throws, it runs persister.removeClient
139
136
  */
140
-
141
-
142
137
  async function persistQueryClientRestore({
143
138
  queryClient,
144
139
  persister,
@@ -148,12 +143,10 @@
148
143
  }) {
149
144
  try {
150
145
  const persistedClient = await persister.restoreClient();
151
-
152
146
  if (persistedClient) {
153
147
  if (persistedClient.timestamp) {
154
148
  const expired = Date.now() - persistedClient.timestamp > maxAge;
155
149
  const busted = persistedClient.buster !== buster;
156
-
157
150
  if (expired || busted) {
158
151
  persister.removeClient();
159
152
  } else {
@@ -165,19 +158,18 @@
165
158
  }
166
159
  } catch (err) {
167
160
  {
168
- queryClient.getLogger().error(err);
169
- queryClient.getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');
161
+ console.error(err);
162
+ console.warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');
170
163
  }
171
-
172
164
  persister.removeClient();
173
165
  }
174
166
  }
167
+
175
168
  /**
176
169
  * Persists data from the QueryCache
177
170
  * - data dehydrated using dehydrateOptions
178
171
  * - data is persisted using persister.persistClient
179
172
  */
180
-
181
173
  async function persistQueryClientSave({
182
174
  queryClient,
183
175
  persister,
@@ -191,11 +183,11 @@
191
183
  };
192
184
  await persister.persistClient(persistClient);
193
185
  }
186
+
194
187
  /**
195
188
  * Subscribe to QueryCache and MutationCache updates (for persisting)
196
189
  * @returns an unsubscribe function (to discontinue monitoring)
197
190
  */
198
-
199
191
  function persistQueryClientSubscribe(props) {
200
192
  const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {
201
193
  if (isCacheableEventType(event.type)) {
@@ -212,20 +204,19 @@
212
204
  unusbscribeMutationCache();
213
205
  };
214
206
  }
207
+
215
208
  /**
216
209
  * Restores persisted data to QueryCache and persists further changes.
217
210
  */
218
-
219
211
  function persistQueryClient(props) {
220
212
  let hasUnsubscribed = false;
221
213
  let persistQueryClientUnsubscribe;
222
-
223
214
  const unsubscribe = () => {
224
215
  hasUnsubscribed = true;
225
- persistQueryClientUnsubscribe == null ? void 0 : persistQueryClientUnsubscribe();
226
- }; // Attempt restore
227
-
216
+ persistQueryClientUnsubscribe?.();
217
+ };
228
218
 
219
+ // Attempt restore
229
220
  const restorePromise = persistQueryClientRestore(props).then(() => {
230
221
  if (!hasUnsubscribed) {
231
222
  // Subscribe to changes in the query cache to trigger the save
@@ -240,21 +231,23 @@
240
231
  }) => {
241
232
  const mutations = [...persistedClient.clientState.mutations];
242
233
  const queries = [...persistedClient.clientState.queries];
243
- const client = { ...persistedClient,
234
+ const client = {
235
+ ...persistedClient,
244
236
  clientState: {
245
237
  mutations,
246
238
  queries
247
239
  }
248
- }; // sort queries by dataUpdatedAt (oldest first)
240
+ };
249
241
 
250
- const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt); // clean oldest query
242
+ // sort queries by dataUpdatedAt (oldest first)
243
+ const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt);
251
244
 
245
+ // clean oldest query
252
246
  if (sortedQueries.length > 0) {
253
247
  const oldestData = sortedQueries.shift();
254
248
  client.clientState.queries = queries.filter(q => q !== oldestData);
255
249
  return client;
256
250
  }
257
-
258
251
  return undefined;
259
252
  };
260
253
 
@@ -262,14 +255,12 @@
262
255
  _extends = Object.assign ? Object.assign.bind() : function (target) {
263
256
  for (var i = 1; i < arguments.length; i++) {
264
257
  var source = arguments[i];
265
-
266
258
  for (var key in source) {
267
259
  if (Object.prototype.hasOwnProperty.call(source, key)) {
268
260
  target[key] = source[key];
269
261
  }
270
262
  }
271
263
  }
272
-
273
264
  return target;
274
265
  };
275
266
  return _extends.apply(this, arguments);
@@ -296,12 +287,13 @@
296
287
  React__namespace.useEffect(() => {
297
288
  let isStale = false;
298
289
  setIsRestoring(true);
299
- const [unsubscribe, promise] = persistQueryClient({ ...refs.current.persistOptions,
290
+ const [unsubscribe, promise] = persistQueryClient({
291
+ ...refs.current.persistOptions,
300
292
  queryClient: client
301
293
  });
302
294
  promise.then(() => {
303
295
  if (!isStale) {
304
- refs.current.onSuccess == null ? void 0 : refs.current.onSuccess();
296
+ refs.current.onSuccess?.();
305
297
  setIsRestoring(false);
306
298
  }
307
299
  });
@@ -324,7 +316,5 @@
324
316
  exports.persistQueryClientSubscribe = persistQueryClientSubscribe;
325
317
  exports.removeOldestQuery = removeOldestQuery;
326
318
 
327
- Object.defineProperty(exports, '__esModule', { value: true });
328
-
329
319
  }));
330
320
  //# sourceMappingURL=index.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../../query-core/build/lib/hydration.mjs","../../../query-persist-client-core/build/lib/persist.mjs","../../../query-persist-client-core/build/lib/retryStrategies.mjs","../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["// TYPES\n// FUNCTIONS\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state\n };\n} // Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\n\n\nfunction dehydrateQuery(query) {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash\n };\n}\n\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n const mutations = [];\n const queries = [];\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n client.getMutationCache().getAll().forEach(mutation => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation));\n }\n });\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n client.getQueryCache().getAll().forEach(query => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query));\n }\n });\n }\n\n return {\n mutations,\n queries\n };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return;\n }\n\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const queries = dehydratedState.queries || [];\n mutations.forEach(dehydratedMutation => {\n var _options$defaultOptio;\n\n mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),\n mutationKey: dehydratedMutation.mutationKey\n }, dehydratedMutation.state);\n });\n queries.forEach(dehydratedQuery => {\n var _options$defaultOptio2;\n\n const query = queryCache.get(dehydratedQuery.queryHash); // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n\n const dehydratedQueryState = { ...dehydratedQuery.state,\n fetchStatus: 'idle'\n }; // Do not hydrate if an existing query exists with newer data\n\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState);\n }\n\n return;\n } // Restore query\n\n\n queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash\n }, dehydratedQueryState);\n });\n}\n\nexport { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate };\n//# sourceMappingURL=hydration.mjs.map\n","import { hydrate, dehydrate } from '@tanstack/query-core';\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheableEventTypes = ['added', 'removed', 'updated'];\n\nfunction isCacheableEventType(eventType) {\n return cacheableEventTypes.includes(eventType);\n}\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\n\n\nasync function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions\n}) {\n try {\n const persistedClient = await persister.restoreClient();\n\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge;\n const busted = persistedClient.buster !== buster;\n\n if (expired || busted) {\n persister.removeClient();\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions);\n }\n } else {\n persister.removeClient();\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n queryClient.getLogger().error(err);\n queryClient.getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');\n }\n\n persister.removeClient();\n }\n}\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\n\nasync function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions\n}) {\n const persistClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions)\n };\n await persister.persistClient(persistClient);\n}\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\n\nfunction persistQueryClientSubscribe(props) {\n const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n const unusbscribeMutationCache = props.queryClient.getMutationCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n return () => {\n unsubscribeQueryCache();\n unusbscribeMutationCache();\n };\n}\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\n\nfunction persistQueryClient(props) {\n let hasUnsubscribed = false;\n let persistQueryClientUnsubscribe;\n\n const unsubscribe = () => {\n hasUnsubscribed = true;\n persistQueryClientUnsubscribe == null ? void 0 : persistQueryClientUnsubscribe();\n }; // Attempt restore\n\n\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props);\n }\n });\n return [unsubscribe, restorePromise];\n}\n\nexport { persistQueryClient, persistQueryClientRestore, persistQueryClientSave, persistQueryClientSubscribe };\n//# sourceMappingURL=persist.mjs.map\n","const removeOldestQuery = ({\n persistedClient\n}) => {\n const mutations = [...persistedClient.clientState.mutations];\n const queries = [...persistedClient.clientState.queries];\n const client = { ...persistedClient,\n clientState: {\n mutations,\n queries\n }\n }; // sort queries by dataUpdatedAt (oldest first)\n\n const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt); // clean oldest query\n\n if (sortedQueries.length > 0) {\n const oldestData = sortedQueries.shift();\n client.clientState.queries = queries.filter(q => q !== oldestData);\n return client;\n }\n\n return undefined;\n};\n\nexport { removeOldestQuery };\n//# sourceMappingURL=retryStrategies.mjs.map\n","'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then","QueryClientProvider","IsRestoringProvider"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../../query-core/build/lib/hydration.mjs","../../../query-persist-client-core/build/lib/persist.mjs","../../../query-persist-client-core/build/lib/retryStrategies.mjs","../../src/PersistQueryClientProvider.tsx"],"sourcesContent":["// TYPES\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state\n };\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(query) {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash\n };\n}\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n const mutations = [];\n const queries = [];\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n client.getMutationCache().getAll().forEach(mutation => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation));\n }\n });\n }\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n client.getQueryCache().getAll().forEach(query => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query));\n }\n });\n }\n return {\n mutations,\n queries\n };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return;\n }\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = dehydratedState.mutations || [];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = dehydratedState.queries || [];\n mutations.forEach(dehydratedMutation => {\n mutationCache.build(client, {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey\n }, dehydratedMutation.state);\n });\n queries.forEach(dehydratedQuery => {\n const query = queryCache.get(dehydratedQuery.queryHash);\n\n // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle'\n };\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState);\n }\n return;\n }\n\n // Restore query\n queryCache.build(client, {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash\n }, dehydratedQueryState);\n });\n}\n\nexport { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate };\n//# sourceMappingURL=hydration.mjs.map\n","import { hydrate, dehydrate } from '@tanstack/query-core';\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheableEventTypes = ['added', 'removed', 'updated'];\nfunction isCacheableEventType(eventType) {\n return cacheableEventTypes.includes(eventType);\n}\n\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\nasync function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions\n}) {\n try {\n const persistedClient = await persister.restoreClient();\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge;\n const busted = persistedClient.buster !== buster;\n if (expired || busted) {\n persister.removeClient();\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions);\n }\n } else {\n persister.removeClient();\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(err);\n console.warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');\n }\n persister.removeClient();\n }\n}\n\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\nasync function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions\n}) {\n const persistClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions)\n };\n await persister.persistClient(persistClient);\n}\n\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\nfunction persistQueryClientSubscribe(props) {\n const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n const unusbscribeMutationCache = props.queryClient.getMutationCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n return () => {\n unsubscribeQueryCache();\n unusbscribeMutationCache();\n };\n}\n\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\nfunction persistQueryClient(props) {\n let hasUnsubscribed = false;\n let persistQueryClientUnsubscribe;\n const unsubscribe = () => {\n hasUnsubscribed = true;\n persistQueryClientUnsubscribe?.();\n };\n\n // Attempt restore\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props);\n }\n });\n return [unsubscribe, restorePromise];\n}\n\nexport { persistQueryClient, persistQueryClientRestore, persistQueryClientSave, persistQueryClientSubscribe };\n//# sourceMappingURL=persist.mjs.map\n","const removeOldestQuery = ({\n persistedClient\n}) => {\n const mutations = [...persistedClient.clientState.mutations];\n const queries = [...persistedClient.clientState.queries];\n const client = {\n ...persistedClient,\n clientState: {\n mutations,\n queries\n }\n };\n\n // sort queries by dataUpdatedAt (oldest first)\n const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt);\n\n // clean oldest query\n if (sortedQueries.length > 0) {\n const oldestData = sortedQueries.shift();\n client.clientState.queries = queries.filter(q => q !== oldestData);\n return client;\n }\n return undefined;\n};\n\nexport { removeOldestQuery };\n//# sourceMappingURL=retryStrategies.mjs.map\n","'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["PersistQueryClientProvider","client","children","persistOptions","onSuccess","props","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","persistQueryClient","queryClient","then","QueryClientProvider","IsRestoringProvider"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@tanstack/react-query")):"function"==typeof define&&define.amd?define(["exports","react","@tanstack/react-query"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactQueryPersistClient={},e.React,e.ReactQuery)}(this,(function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=n(t);function u(e){return e.state.isPaused}function i(e){return"success"===e.state.status}function a(e,t={}){const r=[],n=[];if(!1!==t.dehydrateMutations){const n=t.shouldDehydrateMutation||u;e.getMutationCache().getAll().forEach((e=>{n(e)&&r.push(function(e){return{mutationKey:e.options.mutationKey,state:e.state}}(e))}))}if(!1!==t.dehydrateQueries){const r=t.shouldDehydrateQuery||i;e.getQueryCache().getAll().forEach((e=>{r(e)&&n.push(function(e){return{state:e.state,queryKey:e.queryKey,queryHash:e.queryHash}}(e))}))}return{mutations:r,queries:n}}const o=["added","removed","updated"];function c(e){return o.includes(e)}async function l({queryClient:e,persister:t,maxAge:r=864e5,buster:n="",hydrateOptions:s}){try{const u=await t.restoreClient();if(u)if(u.timestamp){const i=Date.now()-u.timestamp>r,a=u.buster!==n;i||a?t.removeClient():function(e,t,r){if("object"!=typeof t||null===t)return;const n=e.getMutationCache(),s=e.getQueryCache(),u=t.mutations||[],i=t.queries||[];u.forEach((t=>{var s;n.build(e,{...null==r||null==(s=r.defaultOptions)?void 0:s.mutations,mutationKey:t.mutationKey},t.state)})),i.forEach((t=>{var n;const u=s.get(t.queryHash),i={...t.state,fetchStatus:"idle"};u?u.state.dataUpdatedAt<i.dataUpdatedAt&&u.setState(i):s.build(e,{...null==r||null==(n=r.defaultOptions)?void 0:n.queries,queryKey:t.queryKey,queryHash:t.queryHash},i)}))}(e,u.clientState,s)}else t.removeClient()}catch(e){t.removeClient()}}async function d({queryClient:e,persister:t,buster:r="",dehydrateOptions:n}){const s={buster:r,timestamp:Date.now(),clientState:a(e,n)};await t.persistClient(s)}function f(e){const t=e.queryClient.getQueryCache().subscribe((t=>{c(t.type)&&d(e)})),r=e.queryClient.getMutationCache().subscribe((t=>{c(t.type)&&d(e)}));return()=>{t(),r()}}function y(e){let t,r=!1;return[()=>{r=!0,null==t||t()},l(e).then((()=>{r||(t=f(e))}))]}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},p.apply(this,arguments)}e.PersistQueryClientProvider=({client:e,children:t,persistOptions:n,onSuccess:u,...i})=>{const[a,o]=s.useState(!0),c=s.useRef({persistOptions:n,onSuccess:u});return s.useEffect((()=>{c.current={persistOptions:n,onSuccess:u}})),s.useEffect((()=>{let t=!1;o(!0);const[r,n]=y({...c.current.persistOptions,queryClient:e});return n.then((()=>{t||(null==c.current.onSuccess||c.current.onSuccess(),o(!1))})),()=>{t=!0,r()}}),[e]),s.createElement(r.QueryClientProvider,p({client:e},i),s.createElement(r.IsRestoringProvider,{value:a},t))},e.persistQueryClient=y,e.persistQueryClientRestore=l,e.persistQueryClientSave=d,e.persistQueryClientSubscribe=f,e.removeOldestQuery=({persistedClient:e})=>{const t=[...e.clientState.mutations],r=[...e.clientState.queries],n={...e,clientState:{mutations:t,queries:r}},s=[...r].sort(((e,t)=>e.state.dataUpdatedAt-t.state.dataUpdatedAt));if(s.length>0){const e=s.shift();return n.clientState.queries=r.filter((t=>t!==e)),n}},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@tanstack/react-query")):"function"==typeof define&&define.amd?define(["exports","react","@tanstack/react-query"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactQueryPersistClient={},e.React,e.ReactQuery)}(this,(function(e,t,r){"use strict";function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=n(t);function i(e){return e.state.isPaused}function u(e){return"success"===e.state.status}function a(e,t={}){const r=[],n=[];if(!1!==t.dehydrateMutations){const n=t.shouldDehydrateMutation||i;e.getMutationCache().getAll().forEach((e=>{n(e)&&r.push(function(e){return{mutationKey:e.options.mutationKey,state:e.state}}(e))}))}if(!1!==t.dehydrateQueries){const r=t.shouldDehydrateQuery||u;e.getQueryCache().getAll().forEach((e=>{r(e)&&n.push(function(e){return{state:e.state,queryKey:e.queryKey,queryHash:e.queryHash}}(e))}))}return{mutations:r,queries:n}}const o=["added","removed","updated"];function c(e){return o.includes(e)}async function l({queryClient:e,persister:t,maxAge:r=864e5,buster:n="",hydrateOptions:s}){try{const i=await t.restoreClient();if(i)if(i.timestamp){const u=Date.now()-i.timestamp>r,a=i.buster!==n;u||a?t.removeClient():function(e,t,r){if("object"!=typeof t||null===t)return;const n=e.getMutationCache(),s=e.getQueryCache(),i=t.mutations||[],u=t.queries||[];i.forEach((t=>{n.build(e,{...r?.defaultOptions?.mutations,mutationKey:t.mutationKey},t.state)})),u.forEach((t=>{const n=s.get(t.queryHash),i={...t.state,fetchStatus:"idle"};n?n.state.dataUpdatedAt<i.dataUpdatedAt&&n.setState(i):s.build(e,{...r?.defaultOptions?.queries,queryKey:t.queryKey,queryHash:t.queryHash},i)}))}(e,i.clientState,s)}else t.removeClient()}catch(e){t.removeClient()}}async function y({queryClient:e,persister:t,buster:r="",dehydrateOptions:n}){const s={buster:r,timestamp:Date.now(),clientState:a(e,n)};await t.persistClient(s)}function f(e){const t=e.queryClient.getQueryCache().subscribe((t=>{c(t.type)&&y(e)})),r=e.queryClient.getMutationCache().subscribe((t=>{c(t.type)&&y(e)}));return()=>{t(),r()}}function d(e){let t,r=!1;return[()=>{r=!0,t?.()},l(e).then((()=>{r||(t=f(e))}))]}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},p.apply(this,arguments)}e.PersistQueryClientProvider=({client:e,children:t,persistOptions:n,onSuccess:i,...u})=>{const[a,o]=s.useState(!0),c=s.useRef({persistOptions:n,onSuccess:i});return s.useEffect((()=>{c.current={persistOptions:n,onSuccess:i}})),s.useEffect((()=>{let t=!1;o(!0);const[r,n]=d({...c.current.persistOptions,queryClient:e});return n.then((()=>{t||(c.current.onSuccess?.(),o(!1))})),()=>{t=!0,r()}}),[e]),s.createElement(r.QueryClientProvider,p({client:e},u),s.createElement(r.IsRestoringProvider,{value:a},t))},e.persistQueryClient=d,e.persistQueryClientRestore=l,e.persistQueryClientSave=y,e.persistQueryClientSubscribe=f,e.removeOldestQuery=({persistedClient:e})=>{const t=[...e.clientState.mutations],r=[...e.clientState.queries],n={...e,clientState:{mutations:t,queries:r}},s=[...r].sort(((e,t)=>e.state.dataUpdatedAt-t.state.dataUpdatedAt));if(s.length>0){const e=s.shift();return n.clientState.queries=r.filter((t=>t!==e)),n}}}));
2
2
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../query-core/build/lib/hydration.mjs","../../../query-persist-client-core/build/lib/persist.mjs","../../src/PersistQueryClientProvider.tsx","../../../query-persist-client-core/build/lib/retryStrategies.mjs"],"sourcesContent":["// TYPES\n// FUNCTIONS\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state\n };\n} // Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\n\n\nfunction dehydrateQuery(query) {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash\n };\n}\n\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n const mutations = [];\n const queries = [];\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n client.getMutationCache().getAll().forEach(mutation => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation));\n }\n });\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n client.getQueryCache().getAll().forEach(query => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query));\n }\n });\n }\n\n return {\n mutations,\n queries\n };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return;\n }\n\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const queries = dehydratedState.queries || [];\n mutations.forEach(dehydratedMutation => {\n var _options$defaultOptio;\n\n mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),\n mutationKey: dehydratedMutation.mutationKey\n }, dehydratedMutation.state);\n });\n queries.forEach(dehydratedQuery => {\n var _options$defaultOptio2;\n\n const query = queryCache.get(dehydratedQuery.queryHash); // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n\n const dehydratedQueryState = { ...dehydratedQuery.state,\n fetchStatus: 'idle'\n }; // Do not hydrate if an existing query exists with newer data\n\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState);\n }\n\n return;\n } // Restore query\n\n\n queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash\n }, dehydratedQueryState);\n });\n}\n\nexport { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate };\n//# sourceMappingURL=hydration.mjs.map\n","import { hydrate, dehydrate } from '@tanstack/query-core';\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheableEventTypes = ['added', 'removed', 'updated'];\n\nfunction isCacheableEventType(eventType) {\n return cacheableEventTypes.includes(eventType);\n}\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\n\n\nasync function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions\n}) {\n try {\n const persistedClient = await persister.restoreClient();\n\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge;\n const busted = persistedClient.buster !== buster;\n\n if (expired || busted) {\n persister.removeClient();\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions);\n }\n } else {\n persister.removeClient();\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n queryClient.getLogger().error(err);\n queryClient.getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');\n }\n\n persister.removeClient();\n }\n}\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\n\nasync function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions\n}) {\n const persistClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions)\n };\n await persister.persistClient(persistClient);\n}\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\n\nfunction persistQueryClientSubscribe(props) {\n const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n const unusbscribeMutationCache = props.queryClient.getMutationCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n return () => {\n unsubscribeQueryCache();\n unusbscribeMutationCache();\n };\n}\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\n\nfunction persistQueryClient(props) {\n let hasUnsubscribed = false;\n let persistQueryClientUnsubscribe;\n\n const unsubscribe = () => {\n hasUnsubscribed = true;\n persistQueryClientUnsubscribe == null ? void 0 : persistQueryClientUnsubscribe();\n }; // Attempt restore\n\n\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props);\n }\n });\n return [unsubscribe, restorePromise];\n}\n\nexport { persistQueryClient, persistQueryClientRestore, persistQueryClientSave, persistQueryClientSubscribe };\n//# sourceMappingURL=persist.mjs.map\n","'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n","const removeOldestQuery = ({\n persistedClient\n}) => {\n const mutations = [...persistedClient.clientState.mutations];\n const queries = [...persistedClient.clientState.queries];\n const client = { ...persistedClient,\n clientState: {\n mutations,\n queries\n }\n }; // sort queries by dataUpdatedAt (oldest first)\n\n const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt); // clean oldest query\n\n if (sortedQueries.length > 0) {\n const oldestData = sortedQueries.shift();\n client.clientState.queries = queries.filter(q => q !== oldestData);\n return client;\n }\n\n return undefined;\n};\n\nexport { removeOldestQuery };\n//# sourceMappingURL=retryStrategies.mjs.map\n"],"names":["defaultShouldDehydrateMutation","mutation","state","isPaused","defaultShouldDehydrateQuery","query","status","dehydrate","client","options","mutations","queries","dehydrateMutations","shouldDehydrateMutation","getMutationCache","getAll","forEach","push","mutationKey","dehydrateMutation","dehydrateQueries","shouldDehydrateQuery","getQueryCache","queryKey","queryHash","dehydrateQuery","cacheableEventTypes","isCacheableEventType","eventType","includes","async","persistQueryClientRestore","queryClient","persister","maxAge","buster","hydrateOptions","persistedClient","restoreClient","timestamp","expired","Date","now","busted","removeClient","dehydratedState","mutationCache","queryCache","dehydratedMutation","_options$defaultOptio","build","defaultOptions","dehydratedQuery","_options$defaultOptio2","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState","hydrate","clientState","err","persistQueryClientSave","dehydrateOptions","persistClient","persistQueryClientSubscribe","props","unsubscribeQueryCache","subscribe","event","type","unusbscribeMutationCache","persistQueryClient","persistQueryClientUnsubscribe","hasUnsubscribed","then","children","persistOptions","onSuccess","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","QueryClientProvider","_extends","createElement","IsRestoringProvider","value","sortedQueries","sort","a","b","length","oldestData","shift","filter","q"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../query-core/build/lib/hydration.mjs","../../../query-persist-client-core/build/lib/persist.mjs","../../src/PersistQueryClientProvider.tsx","../../../query-persist-client-core/build/lib/retryStrategies.mjs"],"sourcesContent":["// TYPES\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state\n };\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(query) {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash\n };\n}\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n const mutations = [];\n const queries = [];\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n client.getMutationCache().getAll().forEach(mutation => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation));\n }\n });\n }\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n client.getQueryCache().getAll().forEach(query => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query));\n }\n });\n }\n return {\n mutations,\n queries\n };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return;\n }\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = dehydratedState.mutations || [];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = dehydratedState.queries || [];\n mutations.forEach(dehydratedMutation => {\n mutationCache.build(client, {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey\n }, dehydratedMutation.state);\n });\n queries.forEach(dehydratedQuery => {\n const query = queryCache.get(dehydratedQuery.queryHash);\n\n // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle'\n };\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState);\n }\n return;\n }\n\n // Restore query\n queryCache.build(client, {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash\n }, dehydratedQueryState);\n });\n}\n\nexport { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate };\n//# sourceMappingURL=hydration.mjs.map\n","import { hydrate, dehydrate } from '@tanstack/query-core';\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheableEventTypes = ['added', 'removed', 'updated'];\nfunction isCacheableEventType(eventType) {\n return cacheableEventTypes.includes(eventType);\n}\n\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\nasync function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions\n}) {\n try {\n const persistedClient = await persister.restoreClient();\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge;\n const busted = persistedClient.buster !== buster;\n if (expired || busted) {\n persister.removeClient();\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions);\n }\n } else {\n persister.removeClient();\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(err);\n console.warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');\n }\n persister.removeClient();\n }\n}\n\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\nasync function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions\n}) {\n const persistClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions)\n };\n await persister.persistClient(persistClient);\n}\n\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\nfunction persistQueryClientSubscribe(props) {\n const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n const unusbscribeMutationCache = props.queryClient.getMutationCache().subscribe(event => {\n if (isCacheableEventType(event.type)) {\n persistQueryClientSave(props);\n }\n });\n return () => {\n unsubscribeQueryCache();\n unusbscribeMutationCache();\n };\n}\n\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\nfunction persistQueryClient(props) {\n let hasUnsubscribed = false;\n let persistQueryClientUnsubscribe;\n const unsubscribe = () => {\n hasUnsubscribed = true;\n persistQueryClientUnsubscribe?.();\n };\n\n // Attempt restore\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props);\n }\n });\n return [unsubscribe, restorePromise];\n}\n\nexport { persistQueryClient, persistQueryClientRestore, persistQueryClientSave, persistQueryClientSubscribe };\n//# sourceMappingURL=persist.mjs.map\n","'use client'\nimport * as React from 'react'\n\nimport type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport type { QueryClientProviderProps } from '@tanstack/react-query'\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query'\n\nexport type PersistQueryClientProviderProps = QueryClientProviderProps & {\n persistOptions: Omit<PersistQueryClientOptions, 'queryClient'>\n onSuccess?: () => void\n}\n\nexport const PersistQueryClientProvider = ({\n client,\n children,\n persistOptions,\n onSuccess,\n ...props\n}: PersistQueryClientProviderProps): JSX.Element => {\n const [isRestoring, setIsRestoring] = React.useState(true)\n const refs = React.useRef({ persistOptions, onSuccess })\n\n React.useEffect(() => {\n refs.current = { persistOptions, onSuccess }\n })\n\n React.useEffect(() => {\n let isStale = false\n setIsRestoring(true)\n const [unsubscribe, promise] = persistQueryClient({\n ...refs.current.persistOptions,\n queryClient: client,\n })\n\n promise.then(() => {\n if (!isStale) {\n refs.current.onSuccess?.()\n setIsRestoring(false)\n }\n })\n\n return () => {\n isStale = true\n unsubscribe()\n }\n }, [client])\n\n return (\n <QueryClientProvider client={client} {...props}>\n <IsRestoringProvider value={isRestoring}>{children}</IsRestoringProvider>\n </QueryClientProvider>\n )\n}\n","const removeOldestQuery = ({\n persistedClient\n}) => {\n const mutations = [...persistedClient.clientState.mutations];\n const queries = [...persistedClient.clientState.queries];\n const client = {\n ...persistedClient,\n clientState: {\n mutations,\n queries\n }\n };\n\n // sort queries by dataUpdatedAt (oldest first)\n const sortedQueries = [...queries].sort((a, b) => a.state.dataUpdatedAt - b.state.dataUpdatedAt);\n\n // clean oldest query\n if (sortedQueries.length > 0) {\n const oldestData = sortedQueries.shift();\n client.clientState.queries = queries.filter(q => q !== oldestData);\n return client;\n }\n return undefined;\n};\n\nexport { removeOldestQuery };\n//# sourceMappingURL=retryStrategies.mjs.map\n"],"names":["defaultShouldDehydrateMutation","mutation","state","isPaused","defaultShouldDehydrateQuery","query","status","dehydrate","client","options","mutations","queries","dehydrateMutations","shouldDehydrateMutation","getMutationCache","getAll","forEach","push","mutationKey","dehydrateMutation","dehydrateQueries","shouldDehydrateQuery","getQueryCache","queryKey","queryHash","dehydrateQuery","cacheableEventTypes","isCacheableEventType","eventType","includes","async","persistQueryClientRestore","queryClient","persister","maxAge","buster","hydrateOptions","persistedClient","restoreClient","timestamp","expired","Date","now","busted","removeClient","dehydratedState","mutationCache","queryCache","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState","hydrate","clientState","err","persistQueryClientSave","dehydrateOptions","persistClient","persistQueryClientSubscribe","props","unsubscribeQueryCache","subscribe","event","type","unusbscribeMutationCache","persistQueryClient","persistQueryClientUnsubscribe","hasUnsubscribed","then","children","persistOptions","onSuccess","isRestoring","setIsRestoring","React","useState","refs","useRef","useEffect","current","isStale","unsubscribe","promise","QueryClientProvider","_extends","createElement","IsRestoringProvider","value","sortedQueries","sort","a","b","length","oldestData","shift","filter","q"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-query-persist-client",
3
- "version": "4.24.10",
3
+ "version": "5.0.0-alpha.1",
4
4
  "description": "React bindings to work with persisters in TanStack/react-query",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -31,16 +31,14 @@
31
31
  "@types/react": "^18.0.14",
32
32
  "@types/react-dom": "^18.0.5",
33
33
  "react": "^18.2.0",
34
- "react-17": "npm:react@^17.0.2",
35
34
  "react-dom": "^18.2.0",
36
- "react-dom-17": "npm:react-dom@^17.0.2",
37
- "@tanstack/react-query": "4.24.10"
35
+ "@tanstack/react-query": "5.0.0-alpha.1"
38
36
  },
39
37
  "dependencies": {
40
- "@tanstack/query-persist-client-core": "4.24.10"
38
+ "@tanstack/query-persist-client-core": "5.0.0-alpha.1"
41
39
  },
42
40
  "peerDependencies": {
43
- "@tanstack/react-query": "4.24.10"
41
+ "@tanstack/react-query": "5.0.0-alpha.1"
44
42
  },
45
43
  "scripts": {
46
44
  "clean": "rimraf ./build",
@@ -12,7 +12,7 @@ import type {
12
12
  } from '@tanstack/query-persist-client-core'
13
13
  import { persistQueryClientSave } from '@tanstack/query-persist-client-core'
14
14
 
15
- import { createQueryClient, mockLogger, queryKey, sleep } from './utils'
15
+ import { createQueryClient, queryKey, sleep } from './utils'
16
16
  import { PersistQueryClientProvider } from '../PersistQueryClientProvider'
17
17
 
18
18
  const createMockPersister = (): Persister => {
@@ -57,7 +57,10 @@ describe('PersistQueryClientProvider', () => {
57
57
  const states: UseQueryResult<string>[] = []
58
58
 
59
59
  const queryClient = createQueryClient()
60
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
60
+ await queryClient.prefetchQuery({
61
+ queryKey: key,
62
+ queryFn: () => Promise.resolve('hydrated'),
63
+ })
61
64
 
62
65
  const persister = createMockPersister()
63
66
 
@@ -66,9 +69,12 @@ describe('PersistQueryClientProvider', () => {
66
69
  queryClient.clear()
67
70
 
68
71
  function Page() {
69
- const state = useQuery(key, async () => {
70
- await sleep(10)
71
- return 'fetched'
72
+ const state = useQuery({
73
+ queryKey: key,
74
+ queryFn: async () => {
75
+ await sleep(10)
76
+ return 'fetched'
77
+ },
72
78
  })
73
79
 
74
80
  states.push(state)
@@ -97,7 +103,7 @@ describe('PersistQueryClientProvider', () => {
97
103
  expect(states).toHaveLength(4)
98
104
 
99
105
  expect(states[0]).toMatchObject({
100
- status: 'loading',
106
+ status: 'pending',
101
107
  fetchStatus: 'idle',
102
108
  data: undefined,
103
109
  })
@@ -126,7 +132,10 @@ describe('PersistQueryClientProvider', () => {
126
132
  const states: UseQueryResult[] = []
127
133
 
128
134
  const queryClient = createQueryClient()
129
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
135
+ await queryClient.prefetchQuery({
136
+ queryKey: key,
137
+ queryFn: () => Promise.resolve('hydrated'),
138
+ })
130
139
 
131
140
  const persister = createMockPersister()
132
141
 
@@ -173,7 +182,7 @@ describe('PersistQueryClientProvider', () => {
173
182
  expect(states).toHaveLength(4)
174
183
 
175
184
  expect(states[0]).toMatchObject({
176
- status: 'loading',
185
+ status: 'pending',
177
186
  fetchStatus: 'idle',
178
187
  data: undefined,
179
188
  })
@@ -202,7 +211,10 @@ describe('PersistQueryClientProvider', () => {
202
211
  const states: DefinedUseQueryResult<string>[] = []
203
212
 
204
213
  const queryClient = createQueryClient()
205
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
214
+ await queryClient.prefetchQuery({
215
+ queryKey: key,
216
+ queryFn: () => Promise.resolve('hydrated'),
217
+ })
206
218
 
207
219
  const persister = createMockPersister()
208
220
 
@@ -211,19 +223,18 @@ describe('PersistQueryClientProvider', () => {
211
223
  queryClient.clear()
212
224
 
213
225
  function Page() {
214
- const state = useQuery(
215
- key,
216
- async () => {
226
+ const state = useQuery({
227
+ queryKey: key,
228
+ queryFn: async () => {
217
229
  await sleep(10)
218
230
  return 'fetched'
219
231
  },
220
- {
221
- initialData: 'initial',
222
- // make sure that initial data is older than the hydration data
223
- // otherwise initialData would be newer and takes precedence
224
- initialDataUpdatedAt: 1,
225
- },
226
- )
232
+
233
+ initialData: 'initial',
234
+ // make sure that initial data is older than the hydration data
235
+ // otherwise initialData would be newer and takes precedence
236
+ initialDataUpdatedAt: 1,
237
+ })
227
238
 
228
239
  states.push(state)
229
240
 
@@ -280,7 +291,10 @@ describe('PersistQueryClientProvider', () => {
280
291
  const states: UseQueryResult<string>[] = []
281
292
 
282
293
  const queryClient = createQueryClient()
283
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
294
+ await queryClient.prefetchQuery({
295
+ queryKey: key,
296
+ queryFn: () => Promise.resolve('hydrated'),
297
+ })
284
298
 
285
299
  const persister = createMockPersister()
286
300
 
@@ -289,16 +303,15 @@ describe('PersistQueryClientProvider', () => {
289
303
  queryClient.clear()
290
304
 
291
305
  function Page() {
292
- const state = useQuery(
293
- key,
294
- async () => {
306
+ const state = useQuery({
307
+ queryKey: key,
308
+ queryFn: async () => {
295
309
  await sleep(10)
296
310
  return 'fetched'
297
311
  },
298
- {
299
- staleTime: Infinity,
300
- },
301
- )
312
+
313
+ staleTime: Infinity,
314
+ })
302
315
 
303
316
  states.push(state)
304
317
 
@@ -325,7 +338,7 @@ describe('PersistQueryClientProvider', () => {
325
338
  expect(states).toHaveLength(2)
326
339
 
327
340
  expect(states[0]).toMatchObject({
328
- status: 'loading',
341
+ status: 'pending',
329
342
  fetchStatus: 'idle',
330
343
  data: undefined,
331
344
  })
@@ -341,7 +354,10 @@ describe('PersistQueryClientProvider', () => {
341
354
  const key = queryKey()
342
355
 
343
356
  const queryClient = createQueryClient()
344
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
357
+ await queryClient.prefetchQuery({
358
+ queryKey: key,
359
+ queryFn: () => Promise.resolve('hydrated'),
360
+ })
345
361
 
346
362
  const persister = createMockPersister()
347
363
 
@@ -350,9 +366,12 @@ describe('PersistQueryClientProvider', () => {
350
366
  queryClient.clear()
351
367
 
352
368
  function Page() {
353
- const state = useQuery(key, async () => {
354
- await sleep(10)
355
- return 'fetched'
369
+ const state = useQuery({
370
+ queryKey: key,
371
+ queryFn: async () => {
372
+ await sleep(10)
373
+ return 'fetched'
374
+ },
356
375
  })
357
376
 
358
377
  return (
@@ -383,8 +402,11 @@ describe('PersistQueryClientProvider', () => {
383
402
 
384
403
  test('should remove cache after non-successful restoring', async () => {
385
404
  const key = queryKey()
386
- jest.spyOn(console, 'warn').mockImplementation(() => undefined)
387
- jest.spyOn(console, 'error').mockImplementation(() => undefined)
405
+ const consoleMock = jest.spyOn(console, 'error')
406
+ const consoleWarn = jest
407
+ .spyOn(console, 'warn')
408
+ .mockImplementation(() => undefined)
409
+ consoleMock.mockImplementation(() => undefined)
388
410
 
389
411
  const queryClient = createQueryClient()
390
412
  const removeClient = jest.fn()
@@ -392,9 +414,12 @@ describe('PersistQueryClientProvider', () => {
392
414
  const [error, persister] = createMockErrorPersister(removeClient)
393
415
 
394
416
  function Page() {
395
- const state = useQuery(key, async () => {
396
- await sleep(10)
397
- return 'fetched'
417
+ const state = useQuery({
418
+ queryKey: key,
419
+ queryFn: async () => {
420
+ await sleep(10)
421
+ return 'fetched'
422
+ },
398
423
  })
399
424
 
400
425
  return (
@@ -416,8 +441,10 @@ describe('PersistQueryClientProvider', () => {
416
441
 
417
442
  await waitFor(() => rendered.getByText('fetched'))
418
443
  expect(removeClient).toHaveBeenCalledTimes(1)
419
- expect(mockLogger.error).toHaveBeenCalledTimes(2)
420
- expect(mockLogger.error).toHaveBeenNthCalledWith(2, error)
444
+ expect(consoleMock).toHaveBeenCalledTimes(1)
445
+ expect(consoleMock).toHaveBeenNthCalledWith(1, error)
446
+ consoleMock.mockRestore()
447
+ consoleWarn.mockRestore()
421
448
  })
422
449
 
423
450
  test('should be able to persist into multiple clients', async () => {
@@ -425,7 +452,10 @@ describe('PersistQueryClientProvider', () => {
425
452
  const states: UseQueryResult[] = []
426
453
 
427
454
  const queryClient = createQueryClient()
428
- await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated'))
455
+ await queryClient.prefetchQuery({
456
+ queryKey: key,
457
+ queryFn: () => Promise.resolve('hydrated'),
458
+ })
429
459
 
430
460
  const persister = createMockPersister()
431
461
 
@@ -480,7 +510,7 @@ describe('PersistQueryClientProvider', () => {
480
510
  }
481
511
 
482
512
  function Page() {
483
- const state = useQuery(key)
513
+ const state = useQuery({ queryKey: key })
484
514
 
485
515
  states.push(state)
486
516
 
@@ -504,13 +534,13 @@ describe('PersistQueryClientProvider', () => {
504
534
  expect(states).toHaveLength(5)
505
535
 
506
536
  expect(states[0]).toMatchObject({
507
- status: 'loading',
537
+ status: 'pending',
508
538
  fetchStatus: 'idle',
509
539
  data: undefined,
510
540
  })
511
541
 
512
542
  expect(states[1]).toMatchObject({
513
- status: 'loading',
543
+ status: 'pending',
514
544
  fetchStatus: 'idle',
515
545
  data: undefined,
516
546
  })
@@ -4,14 +4,7 @@ import type { QueryClientConfig } from '@tanstack/query-core'
4
4
  import { QueryClient } from '@tanstack/query-core'
5
5
 
6
6
  export function createQueryClient(config?: QueryClientConfig): QueryClient {
7
- jest.spyOn(console, 'error').mockImplementation(() => undefined)
8
- return new QueryClient({ logger: mockLogger, ...config })
9
- }
10
-
11
- export const mockLogger = {
12
- log: jest.fn(),
13
- warn: jest.fn(),
14
- error: jest.fn(),
7
+ return new QueryClient(config)
15
8
  }
16
9
 
17
10
  let queryKeyCount = 0