@pyreon/query 0.5.0 → 0.6.0

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.
@@ -5386,7 +5386,7 @@ var drawChart = (function (exports) {
5386
5386
  </script>
5387
5387
  <script>
5388
5388
  /*<!--*/
5389
- const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"56f0aa60-1","name":"query-client.ts"},{"uid":"56f0aa60-3","name":"use-infinite-query.ts"},{"uid":"56f0aa60-5","name":"use-is-fetching.ts"},{"uid":"56f0aa60-7","name":"use-mutation.ts"},{"uid":"56f0aa60-9","name":"use-queries.ts"},{"uid":"56f0aa60-11","name":"use-query.ts"},{"uid":"56f0aa60-13","name":"use-query-error-reset-boundary.ts"},{"uid":"56f0aa60-15","name":"use-subscription.ts"},{"uid":"56f0aa60-17","name":"use-suspense-query.ts"},{"uid":"56f0aa60-19","name":"index.ts"}]}]}],"isRoot":true},"nodeParts":{"56f0aa60-1":{"renderedLength":989,"gzipLength":502,"brotliLength":0,"metaUid":"56f0aa60-0"},"56f0aa60-3":{"renderedLength":2354,"gzipLength":813,"brotliLength":0,"metaUid":"56f0aa60-2"},"56f0aa60-5":{"renderedLength":1002,"gzipLength":397,"brotliLength":0,"metaUid":"56f0aa60-4"},"56f0aa60-7":{"renderedLength":1705,"gzipLength":734,"brotliLength":0,"metaUid":"56f0aa60-6"},"56f0aa60-9":{"renderedLength":929,"gzipLength":504,"brotliLength":0,"metaUid":"56f0aa60-8"},"56f0aa60-11":{"renderedLength":1734,"gzipLength":732,"brotliLength":0,"metaUid":"56f0aa60-10"},"56f0aa60-13":{"renderedLength":1681,"gzipLength":672,"brotliLength":0,"metaUid":"56f0aa60-12"},"56f0aa60-15":{"renderedLength":3571,"gzipLength":1163,"brotliLength":0,"metaUid":"56f0aa60-14"},"56f0aa60-17":{"renderedLength":4400,"gzipLength":1231,"brotliLength":0,"metaUid":"56f0aa60-16"},"56f0aa60-19":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"metaUid":"56f0aa60-18"}},"nodeMetas":{"56f0aa60-0":{"id":"/src/query-client.ts","moduleParts":{"index.js":"56f0aa60-1"},"imported":[{"uid":"56f0aa60-21"}],"importedBy":[{"uid":"56f0aa60-18"},{"uid":"56f0aa60-2"},{"uid":"56f0aa60-4"},{"uid":"56f0aa60-6"},{"uid":"56f0aa60-8"},{"uid":"56f0aa60-10"},{"uid":"56f0aa60-12"},{"uid":"56f0aa60-14"},{"uid":"56f0aa60-16"}]},"56f0aa60-2":{"id":"/src/use-infinite-query.ts","moduleParts":{"index.js":"56f0aa60-3"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-4":{"id":"/src/use-is-fetching.ts","moduleParts":{"index.js":"56f0aa60-5"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-6":{"id":"/src/use-mutation.ts","moduleParts":{"index.js":"56f0aa60-7"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-8":{"id":"/src/use-queries.ts","moduleParts":{"index.js":"56f0aa60-9"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-10":{"id":"/src/use-query.ts","moduleParts":{"index.js":"56f0aa60-11"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-12":{"id":"/src/use-query-error-reset-boundary.ts","moduleParts":{"index.js":"56f0aa60-13"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-14":{"id":"/src/use-subscription.ts","moduleParts":{"index.js":"56f0aa60-15"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-16":{"id":"/src/use-suspense-query.ts","moduleParts":{"index.js":"56f0aa60-17"},"imported":[{"uid":"56f0aa60-21"},{"uid":"56f0aa60-22"},{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"}],"importedBy":[{"uid":"56f0aa60-18"}]},"56f0aa60-18":{"id":"/src/index.ts","moduleParts":{"index.js":"56f0aa60-19"},"imported":[{"uid":"56f0aa60-20"},{"uid":"56f0aa60-0"},{"uid":"56f0aa60-2"},{"uid":"56f0aa60-4"},{"uid":"56f0aa60-6"},{"uid":"56f0aa60-8"},{"uid":"56f0aa60-10"},{"uid":"56f0aa60-12"},{"uid":"56f0aa60-14"},{"uid":"56f0aa60-16"}],"importedBy":[],"isEntry":true},"56f0aa60-20":{"id":"@tanstack/query-core","moduleParts":{},"imported":[],"importedBy":[{"uid":"56f0aa60-18"},{"uid":"56f0aa60-2"},{"uid":"56f0aa60-6"},{"uid":"56f0aa60-8"},{"uid":"56f0aa60-10"},{"uid":"56f0aa60-16"}]},"56f0aa60-21":{"id":"@pyreon/core","moduleParts":{},"imported":[],"importedBy":[{"uid":"56f0aa60-0"},{"uid":"56f0aa60-2"},{"uid":"56f0aa60-4"},{"uid":"56f0aa60-6"},{"uid":"56f0aa60-8"},{"uid":"56f0aa60-10"},{"uid":"56f0aa60-12"},{"uid":"56f0aa60-14"},{"uid":"56f0aa60-16"}]},"56f0aa60-22":{"id":"@pyreon/reactivity","moduleParts":{},"imported":[],"importedBy":[{"uid":"56f0aa60-2"},{"uid":"56f0aa60-4"},{"uid":"56f0aa60-6"},{"uid":"56f0aa60-8"},{"uid":"56f0aa60-10"},{"uid":"56f0aa60-14"},{"uid":"56f0aa60-16"}]}},"env":{"rollup":"4.23.0"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
5389
+ const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"e0f7f694-1","name":"query-client.ts"},{"uid":"e0f7f694-3","name":"use-infinite-query.ts"},{"uid":"e0f7f694-5","name":"use-is-fetching.ts"},{"uid":"e0f7f694-7","name":"use-mutation.ts"},{"uid":"e0f7f694-9","name":"use-queries.ts"},{"uid":"e0f7f694-11","name":"use-query.ts"},{"uid":"e0f7f694-13","name":"use-query-error-reset-boundary.ts"},{"uid":"e0f7f694-15","name":"use-subscription.ts"},{"uid":"e0f7f694-17","name":"use-suspense-query.ts"},{"uid":"e0f7f694-19","name":"index.ts"}]}]}],"isRoot":true},"nodeParts":{"e0f7f694-1":{"renderedLength":938,"gzipLength":477,"brotliLength":0,"metaUid":"e0f7f694-0"},"e0f7f694-3":{"renderedLength":2354,"gzipLength":813,"brotliLength":0,"metaUid":"e0f7f694-2"},"e0f7f694-5":{"renderedLength":1002,"gzipLength":397,"brotliLength":0,"metaUid":"e0f7f694-4"},"e0f7f694-7":{"renderedLength":1705,"gzipLength":734,"brotliLength":0,"metaUid":"e0f7f694-6"},"e0f7f694-9":{"renderedLength":929,"gzipLength":504,"brotliLength":0,"metaUid":"e0f7f694-8"},"e0f7f694-11":{"renderedLength":1734,"gzipLength":732,"brotliLength":0,"metaUid":"e0f7f694-10"},"e0f7f694-13":{"renderedLength":1629,"gzipLength":640,"brotliLength":0,"metaUid":"e0f7f694-12"},"e0f7f694-15":{"renderedLength":3571,"gzipLength":1163,"brotliLength":0,"metaUid":"e0f7f694-14"},"e0f7f694-17":{"renderedLength":4400,"gzipLength":1231,"brotliLength":0,"metaUid":"e0f7f694-16"},"e0f7f694-19":{"renderedLength":0,"gzipLength":0,"brotliLength":0,"metaUid":"e0f7f694-18"}},"nodeMetas":{"e0f7f694-0":{"id":"/src/query-client.ts","moduleParts":{"index.js":"e0f7f694-1"},"imported":[{"uid":"e0f7f694-21"}],"importedBy":[{"uid":"e0f7f694-18"},{"uid":"e0f7f694-2"},{"uid":"e0f7f694-4"},{"uid":"e0f7f694-6"},{"uid":"e0f7f694-8"},{"uid":"e0f7f694-10"},{"uid":"e0f7f694-12"},{"uid":"e0f7f694-14"},{"uid":"e0f7f694-16"}]},"e0f7f694-2":{"id":"/src/use-infinite-query.ts","moduleParts":{"index.js":"e0f7f694-3"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-4":{"id":"/src/use-is-fetching.ts","moduleParts":{"index.js":"e0f7f694-5"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-6":{"id":"/src/use-mutation.ts","moduleParts":{"index.js":"e0f7f694-7"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-8":{"id":"/src/use-queries.ts","moduleParts":{"index.js":"e0f7f694-9"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-10":{"id":"/src/use-query.ts","moduleParts":{"index.js":"e0f7f694-11"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-12":{"id":"/src/use-query-error-reset-boundary.ts","moduleParts":{"index.js":"e0f7f694-13"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-14":{"id":"/src/use-subscription.ts","moduleParts":{"index.js":"e0f7f694-15"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-16":{"id":"/src/use-suspense-query.ts","moduleParts":{"index.js":"e0f7f694-17"},"imported":[{"uid":"e0f7f694-21"},{"uid":"e0f7f694-22"},{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"}],"importedBy":[{"uid":"e0f7f694-18"}]},"e0f7f694-18":{"id":"/src/index.ts","moduleParts":{"index.js":"e0f7f694-19"},"imported":[{"uid":"e0f7f694-20"},{"uid":"e0f7f694-0"},{"uid":"e0f7f694-2"},{"uid":"e0f7f694-4"},{"uid":"e0f7f694-6"},{"uid":"e0f7f694-8"},{"uid":"e0f7f694-10"},{"uid":"e0f7f694-12"},{"uid":"e0f7f694-14"},{"uid":"e0f7f694-16"}],"importedBy":[],"isEntry":true},"e0f7f694-20":{"id":"@tanstack/query-core","moduleParts":{},"imported":[],"importedBy":[{"uid":"e0f7f694-18"},{"uid":"e0f7f694-2"},{"uid":"e0f7f694-6"},{"uid":"e0f7f694-8"},{"uid":"e0f7f694-10"},{"uid":"e0f7f694-16"}]},"e0f7f694-21":{"id":"@pyreon/core","moduleParts":{},"imported":[],"importedBy":[{"uid":"e0f7f694-0"},{"uid":"e0f7f694-2"},{"uid":"e0f7f694-4"},{"uid":"e0f7f694-6"},{"uid":"e0f7f694-8"},{"uid":"e0f7f694-10"},{"uid":"e0f7f694-12"},{"uid":"e0f7f694-14"},{"uid":"e0f7f694-16"}]},"e0f7f694-22":{"id":"@pyreon/reactivity","moduleParts":{},"imported":[],"importedBy":[{"uid":"e0f7f694-2"},{"uid":"e0f7f694-4"},{"uid":"e0f7f694-6"},{"uid":"e0f7f694-8"},{"uid":"e0f7f694-10"},{"uid":"e0f7f694-14"},{"uid":"e0f7f694-16"}]}},"env":{"rollup":"4.23.0"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
5390
5390
 
5391
5391
  const run = () => {
5392
5392
  const width = window.innerWidth;
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CancelledError, InfiniteQueryObserver, MutationCache, MutationObserver, QueriesObserver, QueryCache, QueryClient, QueryObserver, defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hashKey, hydrate, isCancelledError, keepPreviousData } from "@tanstack/query-core";
2
- import { createContext, onMount, onUnmount, popContext, pushContext, useContext } from "@pyreon/core";
2
+ import { createContext, onMount, onUnmount, provide, useContext } from "@pyreon/core";
3
3
  import { batch, effect, signal } from "@pyreon/reactivity";
4
4
 
5
5
  //#region src/query-client.ts
@@ -13,12 +13,11 @@ const QueryClientContext = createContext(null);
13
13
  * mount(h(QueryClientProvider, { client }, h(App, null)), el)
14
14
  */
15
15
  function QueryClientProvider(props) {
16
- pushContext(new Map([[QueryClientContext.id, props.client]]));
16
+ provide(QueryClientContext, props.client);
17
17
  onMount(() => {
18
18
  props.client.mount();
19
19
  return () => props.client.unmount();
20
20
  });
21
- onUnmount(() => popContext());
22
21
  const ch = props.children;
23
22
  return typeof ch === "function" ? ch() : ch;
24
23
  }
@@ -28,7 +27,7 @@ function QueryClientProvider(props) {
28
27
  */
29
28
  function useQueryClient() {
30
29
  const client = useContext(QueryClientContext);
31
- if (!client) throw new Error("[pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.");
30
+ if (!client) throw new Error("[@pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.");
32
31
  return client;
33
32
  }
34
33
 
@@ -317,10 +316,9 @@ const QueryErrorResetBoundaryContext = createContext(null);
317
316
  */
318
317
  function QueryErrorResetBoundary(props) {
319
318
  const client = useQueryClient();
320
- pushContext(new Map([[QueryErrorResetBoundaryContext.id, { reset: () => {
319
+ provide(QueryErrorResetBoundaryContext, { reset: () => {
321
320
  client.refetchQueries({ predicate: (query) => query.state.status === "error" });
322
- } }]]));
323
- onUnmount(() => popContext());
321
+ } });
324
322
  const ch = props.children;
325
323
  return typeof ch === "function" ? ch() : ch;
326
324
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/query-client.ts","../src/use-infinite-query.ts","../src/use-is-fetching.ts","../src/use-mutation.ts","../src/use-queries.ts","../src/use-query.ts","../src/use-query-error-reset-boundary.ts","../src/use-subscription.ts","../src/use-suspense-query.ts"],"sourcesContent":["import type { Props, VNode, VNodeChild } from '@pyreon/core'\nimport {\n createContext,\n onMount,\n onUnmount,\n popContext,\n pushContext,\n useContext,\n} from '@pyreon/core'\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport interface QueryClientProviderProps extends Props {\n client: QueryClient\n children?: VNodeChild\n}\n\nexport const QueryClientContext = createContext<QueryClient | null>(null)\n\n/**\n * Provides a QueryClient to all descendant components via context.\n * Wrap your app root with this to enable useQuery / useMutation throughout the tree.\n *\n * @example\n * const client = new QueryClient()\n * mount(h(QueryClientProvider, { client }, h(App, null)), el)\n */\nexport function QueryClientProvider(props: QueryClientProviderProps): VNode {\n // Push synchronously so all descendant component functions see the context.\n // Pop on unmount (matches the HeadProvider pattern in @pyreon/head).\n const frame = new Map([[QueryClientContext.id, props.client]])\n pushContext(frame)\n\n // client.mount() activates window focus refetching and online/offline handling.\n // client.unmount() unsubscribes focusManager + onlineManager when the provider leaves the tree.\n onMount(() => {\n props.client.mount()\n return () => props.client.unmount()\n })\n\n onUnmount(() => popContext())\n\n const ch = props.children\n return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode\n}\n\n/**\n * Returns the nearest QueryClient provided by <QueryClientProvider>.\n * Throws if called outside of one.\n */\nexport function useQueryClient(): QueryClient {\n const client = useContext(QueryClientContext)\n if (!client) {\n throw new Error(\n '[pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.',\n )\n }\n return client\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseInfiniteQueryResult<TQueryFnData, TError = DefaultError> {\n /** Raw signal — full observer result. */\n result: Signal<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n data: Signal<InfiniteData<TQueryFnData> | undefined>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isLoading: Signal<boolean>\n isFetching: Signal<boolean>\n isFetchingNextPage: Signal<boolean>\n isFetchingPreviousPage: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n hasNextPage: Signal<boolean>\n hasPreviousPage: Signal<boolean>\n fetchNextPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n fetchPreviousPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n refetch: () => Promise<\n QueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n}\n\n/**\n * Subscribe to a paginated / infinite-scroll query.\n * Returns fine-grained reactive signals plus `fetchNextPage`, `fetchPreviousPage`,\n * `hasNextPage` and `hasPreviousPage`.\n *\n * @example\n * const query = useInfiniteQuery(() => ({\n * queryKey: ['posts'],\n * queryFn: ({ pageParam }) => fetchPosts(pageParam as number),\n * initialPageParam: 0,\n * getNextPageParam: (lastPage) => lastPage.nextCursor,\n * }))\n * // query.data()?.pages — array of pages\n * // h('button', { onClick: () => query.fetchNextPage() }, 'Load more')\n */\nexport function useInfiniteQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: () => InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >,\n): UseInfiniteQueryResult<TQueryFnData, TError> {\n const client = useQueryClient()\n const observer = new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >(client, options())\n const initial = observer.getCurrentResult()\n\n const resultSig = signal(initial)\n const dataSig = signal<InfiniteData<TQueryFnData> | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal(initial.status)\n const isPending = signal(initial.isPending)\n const isLoading = signal(initial.isLoading)\n const isFetching = signal(initial.isFetching)\n const isFetchingNextPage = signal(initial.isFetchingNextPage)\n const isFetchingPreviousPage = signal(initial.isFetchingPreviousPage)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n const hasNextPage = signal(initial.hasNextPage)\n const hasPreviousPage = signal(initial.hasPreviousPage)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isLoading.set(r.isLoading)\n isFetching.set(r.isFetching)\n isFetchingNextPage.set(r.isFetchingNextPage)\n isFetchingPreviousPage.set(r.isFetchingPreviousPage)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n hasNextPage.set(r.hasNextPage)\n hasPreviousPage.set(r.hasPreviousPage)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isLoading,\n isFetching,\n isFetchingNextPage,\n isFetchingPreviousPage,\n isError,\n isSuccess,\n hasNextPage,\n hasPreviousPage,\n fetchNextPage: () => observer.fetchNextPage(),\n fetchPreviousPage: () => observer.fetchPreviousPage(),\n refetch: () => observer.refetch(),\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { signal } from '@pyreon/reactivity'\nimport type { MutationFilters, QueryFilters } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n/**\n * Returns a signal that tracks how many queries are currently in-flight.\n * Useful for global loading indicators.\n *\n * @example\n * const fetching = useIsFetching()\n * // h('span', null, () => fetching() > 0 ? 'Loading…' : '')\n */\nexport function useIsFetching(filters?: QueryFilters): Signal<number> {\n const client = useQueryClient()\n const count = signal(client.isFetching(filters))\n\n const unsub = client.getQueryCache().subscribe(() => {\n count.set(client.isFetching(filters))\n })\n onUnmount(() => unsub())\n\n return count\n}\n\n/**\n * Returns a signal that tracks how many mutations are currently in-flight.\n *\n * @example\n * const mutating = useIsMutating()\n * // h('span', null, () => mutating() > 0 ? 'Saving…' : '')\n */\nexport function useIsMutating(filters?: MutationFilters): Signal<number> {\n const client = useQueryClient()\n const count = signal(client.isMutating(filters))\n\n const unsub = client.getMutationCache().subscribe(() => {\n count.set(client.isMutating(filters))\n })\n onUnmount(() => unsub())\n\n return count\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n MutateFunction,\n MutationObserverOptions,\n MutationObserverResult,\n} from '@tanstack/query-core'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseMutationResult<\n TData,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> {\n /** Raw signal — full observer result. Fine-grained accessors below are preferred. */\n result: Signal<MutationObserverResult<TData, TError, TVariables, TContext>>\n data: Signal<TData | undefined>\n error: Signal<TError | null>\n status: Signal<'idle' | 'pending' | 'success' | 'error'>\n isPending: Signal<boolean>\n isSuccess: Signal<boolean>\n isError: Signal<boolean>\n isIdle: Signal<boolean>\n /** Fire the mutation (fire-and-forget). Errors are captured in the error signal. */\n mutate: (\n variables: TVariables,\n options?: Parameters<\n MutateFunction<TData, TError, TVariables, TContext>\n >[1],\n ) => void\n /** Like mutate but returns a promise — use for try/catch error handling. */\n mutateAsync: MutateFunction<TData, TError, TVariables, TContext>\n /** Reset the mutation state back to idle. */\n reset: () => void\n}\n\n/**\n * Run a mutation (create / update / delete). Returns reactive signals for\n * pending / success / error state plus `mutate` and `mutateAsync` functions.\n *\n * @example\n * const mutation = useMutation({\n * mutationFn: (data: CreatePostInput) =>\n * fetch('/api/posts', { method: 'POST', body: JSON.stringify(data) }).then(r => r.json()),\n * onSuccess: () => client.invalidateQueries({ queryKey: ['posts'] }),\n * })\n * // h('button', { onClick: () => mutation.mutate({ title: 'New' }) }, 'Create')\n */\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n): UseMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient()\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options,\n )\n const initial = observer.getCurrentResult()\n\n // Fine-grained signals: each field is independent so only effects that read\n // e.g. `mutation.isPending()` re-run when isPending changes, not on every update.\n const resultSig =\n signal<MutationObserverResult<TData, TError, TVariables, TContext>>(initial)\n const dataSig = signal<TData | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'idle' | 'pending' | 'success' | 'error'>(\n initial.status,\n )\n const isPending = signal(initial.isPending)\n const isSuccess = signal(initial.isSuccess)\n const isError = signal(initial.isError)\n const isIdle = signal(initial.isIdle)\n\n // batch() coalesces all signal updates into one notification flush.\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isSuccess.set(r.isSuccess)\n isError.set(r.isError)\n isIdle.set(r.isIdle)\n })\n })\n\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isSuccess,\n isError,\n isIdle,\n mutate: (vars, callbackOptions) => {\n observer.mutate(vars, callbackOptions).catch(() => {\n // Error is already captured in the error signal via the observer subscription.\n // This catch prevents an unhandled promise rejection for fire-and-forget callers.\n })\n },\n mutateAsync: (vars, callbackOptions) =>\n observer.mutate(vars, callbackOptions),\n reset: () => observer.reset(),\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { QueriesObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport type UseQueriesOptions<TQueryKey extends QueryKey = QueryKey> =\n QueryObserverOptions<unknown, DefaultError, unknown, unknown, TQueryKey>\n\n/**\n * Subscribe to multiple queries in parallel. Returns a single signal containing\n * the array of results — index-aligned with the `queries` array.\n *\n * `queries` is a reactive function so signal-based keys trigger re-evaluation\n * automatically.\n *\n * @example\n * const userIds = signal([1, 2, 3])\n * const results = useQueries(() =>\n * userIds().map(id => ({\n * queryKey: ['user', id],\n * queryFn: () => fetchUser(id),\n * }))\n * )\n * // results() — QueryObserverResult[]\n * // results()[0].data — first user\n */\nexport function useQueries(\n queries: () => UseQueriesOptions[],\n): Signal<QueryObserverResult[]> {\n const client = useQueryClient()\n const observer = new QueriesObserver(client, queries())\n\n const resultSig = signal(\n observer.getCurrentResult() as readonly QueryObserverResult[],\n ) as Signal<QueryObserverResult[]>\n\n const unsub = observer.subscribe(\n (results: readonly QueryObserverResult[]) => {\n resultSig.set(results as QueryObserverResult[])\n },\n )\n\n // When signals inside queries() change, update the observer.\n effect(() => {\n observer.setQueries(queries())\n })\n\n onUnmount(() => {\n unsub()\n observer.destroy()\n })\n\n return resultSig\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseQueryResult<TData, TError = DefaultError> {\n /** Raw signal — the full observer result. Fine-grained accessors below are preferred. */\n result: Signal<QueryObserverResult<TData, TError>>\n data: Signal<TData | undefined>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isLoading: Signal<boolean>\n isFetching: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n /** Manually trigger a refetch. */\n refetch: () => Promise<QueryObserverResult<TData, TError>>\n}\n\n/**\n * Subscribe to a query. Returns fine-grained reactive signals for data,\n * error and status — each signal only notifies effects that depend on it.\n *\n * `options` is a function so it can read Pyreon signals — when a signal changes\n * (e.g. a reactive query key), the observer is updated and refetches automatically.\n *\n * @example\n * const userId = signal(1)\n * const query = useQuery(() => ({\n * queryKey: ['user', userId()],\n * queryFn: () => fetch(`/api/users/${userId()}`).then(r => r.json()),\n * }))\n * // In template: () => query.data()?.name\n */\nexport function useQuery<\n TData = unknown,\n TError = DefaultError,\n TKey extends QueryKey = QueryKey,\n>(\n options: () => QueryObserverOptions<TData, TError, TData, TData, TKey>,\n): UseQueryResult<TData, TError> {\n const client = useQueryClient()\n const observer = new QueryObserver<TData, TError, TData, TData, TKey>(\n client,\n options(),\n )\n const initial = observer.getCurrentResult()\n\n // Fine-grained signals: each field is independent so only effects that read\n // e.g. `query.data()` re-run when data changes, not when isFetching flips.\n const resultSig = signal<QueryObserverResult<TData, TError>>(initial)\n const dataSig = signal<TData | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'pending' | 'error' | 'success'>(initial.status)\n const isPending = signal(initial.isPending)\n const isLoading = signal(initial.isLoading)\n const isFetching = signal(initial.isFetching)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n\n // Subscribe synchronously — data flows before mount (correct for SSR pre-population).\n // batch() coalesces all signal updates into one notification flush.\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isLoading.set(r.isLoading)\n isFetching.set(r.isFetching)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n })\n })\n\n // Track reactive options: when signals inside options() change, update the observer.\n // effect() is auto-registered in the component's EffectScope → auto-disposed on unmount.\n effect(() => {\n observer.setOptions(options())\n })\n\n // Unsubscribe the observer on unmount (effect disposal is handled by EffectScope).\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isLoading,\n isFetching,\n isError,\n isSuccess,\n refetch: () => observer.refetch(),\n }\n}\n","import type { Props, VNode, VNodeChild } from '@pyreon/core'\nimport {\n createContext,\n onUnmount,\n popContext,\n pushContext,\n useContext,\n} from '@pyreon/core'\nimport { useQueryClient } from './query-client'\n\n// ─── Context ────────────────────────────────────────────────────────────────\n\ninterface ErrorResetBoundaryValue {\n reset: () => void\n}\n\nconst QueryErrorResetBoundaryContext =\n createContext<ErrorResetBoundaryValue | null>(null)\n\n// ─── QueryErrorResetBoundary ─────────────────────────────────────────────────\n\nexport interface QueryErrorResetBoundaryProps extends Props {\n children?: VNodeChild\n}\n\n/**\n * Wraps a subtree so that `useQueryErrorResetBoundary()` descendants can reset\n * all errored queries within this boundary.\n *\n * Pair with Pyreon's `ErrorBoundary` to retry failed queries when the user\n * dismisses the error fallback:\n *\n * @example\n * h(QueryErrorResetBoundary, null,\n * h(ErrorBoundary, {\n * fallback: (err, boundaryReset) => {\n * const { reset } = useQueryErrorResetBoundary()\n * return h('button', {\n * onClick: () => { reset(); boundaryReset() },\n * }, 'Retry')\n * },\n * }, h(MyComponent, null)),\n * )\n */\nexport function QueryErrorResetBoundary(\n props: QueryErrorResetBoundaryProps,\n): VNode {\n const client = useQueryClient()\n\n const value: ErrorResetBoundaryValue = {\n reset: () => {\n // Reset all active queries that are in error state so they refetch.\n client.refetchQueries({\n predicate: (query) => query.state.status === 'error',\n })\n },\n }\n\n const frame = new Map([[QueryErrorResetBoundaryContext.id, value]])\n pushContext(frame)\n onUnmount(() => popContext())\n\n const ch = props.children\n return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode\n}\n\n// ─── useQueryErrorResetBoundary ──────────────────────────────────────────────\n\n/**\n * Returns the `reset` function provided by the nearest `QueryErrorResetBoundary`.\n * If called outside a boundary, falls back to resetting all errored queries\n * on the current `QueryClient`.\n *\n * @example\n * // Inside an ErrorBoundary fallback:\n * const { reset } = useQueryErrorResetBoundary()\n * h('button', { onClick: () => { reset(); boundaryReset() } }, 'Retry')\n */\nexport function useQueryErrorResetBoundary(): ErrorResetBoundaryValue {\n const boundary = useContext(QueryErrorResetBoundaryContext)\n // Always call useQueryClient to respect hook ordering rules\n const client = useQueryClient()\n\n if (boundary) return boundary\n\n // Fallback: no explicit boundary — use the QueryClient directly.\n return {\n reset: () => {\n client.refetchQueries({\n predicate: (query) => query.state.status === 'error',\n })\n },\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type { QueryClient } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport type SubscriptionStatus =\n | 'connecting'\n | 'connected'\n | 'disconnected'\n | 'error'\n\nexport interface UseSubscriptionOptions {\n /** WebSocket URL — can be a signal for reactive URLs */\n url: string | (() => string)\n /** WebSocket sub-protocols */\n protocols?: string | string[]\n /** Called when a message is received — use queryClient to invalidate or update cache */\n onMessage: (event: MessageEvent, queryClient: QueryClient) => void\n /** Called when the connection opens */\n onOpen?: (event: Event) => void\n /** Called when the connection closes */\n onClose?: (event: CloseEvent) => void\n /** Called when a connection error occurs */\n onError?: (event: Event) => void\n /** Whether to automatically reconnect — default: true */\n reconnect?: boolean\n /** Initial reconnect delay in ms — doubles on each retry, default: 1000 */\n reconnectDelay?: number\n /** Maximum reconnect attempts — default: 10, 0 = unlimited */\n maxReconnectAttempts?: number\n /** Whether the subscription is enabled — default: true */\n enabled?: boolean | (() => boolean)\n}\n\nexport interface UseSubscriptionResult {\n /** Current connection status */\n status: Signal<SubscriptionStatus>\n /** Send data through the WebSocket */\n send: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => void\n /** Manually close the connection */\n close: () => void\n /** Manually reconnect */\n reconnect: () => void\n}\n\n// ─── useSubscription ─────────────────────────────────────────────────────────\n\n/**\n * Reactive WebSocket subscription that integrates with TanStack Query.\n * Automatically manages connection lifecycle, reconnection, and cleanup.\n *\n * Use the `onMessage` callback to invalidate or update query cache\n * when the server pushes data.\n *\n * @example\n * ```ts\n * const sub = useSubscription({\n * url: 'wss://api.example.com/ws',\n * onMessage: (event, queryClient) => {\n * const data = JSON.parse(event.data)\n * if (data.type === 'order-updated') {\n * queryClient.invalidateQueries({ queryKey: ['orders'] })\n * }\n * },\n * })\n * // sub.status() — 'connecting' | 'connected' | 'disconnected' | 'error'\n * // sub.send(JSON.stringify({ type: 'subscribe', channel: 'orders' }))\n * ```\n */\nexport function useSubscription(\n options: UseSubscriptionOptions,\n): UseSubscriptionResult {\n const queryClient = useQueryClient()\n const status = signal<SubscriptionStatus>('disconnected')\n\n let ws: WebSocket | null = null\n let reconnectAttempts = 0\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null\n let intentionalClose = false\n\n const reconnectEnabled = options.reconnect !== false\n const baseDelay = options.reconnectDelay ?? 1000\n const maxAttempts = options.maxReconnectAttempts ?? 10\n\n function getUrl(): string {\n return typeof options.url === 'function' ? options.url() : options.url\n }\n\n function isEnabled(): boolean {\n if (options.enabled === undefined) return true\n return typeof options.enabled === 'function'\n ? options.enabled()\n : options.enabled\n }\n\n function connect(): void {\n if (ws) {\n ws.onopen = null\n ws.onmessage = null\n ws.onclose = null\n ws.onerror = null\n if (\n ws.readyState === WebSocket.OPEN ||\n ws.readyState === WebSocket.CONNECTING\n ) {\n ws.close()\n }\n }\n\n if (!isEnabled()) {\n status.set('disconnected')\n return\n }\n\n status.set('connecting')\n\n try {\n ws = options.protocols\n ? new WebSocket(getUrl(), options.protocols)\n : new WebSocket(getUrl())\n } catch {\n status.set('error')\n scheduleReconnect()\n return\n }\n\n ws.onopen = (event) => {\n batch(() => {\n status.set('connected')\n reconnectAttempts = 0\n })\n options.onOpen?.(event)\n }\n\n ws.onmessage = (event) => {\n options.onMessage(event, queryClient)\n }\n\n ws.onclose = (event) => {\n status.set('disconnected')\n options.onClose?.(event)\n\n if (!intentionalClose && reconnectEnabled) {\n scheduleReconnect()\n }\n }\n\n ws.onerror = (event) => {\n status.set('error')\n options.onError?.(event)\n }\n }\n\n function scheduleReconnect(): void {\n if (!reconnectEnabled) return\n if (maxAttempts > 0 && reconnectAttempts >= maxAttempts) return\n\n const delay = baseDelay * 2 ** reconnectAttempts\n reconnectAttempts++\n\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null\n if (!intentionalClose && isEnabled()) {\n connect()\n }\n }, delay)\n }\n\n function send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void {\n if (ws?.readyState === WebSocket.OPEN) {\n ws.send(data)\n }\n }\n\n function close(): void {\n intentionalClose = true\n if (reconnectTimer !== null) {\n clearTimeout(reconnectTimer)\n reconnectTimer = null\n }\n if (ws) {\n ws.onopen = null\n ws.onmessage = null\n ws.onclose = null\n ws.onerror = null\n if (\n ws.readyState === WebSocket.OPEN ||\n ws.readyState === WebSocket.CONNECTING\n ) {\n ws.close()\n }\n ws = null\n }\n status.set('disconnected')\n }\n\n function manualReconnect(): void {\n intentionalClose = false\n reconnectAttempts = 0\n connect()\n }\n\n // Track reactive URL and enabled state\n effect(() => {\n // Read reactive values to subscribe to changes\n if (typeof options.url === 'function') options.url()\n if (typeof options.enabled === 'function') options.enabled()\n\n intentionalClose = false\n reconnectAttempts = 0\n connect()\n })\n\n // Cleanup on unmount\n onUnmount(() => close())\n\n return {\n status,\n send,\n close,\n reconnect: manualReconnect,\n }\n}\n","import type { VNodeChild, VNodeChildAtom } from '@pyreon/core'\nimport { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver, QueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n// ─── Types ─────────────────────────────────────────────────────────────────\n\n/**\n * Like `UseQueryResult` but `data` is `Signal<TData>` (never undefined).\n * Only use inside a `QuerySuspense` boundary which guarantees the query has\n * succeeded before children are rendered.\n */\nexport interface UseSuspenseQueryResult<TData, TError = DefaultError> {\n result: Signal<QueryObserverResult<TData, TError>>\n /** Always TData — never undefined inside a QuerySuspense boundary. */\n data: Signal<TData>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isFetching: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n refetch: () => Promise<QueryObserverResult<TData, TError>>\n}\n\nexport interface UseSuspenseInfiniteQueryResult<\n TQueryFnData,\n TError = DefaultError,\n> {\n result: Signal<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n /** Always InfiniteData<TQueryFnData> — never undefined inside a QuerySuspense boundary. */\n data: Signal<InfiniteData<TQueryFnData>>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isFetching: Signal<boolean>\n isFetchingNextPage: Signal<boolean>\n isFetchingPreviousPage: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n hasNextPage: Signal<boolean>\n hasPreviousPage: Signal<boolean>\n fetchNextPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n fetchPreviousPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n refetch: () => Promise<\n QueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n}\n\n// ─── QuerySuspense ──────────────────────────────────────────────────────────\n\ntype AnyQueryLike = {\n isPending: Signal<boolean>\n isError: Signal<boolean>\n error: Signal<unknown>\n}\n\nexport interface QuerySuspenseProps {\n /**\n * A single query result (or array of them) to gate on.\n * Children only render when ALL queries have succeeded.\n */\n query: AnyQueryLike | AnyQueryLike[]\n /** Rendered while any query is pending. */\n fallback?: VNodeChild\n /** Rendered when any query has errored. Defaults to re-throwing to nearest ErrorBoundary. */\n error?: (err: unknown) => VNodeChild\n children: VNodeChild\n}\n\n/**\n * Pyreon-native Suspense boundary for queries. Shows `fallback` while any query\n * is pending. On error, renders the `error` fallback or re-throws to the\n * nearest Pyreon `ErrorBoundary`.\n *\n * Pair with `useSuspenseQuery` / `useSuspenseInfiniteQuery` to get non-undefined\n * `data` types inside children.\n *\n * @example\n * const userQuery = useSuspenseQuery(() => ({ queryKey: ['user'], queryFn: fetchUser }))\n *\n * h(QuerySuspense, {\n * query: userQuery,\n * fallback: h(Spinner, null),\n * error: (err) => h('p', null, `Failed: ${err}`),\n * }, () => h(UserProfile, { user: userQuery.data() }))\n */\nexport function QuerySuspense(props: QuerySuspenseProps): VNodeChild {\n return (): VNodeChildAtom => {\n const queries = Array.isArray(props.query) ? props.query : [props.query]\n\n // Error state — use provided error fallback or re-throw to ErrorBoundary\n for (const q of queries) {\n if (q.isError()) {\n const err = q.error()\n if (props.error) {\n return props.error(err) as VNodeChildAtom\n }\n throw err\n }\n }\n\n // Pending state — show fallback\n if (queries.some((q) => q.isPending())) {\n const fb = props.fallback\n return (\n typeof fb === 'function' ? (fb as () => VNodeChildAtom)() : (fb ?? null)\n ) as VNodeChildAtom\n }\n\n // All success — render children\n const ch = props.children\n return (\n typeof ch === 'function' ? (ch as () => VNodeChildAtom)() : ch\n ) as VNodeChildAtom\n }\n}\n\n// ─── useSuspenseQuery ───────────────────────────────────────────────────────\n\n/**\n * Like `useQuery` but `data` is typed as `Signal<TData>` (never undefined).\n * Designed for use inside a `QuerySuspense` boundary, which guarantees\n * children only render after the query succeeds.\n *\n * @example\n * const user = useSuspenseQuery(() => ({ queryKey: ['user', id()], queryFn: fetchUser }))\n *\n * h(QuerySuspense, { query: user, fallback: h(Spinner, null) },\n * () => h(UserCard, { name: user.data().name }),\n * )\n */\nexport function useSuspenseQuery<\n TData = unknown,\n TError = DefaultError,\n TKey extends QueryKey = QueryKey,\n>(\n options: () => QueryObserverOptions<TData, TError, TData, TData, TKey>,\n): UseSuspenseQueryResult<TData, TError> {\n const client = useQueryClient()\n const observer = new QueryObserver<TData, TError, TData, TData, TKey>(\n client,\n options(),\n )\n const initial = observer.getCurrentResult()\n\n const resultSig = signal<QueryObserverResult<TData, TError>>(initial)\n const dataSig = signal<TData>(initial.data as TData)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'pending' | 'error' | 'success'>(initial.status)\n const isPending = signal(initial.isPending)\n const isFetching = signal(initial.isFetching)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n if (r.data !== undefined) dataSig.set(r.data as TData)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isFetching.set(r.isFetching)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isFetching,\n isError,\n isSuccess,\n refetch: () => observer.refetch(),\n }\n}\n\n// ─── useSuspenseInfiniteQuery ───────────────────────────────────────────────\n\n/**\n * Like `useInfiniteQuery` but `data` is typed as `Signal<InfiniteData<TData>>`\n * (never undefined). Use inside a `QuerySuspense` boundary.\n */\nexport function useSuspenseInfiniteQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: () => InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >,\n): UseSuspenseInfiniteQueryResult<TQueryFnData, TError> {\n const client = useQueryClient()\n const observer = new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >(client, options())\n const initial = observer.getCurrentResult()\n\n const resultSig = signal(initial)\n const dataSig = signal(initial.data as InfiniteData<TQueryFnData>)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal(initial.status)\n const isFetching = signal(initial.isFetching)\n const isFetchingNextPage = signal(initial.isFetchingNextPage)\n const isFetchingPreviousPage = signal(initial.isFetchingPreviousPage)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n const hasNextPage = signal(initial.hasNextPage)\n const hasPreviousPage = signal(initial.hasPreviousPage)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n if (r.data !== undefined) dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isFetching.set(r.isFetching)\n isFetchingNextPage.set(r.isFetchingNextPage)\n isFetchingPreviousPage.set(r.isFetchingPreviousPage)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n hasNextPage.set(r.hasNextPage)\n hasPreviousPage.set(r.hasPreviousPage)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isFetching,\n isFetchingNextPage,\n isFetchingPreviousPage,\n isError,\n isSuccess,\n hasNextPage,\n hasPreviousPage,\n fetchNextPage: () => observer.fetchNextPage(),\n fetchPreviousPage: () => observer.fetchPreviousPage(),\n refetch: () => observer.refetch(),\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/query-client.ts","../src/use-infinite-query.ts","../src/use-is-fetching.ts","../src/use-mutation.ts","../src/use-queries.ts","../src/use-query.ts","../src/use-query-error-reset-boundary.ts","../src/use-subscription.ts","../src/use-suspense-query.ts"],"sourcesContent":["import type { Props, VNode, VNodeChild } from '@pyreon/core'\nimport { createContext, onMount, provide, useContext } from '@pyreon/core'\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport interface QueryClientProviderProps extends Props {\n client: QueryClient\n children?: VNodeChild\n}\n\nexport const QueryClientContext = createContext<QueryClient | null>(null)\n\n/**\n * Provides a QueryClient to all descendant components via context.\n * Wrap your app root with this to enable useQuery / useMutation throughout the tree.\n *\n * @example\n * const client = new QueryClient()\n * mount(h(QueryClientProvider, { client }, h(App, null)), el)\n */\nexport function QueryClientProvider(props: QueryClientProviderProps): VNode {\n provide(QueryClientContext, props.client)\n\n // client.mount() activates window focus refetching and online/offline handling.\n // client.unmount() unsubscribes focusManager + onlineManager when the provider leaves the tree.\n onMount(() => {\n props.client.mount()\n return () => props.client.unmount()\n })\n\n const ch = props.children\n return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode\n}\n\n/**\n * Returns the nearest QueryClient provided by <QueryClientProvider>.\n * Throws if called outside of one.\n */\nexport function useQueryClient(): QueryClient {\n const client = useContext(QueryClientContext)\n if (!client) {\n throw new Error(\n '[@pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.',\n )\n }\n return client\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseInfiniteQueryResult<TQueryFnData, TError = DefaultError> {\n /** Raw signal — full observer result. */\n result: Signal<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n data: Signal<InfiniteData<TQueryFnData> | undefined>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isLoading: Signal<boolean>\n isFetching: Signal<boolean>\n isFetchingNextPage: Signal<boolean>\n isFetchingPreviousPage: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n hasNextPage: Signal<boolean>\n hasPreviousPage: Signal<boolean>\n fetchNextPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n fetchPreviousPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n refetch: () => Promise<\n QueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n}\n\n/**\n * Subscribe to a paginated / infinite-scroll query.\n * Returns fine-grained reactive signals plus `fetchNextPage`, `fetchPreviousPage`,\n * `hasNextPage` and `hasPreviousPage`.\n *\n * @example\n * const query = useInfiniteQuery(() => ({\n * queryKey: ['posts'],\n * queryFn: ({ pageParam }) => fetchPosts(pageParam as number),\n * initialPageParam: 0,\n * getNextPageParam: (lastPage) => lastPage.nextCursor,\n * }))\n * // query.data()?.pages — array of pages\n * // h('button', { onClick: () => query.fetchNextPage() }, 'Load more')\n */\nexport function useInfiniteQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: () => InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >,\n): UseInfiniteQueryResult<TQueryFnData, TError> {\n const client = useQueryClient()\n const observer = new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >(client, options())\n const initial = observer.getCurrentResult()\n\n const resultSig = signal(initial)\n const dataSig = signal<InfiniteData<TQueryFnData> | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal(initial.status)\n const isPending = signal(initial.isPending)\n const isLoading = signal(initial.isLoading)\n const isFetching = signal(initial.isFetching)\n const isFetchingNextPage = signal(initial.isFetchingNextPage)\n const isFetchingPreviousPage = signal(initial.isFetchingPreviousPage)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n const hasNextPage = signal(initial.hasNextPage)\n const hasPreviousPage = signal(initial.hasPreviousPage)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isLoading.set(r.isLoading)\n isFetching.set(r.isFetching)\n isFetchingNextPage.set(r.isFetchingNextPage)\n isFetchingPreviousPage.set(r.isFetchingPreviousPage)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n hasNextPage.set(r.hasNextPage)\n hasPreviousPage.set(r.hasPreviousPage)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isLoading,\n isFetching,\n isFetchingNextPage,\n isFetchingPreviousPage,\n isError,\n isSuccess,\n hasNextPage,\n hasPreviousPage,\n fetchNextPage: () => observer.fetchNextPage(),\n fetchPreviousPage: () => observer.fetchPreviousPage(),\n refetch: () => observer.refetch(),\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { signal } from '@pyreon/reactivity'\nimport type { MutationFilters, QueryFilters } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n/**\n * Returns a signal that tracks how many queries are currently in-flight.\n * Useful for global loading indicators.\n *\n * @example\n * const fetching = useIsFetching()\n * // h('span', null, () => fetching() > 0 ? 'Loading…' : '')\n */\nexport function useIsFetching(filters?: QueryFilters): Signal<number> {\n const client = useQueryClient()\n const count = signal(client.isFetching(filters))\n\n const unsub = client.getQueryCache().subscribe(() => {\n count.set(client.isFetching(filters))\n })\n onUnmount(() => unsub())\n\n return count\n}\n\n/**\n * Returns a signal that tracks how many mutations are currently in-flight.\n *\n * @example\n * const mutating = useIsMutating()\n * // h('span', null, () => mutating() > 0 ? 'Saving…' : '')\n */\nexport function useIsMutating(filters?: MutationFilters): Signal<number> {\n const client = useQueryClient()\n const count = signal(client.isMutating(filters))\n\n const unsub = client.getMutationCache().subscribe(() => {\n count.set(client.isMutating(filters))\n })\n onUnmount(() => unsub())\n\n return count\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n MutateFunction,\n MutationObserverOptions,\n MutationObserverResult,\n} from '@tanstack/query-core'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseMutationResult<\n TData,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> {\n /** Raw signal — full observer result. Fine-grained accessors below are preferred. */\n result: Signal<MutationObserverResult<TData, TError, TVariables, TContext>>\n data: Signal<TData | undefined>\n error: Signal<TError | null>\n status: Signal<'idle' | 'pending' | 'success' | 'error'>\n isPending: Signal<boolean>\n isSuccess: Signal<boolean>\n isError: Signal<boolean>\n isIdle: Signal<boolean>\n /** Fire the mutation (fire-and-forget). Errors are captured in the error signal. */\n mutate: (\n variables: TVariables,\n options?: Parameters<\n MutateFunction<TData, TError, TVariables, TContext>\n >[1],\n ) => void\n /** Like mutate but returns a promise — use for try/catch error handling. */\n mutateAsync: MutateFunction<TData, TError, TVariables, TContext>\n /** Reset the mutation state back to idle. */\n reset: () => void\n}\n\n/**\n * Run a mutation (create / update / delete). Returns reactive signals for\n * pending / success / error state plus `mutate` and `mutateAsync` functions.\n *\n * @example\n * const mutation = useMutation({\n * mutationFn: (data: CreatePostInput) =>\n * fetch('/api/posts', { method: 'POST', body: JSON.stringify(data) }).then(r => r.json()),\n * onSuccess: () => client.invalidateQueries({ queryKey: ['posts'] }),\n * })\n * // h('button', { onClick: () => mutation.mutate({ title: 'New' }) }, 'Create')\n */\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n): UseMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient()\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options,\n )\n const initial = observer.getCurrentResult()\n\n // Fine-grained signals: each field is independent so only effects that read\n // e.g. `mutation.isPending()` re-run when isPending changes, not on every update.\n const resultSig =\n signal<MutationObserverResult<TData, TError, TVariables, TContext>>(initial)\n const dataSig = signal<TData | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'idle' | 'pending' | 'success' | 'error'>(\n initial.status,\n )\n const isPending = signal(initial.isPending)\n const isSuccess = signal(initial.isSuccess)\n const isError = signal(initial.isError)\n const isIdle = signal(initial.isIdle)\n\n // batch() coalesces all signal updates into one notification flush.\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isSuccess.set(r.isSuccess)\n isError.set(r.isError)\n isIdle.set(r.isIdle)\n })\n })\n\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isSuccess,\n isError,\n isIdle,\n mutate: (vars, callbackOptions) => {\n observer.mutate(vars, callbackOptions).catch(() => {\n // Error is already captured in the error signal via the observer subscription.\n // This catch prevents an unhandled promise rejection for fire-and-forget callers.\n })\n },\n mutateAsync: (vars, callbackOptions) =>\n observer.mutate(vars, callbackOptions),\n reset: () => observer.reset(),\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { QueriesObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport type UseQueriesOptions<TQueryKey extends QueryKey = QueryKey> =\n QueryObserverOptions<unknown, DefaultError, unknown, unknown, TQueryKey>\n\n/**\n * Subscribe to multiple queries in parallel. Returns a single signal containing\n * the array of results — index-aligned with the `queries` array.\n *\n * `queries` is a reactive function so signal-based keys trigger re-evaluation\n * automatically.\n *\n * @example\n * const userIds = signal([1, 2, 3])\n * const results = useQueries(() =>\n * userIds().map(id => ({\n * queryKey: ['user', id],\n * queryFn: () => fetchUser(id),\n * }))\n * )\n * // results() — QueryObserverResult[]\n * // results()[0].data — first user\n */\nexport function useQueries(\n queries: () => UseQueriesOptions[],\n): Signal<QueryObserverResult[]> {\n const client = useQueryClient()\n const observer = new QueriesObserver(client, queries())\n\n const resultSig = signal(\n observer.getCurrentResult() as readonly QueryObserverResult[],\n ) as Signal<QueryObserverResult[]>\n\n const unsub = observer.subscribe(\n (results: readonly QueryObserverResult[]) => {\n resultSig.set(results as QueryObserverResult[])\n },\n )\n\n // When signals inside queries() change, update the observer.\n effect(() => {\n observer.setQueries(queries())\n })\n\n onUnmount(() => {\n unsub()\n observer.destroy()\n })\n\n return resultSig\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\nexport interface UseQueryResult<TData, TError = DefaultError> {\n /** Raw signal — the full observer result. Fine-grained accessors below are preferred. */\n result: Signal<QueryObserverResult<TData, TError>>\n data: Signal<TData | undefined>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isLoading: Signal<boolean>\n isFetching: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n /** Manually trigger a refetch. */\n refetch: () => Promise<QueryObserverResult<TData, TError>>\n}\n\n/**\n * Subscribe to a query. Returns fine-grained reactive signals for data,\n * error and status — each signal only notifies effects that depend on it.\n *\n * `options` is a function so it can read Pyreon signals — when a signal changes\n * (e.g. a reactive query key), the observer is updated and refetches automatically.\n *\n * @example\n * const userId = signal(1)\n * const query = useQuery(() => ({\n * queryKey: ['user', userId()],\n * queryFn: () => fetch(`/api/users/${userId()}`).then(r => r.json()),\n * }))\n * // In template: () => query.data()?.name\n */\nexport function useQuery<\n TData = unknown,\n TError = DefaultError,\n TKey extends QueryKey = QueryKey,\n>(\n options: () => QueryObserverOptions<TData, TError, TData, TData, TKey>,\n): UseQueryResult<TData, TError> {\n const client = useQueryClient()\n const observer = new QueryObserver<TData, TError, TData, TData, TKey>(\n client,\n options(),\n )\n const initial = observer.getCurrentResult()\n\n // Fine-grained signals: each field is independent so only effects that read\n // e.g. `query.data()` re-run when data changes, not when isFetching flips.\n const resultSig = signal<QueryObserverResult<TData, TError>>(initial)\n const dataSig = signal<TData | undefined>(initial.data)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'pending' | 'error' | 'success'>(initial.status)\n const isPending = signal(initial.isPending)\n const isLoading = signal(initial.isLoading)\n const isFetching = signal(initial.isFetching)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n\n // Subscribe synchronously — data flows before mount (correct for SSR pre-population).\n // batch() coalesces all signal updates into one notification flush.\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isLoading.set(r.isLoading)\n isFetching.set(r.isFetching)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n })\n })\n\n // Track reactive options: when signals inside options() change, update the observer.\n // effect() is auto-registered in the component's EffectScope → auto-disposed on unmount.\n effect(() => {\n observer.setOptions(options())\n })\n\n // Unsubscribe the observer on unmount (effect disposal is handled by EffectScope).\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isLoading,\n isFetching,\n isError,\n isSuccess,\n refetch: () => observer.refetch(),\n }\n}\n","import type { Props, VNode, VNodeChild } from '@pyreon/core'\nimport { createContext, provide, useContext } from '@pyreon/core'\nimport { useQueryClient } from './query-client'\n\n// ─── Context ────────────────────────────────────────────────────────────────\n\ninterface ErrorResetBoundaryValue {\n reset: () => void\n}\n\nconst QueryErrorResetBoundaryContext =\n createContext<ErrorResetBoundaryValue | null>(null)\n\n// ─── QueryErrorResetBoundary ─────────────────────────────────────────────────\n\nexport interface QueryErrorResetBoundaryProps extends Props {\n children?: VNodeChild\n}\n\n/**\n * Wraps a subtree so that `useQueryErrorResetBoundary()` descendants can reset\n * all errored queries within this boundary.\n *\n * Pair with Pyreon's `ErrorBoundary` to retry failed queries when the user\n * dismisses the error fallback:\n *\n * @example\n * h(QueryErrorResetBoundary, null,\n * h(ErrorBoundary, {\n * fallback: (err, boundaryReset) => {\n * const { reset } = useQueryErrorResetBoundary()\n * return h('button', {\n * onClick: () => { reset(); boundaryReset() },\n * }, 'Retry')\n * },\n * }, h(MyComponent, null)),\n * )\n */\nexport function QueryErrorResetBoundary(\n props: QueryErrorResetBoundaryProps,\n): VNode {\n const client = useQueryClient()\n\n const value: ErrorResetBoundaryValue = {\n reset: () => {\n // Reset all active queries that are in error state so they refetch.\n client.refetchQueries({\n predicate: (query) => query.state.status === 'error',\n })\n },\n }\n\n provide(QueryErrorResetBoundaryContext, value)\n\n const ch = props.children\n return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode\n}\n\n// ─── useQueryErrorResetBoundary ──────────────────────────────────────────────\n\n/**\n * Returns the `reset` function provided by the nearest `QueryErrorResetBoundary`.\n * If called outside a boundary, falls back to resetting all errored queries\n * on the current `QueryClient`.\n *\n * @example\n * // Inside an ErrorBoundary fallback:\n * const { reset } = useQueryErrorResetBoundary()\n * h('button', { onClick: () => { reset(); boundaryReset() } }, 'Retry')\n */\nexport function useQueryErrorResetBoundary(): ErrorResetBoundaryValue {\n const boundary = useContext(QueryErrorResetBoundaryContext)\n // Always call useQueryClient to respect hook ordering rules\n const client = useQueryClient()\n\n if (boundary) return boundary\n\n // Fallback: no explicit boundary — use the QueryClient directly.\n return {\n reset: () => {\n client.refetchQueries({\n predicate: (query) => query.state.status === 'error',\n })\n },\n }\n}\n","import { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type { QueryClient } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport type SubscriptionStatus =\n | 'connecting'\n | 'connected'\n | 'disconnected'\n | 'error'\n\nexport interface UseSubscriptionOptions {\n /** WebSocket URL — can be a signal for reactive URLs */\n url: string | (() => string)\n /** WebSocket sub-protocols */\n protocols?: string | string[]\n /** Called when a message is received — use queryClient to invalidate or update cache */\n onMessage: (event: MessageEvent, queryClient: QueryClient) => void\n /** Called when the connection opens */\n onOpen?: (event: Event) => void\n /** Called when the connection closes */\n onClose?: (event: CloseEvent) => void\n /** Called when a connection error occurs */\n onError?: (event: Event) => void\n /** Whether to automatically reconnect — default: true */\n reconnect?: boolean\n /** Initial reconnect delay in ms — doubles on each retry, default: 1000 */\n reconnectDelay?: number\n /** Maximum reconnect attempts — default: 10, 0 = unlimited */\n maxReconnectAttempts?: number\n /** Whether the subscription is enabled — default: true */\n enabled?: boolean | (() => boolean)\n}\n\nexport interface UseSubscriptionResult {\n /** Current connection status */\n status: Signal<SubscriptionStatus>\n /** Send data through the WebSocket */\n send: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => void\n /** Manually close the connection */\n close: () => void\n /** Manually reconnect */\n reconnect: () => void\n}\n\n// ─── useSubscription ─────────────────────────────────────────────────────────\n\n/**\n * Reactive WebSocket subscription that integrates with TanStack Query.\n * Automatically manages connection lifecycle, reconnection, and cleanup.\n *\n * Use the `onMessage` callback to invalidate or update query cache\n * when the server pushes data.\n *\n * @example\n * ```ts\n * const sub = useSubscription({\n * url: 'wss://api.example.com/ws',\n * onMessage: (event, queryClient) => {\n * const data = JSON.parse(event.data)\n * if (data.type === 'order-updated') {\n * queryClient.invalidateQueries({ queryKey: ['orders'] })\n * }\n * },\n * })\n * // sub.status() — 'connecting' | 'connected' | 'disconnected' | 'error'\n * // sub.send(JSON.stringify({ type: 'subscribe', channel: 'orders' }))\n * ```\n */\nexport function useSubscription(\n options: UseSubscriptionOptions,\n): UseSubscriptionResult {\n const queryClient = useQueryClient()\n const status = signal<SubscriptionStatus>('disconnected')\n\n let ws: WebSocket | null = null\n let reconnectAttempts = 0\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null\n let intentionalClose = false\n\n const reconnectEnabled = options.reconnect !== false\n const baseDelay = options.reconnectDelay ?? 1000\n const maxAttempts = options.maxReconnectAttempts ?? 10\n\n function getUrl(): string {\n return typeof options.url === 'function' ? options.url() : options.url\n }\n\n function isEnabled(): boolean {\n if (options.enabled === undefined) return true\n return typeof options.enabled === 'function'\n ? options.enabled()\n : options.enabled\n }\n\n function connect(): void {\n if (ws) {\n ws.onopen = null\n ws.onmessage = null\n ws.onclose = null\n ws.onerror = null\n if (\n ws.readyState === WebSocket.OPEN ||\n ws.readyState === WebSocket.CONNECTING\n ) {\n ws.close()\n }\n }\n\n if (!isEnabled()) {\n status.set('disconnected')\n return\n }\n\n status.set('connecting')\n\n try {\n ws = options.protocols\n ? new WebSocket(getUrl(), options.protocols)\n : new WebSocket(getUrl())\n } catch {\n status.set('error')\n scheduleReconnect()\n return\n }\n\n ws.onopen = (event) => {\n batch(() => {\n status.set('connected')\n reconnectAttempts = 0\n })\n options.onOpen?.(event)\n }\n\n ws.onmessage = (event) => {\n options.onMessage(event, queryClient)\n }\n\n ws.onclose = (event) => {\n status.set('disconnected')\n options.onClose?.(event)\n\n if (!intentionalClose && reconnectEnabled) {\n scheduleReconnect()\n }\n }\n\n ws.onerror = (event) => {\n status.set('error')\n options.onError?.(event)\n }\n }\n\n function scheduleReconnect(): void {\n if (!reconnectEnabled) return\n if (maxAttempts > 0 && reconnectAttempts >= maxAttempts) return\n\n const delay = baseDelay * 2 ** reconnectAttempts\n reconnectAttempts++\n\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null\n if (!intentionalClose && isEnabled()) {\n connect()\n }\n }, delay)\n }\n\n function send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void {\n if (ws?.readyState === WebSocket.OPEN) {\n ws.send(data)\n }\n }\n\n function close(): void {\n intentionalClose = true\n if (reconnectTimer !== null) {\n clearTimeout(reconnectTimer)\n reconnectTimer = null\n }\n if (ws) {\n ws.onopen = null\n ws.onmessage = null\n ws.onclose = null\n ws.onerror = null\n if (\n ws.readyState === WebSocket.OPEN ||\n ws.readyState === WebSocket.CONNECTING\n ) {\n ws.close()\n }\n ws = null\n }\n status.set('disconnected')\n }\n\n function manualReconnect(): void {\n intentionalClose = false\n reconnectAttempts = 0\n connect()\n }\n\n // Track reactive URL and enabled state\n effect(() => {\n // Read reactive values to subscribe to changes\n if (typeof options.url === 'function') options.url()\n if (typeof options.enabled === 'function') options.enabled()\n\n intentionalClose = false\n reconnectAttempts = 0\n connect()\n })\n\n // Cleanup on unmount\n onUnmount(() => close())\n\n return {\n status,\n send,\n close,\n reconnect: manualReconnect,\n }\n}\n","import type { VNodeChild, VNodeChildAtom } from '@pyreon/core'\nimport { onUnmount } from '@pyreon/core'\nimport type { Signal } from '@pyreon/reactivity'\nimport { batch, effect, signal } from '@pyreon/reactivity'\nimport type {\n DefaultError,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver, QueryObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './query-client'\n\n// ─── Types ─────────────────────────────────────────────────────────────────\n\n/**\n * Like `UseQueryResult` but `data` is `Signal<TData>` (never undefined).\n * Only use inside a `QuerySuspense` boundary which guarantees the query has\n * succeeded before children are rendered.\n */\nexport interface UseSuspenseQueryResult<TData, TError = DefaultError> {\n result: Signal<QueryObserverResult<TData, TError>>\n /** Always TData — never undefined inside a QuerySuspense boundary. */\n data: Signal<TData>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isPending: Signal<boolean>\n isFetching: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n refetch: () => Promise<QueryObserverResult<TData, TError>>\n}\n\nexport interface UseSuspenseInfiniteQueryResult<\n TQueryFnData,\n TError = DefaultError,\n> {\n result: Signal<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n /** Always InfiniteData<TQueryFnData> — never undefined inside a QuerySuspense boundary. */\n data: Signal<InfiniteData<TQueryFnData>>\n error: Signal<TError | null>\n status: Signal<'pending' | 'error' | 'success'>\n isFetching: Signal<boolean>\n isFetchingNextPage: Signal<boolean>\n isFetchingPreviousPage: Signal<boolean>\n isError: Signal<boolean>\n isSuccess: Signal<boolean>\n hasNextPage: Signal<boolean>\n hasPreviousPage: Signal<boolean>\n fetchNextPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n fetchPreviousPage: () => Promise<\n InfiniteQueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n refetch: () => Promise<\n QueryObserverResult<InfiniteData<TQueryFnData>, TError>\n >\n}\n\n// ─── QuerySuspense ──────────────────────────────────────────────────────────\n\ntype AnyQueryLike = {\n isPending: Signal<boolean>\n isError: Signal<boolean>\n error: Signal<unknown>\n}\n\nexport interface QuerySuspenseProps {\n /**\n * A single query result (or array of them) to gate on.\n * Children only render when ALL queries have succeeded.\n */\n query: AnyQueryLike | AnyQueryLike[]\n /** Rendered while any query is pending. */\n fallback?: VNodeChild\n /** Rendered when any query has errored. Defaults to re-throwing to nearest ErrorBoundary. */\n error?: (err: unknown) => VNodeChild\n children: VNodeChild\n}\n\n/**\n * Pyreon-native Suspense boundary for queries. Shows `fallback` while any query\n * is pending. On error, renders the `error` fallback or re-throws to the\n * nearest Pyreon `ErrorBoundary`.\n *\n * Pair with `useSuspenseQuery` / `useSuspenseInfiniteQuery` to get non-undefined\n * `data` types inside children.\n *\n * @example\n * const userQuery = useSuspenseQuery(() => ({ queryKey: ['user'], queryFn: fetchUser }))\n *\n * h(QuerySuspense, {\n * query: userQuery,\n * fallback: h(Spinner, null),\n * error: (err) => h('p', null, `Failed: ${err}`),\n * }, () => h(UserProfile, { user: userQuery.data() }))\n */\nexport function QuerySuspense(props: QuerySuspenseProps): VNodeChild {\n return (): VNodeChildAtom => {\n const queries = Array.isArray(props.query) ? props.query : [props.query]\n\n // Error state — use provided error fallback or re-throw to ErrorBoundary\n for (const q of queries) {\n if (q.isError()) {\n const err = q.error()\n if (props.error) {\n return props.error(err) as VNodeChildAtom\n }\n throw err\n }\n }\n\n // Pending state — show fallback\n if (queries.some((q) => q.isPending())) {\n const fb = props.fallback\n return (\n typeof fb === 'function' ? (fb as () => VNodeChildAtom)() : (fb ?? null)\n ) as VNodeChildAtom\n }\n\n // All success — render children\n const ch = props.children\n return (\n typeof ch === 'function' ? (ch as () => VNodeChildAtom)() : ch\n ) as VNodeChildAtom\n }\n}\n\n// ─── useSuspenseQuery ───────────────────────────────────────────────────────\n\n/**\n * Like `useQuery` but `data` is typed as `Signal<TData>` (never undefined).\n * Designed for use inside a `QuerySuspense` boundary, which guarantees\n * children only render after the query succeeds.\n *\n * @example\n * const user = useSuspenseQuery(() => ({ queryKey: ['user', id()], queryFn: fetchUser }))\n *\n * h(QuerySuspense, { query: user, fallback: h(Spinner, null) },\n * () => h(UserCard, { name: user.data().name }),\n * )\n */\nexport function useSuspenseQuery<\n TData = unknown,\n TError = DefaultError,\n TKey extends QueryKey = QueryKey,\n>(\n options: () => QueryObserverOptions<TData, TError, TData, TData, TKey>,\n): UseSuspenseQueryResult<TData, TError> {\n const client = useQueryClient()\n const observer = new QueryObserver<TData, TError, TData, TData, TKey>(\n client,\n options(),\n )\n const initial = observer.getCurrentResult()\n\n const resultSig = signal<QueryObserverResult<TData, TError>>(initial)\n const dataSig = signal<TData>(initial.data as TData)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal<'pending' | 'error' | 'success'>(initial.status)\n const isPending = signal(initial.isPending)\n const isFetching = signal(initial.isFetching)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n if (r.data !== undefined) dataSig.set(r.data as TData)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isPending.set(r.isPending)\n isFetching.set(r.isFetching)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isPending,\n isFetching,\n isError,\n isSuccess,\n refetch: () => observer.refetch(),\n }\n}\n\n// ─── useSuspenseInfiniteQuery ───────────────────────────────────────────────\n\n/**\n * Like `useInfiniteQuery` but `data` is typed as `Signal<InfiniteData<TData>>`\n * (never undefined). Use inside a `QuerySuspense` boundary.\n */\nexport function useSuspenseInfiniteQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: () => InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >,\n): UseSuspenseInfiniteQueryResult<TQueryFnData, TError> {\n const client = useQueryClient()\n const observer = new InfiniteQueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TQueryFnData>,\n TQueryKey,\n TPageParam\n >(client, options())\n const initial = observer.getCurrentResult()\n\n const resultSig = signal(initial)\n const dataSig = signal(initial.data as InfiniteData<TQueryFnData>)\n const errorSig = signal<TError | null>(initial.error ?? null)\n const statusSig = signal(initial.status)\n const isFetching = signal(initial.isFetching)\n const isFetchingNextPage = signal(initial.isFetchingNextPage)\n const isFetchingPreviousPage = signal(initial.isFetchingPreviousPage)\n const isError = signal(initial.isError)\n const isSuccess = signal(initial.isSuccess)\n const hasNextPage = signal(initial.hasNextPage)\n const hasPreviousPage = signal(initial.hasPreviousPage)\n\n const unsub = observer.subscribe((r) => {\n batch(() => {\n resultSig.set(r)\n if (r.data !== undefined) dataSig.set(r.data)\n errorSig.set(r.error ?? null)\n statusSig.set(r.status)\n isFetching.set(r.isFetching)\n isFetchingNextPage.set(r.isFetchingNextPage)\n isFetchingPreviousPage.set(r.isFetchingPreviousPage)\n isError.set(r.isError)\n isSuccess.set(r.isSuccess)\n hasNextPage.set(r.hasNextPage)\n hasPreviousPage.set(r.hasPreviousPage)\n })\n })\n\n effect(() => {\n observer.setOptions(options())\n })\n onUnmount(() => unsub())\n\n return {\n result: resultSig,\n data: dataSig,\n error: errorSig,\n status: statusSig,\n isFetching,\n isFetchingNextPage,\n isFetchingPreviousPage,\n isError,\n isSuccess,\n hasNextPage,\n hasPreviousPage,\n fetchNextPage: () => observer.fetchNextPage(),\n fetchPreviousPage: () => observer.fetchPreviousPage(),\n refetch: () => observer.refetch(),\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { CancelledError, InfiniteQueryObserver, MutationCache, MutationObserver, QueriesObserver, QueryCache, QueryClient, QueryObserver, defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hashKey, hydrate, isCancelledError, keepPreviousData } from "@tanstack/query-core";
2
- import { createContext, onMount, onUnmount, popContext, pushContext, useContext } from "@pyreon/core";
2
+ import { createContext, onMount, onUnmount, provide, useContext } from "@pyreon/core";
3
3
  import { batch, effect, signal } from "@pyreon/reactivity";
4
4
 
5
5
  //#region src/query-client.ts
@@ -13,12 +13,11 @@ import { batch, effect, signal } from "@pyreon/reactivity";
13
13
  * mount(h(QueryClientProvider, { client }, h(App, null)), el)
14
14
  */
15
15
  function QueryClientProvider(props) {
16
- pushContext(new Map([[QueryClientContext.id, props.client]]));
16
+ provide(QueryClientContext, props.client);
17
17
  onMount(() => {
18
18
  props.client.mount();
19
19
  return () => props.client.unmount();
20
20
  });
21
- onUnmount(() => popContext());
22
21
  const ch = props.children;
23
22
  return typeof ch === "function" ? ch() : ch;
24
23
  }
@@ -28,7 +27,7 @@ function QueryClientProvider(props) {
28
27
  */
29
28
  function useQueryClient() {
30
29
  const client = useContext(QueryClientContext);
31
- if (!client) throw new Error("[pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.");
30
+ if (!client) throw new Error("[@pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.");
32
31
  return client;
33
32
  }
34
33
 
@@ -317,14 +316,13 @@ function useQuery(options) {
317
316
  */
318
317
  function QueryErrorResetBoundary(props) {
319
318
  const client = useQueryClient();
320
- pushContext(new Map([[QueryErrorResetBoundaryContext.id, {
319
+ provide(QueryErrorResetBoundaryContext, {
321
320
  reset: () => {
322
321
  client.refetchQueries({
323
322
  predicate: query => query.state.status === "error"
324
323
  });
325
324
  }
326
- }]]));
327
- onUnmount(() => popContext());
325
+ });
328
326
  const ch = props.children;
329
327
  return typeof ch === "function" ? ch() : ch;
330
328
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/query-client.ts","../../src/use-infinite-query.ts","../../src/use-is-fetching.ts","../../src/use-mutation.ts","../../src/use-queries.ts","../../src/use-query.ts","../../src/use-query-error-reset-boundary.ts","../../src/use-subscription.ts","../../src/use-suspense-query.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/query-client.ts","../../src/use-infinite-query.ts","../../src/use-is-fetching.ts","../../src/use-mutation.ts","../../src/use-queries.ts","../../src/use-query.ts","../../src/use-query-error-reset-boundary.ts","../../src/use-subscription.ts","../../src/use-suspense-query.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index2.d.ts","names":[],"sources":["../../src/query-client.ts","../../src/use-infinite-query.ts","../../src/use-is-fetching.ts","../../src/use-mutation.ts","../../src/use-queries.ts","../../src/use-query.ts","../../src/use-query-error-reset-boundary.ts","../../src/use-subscription.ts","../../src/use-suspense-query.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index2.d.ts","names":[],"sources":["../../src/query-client.ts","../../src/use-infinite-query.ts","../../src/use-is-fetching.ts","../../src/use-mutation.ts","../../src/use-queries.ts","../../src/use-query.ts","../../src/use-query-error-reset-boundary.ts","../../src/use-subscription.ts","../../src/use-suspense-query.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/query",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Pyreon adapter for TanStack Query",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,12 +1,5 @@
1
1
  import type { Props, VNode, VNodeChild } from '@pyreon/core'
2
- import {
3
- createContext,
4
- onMount,
5
- onUnmount,
6
- popContext,
7
- pushContext,
8
- useContext,
9
- } from '@pyreon/core'
2
+ import { createContext, onMount, provide, useContext } from '@pyreon/core'
10
3
  import type { QueryClient } from '@tanstack/query-core'
11
4
 
12
5
  export interface QueryClientProviderProps extends Props {
@@ -25,10 +18,7 @@ export const QueryClientContext = createContext<QueryClient | null>(null)
25
18
  * mount(h(QueryClientProvider, { client }, h(App, null)), el)
26
19
  */
27
20
  export function QueryClientProvider(props: QueryClientProviderProps): VNode {
28
- // Push synchronously so all descendant component functions see the context.
29
- // Pop on unmount (matches the HeadProvider pattern in @pyreon/head).
30
- const frame = new Map([[QueryClientContext.id, props.client]])
31
- pushContext(frame)
21
+ provide(QueryClientContext, props.client)
32
22
 
33
23
  // client.mount() activates window focus refetching and online/offline handling.
34
24
  // client.unmount() unsubscribes focusManager + onlineManager when the provider leaves the tree.
@@ -37,8 +27,6 @@ export function QueryClientProvider(props: QueryClientProviderProps): VNode {
37
27
  return () => props.client.unmount()
38
28
  })
39
29
 
40
- onUnmount(() => popContext())
41
-
42
30
  const ch = props.children
43
31
  return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode
44
32
  }
@@ -51,7 +39,7 @@ export function useQueryClient(): QueryClient {
51
39
  const client = useContext(QueryClientContext)
52
40
  if (!client) {
53
41
  throw new Error(
54
- '[pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.',
42
+ '[@pyreon/query] No QueryClient found. Wrap your app with <QueryClientProvider client={client}>.',
55
43
  )
56
44
  }
57
45
  return client
@@ -62,7 +62,7 @@ function deferred<T>() {
62
62
  describe('QueryClientProvider / useQueryClient', () => {
63
63
  it('useQueryClient throws when no provider is present', () => {
64
64
  // Call directly outside any renderer — context stack is empty so it must throw.
65
- expect(() => useQueryClient()).toThrow('[pyreon/query]')
65
+ expect(() => useQueryClient()).toThrow('[@pyreon/query]')
66
66
  })
67
67
 
68
68
  it('provides the QueryClient to descendants', () => {
@@ -1,11 +1,5 @@
1
1
  import type { Props, VNode, VNodeChild } from '@pyreon/core'
2
- import {
3
- createContext,
4
- onUnmount,
5
- popContext,
6
- pushContext,
7
- useContext,
8
- } from '@pyreon/core'
2
+ import { createContext, provide, useContext } from '@pyreon/core'
9
3
  import { useQueryClient } from './query-client'
10
4
 
11
5
  // ─── Context ────────────────────────────────────────────────────────────────
@@ -56,9 +50,7 @@ export function QueryErrorResetBoundary(
56
50
  },
57
51
  }
58
52
 
59
- const frame = new Map([[QueryErrorResetBoundaryContext.id, value]])
60
- pushContext(frame)
61
- onUnmount(() => popContext())
53
+ provide(QueryErrorResetBoundaryContext, value)
62
54
 
63
55
  const ch = props.children
64
56
  return (typeof ch === 'function' ? (ch as () => VNodeChild)() : ch) as VNode