| import { GraphqlError } from "./error"; |
| const NON_VARIABLE_OPTIONS = [ |
| "method", |
| "baseUrl", |
| "url", |
| "headers", |
| "request", |
| "query" |
| ]; |
| export function graphql(request, query, options) { |
| options = |
| typeof query === "string" |
| ? (options = Object.assign({ query }, options)) |
| : (options = query); |
| const requestOptions = Object.keys(options).reduce((result, key) => { |
| if (NON_VARIABLE_OPTIONS.includes(key)) { |
| result[key] = options[key]; |
| return result; |
| } |
| if (!result.variables) { |
| result.variables = {}; |
| } |
| result.variables[key] = options[key]; |
| return result; |
| }, {}); |
| return request(requestOptions).then(response => { |
| if (response.data.errors) { |
| throw new GraphqlError(requestOptions, { |
| data: response.data |
| }); |
| } |
| return response.data.data; |
| }); |
| } |