kikstart-graphql-client
Version:
Small NodeJS Wrapper around apollo-client that provides easy access to running queries, mutations and subscriptions.
45 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const apollo_client_1 = require("apollo-client");
const apollo_link_1 = require("apollo-link");
const apollo_link_error_1 = require("apollo-link-error");
const apollo_link_context_1 = require("apollo-link-context");
const apollo_cache_inmemory_1 = require("apollo-cache-inmemory");
const apollo_utilities_1 = require("apollo-utilities");
exports.createLink = (httpLink, wsLink, { mutationLink, queryLink, subscriptionLink }) => {
const wsOperations = [];
if (mutationLink === 'ws') {
wsOperations.push('mutation');
}
if (queryLink === 'ws') {
wsOperations.push('query');
}
if (subscriptionLink === 'ws') {
wsOperations.push('subscription');
}
return wsOperations.length
? apollo_link_1.ApolloLink.split(({ query }) => (({ kind, operation }) => kind === 'OperationDefinition' && wsOperations.includes(operation))(apollo_utilities_1.getMainDefinition(query)), wsLink, httpLink)
: httpLink;
};
exports.createClient = (httpLink, wsLink, { url, wsUrl, mutationLink = 'http', queryLink = 'http', subscriptionLink = 'ws', cache, headers, log, }) => {
const transportLink = exports.createLink(httpLink, wsLink, {
mutationLink,
queryLink,
subscriptionLink,
});
const link = apollo_link_1.ApolloLink.from([
apollo_link_error_1.onError((error) => (log || console).error(error)),
...(headers && Object.keys(headers).length
? [
apollo_link_context_1.setContext((_request, context) => ({
headers: { ...context.headers, ...headers },
})),
]
: []),
transportLink,
]);
if (log)
log.log(`[GraphQLClient] Connecting to ${url} / ${wsUrl}`, ...(headers && Object.keys(headers).length ? [headers] : []));
return new apollo_client_1.ApolloClient({ cache: cache || new apollo_cache_inmemory_1.InMemoryCache(), link });
};
//# sourceMappingURL=kikstart-apollo-client.js.map