next-with-apollo
Version:
Apollo HOC for Next.js
77 lines • 3.13 kB
JavaScript
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
;