@beignet/react-query 0.0.54 → 0.0.56

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @beignet/react-query
2
2
 
3
+ ## 0.0.56
4
+
5
+ ### Patch Changes
6
+
7
+ - e00c302: Use direct React Query options and declarative invalidation in generated components, with guidance for extracting shared client behavior.
8
+
9
+ ## 0.0.55
10
+
11
+ ### Patch Changes
12
+
13
+ - a3085a6: Coordinate broadcast refreshes with matching pending mutations or custom write
14
+ gates. Add connection admission with automatic resource cleanup, and expose
15
+ connection/reconciliation reasons. Keep the 60-second default, require valid
16
+ lifetime metadata, and use explicit connection-wide renewal control frames.
17
+
3
18
  ## 0.0.54
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -71,53 +71,57 @@ export function Providers({ children }: { children: ReactNode }) {
71
71
  }
72
72
  ```
73
73
 
74
- ### 3. Add feature client helpers
74
+ ### 3. Use contracts in components
75
75
 
76
- Keep root `client/` for shared adapter setup, then put feature-specific query
77
- options, mutation options, invalidation helpers, and hooks under
78
- `features/<feature>/client/`:
76
+ Import the app's shared `rq` adapter and browser-safe feature contracts. Pass
77
+ options directly to TanStack Query; `invalidates` selects the queries to refresh
78
+ after a successful mutation:
79
79
 
80
- ```ts
81
- // features/todos/client/queries.ts
82
- import type { QueryClient } from "@tanstack/react-query";
80
+ ```tsx
81
+ "use client";
82
+
83
+ import { useMutation, useQuery } from "@tanstack/react-query";
83
84
  import { rq } from "@/client";
84
85
  import { createTodo, listTodos } from "@/features/todos/contracts";
85
86
 
86
- export function listTodosQueryOptions() {
87
- return rq(listTodos).queryOptions({ query: {} });
88
- }
87
+ export function TodoList() {
88
+ const todos = useQuery(rq(listTodos).queryOptions());
89
+ const create = useMutation(
90
+ rq(createTodo).mutationOptions({
91
+ invalidates: () => [rq(listTodos).contractFilter()],
92
+ }),
93
+ );
89
94
 
90
- export function createTodoMutationOptions() {
91
- return rq(createTodo).mutationOptions();
92
- }
95
+ if (todos.isPending) return <p>Loading todos…</p>;
96
+ if (todos.isError) return <p role="alert">{todos.error.message}</p>;
93
97
 
94
- export function invalidateTodos(queryClient: QueryClient) {
95
- return rq(listTodos).invalidate(queryClient);
98
+ return (
99
+ <div>
100
+ <button
101
+ type="button"
102
+ disabled={create.isPending}
103
+ onClick={() => create.mutate({ body: { title: "New todo" } })}
104
+ >
105
+ Add todo
106
+ </button>
107
+ {create.isError && <p role="alert">{create.error.message}</p>}
108
+ <ul>
109
+ {todos.data.items.map((todo) => <li key={todo.id}>{todo.title}</li>)}
110
+ </ul>
111
+ </div>
112
+ );
96
113
  }
97
114
  ```
98
115
 
