UNPKG

@airbnb/lunar-apollo

Version:

Apollo and GraphQL utilities.

72 lines (59 loc) 2.21 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import Core from '@airbnb/lunar'; import { ApolloClient, InMemoryCache, ApolloLink, HttpLink } from '@apollo/client'; import { onError } from '@apollo/client/link/error'; import Mutation from './components/Mutation'; import Query from './components/Query'; import Provider from './components/Provider'; // @ts-ignore import pkg from '../package.json'; export * from '@apollo/client'; export { onError, HttpLink, Mutation, Query, Provider }; class Apollo { constructor() { _defineProperty(this, "settings", { links: [], resolvers: {}, typeDefs: '', cacheConfig: {} }); _defineProperty(this, "client", void 0); } initialize(settings) { this.settings = _extends({}, this.settings, {}, settings); this.bootstrapClient(); } bootstrapClient() { if (this.client) { return; } const { links, resolvers, typeDefs, cacheConfig } = this.settings; this.client = new ApolloClient({ cache: new InMemoryCache(cacheConfig), connectToDevTools: "production" !== process.env.NODE_ENV, link: ApolloLink.from(links), name: Core.settings.name, resolvers, typeDefs, version: pkg.version }); if ("production" !== process.env.NODE_ENV) { // eslint-disable-next-line no-underscore-dangle window.__APOLLO_CLIENT__ = this.client; } } getClient() { if ("production" !== process.env.NODE_ENV) { if (!this.client) { throw new Error('Apollo has not been initialized. Please call `Apollo.initialize()` from `@airbnb/lunar-apollo`.'); } } return this.client; } } export default new Apollo();