text: "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://github.techtrend.us/api/v3';
              if (httpClient.getProxyUrl(serverUrl)) {
                  const hc = new httpClient.HttpClient();
                  return hc.getAgent(serverUrl);
              }
          }
          return undefined;
      }
  }
  exports.GitHub = GitHub;
  //# sourceMappingURL=github.js.map