UNPKG

piral-urql

Version:

Plugin for providing a GraphQL client in Piral.

39 lines 1.53 kB
import { Client, defaultExchanges, subscriptionExchange } from 'urql'; import { SubscriptionClient } from 'subscriptions-transport-ws'; /** * Sets up an urql client by using the given config. * @param config The configuration for the new urql client. */ export function setupGqlClient(config = {}) { const url = config.url || location.origin; const subscriptionUrl = (config.subscriptionUrl || url).replace(/^http/i, 'ws'); const subscriptionClient = config.subscriptionUrl !== false && new SubscriptionClient(subscriptionUrl, { reconnect: true, lazy: config.lazy || false, inactivityTimeout: 0, connectionCallback(err) { const { onConnected, onDisconnected } = config; const errors = err && (Array.isArray(err) ? err : [err]); if (errors && errors.length > 0) { typeof onDisconnected === 'function' && onDisconnected(errors); } else { typeof onConnected === 'function' && onConnected(); } }, }); const forwardSubscription = (operation) => subscriptionClient.request(operation); const exchanges = [...defaultExchanges]; if (subscriptionClient) { exchanges.push(subscriptionExchange({ forwardSubscription, })); } return new Client({ url, fetchOptions: config.default || {}, exchanges, }); } //# sourceMappingURL=setup.js.map