| 'use strict'; | |
| Object.defineProperty(exports, '__esModule', { value: true }); | |
| var request = require('@octokit/request'); | |
| var universalUserAgent = require('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.request.endpoint | |
| }); | |
| } | |
| const graphql$1 = withDefaults(request.request, { | |
| headers: { | |
| "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` | |
| }, | |
| method: "POST", | |
| url: "/graphql" | |
| }); | |
| function withCustomRequest(customRequest) { | |
| return withDefaults(customRequest, { | |
| method: "POST", | |
| url: "/graphql" | |
| }); | |
| } | |
| exports.GraphqlResponseError = GraphqlResponseError; | |
| exports.graphql = graphql$1; | |
| exports.withCustomRequest = withCustomRequest; | |
| //# sourceMappingURL=index.js.map |