@tanstack/query-core 5.76.0 → 5.76.2

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.
Files changed (91) hide show
  1. package/build/legacy/{hydration-BaHDIfRR.d.ts → hydration-B3ndIyL6.d.ts} +1 -0
  2. package/build/legacy/{hydration-n7FlH3vr.d.cts → hydration-GTiXepW_.d.cts} +1 -0
  3. package/build/legacy/hydration.cjs +48 -33
  4. package/build/legacy/hydration.cjs.map +1 -1
  5. package/build/legacy/hydration.d.cts +1 -1
  6. package/build/legacy/hydration.d.ts +1 -1
  7. package/build/legacy/hydration.js +48 -33
  8. package/build/legacy/hydration.js.map +1 -1
  9. package/build/legacy/index.d.cts +1 -1
  10. package/build/legacy/index.d.ts +1 -1
  11. package/build/legacy/infiniteQueryBehavior.d.cts +1 -1
  12. package/build/legacy/infiniteQueryBehavior.d.ts +1 -1
  13. package/build/legacy/infiniteQueryObserver.d.cts +1 -1
  14. package/build/legacy/infiniteQueryObserver.d.ts +1 -1
  15. package/build/legacy/mutation.d.cts +1 -1
  16. package/build/legacy/mutation.d.ts +1 -1
  17. package/build/legacy/mutationCache.d.cts +1 -1
  18. package/build/legacy/mutationCache.d.ts +1 -1
  19. package/build/legacy/mutationObserver.d.cts +1 -1
  20. package/build/legacy/mutationObserver.d.ts +1 -1
  21. package/build/legacy/queriesObserver.d.cts +1 -1
  22. package/build/legacy/queriesObserver.d.ts +1 -1
  23. package/build/legacy/query.d.cts +1 -1
  24. package/build/legacy/query.d.ts +1 -1
  25. package/build/legacy/queryCache.d.cts +1 -1
  26. package/build/legacy/queryCache.d.ts +1 -1
  27. package/build/legacy/queryClient.d.cts +1 -1
  28. package/build/legacy/queryClient.d.ts +1 -1
  29. package/build/legacy/queryObserver.d.cts +1 -1
  30. package/build/legacy/queryObserver.d.ts +1 -1
  31. package/build/legacy/retryer.d.cts +1 -1
  32. package/build/legacy/retryer.d.ts +1 -1
  33. package/build/legacy/streamedQuery.d.cts +1 -1
  34. package/build/legacy/streamedQuery.d.ts +1 -1
  35. package/build/legacy/thenable.cjs +17 -2
  36. package/build/legacy/thenable.cjs.map +1 -1
  37. package/build/legacy/thenable.d.cts +12 -1
  38. package/build/legacy/thenable.d.ts +12 -1
  39. package/build/legacy/thenable.js +15 -1
  40. package/build/legacy/thenable.js.map +1 -1
  41. package/build/legacy/types.d.cts +1 -1
  42. package/build/legacy/types.d.ts +1 -1
  43. package/build/legacy/utils.d.cts +1 -1
  44. package/build/legacy/utils.d.ts +1 -1
  45. package/build/modern/{hydration-BaHDIfRR.d.ts → hydration-B3ndIyL6.d.ts} +1 -0
  46. package/build/modern/{hydration-n7FlH3vr.d.cts → hydration-GTiXepW_.d.cts} +1 -0
  47. package/build/modern/hydration.cjs +47 -32
  48. package/build/modern/hydration.cjs.map +1 -1
  49. package/build/modern/hydration.d.cts +1 -1
  50. package/build/modern/hydration.d.ts +1 -1
  51. package/build/modern/hydration.js +47 -32
  52. package/build/modern/hydration.js.map +1 -1
  53. package/build/modern/index.d.cts +1 -1
  54. package/build/modern/index.d.ts +1 -1
  55. package/build/modern/infiniteQueryBehavior.d.cts +1 -1
  56. package/build/modern/infiniteQueryBehavior.d.ts +1 -1
  57. package/build/modern/infiniteQueryObserver.d.cts +1 -1
  58. package/build/modern/infiniteQueryObserver.d.ts +1 -1
  59. package/build/modern/mutation.d.cts +1 -1
  60. package/build/modern/mutation.d.ts +1 -1
  61. package/build/modern/mutationCache.d.cts +1 -1
  62. package/build/modern/mutationCache.d.ts +1 -1
  63. package/build/modern/mutationObserver.d.cts +1 -1
  64. package/build/modern/mutationObserver.d.ts +1 -1
  65. package/build/modern/queriesObserver.d.cts +1 -1
  66. package/build/modern/queriesObserver.d.ts +1 -1
  67. package/build/modern/query.d.cts +1 -1
  68. package/build/modern/query.d.ts +1 -1
  69. package/build/modern/queryCache.d.cts +1 -1
  70. package/build/modern/queryCache.d.ts +1 -1
  71. package/build/modern/queryClient.d.cts +1 -1
  72. package/build/modern/queryClient.d.ts +1 -1
  73. package/build/modern/queryObserver.d.cts +1 -1
  74. package/build/modern/queryObserver.d.ts +1 -1
  75. package/build/modern/retryer.d.cts +1 -1
  76. package/build/modern/retryer.d.ts +1 -1
  77. package/build/modern/streamedQuery.d.cts +1 -1
  78. package/build/modern/streamedQuery.d.ts +1 -1
  79. package/build/modern/thenable.cjs +16 -2
  80. package/build/modern/thenable.cjs.map +1 -1
  81. package/build/modern/thenable.d.cts +12 -1
  82. package/build/modern/thenable.d.ts +12 -1
  83. package/build/modern/thenable.js +14 -1
  84. package/build/modern/thenable.js.map +1 -1
  85. package/build/modern/types.d.cts +1 -1
  86. package/build/modern/types.d.ts +1 -1
  87. package/build/modern/utils.d.cts +1 -1
  88. package/build/modern/utils.d.ts +1 -1
  89. package/package.json +1 -1
  90. package/src/hydration.ts +73 -46
  91. package/src/thenable.ts +29 -0
@@ -1347,6 +1347,7 @@ interface DehydratedQuery {
1347
1347
  state: QueryState;
1348
1348
  promise?: Promise<unknown>;
1349
1349
  meta?: QueryMeta;
1350
+ dehydratedAt?: number;
1350
1351
  }
