Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@kv/apollo-client / src / client / index.ts
Size: Mime:
import { ApolloClient, InMemoryCache } from '@apollo/client';
import type { UploadLinkOptions } from 'apollo-upload-client';
import type { DefaultOptions, InMemoryCacheConfig } from '@apollo/client';

import { createApolloLink } from './link';

type CreateApolloClientOptions = {
  linkOptions: UploadLinkOptions;
  cacheOptions?: InMemoryCacheConfig;
  clientDefaultOptions?: DefaultOptions;
};

export const createApolloClient = ({
  linkOptions,
  cacheOptions,
  clientDefaultOptions,
}: CreateApolloClientOptions) =>
  new ApolloClient({
    link: createApolloLink(linkOptions),
    cache: new InMemoryCache(cacheOptions),
    defaultOptions: {
      ...clientDefaultOptions,
      watchQuery: {
        fetchPolicy: 'cache-first',
        errorPolicy: 'all',
        ...clientDefaultOptions?.watchQuery,
      },
      query: {
        fetchPolicy: 'cache-first',
        errorPolicy: 'all',
        ...clientDefaultOptions?.query,
      },
    },
  });