99
- Components can import those helpers and keep UI state separate from cache-key
100
- construction:
116
+ Pass lifecycle callbacks inside `mutationOptions({ ... })`. Beignet awaits
117
+ `onSuccess`, then the selected invalidations before the mutation settles.
118
+ Declarative invalidation requires TanStack React Query 5.102.0 or newer in v5.
119
+ See [Declarative mutation invalidation](#declarative-mutation-invalidation).
101
120
 
102
- ```tsx
103
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
104
- import {
105
- createTodoMutationOptions,
106
- invalidateTodos,
107
- listTodosQueryOptions,
108
- } from "@/features/todos/client/queries";
109
-
110
- function TodoList() {
111
- const queryClient = useQueryClient();
112
- const todosQuery = useQuery(listTodosQueryOptions());
113
- const createTodoMutation = useMutation({
114
- ...createTodoMutationOptions(),
115
- onSuccess: () => invalidateTodos(queryClient),
116
- });
117
-
118
- return <div>{/* ... */}</div>;
119
- }
120
- ```
121
+ Keep adapter setup in root `client/`. Extract
122
+ [feature client helpers](https://beignetjs.com/react-query#feature-client-helpers)
123
+ for shared query defaults, pagination, optimistic updates, or cache filters used
124
+ by mutations and broadcasts.
121
125
 
122
126
  ## Usage
123
127
 
@@ -852,6 +856,174 @@ optimistic mutation state separately so a remote refetch does not overwrite an
852
856
  in-flight edit. See the [broadcasting guide](https://beignetjs.com/broadcasting)
853
857
  for complete channel and React Query examples.
854
858
 
859
+ ### Delay broadcast refreshes during saves
860
+
861
+ `createBroadcastQuerySubscription` already coordinates queries that are fetching.
862
+ Its optional `refreshGate` also coordinates pending writes. The new
863
+ `createBroadcastMutationRefreshGate` helper covers ordinary TanStack mutations;
864
+ the new `BroadcastRefreshGate` interface supports application write queues.
865
+ Existing subscriptions need no changes when this coordination is unnecessary.
866
+
867
+ For task queries, put the following in `features/tasks/client/broadcasts.ts`.
868
+ This example assumes browser-safe `taskChanges` in `features/tasks/channels.ts`
869
+ with a `workspaceId` parameter, and existing `listTasks` and `saveTask` contracts.
870
+ `listTasks` accepts a `workspaceId` query parameter. Use the returned mutation
871
+ options with `useMutation`, retaining your optimistic update/rollback callbacks:
872
+
873
+ ```ts
874
+ import type { BroadcastClient } from "@beignet/core/broadcasting/client";
875
+ import {
876
+ createBroadcastMutationRefreshGate,
877
+ createBroadcastQuerySubscription,
878
+ } from "@beignet/react-query";
879
+ import type { QueryClient } from "@tanstack/react-query";
880
+ import { rq } from "@/client";
881
+ import { taskChanges } from "@/features/tasks/channels";
882
+ import { listTasks, saveTask } from "@/features/tasks/contracts";
883
+
884
+ export function saveTaskMutationOptions(workspaceId: string) {
885
+ return rq(saveTask).mutationOptions({
886
+ mutationKey: ["tasks", workspaceId, "save"],
887
+ });
888
+ }
889
+
890
+ export function subscribeToTaskChanges(
891
+ client: BroadcastClient,
892
+ queryClient: QueryClient,
893
+ workspaceId: string,
894
+ ) {
895
+ const taskQueries = rq(listTasks).filter({ query: { workspaceId } });
896
+ return createBroadcastQuerySubscription({
897
+ client, queryClient, channel: taskChanges, params: { workspaceId },
898
+ invalidates: () => [taskQueries],
899
+ reconciles: [taskQueries],
900
+ refreshGate: createBroadcastMutationRefreshGate({
901
+ queryClient,
902
+ mutations: { mutationKey: ["tasks", workspaceId] },
903
+ }),
904
+ });
905
+ }
906
+ ```
907
+
908
+ `mutations` accepts TanStack's `mutationKey`, `exact`, and `predicate` filters.
909
+ Key matching is inclusive unless `exact: true`. Give every related write the
910
+ same key prefix, including creates and deletes that affect lists or counters.
911
+ Include workspace or resource scope when appropriate. Unrelated mutations do
912
+ not block. Omitting a key/predicate deliberately selects all mutations.
913
+
914
+ The helper always checks **pending** mutations; `status` is not configurable.
915
+ Paused pending mutations (offline or waiting for a mutation scope) also block,
916
+ as do overlapping matching mutations until all settle. A custom predicate can
917
+ exclude mutations, but excluding paused writes can refresh over unsaved edits.
918
+ The gate has no timeout that overrides your blocking policy.
919
+
920
+ ### Combine mutations with an external write lock
921
+
922
+ Put this application helper beside the feature's broadcast query mappings.
923
+ Pass `createTaskWriteRefreshGate({ queryClient, workspaceId, writeLock })` as
924
+ `refreshGate` in the subscription above. The external lock owns its state and
925
+ notifies after changes; it may inspect the query key to block only related
926
+ queries. Beignet owns listening, queuing, and cleanup:
927
+
928
+ ```ts
929
+ import {
930
+ type BroadcastRefreshGate,
931
+ createBroadcastMutationRefreshGate,
932
+ } from "@beignet/react-query";
933
+ import type { Query, QueryClient } from "@tanstack/react-query";
934
+
935
+ // Application-owned write queue/lock. It can block different queries independently.
936
+ export interface TaskWriteLock {
937
+ isBlocked(query: Query): boolean;
938
+ subscribe(onChange: () => void): () => void;
939
+ }
940
+
941
+ export function createTaskWriteRefreshGate({
942
+ queryClient, workspaceId, writeLock,
943
+ }: { queryClient: QueryClient; workspaceId: string; writeLock: TaskWriteLock }): BroadcastRefreshGate {
944
+ const mutations = createBroadcastMutationRefreshGate({
945
+ queryClient,
946
+ mutations: { mutationKey: ["tasks", workspaceId] },
947
+ });
948
+ return {
949
+ isBlocked: (query) => mutations.isBlocked(query) || writeLock.isBlocked(query),
950
+ subscribe(onChange) {
951
+ const stopMutations = mutations.subscribe(onChange);
952
+ try {
953
+ const stopLock = writeLock.subscribe(onChange);
954
+ return () => { try { stopLock(); } finally { stopMutations(); } };
955
+ } catch (error) {
956
+ stopMutations();
957
+ throw error;
958
+ }
959
+ },
960
+ };
961
+ }
962
+ ```
963
+
964
+ Both event invalidations and readiness/reconnect reconciliation queue matching
965
+ **existing queries**, deduplicated per query. A blocked query is neither
966
+ invalidated nor refetched by the subscription. The gate is subscribed before
967
+ checking state to avoid a missed wakeup and checked again immediately before
968
+ queued work begins. Opening it schedules active queries for refresh and marks
969
+ inactive queries stale. TanStack's enabled/static rules still control fetching.
970
+ If it closes again, unprocessed work stays queued. A hint during an existing
971
+ fetch remains pending for a subsequent refresh after that fetch settles.
972
+
973
+ The gate controls **broadcast-driven refreshes only**. Polling, manual refresh,
974
+ mutation callbacks that invalidate queries, already-running requests, and
975
+ optimistic cache updates remain application-owned. If all refresh sources must
976
+ respect a write lock, apply that policy to those sources too.
977
+
978
+ Unsubscribe removes transport, query-cache, and gate listeners, discards queued
979
+ work, and prevents deferred callbacks from starting refreshes. It cannot undo
980
+ an already-started request. Gate checks that throw report through `onError`,
981
+ keep the query pending, and stay blocked until a later gate notification or
982
+ broadcast hint retries the check. They do not poll or retry themselves. If
983
+ `subscribe` throws, the subscription stays blocked: fix the cause, unsubscribe,
984
+ and create a new subscription. Custom gates must release partially acquired
985
+ listeners before throwing. Unsubscribe failures are reported while the other
986
+ listeners are still released.
987
+
988
+ ### Diagnose connection changes
989
+
990
+ `onSync(info)` and `onStatusChange(status, info)` receive
991
+ `BroadcastConnectionInfo` from `@beignet/core/broadcasting/client`. Callbacks
992
+ may omit the metadata argument when they do not need it.
993
+ `createBroadcastQuerySubscription` forwards status metadata and accepts an
994
+ optional `onSync(info)` observer; its reconciliation is still scheduled even
995
+ when that observer throws. This notification describes readiness, not completion
996
+ of queued or gated query refreshes. Do not refetch from that observer to bypass
997
+ the gate accidentally.
998
+
999
+ | `info.reason` | What Beignet knows |
1000
+ | --- | --- |
1001
+ | `initial` | The first physical connection attempt. |
1002
+ | `planned-renewal` | The server explicitly announced renewal and then ended the stream normally without further traffic. |
1003
+ | `subscription-change` | Adding or removing a distinct channel restarted the multiplexed connection. |
1004
+ | `interruption` | A timeout, transport/protocol failure, or retryable rejection interrupted the connection. |
1005
+ | `unknown` | An unexplained EOF, explicit resume, or browser wakeup has no more precise known cause. |
1006
+
1007
+ Readiness reports the reason for that physical connection; another observer
1008
+ joining an already-ready channel sees the same information. Reconnecting status
1009
+ reports the known reason for restarting. An elapsed lifetime alone never proves
1010
+ planned renewal. Servers send an explicit, connection-wide renewal control frame
1011
+ before closing normally. An unexplained EOF stays `unknown`. A renewal frame
1012
+ followed by a stall produces `interruption` when a watchdog fires. Further traffic
1013
+ after the frame makes a later EOF `unknown`, including an incomplete frame.
1014
+ Reconciliation continues after **every** renewal because events have no replay.
1015
+ Planned renewal is a lifecycle change, not an `onError` failure.
1016
+
1017
+ Routes use the existing `broadcast` instrumentation watcher for admission,
1018
+ connection, and cleanup events. Server closure details report `planned-renewal`,
1019
+ `provider-disconnect`, `buffer-overflow`, `setup-failure`, or `unknown` as known
1020
+ locally; the server cannot infer why a browser cancelled. An optional
1021
+ `instrumentation` sink on `createBroadcastClient` uses the existing
1022
+ `ProviderInstrumentationPort` to record `broadcast.connecting`, `broadcast.ready`,
1023
+ and `broadcast.closed` with browser reasons. These events contain safe counts,
1024
+ durations, and reasons, never headers, credentials, payloads, or channel params.
1025
+ Keep custom logging equally restrained.
1026
+
855
1027
  ## License
856
1028
 
857
1029
  MIT
@@ -1,6 +1,19 @@
1
1
  import type { ChannelDefinition, InferChannelEvent, InferChannelParams } from "@beignet/core/broadcasting";
2
- import type { BroadcastClient, BroadcastClientStatus, BroadcastClientSubscription } from "@beignet/core/broadcasting/client";
3
- import type { QueryClient, QueryFilters } from "@tanstack/react-query";
2
+ import type { BroadcastClient, BroadcastClientStatus, BroadcastClientSubscription, BroadcastConnectionInfo } from "@beignet/core/broadcasting/client";
3
+ import type { MutationFilters, Query, QueryClient, QueryFilters } from "@tanstack/react-query";
4
+ /** Application policy for broadcast-driven refreshes only. Checks must be synchronous. */
5
+ export interface BroadcastRefreshGate {
6
+ isBlocked(query: Query): boolean;
7
+ /** Notify after policy changes. Return cleanup; do not acquire resources before throwing. */
8
+ subscribe(onChange: () => void): () => void;
9
+ }
10
+ export interface BroadcastMutationRefreshGateOptions {
11
+ queryClient: QueryClient;
12
+ /** Native mutationKey/exact/predicate matching. Only pending mutations block, including paused ones. */
13
+ mutations: Omit<MutationFilters, "status">;
14
+ }
15
+ /** Coordinate related pending mutations without application subscription bookkeeping. */
16
+ export declare function createBroadcastMutationRefreshGate(options: BroadcastMutationRefreshGateOptions): BroadcastRefreshGate;
4
17
  export interface BroadcastQuerySubscriptionOptions<C extends ChannelDefinition> {
5
18
  client: BroadcastClient;
6
19
  channel: C;
@@ -9,8 +22,11 @@ export interface BroadcastQuerySubscriptionOptions<C extends ChannelDefinition>
9
22
  invalidates: (event: InferChannelEvent<C>) => readonly QueryFilters[];
10
23
  /** All state covered by the channel, including unread counters and filtered lists. */
11
24
  reconciles: readonly QueryFilters[];
25
+ refreshGate?: BroadcastRefreshGate;
26
+ /** Readiness notification; queued reconciliation may still be blocked by the gate. */
27
+ onSync?: (info: BroadcastConnectionInfo) => void | Promise<void>;
12
28
  onError?: (error: unknown) => void;
13
- onStatusChange?: (status: BroadcastClientStatus) => void;
29
+ onStatusChange?: (status: BroadcastClientStatus, info: BroadcastConnectionInfo) => void;
14
30
  }
15
31
  /** Invalidate hints and refetch after readiness. An event during a fetch schedules one later fetch. */
16
32
  export declare function createBroadcastQuerySubscription<C extends ChannelDefinition>(options: BroadcastQuerySubscriptionOptions<C>): BroadcastClientSubscription;
@@ -1 +1 @@
1
- {"version":3,"file":"broadcasting.d.ts","sourceRoot":"","sources":["../src/broadcasting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAS,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,WAAW,iCAAiC,CAChD,CAAC,SAAS,iBAAiB;IAE3B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,SAAS,YAAY,EAAE,CAAC;IACtE,sFAAsF;IACtF,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC1D;AAED,uGAAuG;AACvG,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,iBAAiB,EAC1E,OAAO,EAAE,iCAAiC,CAAC,CAAC,CAAC,GAC5C,2BAA2B,CA6E7B"}
1
+ {"version":3,"file":"broadcasting.d.ts","sourceRoot":"","sources":["../src/broadcasting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,eAAe,EACf,KAAK,EACL,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B,0FAA0F;AAC1F,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IACjC,6FAA6F;IAC7F,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,WAAW,CAAC;IACzB,wGAAwG;IACxG,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;CAC5C;AAED,yFAAyF;AACzF,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,mCAAmC,GAC3C,oBAAoB,CAMtB;AAED,MAAM,WAAW,iCAAiC,CAChD,CAAC,SAAS,iBAAiB;IAE3B,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,SAAS,YAAY,EAAE,CAAC;IACtE,sFAAsF;IACtF,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,sFAAsF;IACtF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,uBAAuB,KAC1B,IAAI,CAAC;CACX;AAED,uGAAuG;AACvG,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,iBAAiB,EAC1E,OAAO,EAAE,iCAAiC,CAAC,CAAC,CAAC,GAC5C,2BAA2B,CAiJ7B"}
@@ -1,9 +1,45 @@
1
+ /** Coordinate related pending mutations without application subscription bookkeeping. */
2
+ export function createBroadcastMutationRefreshGate(options) {
3
+ return {
4
+ isBlocked: () => options.queryClient.isMutating(options.mutations) > 0,
5
+ subscribe: (onChange) => options.queryClient.getMutationCache().subscribe(onChange),
6
+ };
7
+ }
1
8
  /** Invalidate hints and refetch after readiness. An event during a fetch schedules one later fetch. */
2
9
  export function createBroadcastQuerySubscription(options) {
3
10
  const cache = options.queryClient.getQueryCache();
4
11
  const pending = new Set();
5
12
  let closed = false;
6
13
  let queued = false;
14
+ const failed = new Set();
15
+ let gateSubscribed = !options.refreshGate;
16
+ function report(error) {
17
+ if (closed)
18
+ return;
19
+ try {
20
+ options.onError?.(error);
21
+ }
22
+ catch {
23
+ /* Reporting cannot disrupt observers. */
24
+ }
25
+ }
26
+ function blocked(query) {
27
+ if (!gateSubscribed || failed.has(query))
28
+ return true;
29
+ try {
30
+ if (!options.refreshGate)
31
+ return false;
32
+ const result = options.refreshGate.isBlocked(query);
33
+ if (typeof result !== "boolean")
34
+ throw new TypeError("Broadcast refresh gate isBlocked must return a boolean");
35
+ return result;
36
+ }
37
+ catch (error) {
38
+ failed.add(query);
39
+ report(error);
40
+ return true;
41
+ }
42
+ }
7
43
  function flush() {
8
44
  if (queued || closed)
9
45
  return;
@@ -12,31 +48,35 @@ export function createBroadcastQuerySubscription(options) {
12
48
  queued = false;
13
49
  if (closed)
14
50
  return;
15
- for (const query of pending) {
16
- if (query.state.fetchStatus !== "idle")
51
+ // A snapshot prevents synchronous callbacks from consuming a new hint in this pass.
52
+ for (const query of [...pending]) {
53
+ if (closed)
54
+ return;
55
+ if (query.state.fetchStatus !== "idle" || blocked(query) || closed)
17
56
  continue;
18
57
  pending.delete(query);
19
58
  // A completed fetch clears invalidation, even when it began before the hint.
20
59
  query.invalidate();
21
- // Inactive queries remain stale. TanStack owns enabled/static and observer behavior.
60
+ // Cache observers may close the gate (or unsubscribe) during invalidation.
61
+ if (closed)
62
+ return;
63
+ if (blocked(query) || closed) {
64
+ if (!closed)
65
+ pending.add(query);
66
+ continue;
67
+ }
68
+ // Inactive queries remain stale. TanStack owns enabled/static behavior.
22
69
  void options.queryClient
23
- .refetchQueries({ queryKey: query.queryKey, exact: true, type: "active" }, { cancelRefetch: false, throwOnError: true })
24
- .catch((error) => {
25
- if (!closed) {
26
- try {
27
- options.onError?.(error);
28
- }
29
- catch {
30
- /* Reporting cannot disrupt query observers. */
31
- }
32
- }
33
- });
70
+ .refetchQueries({ predicate: (candidate) => candidate === query, type: "active" }, { cancelRefetch: false, throwOnError: true })
71
+ .catch(report);
34
72
  }
35
73
  });
36
74
  }
37
75
  const unsubscribeCache = cache.subscribe((event) => {
38
- if (event.type === "removed")
76
+ if (event.type === "removed") {
39
77
  pending.delete(event.query);
78
+ failed.delete(event.query);
79
+ }
40
80
  if (event.type === "updated" &&
41
81
  event.query.state.fetchStatus === "idle" &&
42
82
  pending.has(event.query))
@@ -48,24 +88,62 @@ export function createBroadcastQuerySubscription(options) {
48
88
  for (const filter of filters)
49
89
  for (const query of cache.findAll(filter)) {
50
90
  pending.add(query);
51
- query.invalidate();
91
+ failed.delete(query);
92
+ // Preserve immediate staleness for existing subscriptions without a gate.
93
+ if (!options.refreshGate)
94
+ query.invalidate();
52
95
  }
53
96
  flush();
54
97
  }
98
+ let unsubscribeGate;
99
+ if (options.refreshGate) {
100
+ try {
101
+ // Subscribe before the first check. A change during subscription still schedules a check.
102
+ const cleanup = options.refreshGate.subscribe(() => {
103
+ failed.clear();
104
+ flush();
105
+ });
106
+ if (typeof cleanup !== "function")
107
+ throw new TypeError("Broadcast refresh gate subscribe must return a cleanup function");
108
+ unsubscribeGate = cleanup;
109
+ gateSubscribed = true;
110
+ }
111
+ catch (error) {
112
+ report(error);
113
+ }
114
+ }
115
+ function dispose() {
116
+ unsubscribeCache();
117
+ try {
118
+ unsubscribeGate?.();
119
+ }
120
+ catch (error) {
121
+ try {
122
+ options.onError?.(error);
123
+ }
124
+ catch {
125
+ /* Cleanup must finish. */
126
+ }
127
+ }
128
+ pending.clear();
129
+ failed.clear();
130
+ }
55
131
  let subscription;
56
132
  try {
57
133
  subscription = options.client.subscribe(options.channel, {
58
134
  params: options.params,
59
135
  onEvent: (event) => invalidate(options.invalidates(event)),
60
- onSync: () => invalidate(options.reconciles),
136
+ onSync: (info) => {
137
+ invalidate(options.reconciles);
138
+ return options.onSync?.(info);
139
+ },
61
140
  onError: options.onError,
62
141
  onStatusChange: options.onStatusChange,
63
142
  });
64
143
  }
65
144
  catch (error) {
66
145
  closed = true;
67
- unsubscribeCache();
68
- pending.clear();
146
+ dispose();
69
147
  throw error;
70
148
  }
71
149
  return {
@@ -74,9 +152,12 @@ export function createBroadcastQuerySubscription(options) {
74
152
  if (closed)
75
153
  return;
76
154
  closed = true;
77
- subscription.unsubscribe();
78
- unsubscribeCache();
79
- pending.clear();
155
+ try {
156
+ subscription.unsubscribe();
157
+ }
158
+ finally {
159
+ dispose();
160
+ }
80
161
  },
81
162
  };
82
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"broadcasting.js","sourceRoot":"","sources":["../src/broadcasting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broadcasting.js","sourceRoot":"","sources":["../src/broadcasting.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Client, Endpoint, EndpointCallArgs, InferBody, InferEndpointContractError, InferPathParams, InferQuery, InferSuccessResponse } from "@beignet/core/client";
2
- export { type BroadcastQuerySubscriptionOptions, createBroadcastQuerySubscription, } from "./broadcasting.js";
2
+ export { type BroadcastMutationRefreshGateOptions, type BroadcastQuerySubscriptionOptions, type BroadcastRefreshGate, createBroadcastMutationRefreshGate, createBroadcastQuerySubscription, } from "./broadcasting.js";
3
3
  import { type ContractLike, type HttpContractConfig, type ResolveContract } from "@beignet/core/contracts";
4
4
  import type { InfiniteData, InvalidateQueryFilters, QueryClient, QueryFunction, QueryKey, UseInfiniteQueryOptions, UseMutationOptions, UseQueryOptions } from "@tanstack/react-query";
5
5
  import { type ContractCacheEntry, type UpdateCachedQueriesOptions } from "./cache.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { createBroadcastQuerySubscription, } from "./broadcasting.js";
1
+ export { createBroadcastMutationRefreshGate, createBroadcastQuerySubscription, } from "./broadcasting.js";
2
2
  import { resolveContract, } from "@beignet/core/contracts";
3
3
  import { readCacheParams, } from "./cache.js";
4
4
  function mergeParamObjects(base, patch) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/react-query",
3
- "version": "0.0.54",
3
+ "version": "0.0.56",
4
4
  "type": "module",
5
5
  "description": "TanStack Query integration for Beignet",
6
6
  "main": "./dist/index.js",
@@ -34,39 +34,34 @@ export function makeQueryClient() {
34
34
  Reuse the app's existing helper names and client options. Do not introduce a
35
35
  parallel Beignet client unless the app already has a multi-client convention.
36
36
 
37
- ## Feature Client Helpers
37
+ ## Direct Options And Shared Behavior
38
38
 
39
- Feature-specific query options, mutations, and hooks may live under the
40
- feature. Prefer the canonical directory form for new apps:
39
+ Import contracts, the root `rq` adapter, and TanStack hooks in the component.
40
+ Inside its body, pass options directly to the hooks:
41
41
 
42
- ```txt
43
- features/todos/client/queries.ts
44
- ```
45
-
46
- Existing apps may use:
47
-
48
- ```txt
49
- features/todos/client.ts
42
+ ```ts
43
+ const todos = useQuery(rq(listTodos).queryOptions());
44
+ const create = useMutation(
45
+ rq(createTodo).mutationOptions({
46
+ invalidates: () => [rq(listTodos).contractFilter()],
47
+ }),
48
+ );
50
49
  ```
51
50
 
52
- Follow the existing style unless intentionally migrating. Do not mix both
53
- within one feature.
51
+ Extract feature client modules only when they own reusable behavior: shared
52
+ query defaults, pagination, optimistic updates and rollback, or filters used by
53
+ mutations and broadcasts. Prefer `features/<feature>/client/queries.ts` for
54
+ extracted options. Existing apps may use `features/<feature>/client.ts`; follow
55
+ their style without creating both forms. Keep component callbacks inside
56
+ `mutationOptions({ ... })` so they compose with declarative invalidation.
54
57
 
55
58
  ```ts
56
- import type { QueryClient } from "@tanstack/react-query";
59
+ // features/todos/client/queries.ts: a shared freshness default
57
60
  import { rq } from "@/client";
58
- import { createTodo, listTodos } from "@/features/todos/contracts";
61
+ import { listTodos } from "@/features/todos/contracts";
59
62
 
60
63
  export function listTodosQueryOptions() {
61
- return rq(listTodos).queryOptions({ query: { limit: 20 } });
62
- }
63
-
64
- export function createTodoMutationOptions() {
65
- return rq(createTodo).mutationOptions();
66
- }
67
-
68
- export function invalidateTodos(queryClient: QueryClient) {
69
- return rq(listTodos).invalidate(queryClient);
64
+ return rq(listTodos).queryOptions({ staleTime: 30_000 });
70
65
  }
71
66
  ```
72
67
 
@@ -160,9 +155,9 @@ If `beignet lint` says a client component reaches a use-case module:
160
155
 
161
156
  1. Move shared DTOs and validation to `features/<feature>/schemas.ts`.
162
157
  2. Remove imports from use cases, routes, infra, providers, or `server/`.
163
- 3. Add a feature client helper that imports only contracts and root client
164
- helpers.
165
- 4. Update components to call the helper through TanStack Query.
158
+ 3. Import browser-safe contracts and the root `rq` adapter in the component.
159
+ 4. Pass `rq(contract).queryOptions()` or `.mutationOptions()` to TanStack Query;
160
+ extract a feature client helper only for shared behavior.
166
161
 
167
162
  Then run:
168
163
 
@@ -192,3 +187,9 @@ Preserve optimistic mutation state while a mutation is pending and reconcile
192
187
  versions after settlement. Broadcasting does not patch caches or resolve edit
193
188
  conflicts. Merge `getRequestHeaders()` into the typed client's dynamic headers
194
189
  only when the app opts into authenticated initiating-client exclusion.
190
+
191
+ Use [Broadcast coordination](./references/broadcast-coordination.md) for the
192
+ optional mutation refresh helper, custom write gates, connection admission,
193
+ and lifecycle metadata. Keep feature query mappings in feature `client/` code
194
+ and admission policy in `server/broadcast-admission.ts`, registered once on
195
+ the broadcast endpoint. The framework owns listeners and release callbacks.
@@ -0,0 +1,169 @@
1
+ # Broadcast coordination
2
+
3
+ ### Delay broadcast refreshes during saves
4
+
5
+ `createBroadcastQuerySubscription` already coordinates queries that are fetching.
6
+ Its optional `refreshGate` also coordinates pending writes. The new
7
+ `createBroadcastMutationRefreshGate` helper covers ordinary TanStack mutations;
8
+ the new `BroadcastRefreshGate` interface supports application write queues.
9
+ Existing subscriptions need no changes when this coordination is unnecessary.
10
+
11
+ For task queries, put the following in `features/tasks/client/broadcasts.ts`.
12
+ This example assumes browser-safe `taskChanges` in `features/tasks/channels.ts`
13
+ with a `workspaceId` parameter, and existing `listTasks` and `saveTask` contracts.
14
+ `listTasks` accepts a `workspaceId` query parameter. Use the returned mutation
15
+ options with `useMutation`, retaining your optimistic update/rollback callbacks:
16
+
17
+ ```ts
18
+ import type { BroadcastClient } from "@beignet/core/broadcasting/client";
19
+ import {
20
+ createBroadcastMutationRefreshGate,
21
+ createBroadcastQuerySubscription,
22
+ } from "@beignet/react-query";
23
+ import type { QueryClient } from "@tanstack/react-query";
24
+ import { rq } from "@/client";
25
+ import { taskChanges } from "@/features/tasks/channels";
26
+ import { listTasks, saveTask } from "@/features/tasks/contracts";
27
+
28
+ export function saveTaskMutationOptions(workspaceId: string) {
29
+ return rq(saveTask).mutationOptions({
30
+ mutationKey: ["tasks", workspaceId, "save"],
31
+ });
32
+ }
33
+
34
+ export function subscribeToTaskChanges(
35
+ client: BroadcastClient,
36
+ queryClient: QueryClient,
37
+ workspaceId: string,
38
+ ) {
39
+ const taskQueries = rq(listTasks).filter({ query: { workspaceId } });
40
+ return createBroadcastQuerySubscription({
41
+ client, queryClient, channel: taskChanges, params: { workspaceId },
42
+ invalidates: () => [taskQueries],
43
+ reconciles: [taskQueries],
44
+ refreshGate: createBroadcastMutationRefreshGate({
45
+ queryClient,
46
+ mutations: { mutationKey: ["tasks", workspaceId] },
47
+ }),
48
+ });
49
+ }
50
+ ```
51
+
52
+ `mutations` accepts TanStack's `mutationKey`, `exact`, and `predicate` filters.
53
+ Key matching is inclusive unless `exact: true`. Give every related write the
54
+ same key prefix, including creates and deletes that affect lists or counters.
55
+ Include workspace or resource scope when appropriate. Unrelated mutations do
56
+ not block. Omitting a key/predicate deliberately selects all mutations.
57
+
58
+ The helper always checks **pending** mutations; `status` is not configurable.
59
+ Paused pending mutations (offline or waiting for a mutation scope) also block,
60
+ as do overlapping matching mutations until all settle. A custom predicate can
61
+ exclude mutations, but excluding paused writes can refresh over unsaved edits.
62
+ The gate has no timeout that overrides your blocking policy.
63
+
64
+ ### Combine mutations with an external write lock
65
+
66
+ Put this application helper beside the feature's broadcast query mappings.
67
+ Pass `createTaskWriteRefreshGate({ queryClient, workspaceId, writeLock })` as
68
+ `refreshGate` in the subscription above. The external lock owns its state and
69
+ notifies after changes; it may inspect the query key to block only related
70
+ queries. Beignet owns listening, queuing, and cleanup:
71
+
72
+ ```ts
73
+ import {
74
+ type BroadcastRefreshGate,
75
+ createBroadcastMutationRefreshGate,
76
+ } from "@beignet/react-query";
77
+ import type { Query, QueryClient } from "@tanstack/react-query";
78
+
79
+ // Application-owned write queue/lock. It can block different queries independently.
80
+ export interface TaskWriteLock {
81
+ isBlocked(query: Query): boolean;
82
+ subscribe(onChange: () => void): () => void;
83
+ }
84
+
85
+ export function createTaskWriteRefreshGate({
86
+ queryClient, workspaceId, writeLock,
87
+ }: { queryClient: QueryClient; workspaceId: string; writeLock: TaskWriteLock }): BroadcastRefreshGate {
88
+ const mutations = createBroadcastMutationRefreshGate({
89
+ queryClient,
90
+ mutations: { mutationKey: ["tasks", workspaceId] },
91
+ });
92
+ return {
93
+ isBlocked: (query) => mutations.isBlocked(query) || writeLock.isBlocked(query),
94
+ subscribe(onChange) {
95
+ const stopMutations = mutations.subscribe(onChange);
96
+ try {
97
+ const stopLock = writeLock.subscribe(onChange);
98
+ return () => { try { stopLock(); } finally { stopMutations(); } };
99
+ } catch (error) {
100
+ stopMutations();
101
+ throw error;
102
+ }
103
+ },
104
+ };
105
+ }
106
+ ```
107
+
108
+ Both event invalidations and readiness/reconnect reconciliation queue matching
109
+ **existing queries**, deduplicated per query. A blocked query is neither
110
+ invalidated nor refetched by the subscription. The gate is subscribed before
111
+ checking state to avoid a missed wakeup and checked again immediately before
112
+ queued work begins. Opening it schedules active queries for refresh and marks
113
+ inactive queries stale. TanStack's enabled/static rules still control fetching.
114
+ If it closes again, unprocessed work stays queued. A hint during an existing
115
+ fetch remains pending for a subsequent refresh after that fetch settles.
116
+
117
+ The gate controls **broadcast-driven refreshes only**. Polling, manual refresh,
118
+ mutation callbacks that invalidate queries, already-running requests, and
119
+ optimistic cache updates remain application-owned. If all refresh sources must
120
+ respect a write lock, apply that policy to those sources too.
121
+
122
+ Unsubscribe removes transport, query-cache, and gate listeners, discards queued
123
+ work, and prevents deferred callbacks from starting refreshes. It cannot undo
124
+ an already-started request. Gate checks that throw report through `onError`,
125
+ keep the query pending, and stay blocked until a later gate notification or
126
+ broadcast hint retries the check. They do not poll or retry themselves. If
127
+ `subscribe` throws, the subscription stays blocked: fix the cause, unsubscribe,
128
+ and create a new subscription. Custom gates must release partially acquired
129
+ listeners before throwing. Unsubscribe failures are reported while the other
130
+ listeners are still released.
131
+
132
+ ### Diagnose connection changes
133
+
134
+ `onSync(info)` and `onStatusChange(status, info)` receive
135
+ `BroadcastConnectionInfo` from `@beignet/core/broadcasting/client`. Callbacks
136
+ may omit the metadata argument when they do not need it.
137
+ `createBroadcastQuerySubscription` forwards status metadata and accepts an
138
+ optional `onSync(info)` observer; its reconciliation is still scheduled even
139
+ when that observer throws. This notification describes readiness, not completion
140
+ of queued or gated query refreshes. Do not refetch from that observer to bypass
141
+ the gate accidentally.
142
+
143
+ | `info.reason` | What Beignet knows |
144
+ | --- | --- |
145
+ | `initial` | The first physical connection attempt. |
146
+ | `planned-renewal` | The server explicitly announced renewal and then ended the stream normally without further traffic. |
147
+ | `subscription-change` | Adding or removing a distinct channel restarted the multiplexed connection. |
148
+ | `interruption` | A timeout, transport/protocol failure, or retryable rejection interrupted the connection. |
149
+ | `unknown` | An unexplained EOF, explicit resume, or browser wakeup has no more precise known cause. |
150
+
151
+ Readiness reports the reason for that physical connection; another observer
152
+ joining an already-ready channel sees the same information. Reconnecting status
153
+ reports the known reason for restarting. An elapsed lifetime alone never proves
154
+ planned renewal. Servers send an explicit, connection-wide renewal control frame
155
+ before closing normally. An unexplained EOF stays `unknown`. A renewal frame
156
+ followed by a stall produces `interruption` when a watchdog fires. Further traffic
157
+ after the frame makes a later EOF `unknown`, including an incomplete frame.
158
+ Reconciliation continues after **every** renewal because events have no replay.
159
+ Planned renewal is a lifecycle change, not an `onError` failure.
160
+
161
+ Routes use the existing `broadcast` instrumentation watcher for admission,
162
+ connection, and cleanup events. Server closure details report `planned-renewal`,
163
+ `provider-disconnect`, `buffer-overflow`, `setup-failure`, or `unknown` as known
164
+ locally; the server cannot infer why a browser cancelled. An optional
165
+ `instrumentation` sink on `createBroadcastClient` uses the existing
166
+ `ProviderInstrumentationPort` to record `broadcast.connecting`, `broadcast.ready`,
167
+ and `broadcast.closed` with browser reasons. These events contain safe counts,
168
+ durations, and reasons, never headers, credentials, payloads, or channel params.
169
+ Keep custom logging equally restrained.
@@ -7,8 +7,38 @@ import type {
7
7
  BroadcastClient,
8
8
  BroadcastClientStatus,
9
9
  BroadcastClientSubscription,
10
+ BroadcastConnectionInfo,
10
11
  } from "@beignet/core/broadcasting/client";
11
- import type { Query, QueryClient, QueryFilters } from "@tanstack/react-query";
12
+ import type {
13
+ MutationFilters,
14
+ Query,
15
+ QueryClient,
16
+ QueryFilters,
17
+ } from "@tanstack/react-query";
18
+
19
+ /** Application policy for broadcast-driven refreshes only. Checks must be synchronous. */
20
+ export interface BroadcastRefreshGate {
21
+ isBlocked(query: Query): boolean;
22
+ /** Notify after policy changes. Return cleanup; do not acquire resources before throwing. */
23
+ subscribe(onChange: () => void): () => void;
24
+ }
25
+
26
+ export interface BroadcastMutationRefreshGateOptions {
27
+ queryClient: QueryClient;
28
+ /** Native mutationKey/exact/predicate matching. Only pending mutations block, including paused ones. */
29
+ mutations: Omit<MutationFilters, "status">;
30
+ }
31
+
32
+ /** Coordinate related pending mutations without application subscription bookkeeping. */
33
+ export function createBroadcastMutationRefreshGate(
34
+ options: BroadcastMutationRefreshGateOptions,
35
+ ): BroadcastRefreshGate {
36
+ return {
37
+ isBlocked: () => options.queryClient.isMutating(options.mutations) > 0,
38
+ subscribe: (onChange) =>
39
+ options.queryClient.getMutationCache().subscribe(onChange),
40
+ };
41
+ }
12
42
 
13
43
  export interface BroadcastQuerySubscriptionOptions<
14
44
  C extends ChannelDefinition,
@@ -20,8 +50,14 @@ export interface BroadcastQuerySubscriptionOptions<
20
50
  invalidates: (event: InferChannelEvent<C>) => readonly QueryFilters[];
21
51
  /** All state covered by the channel, including unread counters and filtered lists. */
22
52
  reconciles: readonly QueryFilters[];
53
+ refreshGate?: BroadcastRefreshGate;
54
+ /** Readiness notification; queued reconciliation may still be blocked by the gate. */
55
+ onSync?: (info: BroadcastConnectionInfo) => void | Promise<void>;
23
56
  onError?: (error: unknown) => void;
24
- onStatusChange?: (status: BroadcastClientStatus) => void;
57
+ onStatusChange?: (
58
+ status: BroadcastClientStatus,
59
+ info: BroadcastConnectionInfo,
60
+ ) => void;
25
61
  }
26
62
 
27
63
  /** Invalidate hints and refetch after readiness. An event during a fetch schedules one later fetch. */
@@ -32,37 +68,67 @@ export function createBroadcastQuerySubscription<C extends ChannelDefinition>(
32
68
  const pending = new Set<Query>();
33
69
  let closed = false;
34
70
  let queued = false;
71
+ const failed = new Set<Query>();
72
+ let gateSubscribed = !options.refreshGate;
73
+ function report(error: unknown) {
74
+ if (closed) return;
75
+ try {
76
+ options.onError?.(error);
77
+ } catch {
78
+ /* Reporting cannot disrupt observers. */
79
+ }
80
+ }
81
+ function blocked(query: Query): boolean {
82
+ if (!gateSubscribed || failed.has(query)) return true;
83
+ try {
84
+ if (!options.refreshGate) return false;
85
+ const result = options.refreshGate.isBlocked(query);
86
+ if (typeof result !== "boolean")
87
+ throw new TypeError(
88
+ "Broadcast refresh gate isBlocked must return a boolean",
89
+ );
90
+ return result;
91
+ } catch (error) {
92
+ failed.add(query);
93
+ report(error);
94
+ return true;
95
+ }
96
+ }
35
97
  function flush() {
36
98
  if (queued || closed) return;
37
99
  queued = true;
38
100
  queueMicrotask(() => {
39
101
  queued = false;
40
102
  if (closed) return;
41
- for (const query of pending) {
42
- if (query.state.fetchStatus !== "idle") continue;
103
+ // A snapshot prevents synchronous callbacks from consuming a new hint in this pass.
104
+ for (const query of [...pending]) {
105
+ if (closed) return;
106
+ if (query.state.fetchStatus !== "idle" || blocked(query) || closed)
107
+ continue;
43
108
  pending.delete(query);
44
109
  // A completed fetch clears invalidation, even when it began before the hint.
45
110
  query.invalidate();
46
- // Inactive queries remain stale. TanStack owns enabled/static and observer behavior.
111
+ // Cache observers may close the gate (or unsubscribe) during invalidation.
112
+ if (closed) return;
113
+ if (blocked(query) || closed) {
114
+ if (!closed) pending.add(query);
115
+ continue;
116
+ }
117
+ // Inactive queries remain stale. TanStack owns enabled/static behavior.
47
118
  void options.queryClient
48
119
  .refetchQueries(
49
- { queryKey: query.queryKey, exact: true, type: "active" },
120
+ { predicate: (candidate) => candidate === query, type: "active" },
50
121
  { cancelRefetch: false, throwOnError: true },
51
122
  )
52
- .catch((error) => {
53
- if (!closed) {
54
- try {
55
- options.onError?.(error);
56
- } catch {
57
- /* Reporting cannot disrupt query observers. */
58
- }
59
- }
60
- });
123
+ .catch(report);
61
124
  }
62
125
  });
63
126
  }
64
127
  const unsubscribeCache = cache.subscribe((event) => {
65
- if (event.type === "removed") pending.delete(event.query);
128
+ if (event.type === "removed") {
129
+ pending.delete(event.query);
130
+ failed.delete(event.query);
131
+ }
66
132
  if (
67
133
  event.type === "updated" &&
68
134
  event.query.state.fetchStatus === "idle" &&
@@ -75,23 +141,59 @@ export function createBroadcastQuerySubscription<C extends ChannelDefinition>(
75
141
  for (const filter of filters)
76
142
  for (const query of cache.findAll(filter)) {
77
143
  pending.add(query);
78
- query.invalidate();
144
+ failed.delete(query);
145
+ // Preserve immediate staleness for existing subscriptions without a gate.
146
+ if (!options.refreshGate) query.invalidate();
79
147
  }
80
148
  flush();
81
149
  }
150
+ let unsubscribeGate: (() => void) | undefined;
151
+ if (options.refreshGate) {
152
+ try {
153
+ // Subscribe before the first check. A change during subscription still schedules a check.
154
+ const cleanup = options.refreshGate.subscribe(() => {
155
+ failed.clear();
156
+ flush();
157
+ });
158
+ if (typeof cleanup !== "function")
159
+ throw new TypeError(
160
+ "Broadcast refresh gate subscribe must return a cleanup function",
161
+ );
162
+ unsubscribeGate = cleanup;
163
+ gateSubscribed = true;
164
+ } catch (error) {
165
+ report(error);
166
+ }
167
+ }
168
+ function dispose() {
169
+ unsubscribeCache();
170
+ try {
171
+ unsubscribeGate?.();
172
+ } catch (error) {
173
+ try {
174
+ options.onError?.(error);
175
+ } catch {
176
+ /* Cleanup must finish. */
177
+ }
178
+ }
179
+ pending.clear();
180
+ failed.clear();
181
+ }
82
182
  let subscription: BroadcastClientSubscription;
83
183
  try {
84
184
  subscription = options.client.subscribe(options.channel, {
85
185
  params: options.params,
86
186
  onEvent: (event) => invalidate(options.invalidates(event)),
87
- onSync: () => invalidate(options.reconciles),
187
+ onSync: (info) => {
188
+ invalidate(options.reconciles);
189
+ return options.onSync?.(info);
190
+ },
88
191
  onError: options.onError,
89
192
  onStatusChange: options.onStatusChange,
90
193
  });
91
194
  } catch (error) {
92
195
  closed = true;
93
- unsubscribeCache();
94
- pending.clear();
196
+ dispose();
95
197
  throw error;
96
198
  }
97
199
  return {
@@ -99,9 +201,11 @@ export function createBroadcastQuerySubscription<C extends ChannelDefinition>(
99
201
  unsubscribe() {
100
202
  if (closed) return;
101
203
  closed = true;
102
- subscription.unsubscribe();
103
- unsubscribeCache();
104
- pending.clear();
204
+ try {
205
+ subscription.unsubscribe();
206
+ } finally {
207
+ dispose();
208
+ }
105
209
  },
106
210
  };
107
211
  }
package/src/index.ts CHANGED
@@ -10,7 +10,10 @@ import type {
10
10
  } from "@beignet/core/client";
11
11
 
12
12
  export {
13
+ type BroadcastMutationRefreshGateOptions,
13
14
  type BroadcastQuerySubscriptionOptions,
15
+ type BroadcastRefreshGate,
16
+ createBroadcastMutationRefreshGate,
14
17
  createBroadcastQuerySubscription,
15
18
  } from "./broadcasting.js";
16
19