1351
1352
  interface DehydratedState {
1352
1353
  mutations: Array<DehydratedMutation>;
@@ -1347,6 +1347,7 @@ interface DehydratedQuery {
1347
1347
  state: QueryState;
1348
1348
  promise?: Promise<unknown>;
1349
1349
  meta?: QueryMeta;
1350
+ dehydratedAt?: number;
1350
1351
  }
1351
1352
  interface DehydratedState {
1352
1353
  mutations: Array<DehydratedMutation>;
@@ -26,6 +26,7 @@ __export(hydration_exports, {
26
26
  hydrate: () => hydrate
27
27
  });
28
28
  module.exports = __toCommonJS(hydration_exports);
29
+ var import_thenable = require("./thenable.cjs");
29
30
  function defaultTransformerFn(data) {
30
31
  return data;
31
32
  }
@@ -40,6 +41,7 @@ function dehydrateMutation(mutation) {
40
41
  function dehydrateQuery(query, serializeData, shouldRedactErrors) {
41
42
  var _a;
42
43
  return {
44
+ dehydratedAt: Date.now(),
43
45
  state: {
44
46
  ...query.state,
45
47
  ...query.state.data !== void 0 && {
@@ -109,42 +111,55 @@ function hydrate(client, dehydratedState, options) {
109
111
  state
110
112
  );
111
113
  });
112
- queries.forEach(({ queryKey, state, queryHash, meta, promise }) => {
113
- var _a2, _b2;
114
- let query = queryCache.get(queryHash);
115
- const data = state.data === void 0 ? state.data : deserializeData(state.data);
116
- if (query) {
117
- if (query.state.dataUpdatedAt < state.dataUpdatedAt) {
118
- const { fetchStatus: _ignored, ...serializedState } = state;
119
- query.setState({
120
- ...serializedState,
121
- data
114
+ queries.forEach(
115
+ ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {
116
+ var _a2, _b2;
117
+ const syncData = promise ? (0, import_thenable.tryResolveSync)(promise) : void 0;
118
+ const rawData = state.data === void 0 ? syncData == null ? void 0 : syncData.data : state.data;
119
+ const data = rawData === void 0 ? rawData : deserializeData(rawData);
120
+ let query = queryCache.get(queryHash);
121
+ const existingQueryIsPending = (query == null ? void 0 : query.state.status) === "pending";
122
+ if (query) {
123
+ const hasNewerSyncData = syncData && // We only need this undefined check to handle older dehydration
124
+ // payloads that might not have dehydratedAt
125
+ dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;
126
+ if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {
127
+ const { fetchStatus: _ignored, ...serializedState } = state;
128
+ query.setState({
129
+ ...serializedState,
130
+ data
131
+ });
132
+ }
133
+ } else {
134
+ query = queryCache.build(
135
+ client,
136
+ {
137
+ ...(_a2 = client.getDefaultOptions().hydrate) == null ? void 0 : _a2.queries,
138
+ ...(_b2 = options == null ? void 0 : options.defaultOptions) == null ? void 0 : _b2.queries,
139
+ queryKey,
140
+ queryHash,
141
+ meta
142
+ },
143
+ // Reset fetch status to idle to avoid
144
+ // query being stuck in fetching state upon hydration
145
+ {
146
+ ...state,
147
+ data,
148
+ fetchStatus: "idle",
149
+ status: data !== void 0 ? "success" : state.status
150
+ }
151
+ );
152
+ }
153
+ if (promise && !existingQueryIsPending && // Only hydrate if dehydration is newer than any existing data,
154
+ // this is always true for new queries
155
+ (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) {
156
+ void query.fetch(void 0, {
157
+ // RSC transformed promises are not thenable
158
+ initialPromise: Promise.resolve(promise).then(deserializeData)
122
159
  });
123
160
  }
124
- } else {
125
- query = queryCache.build(
126
- client,
127
- {
128
- ...(_a2 = client.getDefaultOptions().hydrate) == null ? void 0 : _a2.queries,
129
- ...(_b2 = options == null ? void 0 : options.defaultOptions) == null ? void 0 : _b2.queries,
130
- queryKey,
131
- queryHash,
132
- meta
133
- },
134
- // Reset fetch status to idle to avoid
135
- // query being stuck in fetching state upon hydration
136
- {
137
- ...state,
138
- data,
139
- fetchStatus: "idle"
140
- }
141
- );
142
161
  }
143
- if (promise) {
144
- const initialPromise = Promise.resolve(promise).then(deserializeData);
145
- void query.fetch(void 0, { initialPromise });
146
- }
147
- });
162
+ );
148
163
  }
149
164
  // Annotate the CommonJS export names for ESM import in node:
150
165
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hydration.ts"],"sourcesContent":["import type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\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(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n return {\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n }),\n }),\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\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n 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 ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\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 const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\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(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(({ queryKey, state, queryHash, meta, promise }) => {\n let query = queryCache.get(queryHash)\n\n const data =\n state.data === undefined ? state.data : deserializeData(state.data)\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < state.dataUpdatedAt) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n },\n )\n }\n\n if (promise) {\n // Note: `Promise.resolve` required cause\n // RSC transformed promises are not thenable\n const initialPromise = Promise.resolve(promise).then(deserializeData)\n\n // this doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n void query.fetch(undefined, { initialPromise })\n }\n })\n}\n"],"mappings":"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","names":["_a","_b"]}
1
+ {"version":3,"sources":["../../src/hydration.ts"],"sourcesContent":["import { tryResolveSync } from './thenable'\nimport type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n // This is only optional because older versions of Query might have dehydrated\n // without it which we need to handle for backwards compatibility.\n // This should be changed to required in the future.\n dehydratedAt?: number\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\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(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n }),\n }),\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\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n 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 ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\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 const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\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(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(\n ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {\n const syncData = promise ? tryResolveSync(promise) : undefined\n const rawData = state.data === undefined ? syncData?.data : state.data\n const data = rawData === undefined ? rawData : deserializeData(rawData)\n\n let query = queryCache.get(queryHash)\n const existingQueryIsPending = query?.state.status === 'pending'\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n const hasNewerSyncData =\n syncData &&\n // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== undefined &&\n dehydratedAt > query.state.dataUpdatedAt\n if (\n state.dataUpdatedAt > query.state.dataUpdatedAt ||\n hasNewerSyncData\n ) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n status: data !== undefined ? 'success' : state.status,\n },\n )\n }\n\n if (\n promise &&\n !existingQueryIsPending &&\n // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === undefined || dehydratedAt > query.state.dataUpdatedAt)\n ) {\n // This doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n // Note that we need to call these even when data was synchronously\n // available, as we still need to set up the retryer\n void query.fetch(undefined, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData),\n })\n }\n },\n )\n}\n"],"mappings":"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","names":["_a","_b"]}
@@ -1,3 +1,3 @@
1
- export { D as DehydrateOptions, z as DehydratedState, H as HydrateOptions, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, q as hydrate } from './hydration-n7FlH3vr.cjs';
1
+ export { D as DehydrateOptions, z as DehydratedState, H as HydrateOptions, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, q as hydrate } from './hydration-GTiXepW_.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
- export { D as DehydrateOptions, z as DehydratedState, H as HydrateOptions, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, q as hydrate } from './hydration-BaHDIfRR.js';
1
+ export { D as DehydrateOptions, z as DehydratedState, H as HydrateOptions, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, q as hydrate } from './hydration-B3ndIyL6.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
@@ -1,6 +1,7 @@
1
1
  import "./chunk-PXG64RU4.js";
2
2
 
3
3
  // src/hydration.ts
4
+ import { tryResolveSync } from "./thenable.js";
4
5
  function defaultTransformerFn(data) {
5
6
  return data;
6
7
  }
@@ -15,6 +16,7 @@ function dehydrateMutation(mutation) {
15
16
  function dehydrateQuery(query, serializeData, shouldRedactErrors) {
16
17
  var _a;
17
18
  return {
19
+ dehydratedAt: Date.now(),
18
20
  state: {
19
21
  ...query.state,
20
22
  ...query.state.data !== void 0 && {
@@ -84,42 +86,55 @@ function hydrate(client, dehydratedState, options) {
84
86
  state
85
87
  );
86
88
  });
87
- queries.forEach(({ queryKey, state, queryHash, meta, promise }) => {
88
- var _a2, _b2;
89
- let query = queryCache.get(queryHash);
90
- const data = state.data === void 0 ? state.data : deserializeData(state.data);
91
- if (query) {
92
- if (query.state.dataUpdatedAt < state.dataUpdatedAt) {
93
- const { fetchStatus: _ignored, ...serializedState } = state;
94
- query.setState({
95
- ...serializedState,
96
- data
89
+ queries.forEach(
90
+ ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {
91
+ var _a2, _b2;
92
+ const syncData = promise ? tryResolveSync(promise) : void 0;
93
+ const rawData = state.data === void 0 ? syncData == null ? void 0 : syncData.data : state.data;
94
+ const data = rawData === void 0 ? rawData : deserializeData(rawData);
95
+ let query = queryCache.get(queryHash);
96
+ const existingQueryIsPending = (query == null ? void 0 : query.state.status) === "pending";
97
+ if (query) {
98
+ const hasNewerSyncData = syncData && // We only need this undefined check to handle older dehydration
99
+ // payloads that might not have dehydratedAt
100
+ dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;
101
+ if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {
102
+ const { fetchStatus: _ignored, ...serializedState } = state;
103
+ query.setState({
104
+ ...serializedState,
105
+ data
106
+ });
107
+ }
108
+ } else {
109
+ query = queryCache.build(
110
+ client,
111
+ {
112
+ ...(_a2 = client.getDefaultOptions().hydrate) == null ? void 0 : _a2.queries,
113
+ ...(_b2 = options == null ? void 0 : options.defaultOptions) == null ? void 0 : _b2.queries,
114
+ queryKey,
115
+ queryHash,
116
+ meta
117
+ },
118
+ // Reset fetch status to idle to avoid
119
+ // query being stuck in fetching state upon hydration
120
+ {
121
+ ...state,
122
+ data,
123
+ fetchStatus: "idle",
124
+ status: data !== void 0 ? "success" : state.status
125
+ }
126
+ );
127
+ }
128
+ if (promise && !existingQueryIsPending && // Only hydrate if dehydration is newer than any existing data,
129
+ // this is always true for new queries
130
+ (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) {
131
+ void query.fetch(void 0, {
132
+ // RSC transformed promises are not thenable
133
+ initialPromise: Promise.resolve(promise).then(deserializeData)
97
134
  });
98
135
  }
99
- } else {
100
- query = queryCache.build(
101
- client,
102
- {
103
- ...(_a2 = client.getDefaultOptions().hydrate) == null ? void 0 : _a2.queries,
104
- ...(_b2 = options == null ? void 0 : options.defaultOptions) == null ? void 0 : _b2.queries,
105
- queryKey,
106
- queryHash,
107
- meta
108
- },
109
- // Reset fetch status to idle to avoid
110
- // query being stuck in fetching state upon hydration
111
- {
112
- ...state,
113
- data,
114
- fetchStatus: "idle"
115
- }
116
- );
117
136
  }
118
- if (promise) {
119
- const initialPromise = Promise.resolve(promise).then(deserializeData);
120
- void query.fetch(void 0, { initialPromise });
121
- }
122
- });
137
+ );
123
138
  }
124
139
  export {
125
140
  defaultShouldDehydrateMutation,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hydration.ts"],"sourcesContent":["import type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\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(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n return {\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n }),\n }),\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\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n 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 ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\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 const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\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(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(({ queryKey, state, queryHash, meta, promise }) => {\n let query = queryCache.get(queryHash)\n\n const data =\n state.data === undefined ? state.data : deserializeData(state.data)\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < state.dataUpdatedAt) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n },\n )\n }\n\n if (promise) {\n // Note: `Promise.resolve` required cause\n // RSC transformed promises are not thenable\n const initialPromise = Promise.resolve(promise).then(deserializeData)\n\n // this doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n void query.fetch(undefined, { initialPromise })\n }\n })\n}\n"],"mappings":"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","names":["_a","_b"]}
1
+ {"version":3,"sources":["../../src/hydration.ts"],"sourcesContent":["import { tryResolveSync } from './thenable'\nimport type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n // This is only optional because older versions of Query might have dehydrated\n // without it which we need to handle for backwards compatibility.\n // This should be changed to required in the future.\n dehydratedAt?: number\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\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(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n }),\n }),\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\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n 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 ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\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 const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\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(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(\n ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {\n const syncData = promise ? tryResolveSync(promise) : undefined\n const rawData = state.data === undefined ? syncData?.data : state.data\n const data = rawData === undefined ? rawData : deserializeData(rawData)\n\n let query = queryCache.get(queryHash)\n const existingQueryIsPending = query?.state.status === 'pending'\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n const hasNewerSyncData =\n syncData &&\n // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== undefined &&\n dehydratedAt > query.state.dataUpdatedAt\n if (\n state.dataUpdatedAt > query.state.dataUpdatedAt ||\n hasNewerSyncData\n ) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n status: data !== undefined ? 'success' : state.status,\n },\n )\n }\n\n if (\n promise &&\n !existingQueryIsPending &&\n // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === undefined || dehydratedAt > query.state.dataUpdatedAt)\n ) {\n // This doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n // Note that we need to call these even when data was synchronously\n // available, as we still need to set up the retryer\n void query.fetch(undefined, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData),\n })\n }\n },\n )\n}\n"],"mappings":"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","names":["_a","_b"]}
@@ -1,4 +1,4 @@
1
- export { L as AnyDataTag, b3 as CancelOptions, C as CancelledError, P as DataTag, E as DefaultError, b2 as DefaultOptions, ah as DefaultedInfiniteQueryObserverOptions, af as DefaultedQueryObserverOptions, aM as DefinedInfiniteQueryObserverResult, aD as DefinedQueryObserverResult, D as DehydrateOptions, z as DehydratedState, A as DistributiveOmit, Y as Enabled, ak as EnsureInfiniteQueryDataOptions, aj as EnsureQueryDataOptions, al as FetchInfiniteQueryOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, ai as FetchQueryOptions, av as FetchStatus, a4 as GetNextPageParamFunction, a3 as GetPreviousPageParamFunction, H as HydrateOptions, T as InferDataFromTag, V as InferErrorFromTag, a5 as InfiniteData, aF as InfiniteQueryObserverBaseResult, aI as InfiniteQueryObserverLoadingErrorResult, aH as InfiniteQueryObserverLoadingResult, ag as InfiniteQueryObserverOptions, aG as InfiniteQueryObserverPendingResult, aL as InfiniteQueryObserverPlaceholderResult, aJ as InfiniteQueryObserverRefetchErrorResult, aN as InfiniteQueryObserverResult, aK as InfiniteQueryObserverSuccessResult, ab as InfiniteQueryPageParamsOptions, $ as InitialDataFunction, aa as InitialPageParam, aq as InvalidateOptions, ao as InvalidateQueryFilters, aW as MutateFunction, aV as MutateOptions, y as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, j as MutationFilters, aS as MutationFunction, aO as MutationKey, aR as MutationMeta, e as MutationObserver, aX as MutationObserverBaseResult, a_ as MutationObserverErrorResult, aY as MutationObserverIdleResult, aZ as MutationObserverLoadingResult, aU as MutationObserverOptions, b0 as MutationObserverResult, a$ as MutationObserverSuccessResult, aT as MutationOptions, aQ as MutationScope, x as MutationState, aP as MutationStatus, a7 as NetworkMode, N as NoInfer, b6 as NotifyEvent, b5 as NotifyEventType, a8 as NotifyOnChangeProps, O as OmitKeyof, B as Override, a0 as PlaceholderDataFunction, a1 as QueriesPlaceholderDataFunction, w as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, b1 as QueryClientConfig, l as QueryFilters, W as QueryFunction, _ as QueryFunctionContext, F as QueryKey, a2 as QueryKeyHashFunction, a6 as QueryMeta, c as QueryObserver, aw as QueryObserverBaseResult, az as QueryObserverLoadingErrorResult, ay as QueryObserverLoadingResult, ad as QueryObserverOptions, ax as QueryObserverPendingResult, aC as QueryObserverPlaceholderResult, aA as QueryObserverRefetchErrorResult, aE as QueryObserverResult, aB as QueryObserverSuccessResult, a9 as QueryOptions, Z as QueryPersister, v as QueryState, au as QueryStatus, an as RefetchOptions, ap as RefetchQueryFilters, R as Register, ar as ResetOptions, am as ResultOptions, b4 as SetDataOptions, S as SkipToken, X as StaleTime, ac as ThrowOnError, K as UnsetMarker, U as Updater, ae as WithRequired, I as dataTagErrorSymbol, G as dataTagSymbol, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, h as hashKey, q as hydrate, o as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, n as noop, r as replaceEqualDeep, g as shouldThrowError, s as skipToken, J as unsetMarker } from './hydration-n7FlH3vr.cjs';
1
+ export { L as AnyDataTag, b3 as CancelOptions, C as CancelledError, P as DataTag, E as DefaultError, b2 as DefaultOptions, ah as DefaultedInfiniteQueryObserverOptions, af as DefaultedQueryObserverOptions, aM as DefinedInfiniteQueryObserverResult, aD as DefinedQueryObserverResult, D as DehydrateOptions, z as DehydratedState, A as DistributiveOmit, Y as Enabled, ak as EnsureInfiniteQueryDataOptions, aj as EnsureQueryDataOptions, al as FetchInfiniteQueryOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, ai as FetchQueryOptions, av as FetchStatus, a4 as GetNextPageParamFunction, a3 as GetPreviousPageParamFunction, H as HydrateOptions, T as InferDataFromTag, V as InferErrorFromTag, a5 as InfiniteData, aF as InfiniteQueryObserverBaseResult, aI as InfiniteQueryObserverLoadingErrorResult, aH as InfiniteQueryObserverLoadingResult, ag as InfiniteQueryObserverOptions, aG as InfiniteQueryObserverPendingResult, aL as InfiniteQueryObserverPlaceholderResult, aJ as InfiniteQueryObserverRefetchErrorResult, aN as InfiniteQueryObserverResult, aK as InfiniteQueryObserverSuccessResult, ab as InfiniteQueryPageParamsOptions, $ as InitialDataFunction, aa as InitialPageParam, aq as InvalidateOptions, ao as InvalidateQueryFilters, aW as MutateFunction, aV as MutateOptions, y as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, j as MutationFilters, aS as MutationFunction, aO as MutationKey, aR as MutationMeta, e as MutationObserver, aX as MutationObserverBaseResult, a_ as MutationObserverErrorResult, aY as MutationObserverIdleResult, aZ as MutationObserverLoadingResult, aU as MutationObserverOptions, b0 as MutationObserverResult, a$ as MutationObserverSuccessResult, aT as MutationOptions, aQ as MutationScope, x as MutationState, aP as MutationStatus, a7 as NetworkMode, N as NoInfer, b6 as NotifyEvent, b5 as NotifyEventType, a8 as NotifyOnChangeProps, O as OmitKeyof, B as Override, a0 as PlaceholderDataFunction, a1 as QueriesPlaceholderDataFunction, w as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, b1 as QueryClientConfig, l as QueryFilters, W as QueryFunction, _ as QueryFunctionContext, F as QueryKey, a2 as QueryKeyHashFunction, a6 as QueryMeta, c as QueryObserver, aw as QueryObserverBaseResult, az as QueryObserverLoadingErrorResult, ay as QueryObserverLoadingResult, ad as QueryObserverOptions, ax as QueryObserverPendingResult, aC as QueryObserverPlaceholderResult, aA as QueryObserverRefetchErrorResult, aE as QueryObserverResult, aB as QueryObserverSuccessResult, a9 as QueryOptions, Z as QueryPersister, v as QueryState, au as QueryStatus, an as RefetchOptions, ap as RefetchQueryFilters, R as Register, ar as ResetOptions, am as ResultOptions, b4 as SetDataOptions, S as SkipToken, X as StaleTime, ac as ThrowOnError, K as UnsetMarker, U as Updater, ae as WithRequired, I as dataTagErrorSymbol, G as dataTagSymbol, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, h as hashKey, q as hydrate, o as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, n as noop, r as replaceEqualDeep, g as shouldThrowError, s as skipToken, J as unsetMarker } from './hydration-GTiXepW_.cjs';
2
2
  export { QueriesObserver, QueriesObserverOptions } from './queriesObserver.cjs';
3
3
  export { InfiniteQueryObserver } from './infiniteQueryObserver.cjs';
4
4
  export { defaultScheduler, notifyManager } from './notifyManager.cjs';
@@ -1,4 +1,4 @@
1
- export { L as AnyDataTag, b3 as CancelOptions, C as CancelledError, P as DataTag, E as DefaultError, b2 as DefaultOptions, ah as DefaultedInfiniteQueryObserverOptions, af as DefaultedQueryObserverOptions, aM as DefinedInfiniteQueryObserverResult, aD as DefinedQueryObserverResult, D as DehydrateOptions, z as DehydratedState, A as DistributiveOmit, Y as Enabled, ak as EnsureInfiniteQueryDataOptions, aj as EnsureQueryDataOptions, al as FetchInfiniteQueryOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, ai as FetchQueryOptions, av as FetchStatus, a4 as GetNextPageParamFunction, a3 as GetPreviousPageParamFunction, H as HydrateOptions, T as InferDataFromTag, V as InferErrorFromTag, a5 as InfiniteData, aF as InfiniteQueryObserverBaseResult, aI as InfiniteQueryObserverLoadingErrorResult, aH as InfiniteQueryObserverLoadingResult, ag as InfiniteQueryObserverOptions, aG as InfiniteQueryObserverPendingResult, aL as InfiniteQueryObserverPlaceholderResult, aJ as InfiniteQueryObserverRefetchErrorResult, aN as InfiniteQueryObserverResult, aK as InfiniteQueryObserverSuccessResult, ab as InfiniteQueryPageParamsOptions, $ as InitialDataFunction, aa as InitialPageParam, aq as InvalidateOptions, ao as InvalidateQueryFilters, aW as MutateFunction, aV as MutateOptions, y as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, j as MutationFilters, aS as MutationFunction, aO as MutationKey, aR as MutationMeta, e as MutationObserver, aX as MutationObserverBaseResult, a_ as MutationObserverErrorResult, aY as MutationObserverIdleResult, aZ as MutationObserverLoadingResult, aU as MutationObserverOptions, b0 as MutationObserverResult, a$ as MutationObserverSuccessResult, aT as MutationOptions, aQ as MutationScope, x as MutationState, aP as MutationStatus, a7 as NetworkMode, N as NoInfer, b6 as NotifyEvent, b5 as NotifyEventType, a8 as NotifyOnChangeProps, O as OmitKeyof, B as Override, a0 as PlaceholderDataFunction, a1 as QueriesPlaceholderDataFunction, w as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, b1 as QueryClientConfig, l as QueryFilters, W as QueryFunction, _ as QueryFunctionContext, F as QueryKey, a2 as QueryKeyHashFunction, a6 as QueryMeta, c as QueryObserver, aw as QueryObserverBaseResult, az as QueryObserverLoadingErrorResult, ay as QueryObserverLoadingResult, ad as QueryObserverOptions, ax as QueryObserverPendingResult, aC as QueryObserverPlaceholderResult, aA as QueryObserverRefetchErrorResult, aE as QueryObserverResult, aB as QueryObserverSuccessResult, a9 as QueryOptions, Z as QueryPersister, v as QueryState, au as QueryStatus, an as RefetchOptions, ap as RefetchQueryFilters, R as Register, ar as ResetOptions, am as ResultOptions, b4 as SetDataOptions, S as SkipToken, X as StaleTime, ac as ThrowOnError, K as UnsetMarker, U as Updater, ae as WithRequired, I as dataTagErrorSymbol, G as dataTagSymbol, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, h as hashKey, q as hydrate, o as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, n as noop, r as replaceEqualDeep, g as shouldThrowError, s as skipToken, J as unsetMarker } from './hydration-BaHDIfRR.js';
1
+ export { L as AnyDataTag, b3 as CancelOptions, C as CancelledError, P as DataTag, E as DefaultError, b2 as DefaultOptions, ah as DefaultedInfiniteQueryObserverOptions, af as DefaultedQueryObserverOptions, aM as DefinedInfiniteQueryObserverResult, aD as DefinedQueryObserverResult, D as DehydrateOptions, z as DehydratedState, A as DistributiveOmit, Y as Enabled, ak as EnsureInfiniteQueryDataOptions, aj as EnsureQueryDataOptions, al as FetchInfiniteQueryOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, ai as FetchQueryOptions, av as FetchStatus, a4 as GetNextPageParamFunction, a3 as GetPreviousPageParamFunction, H as HydrateOptions, T as InferDataFromTag, V as InferErrorFromTag, a5 as InfiniteData, aF as InfiniteQueryObserverBaseResult, aI as InfiniteQueryObserverLoadingErrorResult, aH as InfiniteQueryObserverLoadingResult, ag as InfiniteQueryObserverOptions, aG as InfiniteQueryObserverPendingResult, aL as InfiniteQueryObserverPlaceholderResult, aJ as InfiniteQueryObserverRefetchErrorResult, aN as InfiniteQueryObserverResult, aK as InfiniteQueryObserverSuccessResult, ab as InfiniteQueryPageParamsOptions, $ as InitialDataFunction, aa as InitialPageParam, aq as InvalidateOptions, ao as InvalidateQueryFilters, aW as MutateFunction, aV as MutateOptions, y as Mutation, M as MutationCache, d as MutationCacheNotifyEvent, j as MutationFilters, aS as MutationFunction, aO as MutationKey, aR as MutationMeta, e as MutationObserver, aX as MutationObserverBaseResult, a_ as MutationObserverErrorResult, aY as MutationObserverIdleResult, aZ as MutationObserverLoadingResult, aU as MutationObserverOptions, b0 as MutationObserverResult, a$ as MutationObserverSuccessResult, aT as MutationOptions, aQ as MutationScope, x as MutationState, aP as MutationStatus, a7 as NetworkMode, N as NoInfer, b6 as NotifyEvent, b5 as NotifyEventType, a8 as NotifyOnChangeProps, O as OmitKeyof, B as Override, a0 as PlaceholderDataFunction, a1 as QueriesPlaceholderDataFunction, w as Query, Q as QueryCache, a as QueryCacheNotifyEvent, b as QueryClient, b1 as QueryClientConfig, l as QueryFilters, W as QueryFunction, _ as QueryFunctionContext, F as QueryKey, a2 as QueryKeyHashFunction, a6 as QueryMeta, c as QueryObserver, aw as QueryObserverBaseResult, az as QueryObserverLoadingErrorResult, ay as QueryObserverLoadingResult, ad as QueryObserverOptions, ax as QueryObserverPendingResult, aC as QueryObserverPlaceholderResult, aA as QueryObserverRefetchErrorResult, aE as QueryObserverResult, aB as QueryObserverSuccessResult, a9 as QueryOptions, Z as QueryPersister, v as QueryState, au as QueryStatus, an as RefetchOptions, ap as RefetchQueryFilters, R as Register, ar as ResetOptions, am as ResultOptions, b4 as SetDataOptions, S as SkipToken, X as StaleTime, ac as ThrowOnError, K as UnsetMarker, U as Updater, ae as WithRequired, I as dataTagErrorSymbol, G as dataTagSymbol, u as defaultShouldDehydrateMutation, t as defaultShouldDehydrateQuery, p as dehydrate, h as hashKey, q as hydrate, o as isCancelledError, i as isServer, k as keepPreviousData, f as matchMutation, m as matchQuery, n as noop, r as replaceEqualDeep, g as shouldThrowError, s as skipToken, J as unsetMarker } from './hydration-B3ndIyL6.js';
2
2
  export { QueriesObserver, QueriesObserverOptions } from './queriesObserver.js';
3
3
  export { InfiniteQueryObserver } from './infiniteQueryObserver.js';
4
4
  export { defaultScheduler, notifyManager } from './notifyManager.js';
@@ -1,4 +1,4 @@
1
- import { b7 as QueryBehavior, a5 as InfiniteData, ab as InfiniteQueryPageParamsOptions } from './hydration-n7FlH3vr.cjs';
1
+ import { b7 as QueryBehavior, a5 as InfiniteData, ab as InfiniteQueryPageParamsOptions } from './hydration-GTiXepW_.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { b7 as QueryBehavior, a5 as InfiniteData, ab as InfiniteQueryPageParamsOptions } from './hydration-BaHDIfRR.js';
1
+ import { b7 as QueryBehavior, a5 as InfiniteData, ab as InfiniteQueryPageParamsOptions } from './hydration-B3ndIyL6.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { E as DefaultError, a5 as InfiniteData, F as QueryKey, c as QueryObserver, aN as InfiniteQueryObserverResult, b as QueryClient, ag as InfiniteQueryObserverOptions, ah as DefaultedInfiniteQueryObserverOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, w as Query } from './hydration-n7FlH3vr.cjs';
1
+ import { E as DefaultError, a5 as InfiniteData, F as QueryKey, c as QueryObserver, aN as InfiniteQueryObserverResult, b as QueryClient, ag as InfiniteQueryObserverOptions, ah as DefaultedInfiniteQueryObserverOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, w as Query } from './hydration-GTiXepW_.cjs';
2
2
  import { Subscribable } from './subscribable.cjs';
3
3
  import './removable.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { E as DefaultError, a5 as InfiniteData, F as QueryKey, c as QueryObserver, aN as InfiniteQueryObserverResult, b as QueryClient, ag as InfiniteQueryObserverOptions, ah as DefaultedInfiniteQueryObserverOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, w as Query } from './hydration-BaHDIfRR.js';
1
+ import { E as DefaultError, a5 as InfiniteData, F as QueryKey, c as QueryObserver, aN as InfiniteQueryObserverResult, b as QueryClient, ag as InfiniteQueryObserverOptions, ah as DefaultedInfiniteQueryObserverOptions, as as FetchNextPageOptions, at as FetchPreviousPageOptions, w as Query } from './hydration-B3ndIyL6.js';
2
2
  import { Subscribable } from './subscribable.js';
3
3
  import './removable.js';
4
4
 
@@ -1,3 +1,3 @@
1
1
  import './removable.cjs';
2
- export { bf as Action, y as Mutation, x as MutationState, bg as getDefaultState } from './hydration-n7FlH3vr.cjs';
2
+ export { bf as Action, y as Mutation, x as MutationState, bg as getDefaultState } from './hydration-GTiXepW_.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
1
  import './removable.js';
2
- export { bf as Action, y as Mutation, x as MutationState, bg as getDefaultState } from './hydration-BaHDIfRR.js';
2
+ export { bf as Action, y as Mutation, x as MutationState, bg as getDefaultState } from './hydration-B3ndIyL6.js';
3
3
  import './subscribable.js';
@@ -1,3 +1,3 @@
1
- export { M as MutationCache, d as MutationCacheNotifyEvent } from './hydration-n7FlH3vr.cjs';
1
+ export { M as MutationCache, d as MutationCacheNotifyEvent } from './hydration-GTiXepW_.cjs';
2
2
  import './subscribable.cjs';
3
3
  import './removable.cjs';
@@ -1,3 +1,3 @@
1
- export { M as MutationCache, d as MutationCacheNotifyEvent } from './hydration-BaHDIfRR.js';
1
+ export { M as MutationCache, d as MutationCacheNotifyEvent } from './hydration-B3ndIyL6.js';
2
2
  import './subscribable.js';
3
3
  import './removable.js';
@@ -1,3 +1,3 @@
1
1
  import './subscribable.cjs';
2
- export { e as MutationObserver } from './hydration-n7FlH3vr.cjs';
2
+ export { e as MutationObserver } from './hydration-GTiXepW_.cjs';
3
3
  import './removable.cjs';
@@ -1,3 +1,3 @@
1
1
  import './subscribable.js';
2
- export { e as MutationObserver } from './hydration-BaHDIfRR.js';
2
+ export { e as MutationObserver } from './hydration-B3ndIyL6.js';
3
3
  import './removable.js';
@@ -1,4 +1,4 @@
1
- import { aE as QueryObserverResult, b as QueryClient, ad as QueryObserverOptions, w as Query, c as QueryObserver } from './hydration-n7FlH3vr.cjs';
1
+ import { aE as QueryObserverResult, b as QueryClient, ad as QueryObserverOptions, w as Query, c as QueryObserver } from './hydration-GTiXepW_.cjs';
2
2
  import { Subscribable } from './subscribable.cjs';
3
3
  import './removable.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { aE as QueryObserverResult, b as QueryClient, ad as QueryObserverOptions, w as Query, c as QueryObserver } from './hydration-BaHDIfRR.js';
1
+ import { aE as QueryObserverResult, b as QueryClient, ad as QueryObserverOptions, w as Query, c as QueryObserver } from './hydration-B3ndIyL6.js';
2
2
  import { Subscribable } from './subscribable.js';
3
3
  import './removable.js';
4
4
 
@@ -1,3 +1,3 @@
1
1
  import './removable.cjs';
2
- export { bc as Action, b8 as FetchContext, b9 as FetchDirection, ba as FetchMeta, bb as FetchOptions, w as Query, b7 as QueryBehavior, v as QueryState, bd as SetStateOptions, be as fetchState } from './hydration-n7FlH3vr.cjs';
2
+ export { bc as Action, b8 as FetchContext, b9 as FetchDirection, ba as FetchMeta, bb as FetchOptions, w as Query, b7 as QueryBehavior, v as QueryState, bd as SetStateOptions, be as fetchState } from './hydration-GTiXepW_.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
1
  import './removable.js';
2
- export { bc as Action, b8 as FetchContext, b9 as FetchDirection, ba as FetchMeta, bb as FetchOptions, w as Query, b7 as QueryBehavior, v as QueryState, bd as SetStateOptions, be as fetchState } from './hydration-BaHDIfRR.js';
2
+ export { bc as Action, b8 as FetchContext, b9 as FetchDirection, ba as FetchMeta, bb as FetchOptions, w as Query, b7 as QueryBehavior, v as QueryState, bd as SetStateOptions, be as fetchState } from './hydration-B3ndIyL6.js';
3
3
  import './subscribable.js';
@@ -1,3 +1,3 @@
1
- export { Q as QueryCache, a as QueryCacheNotifyEvent, bx as QueryStore } from './hydration-n7FlH3vr.cjs';
1
+ export { Q as QueryCache, a as QueryCacheNotifyEvent, bx as QueryStore } from './hydration-GTiXepW_.cjs';
2
2
  import './subscribable.cjs';
3
3
  import './removable.cjs';
@@ -1,3 +1,3 @@
1
- export { Q as QueryCache, a as QueryCacheNotifyEvent, bx as QueryStore } from './hydration-BaHDIfRR.js';
1
+ export { Q as QueryCache, a as QueryCacheNotifyEvent, bx as QueryStore } from './hydration-B3ndIyL6.js';
2
2
  import './subscribable.js';
3
3
  import './removable.js';
@@ -1,3 +1,3 @@
1
- export { b as QueryClient } from './hydration-n7FlH3vr.cjs';
1
+ export { b as QueryClient } from './hydration-GTiXepW_.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
- export { b as QueryClient } from './hydration-BaHDIfRR.js';
1
+ export { b as QueryClient } from './hydration-B3ndIyL6.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
@@ -1,3 +1,3 @@
1
1
  import './subscribable.cjs';
2
- export { c as QueryObserver } from './hydration-n7FlH3vr.cjs';
2
+ export { c as QueryObserver } from './hydration-GTiXepW_.cjs';
3
3
  import './removable.cjs';
@@ -1,3 +1,3 @@
1
1
  import './subscribable.js';
2
- export { c as QueryObserver } from './hydration-BaHDIfRR.js';
2
+ export { c as QueryObserver } from './hydration-B3ndIyL6.js';
3
3
  import './removable.js';
@@ -1,3 +1,3 @@
1
- export { C as CancelledError, bA as RetryDelayValue, bz as RetryValue, by as Retryer, bB as canFetch, bC as createRetryer, o as isCancelledError } from './hydration-n7FlH3vr.cjs';
1
+ export { C as CancelledError, bA as RetryDelayValue, bz as RetryValue, by as Retryer, bB as canFetch, bC as createRetryer, o as isCancelledError } from './hydration-GTiXepW_.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
@@ -1,3 +1,3 @@
1
- export { C as CancelledError, bA as RetryDelayValue, bz as RetryValue, by as Retryer, bB as canFetch, bC as createRetryer, o as isCancelledError } from './hydration-BaHDIfRR.js';
1
+ export { C as CancelledError, bA as RetryDelayValue, bz as RetryValue, by as Retryer, bB as canFetch, bC as createRetryer, o as isCancelledError } from './hydration-B3ndIyL6.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
@@ -1,4 +1,4 @@
1
- import { F as QueryKey, _ as QueryFunctionContext, W as QueryFunction } from './hydration-n7FlH3vr.cjs';
1
+ import { F as QueryKey, _ as QueryFunctionContext, W as QueryFunction } from './hydration-GTiXepW_.cjs';
2
2
  import './removable.cjs';
3
3
  import './subscribable.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- import { F as QueryKey, _ as QueryFunctionContext, W as QueryFunction } from './hydration-BaHDIfRR.js';
1
+ import { F as QueryKey, _ as QueryFunctionContext, W as QueryFunction } from './hydration-B3ndIyL6.js';
2
2
  import './removable.js';
3
3
  import './subscribable.js';
4
4
 
@@ -20,9 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/thenable.ts
21
21
  var thenable_exports = {};
22
22
  __export(thenable_exports, {
23
- pendingThenable: () => pendingThenable
23
+ pendingThenable: () => pendingThenable,
24
+ tryResolveSync: () => tryResolveSync
24
25
  });
25
26
  module.exports = __toCommonJS(thenable_exports);
27
+ var import_utils = require("./utils.cjs");
26
28
  function pendingThenable() {
27
29
  let resolve;
28
30
  let reject;
@@ -54,8 +56,21 @@ function pendingThenable() {
54
56
  };
55
57
  return thenable;
56
58
  }
59
+ function tryResolveSync(promise) {
60
+ var _a;
61
+ let data;
62
+ (_a = promise.then((result) => {
63
+ data = result;
64
+ return result;
65
+ })) == null ? void 0 : _a.catch(import_utils.noop);
66
+ if (data !== void 0) {
67
+ return { data };
68
+ }
69
+ return void 0;
70
+ }
57
71
  // Annotate the CommonJS export names for ESM import in node:
58
72
  0 && (module.exports = {
59
- pendingThenable
73
+ pendingThenable,
74
+ tryResolveSync
60
75
  });
61
76
  //# sourceMappingURL=thenable.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/thenable.ts"],"sourcesContent":["/**\n * Thenable types which matches React's types for promises\n *\n * React seemingly uses `.status`, `.value` and `.reason` properties on a promises to optimistically unwrap data from promises\n *\n * @see https://github.com/facebook/react/blob/main/packages/shared/ReactTypes.js#L112-L138\n * @see https://github.com/facebook/react/blob/4f604941569d2e8947ce1460a0b2997e835f37b9/packages/react-debug-tools/src/ReactDebugHooks.js#L224-L227\n */\n\ninterface Fulfilled<T> {\n status: 'fulfilled'\n value: T\n}\ninterface Rejected {\n status: 'rejected'\n reason: unknown\n}\ninterface Pending<T> {\n status: 'pending'\n\n /**\n * Resolve the promise with a value.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n resolve: (value: T) => void\n /**\n * Reject the promise with a reason.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n reject: (reason: unknown) => void\n}\n\nexport type FulfilledThenable<T> = Promise<T> & Fulfilled<T>\nexport type RejectedThenable<T> = Promise<T> & Rejected\nexport type PendingThenable<T> = Promise<T> & Pending<T>\n\nexport type Thenable<T> =\n | FulfilledThenable<T>\n | RejectedThenable<T>\n | PendingThenable<T>\n\nexport function pendingThenable<T>(): PendingThenable<T> {\n let resolve: Pending<T>['resolve']\n let reject: Pending<T>['reject']\n // this could use `Promise.withResolvers()` in the future\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as PendingThenable<T>\n\n thenable.status = 'pending'\n thenable.catch(() => {\n // prevent unhandled rejection errors\n })\n\n function finalize(data: Fulfilled<T> | Rejected) {\n Object.assign(thenable, data)\n\n // clear pending props props to avoid calling them twice\n delete (thenable as Partial<PendingThenable<T>>).resolve\n delete (thenable as Partial<PendingThenable<T>>).reject\n }\n\n thenable.resolve = (value) => {\n finalize({\n status: 'fulfilled',\n value,\n })\n\n resolve(value)\n }\n thenable.reject = (reason) => {\n finalize({\n status: 'rejected',\n reason,\n })\n\n reject(reason)\n }\n\n return thenable\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCO,SAAS,kBAAyC;AACvD,MAAI;AACJ,MAAI;AAEJ,QAAM,WAAW,IAAI,QAAQ,CAAC,UAAU,YAAY;AAClD,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AAED,WAAS,SAAS;AAClB,WAAS,MAAM,MAAM;AAAA,EAErB,CAAC;AAED,WAAS,SAAS,MAA+B;AAC/C,WAAO,OAAO,UAAU,IAAI;AAG5B,WAAQ,SAAyC;AACjD,WAAQ,SAAyC;AAAA,EACnD;AAEA,WAAS,UAAU,CAAC,UAAU;AAC5B,aAAS;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,YAAQ,KAAK;AAAA,EACf;AACA,WAAS,SAAS,CAAC,WAAW;AAC5B,aAAS;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AAAA,EACf;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/thenable.ts"],"sourcesContent":["/**\n * Thenable types which matches React's types for promises\n *\n * React seemingly uses `.status`, `.value` and `.reason` properties on a promises to optimistically unwrap data from promises\n *\n * @see https://github.com/facebook/react/blob/main/packages/shared/ReactTypes.js#L112-L138\n * @see https://github.com/facebook/react/blob/4f604941569d2e8947ce1460a0b2997e835f37b9/packages/react-debug-tools/src/ReactDebugHooks.js#L224-L227\n */\n\nimport { noop } from './utils'\n\ninterface Fulfilled<T> {\n status: 'fulfilled'\n value: T\n}\ninterface Rejected {\n status: 'rejected'\n reason: unknown\n}\ninterface Pending<T> {\n status: 'pending'\n\n /**\n * Resolve the promise with a value.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n resolve: (value: T) => void\n /**\n * Reject the promise with a reason.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n reject: (reason: unknown) => void\n}\n\nexport type FulfilledThenable<T> = Promise<T> & Fulfilled<T>\nexport type RejectedThenable<T> = Promise<T> & Rejected\nexport type PendingThenable<T> = Promise<T> & Pending<T>\n\nexport type Thenable<T> =\n | FulfilledThenable<T>\n | RejectedThenable<T>\n | PendingThenable<T>\n\nexport function pendingThenable<T>(): PendingThenable<T> {\n let resolve: Pending<T>['resolve']\n let reject: Pending<T>['reject']\n // this could use `Promise.withResolvers()` in the future\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as PendingThenable<T>\n\n thenable.status = 'pending'\n thenable.catch(() => {\n // prevent unhandled rejection errors\n })\n\n function finalize(data: Fulfilled<T> | Rejected) {\n Object.assign(thenable, data)\n\n // clear pending props props to avoid calling them twice\n delete (thenable as Partial<PendingThenable<T>>).resolve\n delete (thenable as Partial<PendingThenable<T>>).reject\n }\n\n thenable.resolve = (value) => {\n finalize({\n status: 'fulfilled',\n value,\n })\n\n resolve(value)\n }\n thenable.reject = (reason) => {\n finalize({\n status: 'rejected',\n reason,\n })\n\n reject(reason)\n }\n\n return thenable\n}\n\n/**\n * This function takes a Promise-like input and detects whether the data\n * is synchronously available or not.\n *\n * It does not inspect .status, .value or .reason properties of the promise,\n * as those are not always available, and the .status of React's promises\n * should not be considered part of the public API.\n */\nexport function tryResolveSync(promise: Promise<unknown> | Thenable<unknown>) {\n let data: unknown\n\n promise\n .then((result) => {\n data = result\n return result\n })\n // .catch can be unavailable on certain kinds of thenable's\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ?.catch(noop)\n\n if (data !== undefined) {\n return { data }\n }\n\n return undefined\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,mBAAqB;AAkCd,SAAS,kBAAyC;AACvD,MAAI;AACJ,MAAI;AAEJ,QAAM,WAAW,IAAI,QAAQ,CAAC,UAAU,YAAY;AAClD,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AAED,WAAS,SAAS;AAClB,WAAS,MAAM,MAAM;AAAA,EAErB,CAAC;AAED,WAAS,SAAS,MAA+B;AAC/C,WAAO,OAAO,UAAU,IAAI;AAG5B,WAAQ,SAAyC;AACjD,WAAQ,SAAyC;AAAA,EACnD;AAEA,WAAS,UAAU,CAAC,UAAU;AAC5B,aAAS;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,YAAQ,KAAK;AAAA,EACf;AACA,WAAS,SAAS,CAAC,WAAW;AAC5B,aAAS;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AAAA,EACf;AAEA,SAAO;AACT;AAUO,SAAS,eAAe,SAA+C;AA7F9E;AA8FE,MAAI;AAEJ,gBACG,KAAK,CAAC,WAAW;AAChB,WAAO;AACP,WAAO;AAAA,EACT,CAAC,MAJH,mBAOI,MAAM;AAEV,MAAI,SAAS,QAAW;AACtB,WAAO,EAAE,KAAK;AAAA,EAChB;AAEA,SAAO;AACT;","names":[]}