kikstart-graphql-client
Version:
Small NodeJS Wrapper around apollo-client that provides easy access to running queries, mutations and subscriptions.
58 lines • 2.6 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const graphql_tag_1 = __importDefault(require("graphql-tag"));
const kikstart_apollo_client_1 = require("./kikstart-apollo-client");
const apollo_link_ws_1 = require("apollo-link-ws");
const apollo_link_http_1 = require("apollo-link-http");
const subscriptions_transport_ws_1 = require("subscriptions-transport-ws");
const ws_1 = __importDefault(require("ws"));
const node_fetch_1 = __importDefault(require("node-fetch"));
class GraphQLClient {
constructor(config) {
this.config = config;
if (config.uri) {
console.warn('Deprecated config parameter: uri, please use url instead.');
config.url = config.uri;
}
if (config.wsUri) {
console.warn('Deprecated config parameter: wsUri, please use wsUrl instead.');
config.wsUrl = config.wsUri;
}
config.wsUrl =
config.wsUrl ||
config.url.replace('https://', 'wss://').replace('http://', 'ws://');
this.httpLink = apollo_link_http_1.createHttpLink({ uri: config.url, fetch: node_fetch_1.default });
this.wsClient = new subscriptions_transport_ws_1.SubscriptionClient(config.wsUrl, {
...config.wsOptions,
connectionParams: config.connectionParams
? config.connectionParams
: { headers: config.headers || {} },
reconnect: true,
}, ws_1.default);
this.wsLink = new apollo_link_ws_1.WebSocketLink(this.wsClient);
this.apollo = kikstart_apollo_client_1.createClient(this.httpLink, this.wsLink, this.config);
}
query(query) {
return typeof query === 'string' ? graphql_tag_1.default(query) : query;
}
async runQuery(query, variables = {}) {
return this.apollo.query({ query: this.query(query), variables });
}
async runMutation(mutation, variables = {}) {
return this.apollo.mutate({ mutation: this.query(mutation), variables });
}
runSubscription(query, variables = {}) {
return this.apollo.subscribe({ query: this.query(query), variables });
}
disconnect() {
if (this.config.log) {
this.config.log.log(`[GraphQLClient] Disconnecting from ${this.config.url} / ${this.config.wsUrl}`);
}
this.wsClient.close();
}
}
exports.GraphQLClient = GraphQLClient;
//# sourceMappingURL=kikstart-graphql-client.js.map