UNPKG

next-with-apollo

Version:
77 lines 3.13 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var apollo_client_1 = __importDefault(require("apollo-client")); var apollo_link_1 = require("apollo-link"); var apollo_link_context_1 = require("apollo-link-context"); var apollo_link_error_1 = require("apollo-link-error"); var apollo_utilities_1 = require("apollo-utilities"); // Polyfill fetch require("isomorphic-unfetch"); var _apolloClient; var ssrMode = !process.browser; function initApollo(options, headers, initialState) { if (!options) { throw new Error('[options] param is missing and is required to get the apollo configs'); } if (ssrMode) { return getClient(options, headers, initialState); } if (!_apolloClient) { _apolloClient = getClient(options, headers, initialState); } return _apolloClient; } exports.default = initApollo; function getClient(options, headers, initialState) { var client = typeof options.client === 'function' ? createClient(options, headers) : options.client; if (initialState) client.cache.restore(initialState); return client; } function createClient(_a, headers) { var client = _a.client, linksFn = _a.link; if (typeof client !== 'function') return client; var link; if (linksFn) { var links = typeof linksFn === 'function' ? linksFn({ headers: headers }) : linksFn; var httpLink = links.http; var wsLink = !ssrMode && links.ws && links.ws(); var contextLink = links.setContext && apollo_link_context_1.setContext(links.setContext); var errorLink = links.onError && apollo_link_error_1.onError(links.onError); link = apollo_link_1.ApolloLink.from([errorLink, contextLink, httpLink].filter(function (x) { return !!x; })); link = wsLink ? apollo_link_1.split( // split based on operation type function (_a) { var query = _a.query; var definition = apollo_utilities_1.getMainDefinition(query); return (definition.kind === 'OperationDefinition' && definition.operation === 'subscription'); }, wsLink, link) : link; } var options = client({ headers: headers, link: link }); if (options instanceof apollo_client_1.default) { return options; } if (!link) { throw new Error('[client] should return an instance of ApolloClient if [link] is not used'); } return new apollo_client_1.default(__assign({ link: link, ssrMode: ssrMode }, options)); } //# sourceMappingURL=apollo.js.map