react-relay-network-layer
Version:
Network Layer for React Relay and Express (Batch Queries, AuthToken, Logging, Retry)
38 lines (34 loc) • 1.02 kB
Flow
/* @flow */
/* eslint-disable no-param-reassign, prefer-template */
import type {
RelayClassicRequest,
FetchWithMiddleware,
RRNLRequestObjectQuery,
} from './definition';
export default function queries(
relayRequestList: RelayClassicRequest[],
fetchWithMiddleware: FetchWithMiddleware
): Promise<any> {
return Promise.all(
relayRequestList.map(relayRequest => {
const req: RRNLRequestObjectQuery = {
relayReqId: relayRequest.getID(),
relayReqObj: relayRequest,
relayReqType: 'query',
method: 'POST',
headers: {
Accept: '*/*',
'Content-Type': 'application/json',
},
body: JSON.stringify({
id: relayRequest.getID(),
query: relayRequest.getQueryString(),
variables: relayRequest.getVariables(),
}),
};
return fetchWithMiddleware(req)
.then(({ data }) => relayRequest.resolve({ response: data }))
.catch(err => relayRequest.reject(err));
})
);
}