@airbnb/lunar-apollo
Version:
Apollo and GraphQL utilities.
106 lines (79 loc) • 2.95 kB
JavaScript
;
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;