@apollo/client 4.2.0-alpha.7 → 4.2.0-alpha.8

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.
@@ -18,9 +18,11 @@ class RefetchEventManager {
18
18
  handlers;
19
19
  subscriptions = new Map();
20
20
  client;
21
+ defaultHandler;
21
22
  constructor(options = {}) {
22
23
  this.sources = options.sources ?? {};
23
24
  this.handlers = options.handlers ?? {};
25
+ this.defaultHandler = options.defaultHandler ?? defaultHandler;
24
26
  }
25
27
  /**
26
28
  * Connects the client to this refetch event manager. Connecting a client
@@ -84,6 +86,12 @@ class RefetchEventManager {
84
86
  setEventHandler(source, handler) {
85
87
  this.handlers[source] = handler;
86
88
  }
89
+ /**
90
+ * Replaces the default event handler with the provided handler.
91
+ */
92
+ setDefaultEventHandler(handler) {
93
+ this.defaultHandler = handler;
94
+ }
87
95
  /**
88
96
  * Manually triggers a refetch for the provided event.
89
97
  *
@@ -105,7 +113,7 @@ class RefetchEventManager {
105
113
  }
106
114
  return;
107
115
  }
108
- const handler = this.handlers[source] ?? defaultHandler;
116
+ const handler = this.handlers[source] ?? this.defaultHandler;
109
117
  function matchesRefetchOn(oq) {
110
118
  const ctx = { source, payload };
111
119
  const refetchOn = oq.options.refetchOn;
@@ -1 +1 @@
1
- {"version":3,"file":"RefetchEventManager.cjs","sources":["../../../src/core/RefetchEventManager.ts"],"sourcesContent":["import type { Subscription } from \"rxjs\";\n\nimport type { Observable } from \"@apollo/client/utilities\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport type { ApolloClient } from \"./ApolloClient.js\";\nimport type { ObservableQuery } from \"./ObservableQuery.js\";\nimport type { RefetchEvents, RefetchOn } from \"./types.js\";\n\nexport declare namespace RefetchEventManager {\n export interface Options {\n /**\n * A mapping of event names to source functions. The source function is\n * called by the refetch event manager to begin listening for events that\n * trigger automatic refetches. Set to `true` if the event is only\n * triggered by calling `emit` and has no automatic detection logic.\n */\n sources?: {\n [Key in keyof RefetchEvents]?:\n | true\n | RefetchEventManager.EventSource<RefetchEvents[Key]>;\n };\n\n /**\n * A mapping of event names to handler functions that run\n * `client.refetchQueries`. Provide a handler for an event to customize\n * which queries are refetched when an event is triggered.\n */\n handlers?: {\n [Key in keyof RefetchEvents]?: RefetchEventManager.EventHandler<Key>;\n };\n }\n\n export type EventSource<T> = () => Observable<T>;\n export type EventHandler<\n TSource extends keyof RefetchEvents = keyof RefetchEvents,\n > = (\n context: RefetchEventManager.RefetchHandlerContext<TSource>\n ) => ApolloClient.RefetchQueriesResult<any> | void;\n\n export type RefetchHandlerContext<\n TSource extends keyof RefetchEvents = keyof RefetchEvents,\n > =\n TSource extends keyof RefetchEvents ?\n {\n /**\n * The `ApolloClient` instance connected to the refetch event manager.\n */\n client: ApolloClient;\n\n /**\n * Helper function that evaluates the `refetchOn` option to determine if\n * the query should be refetched based on the event that triggered the\n * refetch.\n *\n * @example\n *\n * ```ts\n * new RefetchEventManager({\n * handlers: {\n * customEvent: ({ client, matchesRefetchOn }) => {\n * return client.refetchQueries({\n * include: \"all\",\n * onQueryUpdated: matchesRefetchOn,\n * });\n * },\n * },\n * });\n * ```\n *\n * @example\n * Combined with custom logic\n *\n * ```ts\n * new RefetchEventManager({\n * handlers: {\n * customEvent: ({ client, matchesRefetchOn }) => {\n * return client.refetchQueries({\n * include: \"active\",\n * onQueryUpdated: (observableQuery) => {\n * return (\n * matchesRefetchOn(observableQuery) &&\n * someOtherCondition(observableQuery)\n * );\n * },\n * });\n * },\n * },\n * });\n * ```\n */\n matchesRefetchOn: (observableQuery: ObservableQuery<any>) => boolean;\n\n /**\n * The source name that triggered the refetch.\n */\n source: TSource;\n\n /**\n * Any data emitted by the source along with the event\n */\n payload: RefetchEvents[TSource];\n }\n : never;\n}\n\nconst defaultHandler: RefetchEventManager.EventHandler<keyof RefetchEvents> = ({\n client,\n matchesRefetchOn,\n}) => {\n return client.refetchQueries({\n include: \"active\",\n onQueryUpdated: matchesRefetchOn,\n });\n};\n\nexport class RefetchEventManager {\n private sources: Partial<\n Record<keyof RefetchEvents, true | RefetchEventManager.EventSource<any>>\n >;\n private handlers: Partial<\n Record<keyof RefetchEvents, RefetchEventManager.EventHandler<any>>\n >;\n\n private subscriptions: Map<keyof RefetchEvents, Subscription> = new Map();\n\n private client: ApolloClient | undefined;\n\n constructor(options: RefetchEventManager.Options = {}) {\n this.sources = options.sources ?? {};\n this.handlers = options.handlers ?? {};\n }\n\n /**\n * Connects the client to this refetch event manager. Connecting a client\n * calls each configured source function so they can begin listening for events.\n */\n connect(client: ApolloClient) {\n if (this.client === client) {\n return;\n }\n\n if (this.client) {\n if (__DEV__) {\n invariant.warn(\n \"Connected an `ApolloClient` instance to a `RefetchEventManager` that was already connected to a different `ApolloClient`. The previous client has been disconnected and will no longer receive refetch events from this manager.\"\n );\n }\n this.disconnect();\n }\n\n this.client = client;\n\n Object.entries(this.sources).forEach(([event, source]) => {\n if (typeof source === \"function\") {\n this.subscribeToSource(event as keyof RefetchEvents, source);\n }\n });\n }\n\n /**\n * Disconnects the client from this refetch event manager and calls the cleanup\n * function for each event source.\n */\n disconnect(client?: ApolloClient) {\n if (client && this.client !== client) {\n return;\n }\n\n this.client = undefined;\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions.clear();\n }\n\n /**\n * Returns whether a source is configured.\n */\n hasSource(source: keyof RefetchEvents) {\n return Object.hasOwn(this.sources, source);\n }\n\n /**\n * Replaces the source for an event. If a source was previously configured\n * for the event, its cleanup function is called before the new source is\n * registered.\n */\n setEventSource<TSource extends keyof RefetchEvents>(\n name: TSource,\n source: RefetchEventManager.EventSource<RefetchEvents[TSource]>\n ) {\n this.sources[name] = source;\n this.subscribeToSource(name, source);\n }\n\n /**\n * Removes the configured source for an event and runs its cleanup function.\n */\n removeEventSource(event: keyof RefetchEvents) {\n this.subscriptions.get(event)?.unsubscribe();\n this.subscriptions.delete(event);\n delete this.sources[event];\n }\n\n /**\n * Replaces the handler for an event.\n */\n setEventHandler<TSource extends keyof RefetchEvents>(\n source: TSource,\n handler: RefetchEventManager.EventHandler<TSource>\n ) {\n this.handlers[source] = handler;\n }\n\n /**\n * Manually triggers a refetch for the provided event.\n *\n * @remarks\n * This method warns and does not refetch if the refetch event manager is not\n * connected to a client or a source is not configured for the event.\n */\n emit<TSource extends keyof RefetchEvents>(\n source: TSource,\n ...args: RefetchEvents[TSource] extends void | never ? []\n : undefined extends RefetchEvents[TSource] ?\n [payload?: RefetchEvents[TSource]]\n : [payload: RefetchEvents[TSource]]\n ) {\n const [payload] = args;\n\n if (!this.client) {\n if (__DEV__) {\n invariant.warn(\n \"Received '%s' event but an `ApolloClient` instance is not connected to the `RefetchEventManager`. No queries will refetch. Pass the manager to the `refetchEventManager` option on the `ApolloClient` constructor.\",\n source\n );\n }\n\n return;\n }\n\n if (!this.hasSource(source)) {\n if (__DEV__) {\n invariant.warn(\n \"Received '%s' event but no source is configured for it on the `RefetchEventManager`. No queries will refetch. Add the event to the `sources` option or call `setEventSource`.\",\n source\n );\n }\n\n return;\n }\n\n const handler: RefetchEventManager.EventHandler<any> =\n this.handlers[source] ?? defaultHandler;\n\n function matchesRefetchOn(oq: ObservableQuery<any>) {\n const ctx: RefetchOn.Context<any> = { source, payload };\n const refetchOn = oq.options.refetchOn;\n\n if (typeof refetchOn === \"boolean\") {\n return refetchOn;\n }\n\n if (typeof refetchOn === \"function\") {\n return refetchOn(ctx);\n }\n\n if (typeof refetchOn?.[source] === \"function\") {\n return refetchOn[source](ctx as any);\n }\n\n return refetchOn?.[source] !== false;\n }\n\n handler({ client: this.client, source, payload, matchesRefetchOn });\n }\n\n private subscribeToSource<TSource extends keyof RefetchEvents>(\n name: TSource,\n source: RefetchEventManager.EventSource<RefetchEvents[TSource]>\n ) {\n this.subscriptions.get(name)?.unsubscribe();\n this.subscriptions.delete(name);\n\n if (this.client) {\n this.subscriptions.set(\n name,\n source().subscribe((value) => this.emit(name as any, value))\n );\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;AAGA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAuGA,CAAA,CAAA,CAAA,CAAA,EAAM,CAAN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAA8E,CAAC,EAC7E,CADF,CAAA,CAAA,CAAA,CAAA,CACQ,EACN,CAFF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEkB,EAFlB,CAGC,EAAE,CAHH,EAAA;IAIE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC;QAC3B,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,EAAE,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB;QACjB,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,EAAE,CAApB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC;IACpC,CAAG,CAAC;AACJ,CAAC;AAED,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;IACU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB;IAGP,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB;IAIR,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAkE,CAAlE,CAAA,EAAsE,CAAtE,CAAA,CAAyE,CAAzE,CAA2E;IAEjE,CAAV,CAAA,CAAA,CAAA,CAAA,CAAgB;IAEd,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAqD,CAArD,CAAuD,EAAvD;QACI,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAmB,CAAnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAsC,CAAtC,CAAwC;QACpC,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAoB,CAApB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAC,CAA5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAwC,CAAxC,CAA0C;IACxC;IAEA,CAAF,CAAA;;;KAGA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAV,CAAA,CAAA,CAAA,CAAA,CAA8B,EAA9B;QACI,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAwB,CAAxB,CAAA,CAAA,CAAA,CAAA,CAA8B,EAAE;YAC1B,CAAN,CAAA,CAAA,CAAA,CAAA,CAAA;QACI;QAEA,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAmB,EAAE;YACf,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,EAAE;2BACX,CAAR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,MAES;YACH;YACA,CAAN,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAArB,CAAuB;QACnB;QAEA,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,EAAA,EAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAwB;QAEpB,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAC,CAAnB,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B,CAAC,CAAC,CAAjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,CAAC,CAAC,CAAC,CAA3C,CAAA,CAAA,CAAA,CAAgD,EAAE,CAAlD,CAAA,CAAA,CAAA,CAAA,CAAwD,CAAC,EAAE,CAA3D,EAAA;YACM,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAA4B,CAA5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsC,EAAE;gBAChC,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,CAA/B,CAAA,CAAA,CAAA,CAA2D,EAAE,CAA7D,CAAA,CAAA,CAAA,CAAA,CAAmE,CAAC;YAC9D;QACF,CAAC,CAAC;IACJ;IAEA,CAAF,CAAA;;;KAGA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAkC,EAAlC;QACI,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAkB,CAAlB,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAkC,CAAlC,CAAA,CAAA,CAAA,CAAA,CAAwC,EAAE;YACpC,CAAN,CAAA,CAAA,CAAA,CAAA,CAAA;QACI;QAEA,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,EAAA,EAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B;QACvB,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,CAAC,CAAhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C,EAAE,CAA9C,EAAiD,CAAjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6D,CAAC,CAA9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyE,CAAzE,CAA2E,CAAC;QACxE,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAA4B,CAA5B,CAA8B;IAC5B;IAEA,CAAF,CAAA;;KAEA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAuC,EAAvC;QACI,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAAA,CAA6B,CAAC,CAA9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqC,EAAE,CAAvC,CAAA,CAAA,CAAA,CAAA,CAA6C,CAAC;IAC5C;IAEA,CAAF,CAAA;;;;KAIA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CACZ,CADJ,CAAA,CAAA,CACiB,EACb,CAFJ,CAAA,CAAA,CAAA,CAAA,CAEmE,EAFnE;QAII,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAC,CAAjB,CAAA,CAAA,CAAqB,EAArB,EAAyB,CAAzB,CAAA,CAAA,CAAA,CAAA,CAA+B;QAC3B,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAA+B,EAAE,CAAjC,CAAA,CAAA,CAAA,CAAA,CAAuC,CAAC;IACtC;IAEA,CAAF,CAAA;;KAEA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,CAApB,CAAA,CAAA,CAAA,CAA8C,EAA9C;QACI,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAAA,CAAgC,CAAC,CAAjC,CAAmC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8C,CAA9C,CAAgD;QAC5C,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAAA,CAA6B,CAAC,CAA9B,CAAA,CAAA,CAAA,CAAmC,CAAC;QAChC,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAAA,CAA6B,CAAC;IAC5B;IAEA,CAAF,CAAA;;KAEA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CACb,CADJ,CAAA,CAAA,CAAA,CAAA,CACmB,EACf,CAFJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAEsD,EAFtD;QAII,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAwB,EAAxB,EAA4B,CAA5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmC;IACjC;IAEA,CAAF,CAAA;;;;;;KAMA,CAAA;IACE,CAAF,CAAA,CAAA,CAAM,CACF,CADJ,CAAA,CAAA,CAAA,CAAA,CACmB,EACf,CAFJ,CAAA,CAEO,CAFP,CAAA,CAAA,CAKuC,EALvC;QAOI,CAAJ,CAAA,CAAA,CAAA,EAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,EAAlB,EAAsB,CAAtB,CAAA,CAAA,CAA0B;QAEtB,CAAJ,EAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAa,CAAC,CAAd,CAAA,CAAA,CAAA,CAAA,CAAoB,EAAE;YAChB,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,EAAE;2BACX,CAAR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,OAEU,CAFV,CAAA,CAAA,CAAA,CAAA,EAGS;YACH;YAEA,CAAN,CAAA,CAAA,CAAA,CAAA,CAAA;QACI;QAEA,CAAJ,EAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAa,CAAC,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,EAAE;YAC3B,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,EAAE;2BACX,CAAR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,OAEU,CAFV,CAAA,CAAA,CAAA,CAAA,EAGS;YACH;YAEA,CAAN,CAAA,CAAA,CAAA,CAAA,CAAA;QACI;QAEA,CAAJ,CAAA,CAAA,CAAA,EAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EACM,CADN,CAAA,CAAA,CACU,CAAC,CADX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACmB,CAAC,CADpB,CAAA,CAAA,CAAA,CAAA,CAC0B,EAD1B,CAAA,EAC+B,CAD/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC6C;QAEzC,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,CAAC,CAA9B,CAAsD,EAAtD;YACM,CAAN,CAAA,CAAA,CAAA,EAAY,CAAZ,CAAA,EAAA,EAA0C,EAAE,CAA5C,CAAA,CAAA,CAAA,CAAA,CAAkD,EAAE,CAApD,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAA6D;YACvD,CAAN,CAAA,CAAA,CAAA,EAAY,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAwB,CAAxB,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkC,CAAC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C;YAEtC,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAA+B,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,EAAE;gBAClC,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB;YAClB;YAEA,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAA+B,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC,EAAE;gBACnC,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAA4B,CAAC;YACvB;YAEA,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAA1B,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAmC,EAAnC,CAAA,CAAA,EAAyC,CAAzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmD,EAAE;gBAC7C,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAAA,CAAA,CAAA,CAA+B,CAAC,CAAC,CAAjC,CAAA,CAA2C,CAAC;YACtC;YAEA,CAAN,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAtB,CAAwB,CAAC,CAAzB,CAAA,CAAA,CAAA,CAAA,CAA+B,EAA/B,CAAA,CAAA,EAAqC,CAArC,CAAA,CAAA,CAAA,CAA0C;QACtC;QAEA,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,EAAE,CAAd,CAAA,CAAA,CAAA,CAAA,CAAoB,EAAE,CAAtB,CAAA,CAAA,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAAA,CAAA,CAAiC,EAAE,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAyC,EAAE,CAA3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkD,EAAE,CAApD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAsE,CAAC;IACrE;IAEQ,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CACvB,CADJ,CAAA,CAAA,CACiB,EACb,CAFJ,CAAA,CAAA,CAAA,CAAA,CAEmE,EAFnE;QAII,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAA0B,CAAC,CAA3B,CAAA,CAAA,CAA+B,CAAC,CAAhC,CAAkC,CAAlC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6C,CAA7C,CAA+C;QAC3C,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAAA,CAA6B,CAAC,CAA9B,CAAA,CAAA,CAAkC,CAAC;QAE/B,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAmB,EAAE;YACf,CAAN,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAA4B,CACpB,CADR,CAAA,CAAA,CACY,EACJ,CAFR,CAAA,CAAA,CAAA,CAAA,CAEc,CAFd,CAEgB,CAAC,CAFjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE0B,CAAC,CAAC,CAF5B,CAAA,CAAA,CAAA,CAEiC,EAAE,CAFnC,EAEsC,CAFtC,CAAA,CAAA,CAE0C,CAAC,CAF3C,CAAA,CAAA,CAE+C,CAAC,CAFhD,CAAA,CAAA,CAE2D,EAAE,CAF7D,CAAA,CAAA,CAAA,CAEkE,CAAC,CAAC,CAC7D;QACH;IACF;AACF;AA9KA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"RefetchEventManager.cjs","sources":["../../../src/core/RefetchEventManager.ts"],"sourcesContent":["import type { Subscription } from \"rxjs\";\n\nimport type { Observable } from \"@apollo/client/utilities\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport type { ApolloClient } from \"./ApolloClient.js\";\nimport type { ObservableQuery } from \"./ObservableQuery.js\";\nimport type { RefetchEvents, RefetchOn } from \"./types.js\";\n\nexport declare namespace RefetchEventManager {\n export interface Options {\n /**\n * A mapping of event names to source functions. The source function is\n * called by the refetch event manager to begin listening for events that\n * trigger automatic refetches. Set to `true` if the event is only\n * triggered by calling `emit` and has no automatic detection logic.\n */\n sources?: {\n [Key in keyof RefetchEvents]?:\n | true\n | RefetchEventManager.EventSource<RefetchEvents[Key]>;\n };\n\n /**\n * A mapping of event names to handler functions that run\n * `client.refetchQueries`. Provide a handler for an event to customize\n * which queries are refetched when an event is triggered.\n */\n handlers?: {\n [Key in keyof RefetchEvents]?: RefetchEventManager.EventHandler<Key>;\n };\n\n /**\n * Override the default handler. Used as a fallback when a refetch\n * handler is not defined for a specific event.\n */\n defaultHandler?: RefetchEventManager.EventHandler<keyof RefetchEvents>;\n }\n\n export type EventSource<T> = () => Observable<T>;\n export type EventHandler<\n TSource extends keyof RefetchEvents = keyof RefetchEvents,\n > = (\n context: RefetchEventManager.RefetchHandlerContext<TSource>\n ) => ApolloClient.RefetchQueriesResult<any> | void;\n\n export type RefetchHandlerContext<\n TSource extends keyof RefetchEvents = keyof RefetchEvents,\n > =\n TSource extends keyof RefetchEvents ?\n {\n /**\n * The `ApolloClient` instance connected to the refetch event manager.\n */\n client: ApolloClient;\n\n /**\n * Helper function that evaluates the `refetchOn` option to determine if\n * the query should be refetched based on the event that triggered the\n * refetch.\n *\n * @example\n *\n * ```ts\n * new RefetchEventManager({\n * handlers: {\n * customEvent: ({ client, matchesRefetchOn }) => {\n * return client.refetchQueries({\n * include: \"all\",\n * onQueryUpdated: matchesRefetchOn,\n * });\n * },\n * },\n * });\n * ```\n *\n * @example\n * Combined with custom logic\n *\n * ```ts\n * new RefetchEventManager({\n * handlers: {\n * customEvent: ({ client, matchesRefetchOn }) => {\n * return client.refetchQueries({\n * include: \"active\",\n * onQueryUpdated: (observableQuery) => {\n * return (\n * matchesRefetchOn(observableQuery) &&\n * someOtherCondition(observableQuery)\n * );\n * },\n * });\n * },\n * },\n * });\n * ```\n */\n matchesRefetchOn: (observableQuery: ObservableQuery<any>) => boolean;\n\n /**\n * The source name that triggered the refetch.\n */\n source: TSource;\n\n /**\n * Any data emitted by the source along with the event\n */\n payload: RefetchEvents[TSource];\n }\n : never;\n}\n\nconst defaultHandler: RefetchEventManager.EventHandler<keyof RefetchEvents> = ({\n client,\n matchesRefetchOn,\n}) => {\n return client.refetchQueries({\n include: \"active\",\n onQueryUpdated: matchesRefetchOn,\n });\n};\n\nexport class RefetchEventManager {\n private sources: Partial<\n Record<keyof RefetchEvents, true | RefetchEventManager.EventSource<any>>\n >;\n private handlers: Partial<\n Record<keyof RefetchEvents, RefetchEventManager.EventHandler<any>>\n >;\n\n private subscriptions: Map<keyof RefetchEvents, Subscription> = new Map();\n\n private client: ApolloClient | undefined;\n\n private defaultHandler: RefetchEventManager.EventHandler<keyof RefetchEvents>;\n\n constructor(options: RefetchEventManager.Options = {}) {\n this.sources = options.sources ?? {};\n this.handlers = options.handlers ?? {};\n this.defaultHandler = options.defaultHandler ?? defaultHandler;\n }\n\n /**\n * Connects the client to this refetch event manager. Connecting a client\n * calls each configured source function so they can begin listening for events.\n */\n connect(client: ApolloClient) {\n if (this.client === client) {\n return;\n }\n\n if (this.client) {\n if (__DEV__) {\n invariant.warn(\n \"Connected an `ApolloClient` instance to a `RefetchEventManager` that was already connected to a different `ApolloClient`. The previous client has been disconnected and will no longer receive refetch events from this manager.\"\n );\n }\n this.disconnect();\n }\n\n this.client = client;\n\n Object.entries(this.sources).forEach(([event, source]) => {\n if (typeof source === \"function\") {\n this.subscribeToSource(event as keyof RefetchEvents, source);\n }\n });\n }\n\n /**\n * Disconnects the client from this refetch event manager and calls the cleanup\n * function for each event source.\n */\n disconnect(client?: ApolloClient) {\n if (client && this.client !== client) {\n return;\n }\n\n this.client = undefined;\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions.clear();\n }\n\n /**\n * Returns whether a source is configured.\n */\n hasSource(source: keyof RefetchEvents) {\n return Object.hasOwn(this.sources, source);\n }\n\n /**\n * Replaces the source for an event. If a source was previously configured\n * for the event, its cleanup function is called before the new source is\n * registered.\n */\n setEventSource<TSource extends keyof RefetchEvents>(\n name: TSource,\n source: RefetchEventManager.EventSource<RefetchEvents[TSource]>\n ) {\n this.sources[name] = source;\n this.subscribeToSource(name, source);\n }\n\n /**\n * Removes the configured source for an event and runs its cleanup function.\n */\n removeEventSource(event: keyof RefetchEvents) {\n this.subscriptions.get(event)?.unsubscribe();\n this.subscriptions.delete(event);\n delete this.sources[event];\n }\n\n /**\n * Replaces the handler for an event.\n */\n setEventHandler<TSource extends keyof RefetchEvents>(\n source: TSource,\n handler: RefetchEventManager.EventHandler<TSource>\n ) {\n this.handlers[source] = handler;\n }\n\n /**\n * Replaces the default event handler with the provided handler.\n */\n setDefaultEventHandler(\n handler: RefetchEventManager.EventHandler<keyof RefetchEvents>\n ) {\n this.defaultHandler = handler;\n }\n\n /**\n * Manually triggers a refetch for the provided event.\n *\n * @remarks\n * This method warns and does not refetch if the refetch event manager is not\n * connected to a client or a source is not configured for the event.\n */\n emit<TSource extends keyof RefetchEvents>(\n source: TSource,\n ...args: RefetchEvents[TSource] extends void | never ? []\n : undefined extends RefetchEvents[TSource] ?\n [payload?: RefetchEvents[TSource]]\n : [payload: RefetchEvents[TSource]]\n ) {\n const [payload] = args;\n\n if (!this.client) {\n if (__DEV__) {\n invariant.warn(\n \"Received '%s' event but an `ApolloClient` instance is not connected to the `RefetchEventManager`. No queries will refetch. Pass the manager to the `refetchEventManager` option on the `ApolloClient` constructor.\",\n source\n );\n }\n\n return;\n }\n\n if (!this.hasSource(source)) {\n if (__DEV__) {\n invariant.warn(\n \"Received '%s' event but no source is configured for it on the `RefetchEventManager`. No queries will refetch. Add the event to the `sources` option or call `setEventSource`.\",\n source\n );\n }\n\n return;\n }\n\n const handler: RefetchEventManager.EventHandler<any> =\n this.handlers[source] ?? this.defaultHandler;\n\n function matchesRefetchOn(oq: ObservableQuery<any>) {\n const ctx: RefetchOn.Context<any> = { source, payload };\n const refetchOn = oq.options.refetchOn;\n\n if (typeof refetchOn === \"boolean\") {\n return refetchOn;\n }\n\n if (typeof refetchOn === \"function\") {\n return refetchOn(ctx);\n }\n\n if (typeof refetchOn?.[source] === \"function\") {\n return refetchOn[source](ctx as any);\n }\n\n return refetchOn?.[source] !== false;\n }\n\n handler({ client: this.client, source, payload, matchesRefetchOn });\n }\n\n private subscribeToSource<TSource extends keyof RefetchEvents>(\n name: TSource,\n source: RefetchEventManager.EventSource<RefetchEvents[TSource]>\n ) {\n this.subscriptions.get(name)?.unsubscribe();\n this.subscriptions.delete(name);\n\n if (this.client) {\n this.subscriptions.set(\n name,\n source().subscribe((value) => this.emit(name as any, value))\n );\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export declare namespace RefetchEventManager {
21
21
  handlers?: {
22
22
  [Key in keyof RefetchEvents]?: RefetchEventManager.EventHandler<Key>;
23
23
  };
24
+ /**
25
+ * Override the default handler. Used as a fallback when a refetch
26
+ * handler is not defined for a specific event.
27
+ */
28
+ defaultHandler?: RefetchEventManager.EventHandler<keyof RefetchEvents>;
24
29
  }
25
30
  type EventSource<T> = () => Observable<T>;
26
31
  type EventHandler<TSource extends keyof RefetchEvents = keyof RefetchEvents> = (context: RefetchEventManager.RefetchHandlerContext<TSource>) => ApolloClient.RefetchQueriesResult<any> | void;
@@ -86,6 +91,7 @@ export declare class RefetchEventManager {
86
91
  private handlers;
87
92
  private subscriptions;
88
93
  private client;
94
+ private defaultHandler;
89
95
  constructor(options?: RefetchEventManager.Options);
90
96
  /**
91
97
  * Connects the client to this refetch event manager. Connecting a client
@@ -115,6 +121,10 @@ export declare class RefetchEventManager {
115
121
  * Replaces the handler for an event.
116
122
  */
117
123
  setEventHandler<TSource extends keyof RefetchEvents>(source: TSource, handler: RefetchEventManager.EventHandler<TSource>): void;
124
+ /**
125
+ * Replaces the default event handler with the provided handler.
126
+ */
127
+ setDefaultEventHandler(handler: RefetchEventManager.EventHandler<keyof RefetchEvents>): void;
118
128
  /**
119
129
  * Manually triggers a refetch for the provided event.
120
130
  *
@@ -633,7 +633,7 @@ exports.devWarn = {
633
633
 
634
634
  70: {
635
635
  file: "@apollo/client/__cjs/core/ApolloClient.cjs",
636
- message: "`refetchOn` was set on query '%s' but no `RefetchEventManager` is configured on this `ApolloClient` instance. This option has no effect. Pass a `RefetchEventManager` instance to the `refetchEventManager` option on the `ApolloClient` constructor."
636
+ message: "`refetchOn` was set on query '%s' but no `RefetchEventManager` is configured on this `ApolloClient` instance. This option has no effect until a RefetchEventManager is connected to this client. Pass a `RefetchEventManager` instance to the `refetchEventManager` option on the `ApolloClient` constructor."
637
637
  },
638
638
 
639
639
  71: {
package/__cjs/version.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.build = exports.version = void 0;
4
- exports.version = "4.2.0-alpha.7";
4
+ exports.version = "4.2.0-alpha.8";
5
5
  exports.build = "cjs";
6
6
  //# sourceMappingURL=version.cjs.map
@@ -222,22 +222,42 @@ export class ApolloClient {
222
222
  * a description of store reactivity.
223
223
  */
224
224
  watchQuery(options) {
225
+ const { refetchOn } = options;
225
226
  if (this.defaultOptions.watchQuery) {
227
+ // Capture the default `refetchOn` at the time of the `watchQuery`
228
+ // call so that it is unaffected even if defaultOptions.refetchOn is
229
+ // mutated later.
226
230
  const defaultRefetchOn = this.defaultOptions.watchQuery.refetchOn;
227
- const mergedRefetchOn = (options.refetchOn &&
228
- typeof options.refetchOn === "object" &&
229
- defaultRefetchOn &&
230
- typeof defaultRefetchOn === "object") ?
231
- { ...defaultRefetchOn, ...options.refetchOn }
232
- : undefined;
231
+ let mergedRefetchOn;
232
+ if (refetchOn && typeof refetchOn === "object") {
233
+ if (typeof defaultRefetchOn === "object") {
234
+ mergedRefetchOn = { ...defaultRefetchOn, ...refetchOn };
235
+ }
236
+ else if (defaultRefetchOn != null) {
237
+ // We set the merged `refetchOn` option to a callback function in case
238
+ // the client hasn't connected to a RefetchEventManager yet, or
239
+ // sources are added to the manager after watchQuery is called. This
240
+ // ensures we can handle any registered source regardless of when it
241
+ // was registered.
242
+ mergedRefetchOn = (ctx) => {
243
+ const value = refetchOn[ctx.source] ?? defaultRefetchOn;
244
+ if (typeof value === "function") {
245
+ return value(ctx);
246
+ }
247
+ return value;
248
+ };
249
+ }
250
+ }
233
251
  options = mergeOptions(this.defaultOptions.watchQuery, options);
234
252
  if (mergedRefetchOn) {
235
253
  options.refetchOn = mergedRefetchOn;
236
254
  }
237
255
  }
238
256
  if (__DEV__) {
239
- const { refetchOn, query } = options;
257
+ const { query } = options;
240
258
  const { refetchEventManager } = this;
259
+ // Note: refetchOn evaluates the original refetchOn value, not the merged
260
+ // refetchOn value.
241
261
  if (refetchOn) {
242
262
  const operationName = getOperationName(query, "(anonymous)");
243
263
  if (!refetchEventManager) {