UNPKG

react-relay-network-layer

Version:

Network Layer for React Relay and Express (Batch Queries, AuthToken, Logging, Retry)

37 lines (31 loc) 1.18 kB
import queries from './relayQueries'; import mutation from './relayMutation'; import fetchWithMiddleware from './fetchWithMiddleware'; export default class RelayNetworkLayer { constructor(middlewares, options) { this._options = typeof options === 'object' ? options : {}; this._middlewares = Array.isArray(middlewares) ? middlewares : [middlewares]; this._supportedOptions = []; this._middlewares.forEach(mw => { if (mw && mw.supports) { if (Array.isArray(mw.supports)) { this._supportedOptions.push(...mw.supports); } else { this._supportedOptions.push(mw.supports); } } }); this.supports = this.supports.bind(this); this.sendQueries = this.sendQueries.bind(this); this.sendMutation = this.sendMutation.bind(this); } supports(...options) { return options.every(option => this._supportedOptions.indexOf(option) !== -1); } sendQueries(requests) { return queries(requests, req => fetchWithMiddleware(req, this._middlewares, this._options)); } sendMutation(request) { return mutation(request, req => fetchWithMiddleware(req, this._middlewares, this._options)); } }