123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { request } from '@octokit/request';
- import { getUserAgent } from 'universal-user-agent';
- const VERSION = "4.8.0";
- function _buildMessageForResponseErrors(data) {
- return (`Request failed due to following response errors:\n` +
- data.errors.map((e) => ` - ${e.message}`).join("\n"));
- }
- class GraphqlResponseError extends Error {
- constructor(request, headers, response) {
- super(_buildMessageForResponseErrors(response));
- this.request = request;
- this.headers = headers;
- this.response = response;
- this.name = "GraphqlResponseError";
- // Expose the errors and response data in their shorthand properties.
- this.errors = response.errors;
- this.data = response.data;
- // Maintains proper stack trace (only available on V8)
- /* istanbul ignore next */
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- }
- }
- const NON_VARIABLE_OPTIONS = [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "query",
- "mediaType",
- ];
- const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
- const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
- function graphql(request, query, options) {
- if (options) {
- if (typeof query === "string" && "query" in options) {
- return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`));
- }
- for (const key in options) {
- if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
- continue;
- return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`));
- }
- }
- const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
- const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {
- if (NON_VARIABLE_OPTIONS.includes(key)) {
- result[key] = parsedOptions[key];
- return result;
- }
- if (!result.variables) {
- result.variables = {};
- }
- result.variables[key] = parsedOptions[key];
- return result;
- }, {});
- // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
- // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451
- const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
- if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
- requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
- }
- return request(requestOptions).then((response) => {
- if (response.data.errors) {
- const headers = {};
- for (const key of Object.keys(response.headers)) {
- headers[key] = response.headers[key];
- }
- throw new GraphqlResponseError(requestOptions, headers, response.data);
- }
- return response.data.data;
- });
- }
- function withDefaults(request$1, newDefaults) {
- const newRequest = request$1.defaults(newDefaults);
- const newApi = (query, options) => {
- return graphql(newRequest, query, options);
- };
- return Object.assign(newApi, {
- defaults: withDefaults.bind(null, newRequest),
- endpoint: request.endpoint,
- });
- }
- const graphql$1 = withDefaults(request, {
- headers: {
- "user-agent": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,
- },
- method: "POST",
- url: "/graphql",
- });
- function withCustomRequest(customRequest) {
- return withDefaults(customRequest, {
- method: "POST",
- url: "/graphql",
- });
- }
- export { GraphqlResponseError, graphql$1 as graphql, withCustomRequest };
- //# sourceMappingURL=index.js.map
|