{"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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"}