apollo-elements/apollo-elements

View on GitHub
packages/mixins/apollo-client-mixin.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import type { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
import type { ApolloElementElement, Constructor } from '@apollo-elements/core/types';

/**
 * Mixin which applies a specific `ApolloClient` instance to the element.
 * @param client The specific `ApolloClient` instance.
 * @param superclass An element that implements the `ApolloElementInterface`.
 */
export function ApolloClientMixin<B extends Constructor<ApolloElementElement<any, any>>>( // eslint-disable-line @typescript-eslint/no-explicit-any
  client: ApolloClient<NormalizedCacheObject>,
  superclass: B
): B {
  return class extends superclass {
    /** The client specified with `ApolloClientMixin`. */
    client: ApolloClient<NormalizedCacheObject> = client;
  };
}