mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
35 lines
958 B
JavaScript
35 lines
958 B
JavaScript
|
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;
|
||
|
});
|
||
|
}
|