UNPKG

@airbnb/lunar-apollo

Version:

Apollo and GraphQL utilities.

106 lines (79 loc) 2.95 kB
"use strict"; exports.__esModule = true; var _exportNames = { HttpLink: true, onError: true, Mutation: true, Query: true, Provider: true }; exports.default = void 0; var _lunar = _interopRequireDefault(require("@airbnb/lunar")); var _client = require("@apollo/client"); exports.HttpLink = _client.HttpLink; Object.keys(_client).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; exports[key] = _client[key]; }); var _error = require("@apollo/client/link/error"); exports.onError = _error.onError; 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: '', 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 _client.ApolloClient({ cache: new _client.InMemoryCache(cacheConfig), connectToDevTools: "production" !== process.env.NODE_ENV, link: _client.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;