| // pkg/dist-src/index.js |
| import { getUserAgent } from "universal-user-agent"; |
| import { Collection } from "before-after-hook"; |
| import { request } from "@octokit/request"; |
| import { graphql, withCustomRequest } from "@octokit/graphql"; |
| import { createTokenAuth } from "@octokit/auth-token"; |
| |
| // pkg/dist-src/version.js |
| var VERSION = "5.1.0"; |
| |
| // pkg/dist-src/index.js |
| var noop = () => { |
| }; |
| var consoleWarn = console.warn.bind(console); |
| var consoleError = console.error.bind(console); |
| var userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`; |
| var Octokit = class { |
| static { |
| this.VERSION = VERSION; |
| } |
| 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; |
| } |
| static { |
| this.plugins = []; |
| } |
| /** |
| * Attach a plugin (or many) to your Octokit instance. |
| * |
| * @example |
| * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) |
| */ |
| static plugin(...newPlugins) { |
| const currentPlugins = this.plugins; |
| const NewOctokit = class extends this { |
| static { |
| this.plugins = currentPlugins.concat( |
| newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) |
| ); |
| } |
| }; |
| return NewOctokit; |
| } |
| constructor(options = {}) { |
| const hook = new Collection(); |
| const requestDefaults = { |
| baseUrl: request.endpoint.DEFAULTS.baseUrl, |
| headers: {}, |
| request: Object.assign({}, options.request, { |
| // @ts-ignore internal usage only, no need to type |
| hook: hook.bind(null, "request") |
| }), |
| mediaType: { |
| previews: [], |
| format: "" |
| } |
| }; |
| requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; |
| 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.defaults(requestDefaults); |
| this.graphql = withCustomRequest(this.request).defaults(requestDefaults); |
| this.log = Object.assign( |
| { |
| debug: noop, |
| info: noop, |
| warn: consoleWarn, |
| error: consoleError |
| }, |
| options.log |
| ); |
| this.hook = hook; |
| if (!options.authStrategy) { |
| if (!options.auth) { |
| this.auth = async () => ({ |
| type: "unauthenticated" |
| }); |
| } else { |
| const auth = createTokenAuth(options.auth); |
| hook.wrap("request", auth.hook); |
| this.auth = auth; |
| } |
| } else { |
| const { authStrategy, ...otherOptions } = options; |
| const auth = authStrategy( |
| Object.assign( |
| { |
| request: this.request, |
| log: this.log, |
| // we pass the current octokit instance as well as its constructor options |
| // to allow for authentication strategies that return a new octokit instance |
| // that shares the same internal state as the current one. The original |
| // requirement for this was the "event-octokit" authentication strategy |
| // of https://github.com/probot/octokit-auth-probot. |
| octokit: this, |
| octokitOptions: otherOptions |
| }, |
| options.auth |
| ) |
| ); |
| hook.wrap("request", auth.hook); |
| this.auth = auth; |
| } |
| const classConstructor = this.constructor; |
| for (let i = 0; i < classConstructor.plugins.length; ++i) { |
| Object.assign(this, classConstructor.plugins[i](this, options)); |
| } |
| } |
| }; |
| export { |
| Octokit |
| }; |