mirror of
https://github.com/diligencia/semantic-branch-version.git
synced 2024-11-24 08:03:51 +08:00
36 lines
979 B
JavaScript
36 lines
979 B
JavaScript
|
import { GraphqlError } from "./error";
|
||
|
const NON_VARIABLE_OPTIONS = [
|
||
|
"method",
|
||
|
"baseUrl",
|
||
|
"url",
|
||
|
"headers",
|
||
|
"request",
|
||
|
"query",
|
||
|
"mediaType",
|
||
|
];
|
||
|
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;
|
||
|
});
|
||
|
}
|