| 'use strict'; |
| |
| Object.defineProperty(exports, '__esModule', { value: true }); |
| |
| var universalUserAgent = require('universal-user-agent'); |
| var beforeAfterHook = require('before-after-hook'); |
| var request = require('@octokit/request'); |
| var graphql = require('@octokit/graphql'); |
| var authToken = require('@octokit/auth-token'); |
| |
| function _defineProperty(obj, key, value) { |
| if (key in obj) { |
| Object.defineProperty(obj, key, { |
| value: value, |
| enumerable: true, |
| configurable: true, |
| writable: true |
| }); |
| } else { |
| obj[key] = value; |
| } |
| |
| return obj; |
| } |
| |
| function ownKeys(object, enumerableOnly) { |
| var keys = Object.keys(object); |
| |
| if (Object.getOwnPropertySymbols) { |
| var symbols = Object.getOwnPropertySymbols(object); |
| if (enumerableOnly) symbols = symbols.filter(function (sym) { |
| return Object.getOwnPropertyDescriptor(object, sym).enumerable; |
| }); |
| keys.push.apply(keys, symbols); |
| } |
| |
| return keys; |
| } |
| |
| function _objectSpread2(target) { |
| for (var i = 1; i < arguments.length; i++) { |
| var source = arguments[i] != null ? arguments[i] : {}; |
| |
| if (i % 2) { |
| ownKeys(Object(source), true).forEach(function (key) { |
| _defineProperty(target, key, source[key]); |
| }); |
| } else if (Object.getOwnPropertyDescriptors) { |
| Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); |
| } else { |
| ownKeys(Object(source)).forEach(function (key) { |
| Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); |
| }); |
| } |
| } |
| |
| return target; |
| } |
| |
| const VERSION = "3.1.0"; |
| |
| class Octokit { |
| constructor(options = {}) { |
| const hook = new beforeAfterHook.Collection(); |
| const requestDefaults = { |
| baseUrl: request.request.endpoint.DEFAULTS.baseUrl, |
| headers: {}, |
| request: Object.assign({}, options.request, { |
| hook: hook.bind(null, "request") |
| }), |
| mediaType: { |
| previews: [], |
| format: "" |
| } |
| }; // prepend default user agent with `options.userAgent` if set |
| |
| requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); |
| |
| if (options.baseUrl) { |
| requestDefaults.baseUrl = options.baseUrl; |
| } |
| |
| if (options.previews) { |
| requestDefaults.mediaType.previews = options.previews; |
| } |
| |
| if (options.timeZone) { |
| requestDefaults.headers["time-zone"] = options.timeZone; |
| } |
| |
| this.request = request.request.defaults(requestDefaults); |
| this.graphql = graphql.withCustomRequest(this.request).defaults(_objectSpread2(_objectSpread2({}, requestDefaults), {}, { |
| baseUrl: requestDefaults.baseUrl.replace(/\/api\/v3$/, "/api") |
| })); |
| this.log = Object.assign({ |
| debug: () => {}, |
| info: () => {}, |
| warn: console.warn.bind(console), |
| error: console.error.bind(console) |
| }, options.log); |
| this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance |
| // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registred. |
| // (2) If only `options.auth` is set, use the default token authentication strategy. |
| // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. |
| // TODO: type `options.auth` based on `options.authStrategy`. |
| |
| if (!options.authStrategy) { |
| if (!options.auth) { |
| // (1) |
| this.auth = async () => ({ |
| type: "unauthenticated" |
| }); |
| } else { |
| // (2) |
| const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ |
| |
| hook.wrap("request", auth.hook); |
| this.auth = auth; |
| } |
| } else { |
| const auth = options.authStrategy(Object.assign({ |
| request: this.request |
| }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ |
| |
| hook.wrap("request", auth.hook); |
| this.auth = auth; |
| } // apply plugins |
| // https://stackoverflow.com/a/16345172 |
| |
| |
| const classConstructor = this.constructor; |
| classConstructor.plugins.forEach(plugin => { |
| Object.assign(this, plugin(this, options)); |
| }); |
| } |
| |
| static defaults(defaults) { |
| const OctokitWithDefaults = class extends this { |
| constructor(...args) { |
| const options = args[0] || {}; |
| |
| if (typeof defaults === "function") { |
| super(defaults(options)); |
| return; |
| } |
| |
| super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { |
| userAgent: `${options.userAgent} ${defaults.userAgent}` |
| } : null)); |
| } |
| |
| }; |
| return OctokitWithDefaults; |
| } |
| /** |
| * Attach a plugin (or many) to your Octokit instance. |
| * |
| * @example |
| * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) |
| */ |
| |
| |
| static plugin(...newPlugins) { |
| var _a; |
| |
| const currentPlugins = this.plugins; |
| const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); |
| return NewOctokit; |
| } |
| |
| } |
| Octokit.VERSION = VERSION; |
| Octokit.plugins = []; |
| |
| exports.Octokit = Octokit; |
| //# sourceMappingURL=index.js.map |