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

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.
@@ -7,7 +7,10 @@
7
7
  function dehydrateMutation(mutation) {
8
8
  return {
9
9
  mutationKey: mutation.options.mutationKey,
10
- state: mutation.state
10
+ state: mutation.state,
11
+ ...(mutation.meta && {
12
+ meta: mutation.meta
13
+ })
11
14
  };
12
15
  }
13
16
 
@@ -19,7 +22,10 @@ function dehydrateQuery(query) {
19
22
  return {
20
23
  state: query.state,
21
24
  queryKey: query.queryKey,
22
- queryHash: query.queryHash
25
+ queryHash: query.queryHash,
26
+ ...(query.meta && {
27
+ meta: query.meta
28
+ })
23
29
  };
24
30
  }
25
31
  function defaultShouldDehydrateMutation(mutation) {
@@ -52,7 +58,8 @@ function hydrate(client, dehydratedState, options) {
52
58
  mutations.forEach(dehydratedMutation => {
53
59
  mutationCache.build(client, {
54
60
  ...options?.defaultOptions?.mutations,
55
- mutationKey: dehydratedMutation.mutationKey
61
+ mutationKey: dehydratedMutation.mutationKey,
62
+ meta: dehydratedMutation.meta
56
63
  }, dehydratedMutation.state);
57
64
  });
58
65
  queries.forEach(dehydratedQuery => {
@@ -77,7 +84,8 @@ function hydrate(client, dehydratedState, options) {
77
84
  queryCache.build(client, {
78
85
  ...options?.defaultOptions?.queries,
79
86
  queryKey: dehydratedQuery.queryKey,
80
- queryHash: dehydratedQuery.queryHash
87
+ queryHash: dehydratedQuery.queryHash,
88
+ meta: dehydratedQuery.meta
81
89
  }, dehydratedQueryState);
82
90
  });
83
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.cjs","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
1
+ {"version":3,"file":"hydration.cjs","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationMeta,\n MutationOptions,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.meta && { meta: mutation.meta }),\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n meta: dehydratedMutation.meta,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n meta: dehydratedQuery.meta,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","meta","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { QueryClient } from './queryClient';
2
2
  import type { Query, QueryState } from './query';
3
- import type { MutationKey, MutationOptions, QueryKey, QueryOptions } from './types';
3
+ import type { MutationKey, MutationMeta, MutationOptions, QueryKey, QueryMeta, QueryOptions } from './types';
4
4
  import type { Mutation, MutationState } from './mutation';
5
5
  export interface DehydrateOptions {
6
6
  shouldDehydrateMutation?: (mutation: Mutation) => boolean;
@@ -15,11 +15,13 @@ export interface HydrateOptions {
15
15
  interface DehydratedMutation {
16
16
  mutationKey?: MutationKey;
17
17
  state: MutationState;
18
+ meta?: MutationMeta;
18
19
  }
19
20
  interface DehydratedQuery {
20
21
  queryHash: string;
21
22
  queryKey: QueryKey;
22
23
  state: QueryState;
24
+ meta?: QueryMeta;
23
25
  }
24
26
  export interface DehydratedState {
25
27
  mutations: DehydratedMutation[];
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/hydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIzD,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,YAAY,CAAA;QACtB,SAAS,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACF;AAED,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAuBD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,WAEhE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,WAEvD;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAoBjB;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,OAAO,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,CAqDN"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/hydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIzD,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAA;IACzD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,YAAY,CAAA;QACtB,SAAS,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACF;AAED,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,aAAa,CAAA;IACpB,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAyBD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,WAEhE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,WAEvD;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAoBjB;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,OAAO,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,CAuDN"}
@@ -5,7 +5,10 @@
5
5
  function dehydrateMutation(mutation) {
6
6
  return {
7
7
  mutationKey: mutation.options.mutationKey,
8
- state: mutation.state
8
+ state: mutation.state,
9
+ ...(mutation.meta && {
10
+ meta: mutation.meta
11
+ })
9
12
  };
10
13
  }
11
14
 
@@ -17,7 +20,10 @@ function dehydrateQuery(query) {
17
20
  return {
18
21
  state: query.state,
19
22
  queryKey: query.queryKey,
20
- queryHash: query.queryHash
23
+ queryHash: query.queryHash,
24
+ ...(query.meta && {
25
+ meta: query.meta
26
+ })
21
27
  };
22
28
  }
23
29
  function defaultShouldDehydrateMutation(mutation) {
@@ -50,7 +56,8 @@ function hydrate(client, dehydratedState, options) {
50
56
  mutations.forEach(dehydratedMutation => {
51
57
  mutationCache.build(client, {
52
58
  ...options?.defaultOptions?.mutations,
53
- mutationKey: dehydratedMutation.mutationKey
59
+ mutationKey: dehydratedMutation.mutationKey,
60
+ meta: dehydratedMutation.meta
54
61
  }, dehydratedMutation.state);
55
62
  });
56
63
  queries.forEach(dehydratedQuery => {
@@ -75,7 +82,8 @@ function hydrate(client, dehydratedState, options) {
75
82
  queryCache.build(client, {
76
83
  ...options?.defaultOptions?.queries,
77
84
  queryKey: dehydratedQuery.queryKey,
78
- queryHash: dehydratedQuery.queryHash
85
+ queryHash: dehydratedQuery.queryHash,
86
+ meta: dehydratedQuery.meta
79
87
  }, dehydratedQueryState);
80
88
  });
81
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.js","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
1
+ {"version":3,"file":"hydration.js","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationMeta,\n MutationOptions,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.meta && { meta: mutation.meta }),\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n meta: dehydratedMutation.meta,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n meta: dehydratedQuery.meta,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","meta","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
@@ -7,7 +7,10 @@
7
7
  function dehydrateMutation(mutation) {
8
8
  return {
9
9
  mutationKey: mutation.options.mutationKey,
10
- state: mutation.state
10
+ state: mutation.state,
11
+ ...(mutation.meta && {
12
+ meta: mutation.meta
13
+ })
11
14
  };
12
15
  }
13
16
 
@@ -19,7 +22,10 @@ function dehydrateQuery(query) {
19
22
  return {
20
23
  state: query.state,
21
24
  queryKey: query.queryKey,
22
- queryHash: query.queryHash
25
+ queryHash: query.queryHash,
26
+ ...(query.meta && {
27
+ meta: query.meta
28
+ })
23
29
  };
24
30
  }
25
31
  function defaultShouldDehydrateMutation(mutation) {
@@ -54,7 +60,8 @@ function hydrate(client, dehydratedState, options) {
54
60
  var _options$defaultOptio;
55
61
  mutationCache.build(client, {
56
62
  ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
57
- mutationKey: dehydratedMutation.mutationKey
63
+ mutationKey: dehydratedMutation.mutationKey,
64
+ meta: dehydratedMutation.meta
58
65
  }, dehydratedMutation.state);
59
66
  });
60
67
  queries.forEach(dehydratedQuery => {
@@ -80,7 +87,8 @@ function hydrate(client, dehydratedState, options) {
80
87
  queryCache.build(client, {
81
88
  ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),
82
89
  queryKey: dehydratedQuery.queryKey,
83
- queryHash: dehydratedQuery.queryHash
90
+ queryHash: dehydratedQuery.queryHash,
91
+ meta: dehydratedQuery.meta
84
92
  }, dehydratedQueryState);
85
93
  });
86
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.legacy.cjs","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","_options$shouldDehydr","_options$shouldDehydr2","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","_options$defaultOptio","build","defaultOptions","dehydratedQuery","_options$defaultOptio2","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
1
+ {"version":3,"file":"hydration.legacy.cjs","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationMeta,\n MutationOptions,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.meta && { meta: mutation.meta }),\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n meta: dehydratedMutation.meta,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n meta: dehydratedQuery.meta,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","meta","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","_options$shouldDehydr","_options$shouldDehydr2","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","_options$defaultOptio","build","defaultOptions","dehydratedQuery","_options$defaultOptio2","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
@@ -5,7 +5,10 @@
5
5
  function dehydrateMutation(mutation) {
6
6
  return {
7
7
  mutationKey: mutation.options.mutationKey,
8
- state: mutation.state
8
+ state: mutation.state,
9
+ ...(mutation.meta && {
10
+ meta: mutation.meta
11
+ })
9
12
  };
10
13
  }
11
14
 
@@ -17,7 +20,10 @@ function dehydrateQuery(query) {
17
20
  return {
18
21
  state: query.state,
19
22
  queryKey: query.queryKey,
20
- queryHash: query.queryHash
23
+ queryHash: query.queryHash,
24
+ ...(query.meta && {
25
+ meta: query.meta
26
+ })
21
27
  };
22
28
  }
23
29
  function defaultShouldDehydrateMutation(mutation) {
@@ -52,7 +58,8 @@ function hydrate(client, dehydratedState, options) {
52
58
  var _options$defaultOptio;
53
59
  mutationCache.build(client, {
54
60
  ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
55
- mutationKey: dehydratedMutation.mutationKey
61
+ mutationKey: dehydratedMutation.mutationKey,
62
+ meta: dehydratedMutation.meta
56
63
  }, dehydratedMutation.state);
57
64
  });
58
65
  queries.forEach(dehydratedQuery => {
@@ -78,7 +85,8 @@ function hydrate(client, dehydratedState, options) {
78
85
  queryCache.build(client, {
79
86
  ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),
80
87
  queryKey: dehydratedQuery.queryKey,
81
- queryHash: dehydratedQuery.queryHash
88
+ queryHash: dehydratedQuery.queryHash,
89
+ meta: dehydratedQuery.meta
82
90
  }, dehydratedQueryState);
83
91
  });
84
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.legacy.js","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","_options$shouldDehydr","_options$shouldDehydr2","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","_options$defaultOptio","build","defaultOptions","dehydratedQuery","_options$defaultOptio2","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
1
+ {"version":3,"file":"hydration.legacy.js","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationMeta,\n MutationOptions,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.meta && { meta: mutation.meta }),\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: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ?? defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ?? defaultShouldDehydrateQuery\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) => (filterQuery(query) ? [dehydrateQuery(query)] : []))\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\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 as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n meta: dehydratedMutation.meta,\n },\n dehydratedMutation.state,\n )\n })\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' as const,\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(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n meta: dehydratedQuery.meta,\n },\n dehydratedQueryState,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","meta","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","_options$shouldDehydr","_options$shouldDehydr2","filterMutation","shouldDehydrateMutation","mutations","getMutationCache","getAll","flatMap","filterQuery","shouldDehydrateQuery","queries","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","forEach","dehydratedMutation","_options$defaultOptio","build","defaultOptions","dehydratedQuery","_options$defaultOptio2","get","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import { QueryClient } from '..';
3
+ import type { SpyInstance } from 'vitest';
3
4
  import type { MutationOptions, QueryClientConfig } from '..';
4
5
  export declare function createQueryClient(config?: QueryClientConfig): QueryClient;
5
- export declare function mockVisibilityState(value: DocumentVisibilityState): import("vitest/dist/index-1cfc7f58").S<[], DocumentVisibilityState>;
6
- export declare function mockNavigatorOnLine(value: boolean): import("vitest/dist/index-1cfc7f58").S<[], boolean>;
6
+ export declare function mockVisibilityState(value: DocumentVisibilityState): SpyInstance<[], DocumentVisibilityState>;
7
+ export declare function mockNavigatorOnLine(value: boolean): SpyInstance<[], boolean>;
7
8
  export declare function queryKey(): Array<string>;
8
9
  export declare function sleep(timeout: number): Promise<void>;
9
10
  export declare function setActTimeout(fn: () => void, ms?: number): NodeJS.Timeout;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,uEAEjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,uDAEjD;AAGD,wBAAgB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAGxC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,kBAMxD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,eAAc,IAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,4BACb,WAAW,6FAQzB,CAAA;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,cAW5C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AAE5D,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,uBAAuB,GAC7B,WAAW,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAE5E;AAGD,wBAAgB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAGxC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,kBAMxD;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,eAAc,IAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,4BACb,WAAW,6FAQzB,CAAA;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,cAW5C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/query-core",
3
- "version": "5.0.0-alpha.84",
3
+ "version": "5.0.0-alpha.85",
4
4
  "description": "The framework agnostic core that powers TanStack Query",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
package/src/hydration.ts CHANGED
@@ -2,8 +2,10 @@ import type { QueryClient } from './queryClient'
2
2
  import type { Query, QueryState } from './query'
3
3
  import type {
4
4
  MutationKey,
5
+ MutationMeta,
5
6
  MutationOptions,
6
7
  QueryKey,
8
+ QueryMeta,
7
9
  QueryOptions,
8
10
  } from './types'
9
11
  import type { Mutation, MutationState } from './mutation'
@@ -25,12 +27,14 @@ export interface HydrateOptions {
25
27
  interface DehydratedMutation {
26
28
  mutationKey?: MutationKey
27
29
  state: MutationState
30
+ meta?: MutationMeta
28
31
  }
29
32
 
30
33
  interface DehydratedQuery {
31
34
  queryHash: string
32
35
  queryKey: QueryKey
33
36
  state: QueryState
37
+ meta?: QueryMeta
34
38
  }
35
39
 
36
40
  export interface DehydratedState {
@@ -44,6 +48,7 @@ function dehydrateMutation(mutation: Mutation): DehydratedMutation {
44
48
  return {
45
49
  mutationKey: mutation.options.mutationKey,
46
50
  state: mutation.state,
51
+ ...(mutation.meta && { meta: mutation.meta }),
47
52
  }
48
53
  }
49
54
 
@@ -56,6 +61,7 @@ function dehydrateQuery(query: Query): DehydratedQuery {
56
61
  state: query.state,
57
62
  queryKey: query.queryKey,
58
63
  queryHash: query.queryHash,
64
+ ...(query.meta && { meta: query.meta }),
59
65
  }
60
66
  }
61
67
 
@@ -115,6 +121,7 @@ export function hydrate(
115
121
  {
116
122
  ...options?.defaultOptions?.mutations,
117
123
  mutationKey: dehydratedMutation.mutationKey,
124
+ meta: dehydratedMutation.meta,
118
125
  },
119
126
  dehydratedMutation.state,
120
127
  )
@@ -145,6 +152,7 @@ export function hydrate(
145
152
  ...options?.defaultOptions?.queries,
146
153
  queryKey: dehydratedQuery.queryKey,
147
154
  queryHash: dehydratedQuery.queryHash,
155
+ meta: dehydratedQuery.meta,
148
156
  },
149
157
  dehydratedQueryState,
150
158
  )
@@ -1,6 +1,7 @@
1
- import { vi } from 'vitest'
1
+ import { expect, vi } from 'vitest'
2
2
  import { QueryCache } from '../queryCache'
3
3
  import { dehydrate, hydrate } from '../hydration'
4
+ import { MutationCache } from '../mutationCache'
4
5
  import {
5
6
  createQueryClient,
6
7
  executeMutation,
@@ -557,4 +558,114 @@ describe('dehydration and rehydration', () => {
557
558
  hydrationCache.find({ queryKey: ['string'] })?.state.fetchStatus,
558
559
  ).toBe('idle')
559
560
  })
561
+
562
+ test('should dehydrate and hydrate meta for queries', async () => {
563
+ const queryCache = new QueryCache()
564
+ const queryClient = createQueryClient({ queryCache })
565
+ await queryClient.prefetchQuery({
566
+ queryKey: ['meta'],
567
+ queryFn: () => Promise.resolve('meta'),
568
+ meta: {
569
+ some: 'meta',
570
+ },
571
+ })
572
+ await queryClient.prefetchQuery({
573
+ queryKey: ['no-meta'],
574
+ queryFn: () => Promise.resolve('no-meta'),
575
+ })
576
+
577
+ const dehydrated = dehydrate(queryClient)
578
+
579
+ expect(
580
+ dehydrated.queries.find((q) => q.queryHash === '["meta"]')?.meta,
581
+ ).toEqual({
582
+ some: 'meta',
583
+ })
584
+
585
+ expect(
586
+ dehydrated.queries.find((q) => q.queryHash === '["no-meta"]')?.meta,
587
+ ).toEqual(undefined)
588
+
589
+ expect(
590
+ Object.keys(
591
+ dehydrated.queries.find((q) => q.queryHash === '["no-meta"]')!,
592
+ ),
593
+ ).not.toEqual(expect.arrayContaining(['meta']))
594
+
595
+ const stringified = JSON.stringify(dehydrated)
596
+
597
+ // ---
598
+
599
+ const parsed = JSON.parse(stringified)
600
+ const hydrationCache = new QueryCache()
601
+ const hydrationClient = createQueryClient({
602
+ queryCache: hydrationCache,
603
+ })
604
+ hydrate(hydrationClient, parsed)
605
+ expect(hydrationCache.find({ queryKey: ['meta'] })?.meta).toEqual({
606
+ some: 'meta',
607
+ })
608
+ expect(hydrationCache.find({ queryKey: ['no-meta'] })?.meta).toEqual(
609
+ undefined,
610
+ )
611
+ })
612
+
613
+ test('should dehydrate and hydrate meta for mutations', async () => {
614
+ const mutationCache = new MutationCache()
615
+ const queryClient = createQueryClient({ mutationCache })
616
+
617
+ await executeMutation(
618
+ queryClient,
619
+ {
620
+ mutationKey: ['meta'],
621
+ mutationFn: () => Promise.resolve('meta'),
622
+ meta: {
623
+ some: 'meta',
624
+ },
625
+ },
626
+ undefined,
627
+ )
628
+
629
+ await executeMutation(
630
+ queryClient,
631
+ {
632
+ mutationKey: ['no-meta'],
633
+ mutationFn: () => Promise.resolve('no-meta'),
634
+ },
635
+ undefined,
636
+ )
637
+
638
+ const dehydrated = dehydrate(queryClient, {
639
+ shouldDehydrateMutation: () => true,
640
+ })
641
+
642
+ expect(Object.keys(dehydrated.mutations[0]!)).toEqual(
643
+ expect.arrayContaining(['meta']),
644
+ )
645
+ expect(dehydrated.mutations[0]?.meta).toEqual({
646
+ some: 'meta',
647
+ })
648
+
649
+ expect(Object.keys(dehydrated.mutations[1]!)).not.toEqual(
650
+ expect.arrayContaining(['meta']),
651
+ )
652
+ expect(dehydrated.mutations[1]?.meta).toEqual(undefined)
653
+
654
+ const stringified = JSON.stringify(dehydrated)
655
+
656
+ // ---
657
+
658
+ const parsed = JSON.parse(stringified)
659
+ const hydrationCache = new MutationCache()
660
+ const hydrationClient = createQueryClient({
661
+ mutationCache: hydrationCache,
662
+ })
663
+ hydrate(hydrationClient, parsed)
664
+ expect(hydrationCache.find({ mutationKey: ['meta'] })?.meta).toEqual({
665
+ some: 'meta',
666
+ })
667
+ expect(hydrationCache.find({ mutationKey: ['no-meta'] })?.meta).toEqual(
668
+ undefined,
669
+ )
670
+ })
560
671
  })
@@ -1,19 +1,21 @@
1
1
  import { act } from '@testing-library/react'
2
2
  import { vi } from 'vitest'
3
-
4
3
  import { QueryClient } from '..'
5
4
  import * as utils from '../utils'
5
+ import type { SpyInstance } from 'vitest'
6
6
  import type { MutationOptions, QueryClientConfig } from '..'
7
7
 
8
8
  export function createQueryClient(config?: QueryClientConfig): QueryClient {
9
9
  return new QueryClient(config)
10
10
  }
11
11
 
12
- export function mockVisibilityState(value: DocumentVisibilityState) {
12
+ export function mockVisibilityState(
13
+ value: DocumentVisibilityState,
14
+ ): SpyInstance<[], DocumentVisibilityState> {
13
15
  return vi.spyOn(document, 'visibilityState', 'get').mockReturnValue(value)
14
16
  }
15
17
 
16
- export function mockNavigatorOnLine(value: boolean) {
18
+ export function mockNavigatorOnLine(value: boolean): SpyInstance<[], boolean> {
17
19
  return vi.spyOn(navigator, 'onLine', 'get').mockReturnValue(value)
18
20
  }
19
21