UNPKG

@airbnb/lunar-apollo

Version:

Apollo and GraphQL utilities.

111 lines (80 loc) 3.12 kB
"use strict"; exports.__esModule = true; var _exportNames = { onError: true, HttpLink: true, Mutation: true, Query: true, Provider: true }; exports.default = void 0; var _lunar = _interopRequireDefault(require("@airbnb/lunar")); var _apolloClient = require("apollo-client"); Object.keys(_apolloClient).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; exports[key] = _apolloClient[key]; }); var _apolloCacheInmemory = require("apollo-cache-inmemory"); var _apolloLink = require("apollo-link"); var _apolloLinkError = require("apollo-link-error"); exports.onError = _apolloLinkError.onError; var _apolloLinkHttp = require("apollo-link-http"); exports.HttpLink = _apolloLinkHttp.HttpLink; var _Mutation = _interopRequireDefault(require("./components/Mutation")); exports.Mutation = _Mutation.default; var _Query = _interopRequireDefault(require("./components/Query")); exports.Query = _Query.default; var _Provider = _interopRequireDefault(require("./components/Provider")); exports.Provider = _Provider.default; var _package = _interopRequireDefault(require("../package.json")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; } class Apollo { constructor() { _defineProperty(this, "settings", { links: [], resolvers: {}, typeDefs: '' }); _defineProperty(this, "client", void 0); } initialize(settings) { this.settings = _extends({}, this.settings, {}, settings); this.bootstrapClient(); } bootstrapClient() { if (this.client) { return; } const { links, resolvers, typeDefs } = this.settings; this.client = new _apolloClient.ApolloClient({ cache: new _apolloCacheInmemory.InMemoryCache(), connectToDevTools: "production" !== process.env.NODE_ENV, link: _apolloLink.ApolloLink.from(links), name: _lunar.default.settings.name, resolvers, typeDefs, version: _package.default.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; } } var _default = new Apollo(); exports.default = _default;