"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); // Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/master/src/github.ts const graphql_1 = require("@octokit/graphql"); const rest_1 = require("@octokit/rest"); const Context = __importStar(require("./context")); const httpClient = __importStar(require("@actions/http-client")); // We need this in order to extend Octokit rest_1.Octokit.prototype = new rest_1.Octokit(); exports.context = new Context.Context(); class GitHub extends rest_1.Octokit { constructor(token, opts) { super(GitHub.getOctokitOptions(GitHub.disambiguate(token, opts))); this.graphql = GitHub.getGraphQL(GitHub.disambiguate(token, opts)); } /** * Disambiguates the constructor overload parameters */ static disambiguate(token, opts) { return [ typeof token === 'string' ? token : '', typeof token === 'object' ? token : opts || {} ]; } static getOctokitOptions(args) { const token = args[0]; const options = Object.assign({}, args[1]); // Shallow clone - don't mutate the object provided by the caller // Auth const auth = GitHub.getAuthString(token, options); if (auth) { options.auth = auth; } // Proxy const agent = GitHub.getProxyAgent(options); if (agent) { // Shallow clone - don't mutate the object provided by the caller options.request = options.request ? Object.assign({}, options.request) : {}; // Set the agent options.request.agent = agent; } return options; } static getGraphQL(args) { const defaults = {}; const token = args[0]; const options = args[1]; // Authorization const auth = this.getAuthString(token, options); if (auth) { defaults.headers = { authorization: auth }; } // Proxy const agent = GitHub.getProxyAgent(options); if (agent) { defaults.request = { agent }; } return graphql_1.graphql.defaults(defaults); } static getAuthString(token, options) { // Validate args if (!token && !options.auth) { throw new Error('Parameter token or opts.auth is required'); } else if (token && options.auth) { throw new Error('Parameters token and opts.auth may not both be specified'); } return typeof options.auth === 'string' ? options.auth : `token ${token}`; } static getProxyAgent(options) { var _a; if (!((_a = options.request) === null || _a === void 0 ? void 0 : _a.agent)) { const serverUrl = 'https://api.github.com'; if (httpClient.getProxyUrl(serverUrl)) { const hc = new httpClient.HttpClient(); return hc.getAgent(serverUrl); } } return undefined; } } exports.GitHub = GitHub; //# sourceMappingURL=github.js.map