diff --git a/dist/index.js b/dist/index.js
index 8d8f59b..029c64e 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -3560,7 +3560,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0;
-const semver = __importStar(__nccwpck_require__(562));
+const semver = __importStar(__nccwpck_require__(5911));
const core_1 = __nccwpck_require__(6705);
// needs to be require for core node modules to be mocked
/* eslint @typescript-eslint/no-require-imports: 0 */
@@ -3795,7 +3795,7 @@ const mm = __importStar(__nccwpck_require__(2473));
const os = __importStar(__nccwpck_require__(2037));
const path = __importStar(__nccwpck_require__(1017));
const httpm = __importStar(__nccwpck_require__(6255));
-const semver = __importStar(__nccwpck_require__(562));
+const semver = __importStar(__nccwpck_require__(5911));
const stream = __importStar(__nccwpck_require__(2781));
const util = __importStar(__nccwpck_require__(3837));
const assert_1 = __nccwpck_require__(9491);
@@ -6593,1701 +6593,2385 @@ function copyFile(srcFile, destFile, force) {
/***/ }),
-/***/ 562:
-/***/ ((module, exports) => {
-
-exports = module.exports = SemVer
+/***/ 7701:
+/***/ ((module) => {
-var debug
-/* istanbul ignore next */
-if (typeof process === 'object' &&
- process.env &&
- process.env.NODE_DEBUG &&
- /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
- debug = function () {
- var args = Array.prototype.slice.call(arguments, 0)
- args.unshift('SEMVER')
- console.log.apply(console, args)
- }
-} else {
- debug = function () {}
+/**
+ * Convert array of 16 byte values to UUID string format of the form:
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+ */
+var byteToHex = [];
+for (var i = 0; i < 256; ++i) {
+ byteToHex[i] = (i + 0x100).toString(16).substr(1);
}
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0'
-
-var MAX_LENGTH = 256
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
- /* istanbul ignore next */ 9007199254740991
-
-// Max safe segment length for coercion.
-var MAX_SAFE_COMPONENT_LENGTH = 16
-
-// The actual regexps go on exports.re
-var re = exports.re = []
-var src = exports.src = []
-var t = exports.tokens = {}
-var R = 0
-
-function tok (n) {
- t[n] = R++
+function bytesToUuid(buf, offset) {
+ var i = offset || 0;
+ var bth = byteToHex;
+ // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
+ return ([
+ bth[buf[i++]], bth[buf[i++]],
+ bth[buf[i++]], bth[buf[i++]], '-',
+ bth[buf[i++]], bth[buf[i++]], '-',
+ bth[buf[i++]], bth[buf[i++]], '-',
+ bth[buf[i++]], bth[buf[i++]], '-',
+ bth[buf[i++]], bth[buf[i++]],
+ bth[buf[i++]], bth[buf[i++]],
+ bth[buf[i++]], bth[buf[i++]]
+ ]).join('');
}
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
+module.exports = bytesToUuid;
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-tok('NUMERICIDENTIFIER')
-src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
-tok('NUMERICIDENTIFIERLOOSE')
-src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+/***/ }),
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
+/***/ 7269:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-tok('NONNUMERICIDENTIFIER')
-src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+// Unique ID creation requires a high quality random # generator. In node.js
+// this is pretty straight-forward - we use the crypto API.
-// ## Main Version
-// Three dot-separated numeric identifiers.
+var crypto = __nccwpck_require__(6113);
-tok('MAINVERSION')
-src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIER] + ')'
+module.exports = function nodeRNG() {
+ return crypto.randomBytes(16);
+};
-tok('MAINVERSIONLOOSE')
-src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
+/***/ }),
-tok('PRERELEASEIDENTIFIER')
-src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
- '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+/***/ 7468:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-tok('PRERELEASEIDENTIFIERLOOSE')
-src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
- '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+var rng = __nccwpck_require__(7269);
+var bytesToUuid = __nccwpck_require__(7701);
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
+function v4(options, buf, offset) {
+ var i = buf && offset || 0;
-tok('PRERELEASE')
-src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+ if (typeof(options) == 'string') {
+ buf = options === 'binary' ? new Array(16) : null;
+ options = null;
+ }
+ options = options || {};
-tok('PRERELEASELOOSE')
-src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+ var rnds = options.random || (options.rng || rng)();
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
+ // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
+ rnds[6] = (rnds[6] & 0x0f) | 0x40;
+ rnds[8] = (rnds[8] & 0x3f) | 0x80;
-tok('BUILDIDENTIFIER')
-src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+ // Copy bytes to buffer, if provided
+ if (buf) {
+ for (var ii = 0; ii < 16; ++ii) {
+ buf[i + ii] = rnds[ii];
+ }
+ }
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
+ return buf || bytesToUuid(rnds);
+}
-tok('BUILD')
-src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
- '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+module.exports = v4;
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
+/***/ }),
-tok('FULL')
-tok('FULLPLAIN')
-src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
- src[t.PRERELEASE] + '?' +
- src[t.BUILD] + '?'
+/***/ 4389:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+"use strict";
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-tok('LOOSEPLAIN')
-src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
- src[t.PRERELEASELOOSE] + '?' +
- src[t.BUILD] + '?'
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-tok('LOOSE')
-src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ App: () => App,
+ createNodeMiddleware: () => createNodeMiddleware
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_core = __nccwpck_require__(6762);
+var import_auth_app3 = __nccwpck_require__(7541);
+var import_oauth_app2 = __nccwpck_require__(3493);
-tok('GTLT')
-src[t.GTLT] = '((?:<|>)?=?)'
+// pkg/dist-src/version.js
+var VERSION = "14.1.0";
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-tok('XRANGEIDENTIFIERLOOSE')
-src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
-tok('XRANGEIDENTIFIER')
-src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+// pkg/dist-src/webhooks.js
+var import_auth_app = __nccwpck_require__(7541);
+var import_auth_unauthenticated = __nccwpck_require__(9567);
+var import_webhooks = __nccwpck_require__(8513);
+function webhooks(appOctokit, options) {
+ return new import_webhooks.Webhooks({
+ secret: options.secret,
+ transform: async (event) => {
+ if (!("installation" in event.payload) || typeof event.payload.installation !== "object") {
+ const octokit2 = new appOctokit.constructor({
+ authStrategy: import_auth_unauthenticated.createUnauthenticatedAuth,
+ auth: {
+ reason: `"installation" key missing in webhook event payload`
+ }
+ });
+ return {
+ ...event,
+ octokit: octokit2
+ };
+ }
+ const installationId = event.payload.installation.id;
+ const octokit = await appOctokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ return new auth.octokit.constructor({
+ ...auth.octokitOptions,
+ authStrategy: import_auth_app.createAppAuth,
+ ...{
+ auth: {
+ ...auth,
+ installationId
+ }
+ }
+ });
+ }
+ });
+ octokit.hook.before("request", (options2) => {
+ options2.headers["x-github-delivery"] = event.id;
+ });
+ return {
+ ...event,
+ octokit
+ };
+ }
+ });
+}
-tok('XRANGEPLAIN')
-src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
- '(?:' + src[t.PRERELEASE] + ')?' +
- src[t.BUILD] + '?' +
- ')?)?'
-
-tok('XRANGEPLAINLOOSE')
-src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[t.PRERELEASELOOSE] + ')?' +
- src[t.BUILD] + '?' +
- ')?)?'
-
-tok('XRANGE')
-src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
-tok('XRANGELOOSE')
-src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
-
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-tok('COERCE')
-src[t.COERCE] = '(^|[^\\d])' +
- '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
- '(?:$|[^\\d])'
-tok('COERCERTL')
-re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-tok('LONETILDE')
-src[t.LONETILDE] = '(?:~>?)'
-
-tok('TILDETRIM')
-src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
-re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
-var tildeTrimReplace = '$1~'
-
-tok('TILDE')
-src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
-tok('TILDELOOSE')
-src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-tok('LONECARET')
-src[t.LONECARET] = '(?:\\^)'
-
-tok('CARETTRIM')
-src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
-re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
-var caretTrimReplace = '$1^'
-
-tok('CARET')
-src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
-tok('CARETLOOSE')
-src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-tok('COMPARATORLOOSE')
-src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
-tok('COMPARATOR')
-src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-tok('COMPARATORTRIM')
-src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
- '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
-
-// this one has to use the /g flag
-re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
-var comparatorTrimReplace = '$1$2$3'
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-tok('HYPHENRANGE')
-src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[t.XRANGEPLAIN] + ')' +
- '\\s*$'
-
-tok('HYPHENRANGELOOSE')
-src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[t.XRANGEPLAINLOOSE] + ')' +
- '\\s*$'
-
-// Star ranges basically just allow anything at all.
-tok('STAR')
-src[t.STAR] = '(<|>)?=?\\s*\\*'
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- debug(i, src[i])
- if (!re[i]) {
- re[i] = new RegExp(src[i])
- }
-}
+// pkg/dist-src/each-installation.js
+var import_plugin_paginate_rest = __nccwpck_require__(4193);
-exports.parse = parse
-function parse (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+// pkg/dist-src/get-installation-octokit.js
+var import_auth_app2 = __nccwpck_require__(7541);
+async function getInstallationOctokit(app, installationId) {
+ return app.octokit.auth({
+ type: "installation",
+ installationId,
+ factory(auth) {
+ const options = {
+ ...auth.octokitOptions,
+ authStrategy: import_auth_app2.createAppAuth,
+ ...{ auth: { ...auth, installationId } }
+ };
+ return new auth.octokit.constructor(options);
}
- }
-
- if (version instanceof SemVer) {
- return version
- }
-
- if (typeof version !== 'string') {
- return null
- }
-
- if (version.length > MAX_LENGTH) {
- return null
- }
-
- var r = options.loose ? re[t.LOOSE] : re[t.FULL]
- if (!r.test(version)) {
- return null
- }
+ });
+}
- try {
- return new SemVer(version, options)
- } catch (er) {
- return null
+// pkg/dist-src/each-installation.js
+function eachInstallationFactory(app) {
+ return Object.assign(eachInstallation.bind(null, app), {
+ iterator: eachInstallationIterator.bind(null, app)
+ });
+}
+async function eachInstallation(app, callback) {
+ const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ await callback(result.value);
+ result = await i.next();
}
}
-
-exports.valid = valid
-function valid (version, options) {
- var v = parse(version, options)
- return v ? v.version : null
+function eachInstallationIterator(app) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = import_plugin_paginate_rest.composePaginateRest.iterator(
+ app.octokit,
+ "GET /app/installations"
+ );
+ for await (const { data: installations } of iterator) {
+ for (const installation of installations) {
+ const installationOctokit = await getInstallationOctokit(
+ app,
+ installation.id
+ );
+ yield { octokit: installationOctokit, installation };
+ }
+ }
+ }
+ };
}
-exports.clean = clean
-function clean (version, options) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
+// pkg/dist-src/each-repository.js
+var import_plugin_paginate_rest2 = __nccwpck_require__(4193);
+function eachRepositoryFactory(app) {
+ return Object.assign(eachRepository.bind(null, app), {
+ iterator: eachRepositoryIterator.bind(null, app)
+ });
}
-
-exports.SemVer = SemVer
-
-function SemVer (version, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
- if (version instanceof SemVer) {
- if (version.loose === options.loose) {
- return version
+async function eachRepository(app, queryOrCallback, callback) {
+ const i = eachRepositoryIterator(
+ app,
+ callback ? queryOrCallback : void 0
+ )[Symbol.asyncIterator]();
+ let result = await i.next();
+ while (!result.done) {
+ if (callback) {
+ await callback(result.value);
} else {
- version = version.version
+ await queryOrCallback(result.value);
}
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version)
- }
-
- if (version.length > MAX_LENGTH) {
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
- }
-
- if (!(this instanceof SemVer)) {
- return new SemVer(version, options)
+ result = await i.next();
}
+}
+function singleInstallationIterator(app, installationId) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ yield {
+ octokit: await app.getInstallationOctokit(installationId)
+ };
+ }
+ };
+}
+function eachRepositoryIterator(app, query) {
+ return {
+ async *[Symbol.asyncIterator]() {
+ const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
+ for await (const { octokit } of iterator) {
+ const repositoriesIterator = import_plugin_paginate_rest2.composePaginateRest.iterator(
+ octokit,
+ "GET /installation/repositories"
+ );
+ for await (const { data: repositories } of repositoriesIterator) {
+ for (const repository of repositories) {
+ yield { octokit, repository };
+ }
+ }
+ }
+ }
+ };
+}
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
-
- var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+// pkg/dist-src/middleware/node/index.js
+var import_oauth_app = __nccwpck_require__(3493);
+var import_webhooks2 = __nccwpck_require__(8513);
+function noop() {
+}
+function createNodeMiddleware(app, options = {}) {
+ const log = Object.assign(
+ {
+ debug: noop,
+ info: noop,
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ const optionsWithDefaults = {
+ pathPrefix: "/api/github",
+ ...options,
+ log
+ };
+ const webhooksMiddleware = (0, import_webhooks2.createNodeMiddleware)(app.webhooks, {
+ path: optionsWithDefaults.pathPrefix + "/webhooks",
+ log
+ });
+ const oauthMiddleware = (0, import_oauth_app.createNodeMiddleware)(app.oauth, {
+ pathPrefix: optionsWithDefaults.pathPrefix + "/oauth"
+ });
+ return middleware.bind(
+ null,
+ optionsWithDefaults.pathPrefix,
+ webhooksMiddleware,
+ oauthMiddleware
+ );
+}
+async function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {
+ const { pathname } = new URL(request.url, "http://localhost");
+ if (pathname.startsWith(`${pathPrefix}/`)) {
+ if (pathname === `${pathPrefix}/webhooks`) {
+ webhooksMiddleware(request, response);
+ } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {
+ oauthMiddleware(request, response);
+ } else {
+ (0, import_oauth_app.sendNodeResponse)((0, import_oauth_app.unknownRouteResponse)(request), response);
+ }
+ return true;
+ } else {
+ next == null ? void 0 : next();
+ return false;
+ }
+}
- if (!m) {
- throw new TypeError('Invalid Version: ' + version)
+// pkg/dist-src/index.js
+var _App = class _App {
+ static defaults(defaults) {
+ const AppWithDefaults = class extends this {
+ constructor(...args) {
+ super({
+ ...defaults,
+ ...args[0]
+ });
+ }
+ };
+ return AppWithDefaults;
+ }
+ constructor(options) {
+ const Octokit = options.Octokit || import_core.Octokit;
+ const authOptions = Object.assign(
+ {
+ appId: options.appId,
+ privateKey: options.privateKey
+ },
+ options.oauth ? {
+ clientId: options.oauth.clientId,
+ clientSecret: options.oauth.clientSecret
+ } : {}
+ );
+ this.octokit = new Octokit({
+ authStrategy: import_auth_app3.createAppAuth,
+ auth: authOptions,
+ log: options.log
+ });
+ this.log = Object.assign(
+ {
+ debug: () => {
+ },
+ info: () => {
+ },
+ warn: console.warn.bind(console),
+ error: console.error.bind(console)
+ },
+ options.log
+ );
+ if (options.webhooks) {
+ this.webhooks = webhooks(this.octokit, options.webhooks);
+ } else {
+ Object.defineProperty(this, "webhooks", {
+ get() {
+ throw new Error("[@octokit/app] webhooks option not set");
+ }
+ });
+ }
+ if (options.oauth) {
+ this.oauth = new import_oauth_app2.OAuthApp({
+ ...options.oauth,
+ clientType: "github-app",
+ Octokit
+ });
+ } else {
+ Object.defineProperty(this, "oauth", {
+ get() {
+ throw new Error(
+ "[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
+ );
+ }
+ });
+ }
+ this.getInstallationOctokit = getInstallationOctokit.bind(
+ null,
+ this
+ );
+ this.eachInstallation = eachInstallationFactory(
+ this
+ );
+ this.eachRepository = eachRepositoryFactory(
+ this
+ );
}
+};
+_App.VERSION = VERSION;
+var App = _App;
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
- this.raw = version
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
+/***/ }),
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
+/***/ 7541:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
+"use strict";
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- // numberify any prerelease numeric ids
- if (!m[4]) {
- this.prerelease = []
- } else {
- this.prerelease = m[4].split('.').map(function (id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num
- }
- }
- return id
- })
- }
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createAppAuth: () => createAppAuth,
+ createOAuthUserAuth: () => import_auth_oauth_user2.createOAuthUserAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_universal_user_agent = __nccwpck_require__(5030);
+var import_request = __nccwpck_require__(6234);
+var import_auth_oauth_app = __nccwpck_require__(8459);
- this.build = m[5] ? m[5].split('.') : []
- this.format()
-}
+// pkg/dist-src/auth.js
+var import_deprecation = __nccwpck_require__(8932);
+var OAuthAppAuth = __toESM(__nccwpck_require__(8459));
-SemVer.prototype.format = function () {
- this.version = this.major + '.' + this.minor + '.' + this.patch
- if (this.prerelease.length) {
- this.version += '-' + this.prerelease.join('.')
+// pkg/dist-src/get-app-authentication.js
+var import_universal_github_app_jwt = __nccwpck_require__(4419);
+async function getAppAuthentication({
+ appId,
+ privateKey,
+ timeDifference
+}) {
+ try {
+ const appAuthentication = await (0, import_universal_github_app_jwt.githubAppJwt)({
+ id: +appId,
+ privateKey,
+ now: timeDifference && Math.floor(Date.now() / 1e3) + timeDifference
+ });
+ return {
+ type: "app",
+ token: appAuthentication.token,
+ appId: appAuthentication.appId,
+ expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()
+ };
+ } catch (error) {
+ if (privateKey === "-----BEGIN RSA PRIVATE KEY-----") {
+ throw new Error(
+ "The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'"
+ );
+ } else {
+ throw error;
+ }
}
- return this.version
}
-SemVer.prototype.toString = function () {
- return this.version
+// pkg/dist-src/cache.js
+var import_lru_cache = __nccwpck_require__(1153);
+function getCache() {
+ return new import_lru_cache.LRUCache({
+ // cache max. 15000 tokens, that will use less than 10mb memory
+ max: 15e3,
+ // Cache for 1 minute less than GitHub expiry
+ ttl: 1e3 * 60 * 59
+ });
}
-
-SemVer.prototype.compare = function (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
-
- return this.compareMain(other) || this.comparePre(other)
-}
-
-SemVer.prototype.compareMain = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
+async function get(cache, options) {
+ const cacheKey = optionsToCacheKey(options);
+ const result = await cache.get(cacheKey);
+ if (!result) {
+ return;
}
+ const [
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissionsString,
+ singleFileName
+ ] = result.split("|");
+ const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {
+ if (/!$/.test(string)) {
+ permissions2[string.slice(0, -1)] = "write";
+ } else {
+ permissions2[string] = "read";
+ }
+ return permissions2;
+ }, {});
+ return {
+ token,
+ createdAt,
+ expiresAt,
+ permissions,
+ repositoryIds: options.repositoryIds,
+ repositoryNames: options.repositoryNames,
+ singleFileName,
+ repositorySelection
+ };
+}
+async function set(cache, options, data) {
+ const key = optionsToCacheKey(options);
+ const permissionsString = options.permissions ? "" : Object.keys(data.permissions).map(
+ (name) => `${name}${data.permissions[name] === "write" ? "!" : ""}`
+ ).join(",");
+ const value = [
+ data.token,
+ data.createdAt,
+ data.expiresAt,
+ data.repositorySelection,
+ permissionsString,
+ data.singleFileName
+ ].join("|");
+ await cache.set(key, value);
+}
+function optionsToCacheKey({
+ installationId,
+ permissions = {},
+ repositoryIds = [],
+ repositoryNames = []
+}) {
+ const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === "read" ? name : `${name}!`).join(",");
+ const repositoryIdsString = repositoryIds.sort().join(",");
+ const repositoryNamesString = repositoryNames.join(",");
+ return [
+ installationId,
+ repositoryIdsString,
+ repositoryNamesString,
+ permissionsString
+ ].filter(Boolean).join("|");
+}
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
+// pkg/dist-src/to-token-authentication.js
+function toTokenAuthentication({
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames,
+ singleFileName
+}) {
+ return Object.assign(
+ {
+ type: "token",
+ tokenType: "installation",
+ token,
+ installationId,
+ permissions,
+ createdAt,
+ expiresAt,
+ repositorySelection
+ },
+ repositoryIds ? { repositoryIds } : null,
+ repositoryNames ? { repositoryNames } : null,
+ singleFileName ? { singleFileName } : null
+ );
}
-SemVer.prototype.comparePre = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
+// pkg/dist-src/get-installation-authentication.js
+async function getInstallationAuthentication(state, options, customRequest) {
+ const installationId = Number(options.installationId || state.installationId);
+ if (!installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId option is required for installation authentication."
+ );
}
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length) {
- return -1
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0
+ if (options.factory) {
+ const { type, factory, oauthApp, ...factoryAuthOptions } = {
+ ...state,
+ ...options
+ };
+ return factory(factoryAuthOptions);
}
-
- var i = 0
- do {
- var a = this.prerelease[i]
- var b = other.prerelease[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
+ const optionsWithInstallationTokenFromState = Object.assign(
+ { installationId },
+ options
+ );
+ if (!options.refresh) {
+ const result = await get(
+ state.cache,
+ optionsWithInstallationTokenFromState
+ );
+ if (result) {
+ const {
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2,
+ repositorySelection: repositorySelection2
+ } = result;
+ return toTokenAuthentication({
+ installationId,
+ token: token2,
+ createdAt: createdAt2,
+ expiresAt: expiresAt2,
+ permissions: permissions2,
+ repositorySelection: repositorySelection2,
+ repositoryIds: repositoryIds2,
+ repositoryNames: repositoryNames2,
+ singleFileName: singleFileName2
+ });
}
- } while (++i)
-}
-
-SemVer.prototype.compareBuild = function (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
}
-
- var i = 0
- do {
- var a = this.build[i]
- var b = other.build[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
+ const appAuthentication = await getAppAuthentication(state);
+ const request = customRequest || state.request;
+ const {
+ data: {
+ token,
+ expires_at: expiresAt,
+ repositories,
+ permissions: permissionsOptional,
+ repository_selection: repositorySelectionOptional,
+ single_file: singleFileName
}
- } while (++i)
+ } = await request("POST /app/installations/{installation_id}/access_tokens", {
+ installation_id: installationId,
+ repository_ids: options.repositoryIds,
+ repositories: options.repositoryNames,
+ permissions: options.permissions,
+ mediaType: {
+ previews: ["machine-man"]
+ },
+ headers: {
+ authorization: `bearer ${appAuthentication.token}`
+ }
+ });
+ const permissions = permissionsOptional || {};
+ const repositorySelection = repositorySelectionOptional || "all";
+ const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;
+ const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;
+ const createdAt = (/* @__PURE__ */ new Date()).toISOString();
+ await set(state.cache, optionsWithInstallationTokenFromState, {
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames,
+ singleFileName
+ });
+ return toTokenAuthentication({
+ installationId,
+ token,
+ createdAt,
+ expiresAt,
+ repositorySelection,
+ permissions,
+ repositoryIds,
+ repositoryNames,
+ singleFileName
+ });
}
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function (release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier)
- this.inc('pre', identifier)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier)
- }
- this.inc('pre', identifier)
- break
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0) {
- this.prerelease = [0]
- } else {
- var i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- this.prerelease.push(0)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = [identifier, 0]
- }
- } else {
- this.prerelease = [identifier, 0]
- }
- }
- break
-
+// pkg/dist-src/auth.js
+async function auth(state, authOptions) {
+ switch (authOptions.type) {
+ case "app":
+ return getAppAuthentication(state);
+ case "oauth":
+ state.log.warn(
+ // @ts-expect-error `log.warn()` expects string
+ new import_deprecation.Deprecation(
+ `[@octokit/auth-app] {type: "oauth"} is deprecated. Use {type: "oauth-app"} instead`
+ )
+ );
+ case "oauth-app":
+ return state.oauthApp({ type: "oauth-app" });
+ case "installation":
+ authOptions;
+ return getInstallationAuthentication(state, {
+ ...authOptions,
+ type: "installation"
+ });
+ case "oauth-user":
+ return state.oauthApp(authOptions);
default:
- throw new Error('invalid increment argument: ' + release)
+ throw new Error(`Invalid auth type: ${authOptions.type}`);
}
- this.format()
- this.raw = this.version
- return this
}
-exports.inc = inc
-function inc (version, release, loose, identifier) {
- if (typeof (loose) === 'string') {
- identifier = loose
- loose = undefined
- }
+// pkg/dist-src/hook.js
+var import_auth_oauth_user = __nccwpck_require__(1591);
+var import_request_error = __nccwpck_require__(537);
- try {
- return new SemVer(version, loose).inc(release, identifier).version
- } catch (er) {
- return null
- }
+// pkg/dist-src/requires-app-auth.js
+var PATHS = [
+ "/app",
+ "/app/hook/config",
+ "/app/hook/deliveries",
+ "/app/hook/deliveries/{delivery_id}",
+ "/app/hook/deliveries/{delivery_id}/attempts",
+ "/app/installations",
+ "/app/installations/{installation_id}",
+ "/app/installations/{installation_id}/access_tokens",
+ "/app/installations/{installation_id}/suspended",
+ "/app/installation-requests",
+ "/marketplace_listing/accounts/{account_id}",
+ "/marketplace_listing/plan",
+ "/marketplace_listing/plans",
+ "/marketplace_listing/plans/{plan_id}/accounts",
+ "/marketplace_listing/stubbed/accounts/{account_id}",
+ "/marketplace_listing/stubbed/plan",
+ "/marketplace_listing/stubbed/plans",
+ "/marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "/orgs/{org}/installation",
+ "/repos/{owner}/{repo}/installation",
+ "/users/{username}/installation"
+];
+function routeMatcher(paths) {
+ const regexes = paths.map(
+ (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/")
+ );
+ const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`;
+ return new RegExp(regex, "i");
+}
+var REGEX = routeMatcher(PATHS);
+function requiresAppAuth(url) {
+ return !!url && REGEX.test(url.split("?")[0]);
}
-exports.diff = diff
-function diff (version1, version2) {
- if (eq(version1, version2)) {
- return null
- } else {
- var v1 = parse(version1)
- var v2 = parse(version2)
- var prefix = ''
- if (v1.prerelease.length || v2.prerelease.length) {
- prefix = 'pre'
- var defaultResult = 'prerelease'
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return prefix + key
- }
+// pkg/dist-src/hook.js
+var FIVE_SECONDS_IN_MS = 5 * 1e3;
+function isNotTimeSkewError(error) {
+ return !(error.message.match(
+ /'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/
+ ) || error.message.match(
+ /'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
+ ));
+}
+async function hook(state, request, route, parameters) {
+ const endpoint = request.endpoint.merge(route, parameters);
+ const url = endpoint.url;
+ if (/\/login\/oauth\/access_token$/.test(url)) {
+ return request(endpoint);
+ }
+ if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, ""))) {
+ const { token: token2 } = await getAppAuthentication(state);
+ endpoint.headers.authorization = `bearer ${token2}`;
+ let response;
+ try {
+ response = await request(endpoint);
+ } catch (error) {
+ if (isNotTimeSkewError(error)) {
+ throw error;
+ }
+ if (typeof error.response.headers.date === "undefined") {
+ throw error;
}
+ const diff = Math.floor(
+ (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3
+ );
+ state.log.warn(error.message);
+ state.log.warn(
+ `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`
+ );
+ const { token: token3 } = await getAppAuthentication({
+ ...state,
+ timeDifference: diff
+ });
+ endpoint.headers.authorization = `bearer ${token3}`;
+ return request(endpoint);
}
- return defaultResult // may be undefined
+ return response;
}
-}
-
-exports.compareIdentifiers = compareIdentifiers
-
-var numeric = /^[0-9]+$/
-function compareIdentifiers (a, b) {
- var anum = numeric.test(a)
- var bnum = numeric.test(b)
-
- if (anum && bnum) {
- a = +a
- b = +b
+ if ((0, import_auth_oauth_user.requiresBasicAuth)(url)) {
+ const authentication = await state.oauthApp({ type: "oauth-app" });
+ endpoint.headers.authorization = authentication.headers.authorization;
+ return request(endpoint);
}
-
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
+ const { token, createdAt } = await getInstallationAuthentication(
+ state,
+ // @ts-expect-error TBD
+ {},
+ request
+ );
+ endpoint.headers.authorization = `token ${token}`;
+ return sendRequestWithRetries(
+ state,
+ request,
+ endpoint,
+ createdAt
+ );
}
-
-exports.rcompareIdentifiers = rcompareIdentifiers
-function rcompareIdentifiers (a, b) {
- return compareIdentifiers(b, a)
+async function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {
+ const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
+ try {
+ return await request(options);
+ } catch (error) {
+ if (error.status !== 401) {
+ throw error;
+ }
+ if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {
+ if (retries > 0) {
+ error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;
+ }
+ throw error;
+ }
+ ++retries;
+ const awaitTime = retries * 1e3;
+ state.log.warn(
+ `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
+ );
+ await new Promise((resolve) => setTimeout(resolve, awaitTime));
+ return sendRequestWithRetries(state, request, options, createdAt, retries);
+ }
}
-exports.major = major
-function major (a, loose) {
- return new SemVer(a, loose).major
-}
+// pkg/dist-src/version.js
+var VERSION = "6.1.0";
-exports.minor = minor
-function minor (a, loose) {
- return new SemVer(a, loose).minor
+// pkg/dist-src/index.js
+var import_auth_oauth_user2 = __nccwpck_require__(1591);
+function createAppAuth(options) {
+ if (!options.appId) {
+ throw new Error("[@octokit/auth-app] appId option is required");
+ }
+ if (!Number.isFinite(+options.appId)) {
+ throw new Error(
+ "[@octokit/auth-app] appId option must be a number or numeric string"
+ );
+ }
+ if (!options.privateKey) {
+ throw new Error("[@octokit/auth-app] privateKey option is required");
+ }
+ if ("installationId" in options && !options.installationId) {
+ throw new Error(
+ "[@octokit/auth-app] installationId is set to a falsy value"
+ );
+ }
+ const log = Object.assign(
+ {
+ warn: console.warn.bind(console)
+ },
+ options.log
+ );
+ const request = options.request || import_request.request.defaults({
+ headers: {
+ "user-agent": `octokit-auth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+ }
+ });
+ const state = Object.assign(
+ {
+ request,
+ cache: getCache()
+ },
+ options,
+ options.installationId ? { installationId: Number(options.installationId) } : {},
+ {
+ log,
+ oauthApp: (0, import_auth_oauth_app.createOAuthAppAuth)({
+ clientType: "github-app",
+ clientId: options.clientId || "",
+ clientSecret: options.clientSecret || "",
+ request
+ })
+ }
+ );
+ return Object.assign(auth.bind(null, state), {
+ hook: hook.bind(null, state)
+ });
}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
-exports.patch = patch
-function patch (a, loose) {
- return new SemVer(a, loose).patch
-}
-exports.compare = compare
-function compare (a, b, loose) {
- return new SemVer(a, loose).compare(new SemVer(b, loose))
-}
+/***/ }),
-exports.compareLoose = compareLoose
-function compareLoose (a, b) {
- return compare(a, b, true)
-}
+/***/ 8459:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-exports.compareBuild = compareBuild
-function compareBuild (a, b, loose) {
- var versionA = new SemVer(a, loose)
- var versionB = new SemVer(b, loose)
- return versionA.compare(versionB) || versionA.compareBuild(versionB)
-}
+"use strict";
-exports.rcompare = rcompare
-function rcompare (a, b, loose) {
- return compare(b, a, loose)
-}
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-exports.sort = sort
-function sort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compareBuild(a, b, loose)
- })
-}
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createOAuthAppAuth: () => createOAuthAppAuth,
+ createOAuthUserAuth: () => import_auth_oauth_user3.createOAuthUserAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_universal_user_agent = __nccwpck_require__(5030);
+var import_request = __nccwpck_require__(6234);
-exports.rsort = rsort
-function rsort (list, loose) {
- return list.sort(function (a, b) {
- return exports.compareBuild(b, a, loose)
- })
+// pkg/dist-src/auth.js
+var import_btoa_lite = __toESM(__nccwpck_require__(2358));
+var import_auth_oauth_user = __nccwpck_require__(1591);
+async function auth(state, authOptions) {
+ if (authOptions.type === "oauth-app") {
+ return {
+ type: "oauth-app",
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ clientType: state.clientType,
+ headers: {
+ authorization: `basic ${(0, import_btoa_lite.default)(
+ `${state.clientId}:${state.clientSecret}`
+ )}`
+ }
+ };
+ }
+ if ("factory" in authOptions) {
+ const { type, ...options } = {
+ ...authOptions,
+ ...state
+ };
+ return authOptions.factory(options);
+ }
+ const common = {
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.request,
+ ...authOptions
+ };
+ const userAuth = state.clientType === "oauth-app" ? await (0, import_auth_oauth_user.createOAuthUserAuth)({
+ ...common,
+ clientType: state.clientType
+ }) : await (0, import_auth_oauth_user.createOAuthUserAuth)({
+ ...common,
+ clientType: state.clientType
+ });
+ return userAuth();
}
-exports.gt = gt
-function gt (a, b, loose) {
- return compare(a, b, loose) > 0
+// pkg/dist-src/hook.js
+var import_btoa_lite2 = __toESM(__nccwpck_require__(2358));
+var import_auth_oauth_user2 = __nccwpck_require__(1591);
+async function hook(state, request2, route, parameters) {
+ let endpoint = request2.endpoint.merge(
+ route,
+ parameters
+ );
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
+ return request2(endpoint);
+ }
+ if (state.clientType === "github-app" && !(0, import_auth_oauth_user2.requiresBasicAuth)(endpoint.url)) {
+ throw new Error(
+ `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint.method} ${endpoint.url}" is not supported.`
+ );
+ }
+ const credentials = (0, import_btoa_lite2.default)(`${state.clientId}:${state.clientSecret}`);
+ endpoint.headers.authorization = `basic ${credentials}`;
+ try {
+ return await request2(endpoint);
+ } catch (error) {
+ if (error.status !== 401)
+ throw error;
+ error.message = `[@octokit/auth-oauth-app] "${endpoint.method} ${endpoint.url}" does not support clientId/clientSecret basic authentication.`;
+ throw error;
+ }
}
-exports.lt = lt
-function lt (a, b, loose) {
- return compare(a, b, loose) < 0
-}
+// pkg/dist-src/version.js
+var VERSION = "7.0.1";
-exports.eq = eq
-function eq (a, b, loose) {
- return compare(a, b, loose) === 0
+// pkg/dist-src/index.js
+var import_auth_oauth_user3 = __nccwpck_require__(1591);
+function createOAuthAppAuth(options) {
+ const state = Object.assign(
+ {
+ request: import_request.request.defaults({
+ headers: {
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+ }
+ }),
+ clientType: "oauth-app"
+ },
+ options
+ );
+ return Object.assign(auth.bind(null, state), {
+ hook: hook.bind(null, state)
+ });
}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
-exports.neq = neq
-function neq (a, b, loose) {
- return compare(a, b, loose) !== 0
-}
-
-exports.gte = gte
-function gte (a, b, loose) {
- return compare(a, b, loose) >= 0
-}
-
-exports.lte = lte
-function lte (a, b, loose) {
- return compare(a, b, loose) <= 0
-}
-
-exports.cmp = cmp
-function cmp (a, op, b, loose) {
- switch (op) {
- case '===':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a === b
-
- case '!==':
- if (typeof a === 'object')
- a = a.version
- if (typeof b === 'object')
- b = b.version
- return a !== b
-
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
- case '!=':
- return neq(a, b, loose)
+/***/ }),
- case '>':
- return gt(a, b, loose)
+/***/ 4344:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- case '>=':
- return gte(a, b, loose)
+"use strict";
- case '<':
- return lt(a, b, loose)
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- case '<=':
- return lte(a, b, loose)
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createOAuthDeviceAuth: () => createOAuthDeviceAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_universal_user_agent = __nccwpck_require__(5030);
+var import_request = __nccwpck_require__(6234);
- default:
- throw new TypeError('Invalid operator: ' + op)
+// pkg/dist-src/get-oauth-access-token.js
+var import_oauth_methods = __nccwpck_require__(8445);
+async function getOAuthAccessToken(state, options) {
+ const cachedAuthentication = getCachedAuthentication(state, options.auth);
+ if (cachedAuthentication)
+ return cachedAuthentication;
+ const { data: verification } = await (0, import_oauth_methods.createDeviceCode)({
+ clientType: state.clientType,
+ clientId: state.clientId,
+ request: options.request || state.request,
+ // @ts-expect-error the extra code to make TS happy is not worth it
+ scopes: options.auth.scopes || state.scopes
+ });
+ await state.onVerification(verification);
+ const authentication = await waitForAccessToken(
+ options.request || state.request,
+ state.clientId,
+ state.clientType,
+ verification
+ );
+ state.authentication = authentication;
+ return authentication;
+}
+function getCachedAuthentication(state, auth2) {
+ if (auth2.refresh === true)
+ return false;
+ if (!state.authentication)
+ return false;
+ if (state.clientType === "github-app") {
+ return state.authentication;
}
+ const authentication = state.authentication;
+ const newScope = ("scopes" in auth2 && auth2.scopes || state.scopes).join(
+ " "
+ );
+ const currentScope = authentication.scopes.join(" ");
+ return newScope === currentScope ? authentication : false;
}
-
-exports.Comparator = Comparator
-function Comparator (comp, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+async function wait(seconds) {
+ await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));
+}
+async function waitForAccessToken(request, clientId, clientType, verification) {
+ try {
+ const options = {
+ clientId,
+ request,
+ code: verification.device_code
+ };
+ const { authentication } = clientType === "oauth-app" ? await (0, import_oauth_methods.exchangeDeviceCode)({
+ ...options,
+ clientType: "oauth-app"
+ }) : await (0, import_oauth_methods.exchangeDeviceCode)({
+ ...options,
+ clientType: "github-app"
+ });
+ return {
+ type: "token",
+ tokenType: "oauth",
+ ...authentication
+ };
+ } catch (error) {
+ if (!error.response)
+ throw error;
+ const errorType = error.response.data.error;
+ if (errorType === "authorization_pending") {
+ await wait(verification.interval);
+ return waitForAccessToken(request, clientId, clientType, verification);
}
- }
-
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
- } else {
- comp = comp.value
+ if (errorType === "slow_down") {
+ await wait(verification.interval + 5);
+ return waitForAccessToken(request, clientId, clientType, verification);
}
+ throw error;
}
+}
- if (!(this instanceof Comparator)) {
- return new Comparator(comp, options)
- }
-
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
+// pkg/dist-src/auth.js
+async function auth(state, authOptions) {
+ return getOAuthAccessToken(state, {
+ auth: authOptions
+ });
+}
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
+// pkg/dist-src/hook.js
+async function hook(state, request, route, parameters) {
+ let endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
+ return request(endpoint);
}
-
- debug('comp', this)
+ const { token } = await getOAuthAccessToken(state, {
+ request,
+ auth: { type: "oauth" }
+ });
+ endpoint.headers.authorization = `token ${token}`;
+ return request(endpoint);
}
-var ANY = {}
-Comparator.prototype.parse = function (comp) {
- var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
- var m = comp.match(r)
-
- if (!m) {
- throw new TypeError('Invalid comparator: ' + comp)
- }
+// pkg/dist-src/version.js
+var VERSION = "6.0.1";
- this.operator = m[1] !== undefined ? m[1] : ''
- if (this.operator === '=') {
- this.operator = ''
+// pkg/dist-src/index.js
+function createOAuthDeviceAuth(options) {
+ const requestWithDefaults = options.request || import_request.request.defaults({
+ headers: {
+ "user-agent": `octokit-auth-oauth-device.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+ }
+ });
+ const { request = requestWithDefaults, ...otherOptions } = options;
+ const state = options.clientType === "github-app" ? {
+ ...otherOptions,
+ clientType: "github-app",
+ request
+ } : {
+ ...otherOptions,
+ clientType: "oauth-app",
+ request,
+ scopes: options.scopes || []
+ };
+ if (!options.clientId) {
+ throw new Error(
+ '[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)'
+ );
}
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
- } else {
- this.semver = new SemVer(m[2], this.options.loose)
+ if (!options.onVerification) {
+ throw new Error(
+ '[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)'
+ );
}
+ return Object.assign(auth.bind(null, state), {
+ hook: hook.bind(null, state)
+ });
}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
-Comparator.prototype.toString = function () {
- return this.value
-}
-Comparator.prototype.test = function (version) {
- debug('Comparator.test', version, this.options.loose)
+/***/ }),
- if (this.semver === ANY || version === ANY) {
- return true
- }
+/***/ 1591:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
+"use strict";
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- return cmp(version, this.operator, this.semver, this.options)
-}
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createOAuthUserAuth: () => createOAuthUserAuth,
+ requiresBasicAuth: () => requiresBasicAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_universal_user_agent = __nccwpck_require__(5030);
+var import_request = __nccwpck_require__(6234);
-Comparator.prototype.intersects = function (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
+// pkg/dist-src/version.js
+var VERSION = "4.0.1";
+
+// pkg/dist-src/get-authentication.js
+var import_auth_oauth_device = __nccwpck_require__(4344);
+var import_oauth_methods = __nccwpck_require__(8445);
+async function getAuthentication(state) {
+ if ("code" in state.strategyOptions) {
+ const { authentication } = await (0, import_oauth_methods.exchangeWebFlowCode)({
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ clientType: state.clientType,
+ onTokenCreated: state.onTokenCreated,
+ ...state.strategyOptions,
+ request: state.request
+ });
+ return {
+ type: "token",
+ tokenType: "oauth",
+ ...authentication
+ };
+ }
+ if ("onVerification" in state.strategyOptions) {
+ const deviceAuth = (0, import_auth_oauth_device.createOAuthDeviceAuth)({
+ clientType: state.clientType,
+ clientId: state.clientId,
+ onTokenCreated: state.onTokenCreated,
+ ...state.strategyOptions,
+ request: state.request
+ });
+ const authentication = await deviceAuth({
+ type: "oauth"
+ });
+ return {
+ clientSecret: state.clientSecret,
+ ...authentication
+ };
+ }
+ if ("token" in state.strategyOptions) {
+ return {
+ type: "token",
+ tokenType: "oauth",
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ clientType: state.clientType,
+ onTokenCreated: state.onTokenCreated,
+ ...state.strategyOptions
+ };
}
+ throw new Error("[@octokit/auth-oauth-user] Invalid strategy options");
+}
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+// pkg/dist-src/auth.js
+var import_oauth_methods2 = __nccwpck_require__(8445);
+async function auth(state, options = {}) {
+ var _a, _b;
+ if (!state.authentication) {
+ state.authentication = state.clientType === "oauth-app" ? await getAuthentication(state) : await getAuthentication(state);
+ }
+ if (state.authentication.invalid) {
+ throw new Error("[@octokit/auth-oauth-user] Token is invalid");
+ }
+ const currentAuthentication = state.authentication;
+ if ("expiresAt" in currentAuthentication) {
+ if (options.type === "refresh" || new Date(currentAuthentication.expiresAt) < /* @__PURE__ */ new Date()) {
+ const { authentication } = await (0, import_oauth_methods2.refreshToken)({
+ clientType: "github-app",
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ refreshToken: currentAuthentication.refreshToken,
+ request: state.request
+ });
+ state.authentication = {
+ tokenType: "oauth",
+ type: "token",
+ ...authentication
+ };
}
}
-
- var rangeTmp
-
- if (this.operator === '') {
- if (this.value === '') {
- return true
+ if (options.type === "refresh") {
+ if (state.clientType === "oauth-app") {
+ throw new Error(
+ "[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens"
+ );
}
- rangeTmp = new Range(comp.value, options)
- return satisfies(this.value, rangeTmp, options)
- } else if (comp.operator === '') {
- if (comp.value === '') {
- return true
+ if (!currentAuthentication.hasOwnProperty("expiresAt")) {
+ throw new Error("[@octokit/auth-oauth-user] Refresh token missing");
}
- rangeTmp = new Range(this.value, options)
- return satisfies(comp.semver, rangeTmp, options)
+ await ((_a = state.onTokenCreated) == null ? void 0 : _a.call(state, state.authentication, {
+ type: options.type
+ }));
}
-
- var sameDirectionIncreasing =
- (this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '>=' || comp.operator === '>')
- var sameDirectionDecreasing =
- (this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '<=' || comp.operator === '<')
- var sameSemVer = this.semver.version === comp.semver.version
- var differentDirectionsInclusive =
- (this.operator === '>=' || this.operator === '<=') &&
- (comp.operator === '>=' || comp.operator === '<=')
- var oppositeDirectionsLessThan =
- cmp(this.semver, '<', comp.semver, options) &&
- ((this.operator === '>=' || this.operator === '>') &&
- (comp.operator === '<=' || comp.operator === '<'))
- var oppositeDirectionsGreaterThan =
- cmp(this.semver, '>', comp.semver, options) &&
- ((this.operator === '<=' || this.operator === '<') &&
- (comp.operator === '>=' || comp.operator === '>'))
-
- return sameDirectionIncreasing || sameDirectionDecreasing ||
- (sameSemVer && differentDirectionsInclusive) ||
- oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
-}
-
-exports.Range = Range
-function Range (range, options) {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
+ if (options.type === "check" || options.type === "reset") {
+ const method = options.type === "check" ? import_oauth_methods2.checkToken : import_oauth_methods2.resetToken;
+ try {
+ const { authentication } = await method({
+ // @ts-expect-error making TS happy would require unnecessary code so no
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: state.authentication.token,
+ request: state.request
+ });
+ state.authentication = {
+ tokenType: "oauth",
+ type: "token",
+ // @ts-expect-error TBD
+ ...authentication
+ };
+ if (options.type === "reset") {
+ await ((_b = state.onTokenCreated) == null ? void 0 : _b.call(state, state.authentication, {
+ type: options.type
+ }));
+ }
+ return state.authentication;
+ } catch (error) {
+ if (error.status === 404) {
+ error.message = "[@octokit/auth-oauth-user] Token is invalid";
+ state.authentication.invalid = true;
+ }
+ throw error;
}
}
-
- if (range instanceof Range) {
- if (range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease) {
- return range
- } else {
- return new Range(range.raw, options)
+ if (options.type === "delete" || options.type === "deleteAuthorization") {
+ const method = options.type === "delete" ? import_oauth_methods2.deleteToken : import_oauth_methods2.deleteAuthorization;
+ try {
+ await method({
+ // @ts-expect-error making TS happy would require unnecessary code so no
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: state.authentication.token,
+ request: state.request
+ });
+ } catch (error) {
+ if (error.status !== 404)
+ throw error;
}
+ state.authentication.invalid = true;
+ return state.authentication;
}
+ return state.authentication;
+}
- if (range instanceof Comparator) {
- return new Range(range.value, options)
- }
-
- if (!(this instanceof Range)) {
- return new Range(range, options)
- }
+// pkg/dist-src/hook.js
+var import_btoa_lite = __toESM(__nccwpck_require__(2358));
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
+// pkg/dist-src/requires-basic-auth.js
+var ROUTES_REQUIRING_BASIC_AUTH = /\/applications\/[^/]+\/(token|grant)s?/;
+function requiresBasicAuth(url) {
+ return url && ROUTES_REQUIRING_BASIC_AUTH.test(url);
+}
- // First, split based on boolean or ||
- this.raw = range
- this.set = range.split(/\s*\|\|\s*/).map(function (range) {
- return this.parseRange(range.trim())
- }, this).filter(function (c) {
- // throw out any that are not relevant for whatever reason
- return c.length
- })
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range)
+// pkg/dist-src/hook.js
+async function hook(state, request, route, parameters = {}) {
+ const endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
+ return request(endpoint);
}
-
- this.format()
+ if (requiresBasicAuth(endpoint.url)) {
+ const credentials = (0, import_btoa_lite.default)(`${state.clientId}:${state.clientSecret}`);
+ endpoint.headers.authorization = `basic ${credentials}`;
+ return request(endpoint);
+ }
+ const { token } = state.clientType === "oauth-app" ? await auth({ ...state, request }) : await auth({ ...state, request });
+ endpoint.headers.authorization = "token " + token;
+ return request(endpoint);
}
-Range.prototype.format = function () {
- this.range = this.set.map(function (comps) {
- return comps.join(' ').trim()
- }).join('||').trim()
- return this.range
+// pkg/dist-src/index.js
+function createOAuthUserAuth({
+ clientId,
+ clientSecret,
+ clientType = "oauth-app",
+ request = import_request.request.defaults({
+ headers: {
+ "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+ }
+ }),
+ onTokenCreated,
+ ...strategyOptions
+}) {
+ const state = Object.assign({
+ clientType,
+ clientId,
+ clientSecret,
+ onTokenCreated,
+ strategyOptions,
+ request
+ });
+ return Object.assign(auth.bind(null, state), {
+ // @ts-expect-error not worth the extra code needed to appease TS
+ hook: hook.bind(null, state)
+ });
}
+createOAuthUserAuth.VERSION = VERSION;
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
-Range.prototype.toString = function () {
- return this.range
-}
-Range.prototype.parseRange = function (range) {
- var loose = this.options.loose
- range = range.trim()
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
- range = range.replace(hr, hyphenReplace)
- debug('hyphen replace', range)
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range, re[t.COMPARATORTRIM])
+/***/ }),
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+/***/ 334:
+/***/ ((module) => {
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+"use strict";
- // normalize spaces
- range = range.split(/\s+/).join(' ')
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createTokenAuth: () => createTokenAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
- var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
- var set = range.split(' ').map(function (comp) {
- return parseComparator(comp, this.options)
- }, this).join(' ').split(/\s+/)
- if (this.options.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function (comp) {
- return !!comp.match(compRe)
- })
+// pkg/dist-src/auth.js
+var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
+var REGEX_IS_INSTALLATION = /^ghs_/;
+var REGEX_IS_USER_TO_SERVER = /^ghu_/;
+async function auth(token) {
+ const isApp = token.split(/\./).length === 3;
+ const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
+ const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
+ const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
+ return {
+ type: "token",
+ token,
+ tokenType
+ };
+}
+
+// pkg/dist-src/with-authorization-prefix.js
+function withAuthorizationPrefix(token) {
+ if (token.split(/\./).length === 3) {
+ return `bearer ${token}`;
}
- set = set.map(function (comp) {
- return new Comparator(comp, this.options)
- }, this)
+ return `token ${token}`;
+}
- return set
+// pkg/dist-src/hook.js
+async function hook(token, request, route, parameters) {
+ const endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ endpoint.headers.authorization = withAuthorizationPrefix(token);
+ return request(endpoint);
}
-Range.prototype.intersects = function (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
+// pkg/dist-src/index.js
+var createTokenAuth = function createTokenAuth2(token) {
+ if (!token) {
+ throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
+ }
+ if (typeof token !== "string") {
+ throw new Error(
+ "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
+ );
}
+ token = token.replace(/^(token|bearer) +/i, "");
+ return Object.assign(auth.bind(null, token), {
+ hook: hook.bind(null, token)
+ });
+};
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
- return this.set.some(function (thisComparators) {
- return (
- isSatisfiable(thisComparators, options) &&
- range.set.some(function (rangeComparators) {
- return (
- isSatisfiable(rangeComparators, options) &&
- thisComparators.every(function (thisComparator) {
- return rangeComparators.every(function (rangeComparator) {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- )
- })
- )
- })
-}
-// take a set of comparators and determine whether there
-// exists a version which can satisfy it
-function isSatisfiable (comparators, options) {
- var result = true
- var remainingComparators = comparators.slice()
- var testComparator = remainingComparators.pop()
+/***/ }),
- while (result && remainingComparators.length) {
- result = remainingComparators.every(function (otherComparator) {
- return testComparator.intersects(otherComparator, options)
- })
+/***/ 9567:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- testComparator = remainingComparators.pop()
+"use strict";
+
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- return result
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ createUnauthenticatedAuth: () => createUnauthenticatedAuth
+});
+module.exports = __toCommonJS(dist_src_exports);
+
+// pkg/dist-src/auth.js
+async function auth(reason) {
+ return {
+ type: "unauthenticated",
+ reason
+ };
}
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators
-function toComparators (range, options) {
- return new Range(range, options).set.map(function (comp) {
- return comp.map(function (c) {
- return c.value
- }).join(' ').trim().split(' ')
- })
+// pkg/dist-src/is-rate-limit-error.js
+var import_request_error = __nccwpck_require__(537);
+function isRateLimitError(error) {
+ if (error.status !== 403) {
+ return false;
+ }
+ if (!error.response) {
+ return false;
+ }
+ return error.response.headers["x-ratelimit-remaining"] === "0";
}
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator (comp, options) {
- debug('comp', comp, options)
- comp = replaceCarets(comp, options)
- debug('caret', comp)
- comp = replaceTildes(comp, options)
- debug('tildes', comp)
- comp = replaceXRanges(comp, options)
- debug('xrange', comp)
- comp = replaceStars(comp, options)
- debug('stars', comp)
- return comp
-}
-
-function isX (id) {
- return !id || id.toLowerCase() === 'x' || id === '*'
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceTilde(comp, options)
- }).join(' ')
+// pkg/dist-src/is-abuse-limit-error.js
+var import_request_error2 = __nccwpck_require__(537);
+var REGEX_ABUSE_LIMIT_MESSAGE = /\babuse\b/i;
+function isAbuseLimitError(error) {
+ if (error.status !== 403) {
+ return false;
+ }
+ return REGEX_ABUSE_LIMIT_MESSAGE.test(error.message);
}
-function replaceTilde (comp, options) {
- var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('tilde', comp, _, M, m, p, pr)
- var ret
-
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- // ~1.2 == >=1.2.0 <1.3.0
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else if (pr) {
- debug('replaceTilde pr', pr)
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- } else {
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
+// pkg/dist-src/hook.js
+async function hook(reason, request, route, parameters) {
+ const endpoint = request.endpoint.merge(
+ route,
+ parameters
+ );
+ return request(endpoint).catch((error) => {
+ if (error.status === 404) {
+ error.message = `Not found. May be due to lack of authentication. Reason: ${reason}`;
+ throw error;
}
-
- debug('tilde return', ret)
- return ret
- })
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets (comp, options) {
- return comp.trim().split(/\s+/).map(function (comp) {
- return replaceCaret(comp, options)
- }).join(' ')
+ if (isRateLimitError(error)) {
+ error.message = `API rate limit exceeded. This maybe caused by the lack of authentication. Reason: ${reason}`;
+ throw error;
+ }
+ if (isAbuseLimitError(error)) {
+ error.message = `You have triggered an abuse detection mechanism. This maybe caused by the lack of authentication. Reason: ${reason}`;
+ throw error;
+ }
+ if (error.status === 401) {
+ error.message = `Unauthorized. "${endpoint.method} ${endpoint.url}" failed most likely due to lack of authentication. Reason: ${reason}`;
+ throw error;
+ }
+ if (error.status >= 400 && error.status < 500) {
+ error.message = error.message.replace(
+ /\.?$/,
+ `. May be caused by lack of authentication (${reason}).`
+ );
+ }
+ throw error;
+ });
}
-function replaceCaret (comp, options) {
- debug('caret', comp, options)
- var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
- return comp.replace(r, function (_, M, m, p, pr) {
- debug('caret', comp, _, M, m, p, pr)
- var ret
+// pkg/dist-src/index.js
+var createUnauthenticatedAuth = function createUnauthenticatedAuth2(options) {
+ if (!options || !options.reason) {
+ throw new Error(
+ "[@octokit/auth-unauthenticated] No reason passed to createUnauthenticatedAuth"
+ );
+ }
+ return Object.assign(auth.bind(null, options.reason), {
+ hook: hook.bind(null, options.reason)
+ });
+};
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
- } else if (isX(p)) {
- if (M === '0') {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
- } else {
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
- }
- } else if (pr) {
- debug('replaceCaret pr', pr)
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
- ' <' + (+M + 1) + '.0.0'
- }
- } else {
- debug('no pr')
- if (M === '0') {
- if (m === '0') {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1)
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0'
- }
- } else {
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0'
- }
- }
- debug('caret return', ret)
- return ret
- })
-}
+/***/ }),
-function replaceXRanges (comp, options) {
- debug('replaceXRanges', comp, options)
- return comp.split(/\s+/).map(function (comp) {
- return replaceXRange(comp, options)
- }).join(' ')
-}
+/***/ 6762:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function replaceXRange (comp, options) {
- comp = comp.trim()
- var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
- return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
- debug('xRange', comp, ret, gtlt, M, m, p, pr)
- var xM = isX(M)
- var xm = xM || isX(m)
- var xp = xm || isX(p)
- var anyX = xp
+"use strict";
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- // if we're including prereleases in the match, then we need
- // to fix this to -0, the lowest possible prerelease value
- pr = options.includePrerelease ? '-0' : ''
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ Octokit: () => Octokit
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_universal_user_agent = __nccwpck_require__(5030);
+var import_before_after_hook = __nccwpck_require__(3682);
+var import_request = __nccwpck_require__(6234);
+var import_graphql = __nccwpck_require__(8467);
+var import_auth_token = __nccwpck_require__(334);
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0-0'
- } else {
- // nothing is forbidden
- ret = '*'
- }
- } else if (gtlt && anyX) {
- // we know patch is an x, because we have any x at all.
- // replace X with 0
- if (xm) {
- m = 0
- }
- p = 0
+// pkg/dist-src/version.js
+var VERSION = "5.1.0";
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>='
- if (xm) {
- M = +M + 1
- m = 0
- p = 0
- } else {
- m = +m + 1
- p = 0
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm) {
- M = +M + 1
- } else {
- m = +m + 1
+// 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} ${(0, import_universal_user_agent.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
+ )
+ );
}
-
- ret = gtlt + M + '.' + m + '.' + p + pr
- } else if (xm) {
- ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0' + pr +
- ' <' + M + '.' + (+m + 1) + '.0' + pr
+ };
+ 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 import_before_after_hook.Collection();
+ const requestDefaults = {
+ baseUrl: import_request.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 = import_request.request.defaults(requestDefaults);
+ this.graphql = (0, import_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 = (0, import_auth_token.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));
}
+ }
+};
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
- debug('xRange return', ret)
- return ret
- })
-}
+/***/ }),
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars (comp, options) {
- debug('replaceStars', comp, options)
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[t.STAR], '')
-}
+/***/ 9440:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-// This function is passed to string.replace(re[t.HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace ($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
- if (isX(fM)) {
- from = ''
- } else if (isX(fm)) {
- from = '>=' + fM + '.0.0'
- } else if (isX(fp)) {
- from = '>=' + fM + '.' + fm + '.0'
- } else {
- from = '>=' + from
- }
+"use strict";
- if (isX(tM)) {
- to = ''
- } else if (isX(tm)) {
- to = '<' + (+tM + 1) + '.0.0'
- } else if (isX(tp)) {
- to = '<' + tM + '.' + (+tm + 1) + '.0'
- } else if (tpr) {
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
- } else {
- to = '<=' + to
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- return (from + ' ' + to).trim()
-}
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ endpoint: () => endpoint
+});
+module.exports = __toCommonJS(dist_src_exports);
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function (version) {
- if (!version) {
- return false
- }
+// pkg/dist-src/defaults.js
+var import_universal_user_agent = __nccwpck_require__(5030);
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
+// pkg/dist-src/version.js
+var VERSION = "9.0.4";
+
+// pkg/dist-src/defaults.js
+var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
+var DEFAULTS = {
+ method: "GET",
+ baseUrl: "https://api.github.com",
+ headers: {
+ accept: "application/vnd.github.v3+json",
+ "user-agent": userAgent
+ },
+ mediaType: {
+ format: ""
}
+};
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
+// pkg/dist-src/util/lowercase-keys.js
+function lowercaseKeys(object) {
+ if (!object) {
+ return {};
}
- return false
+ return Object.keys(object).reduce((newObj, key) => {
+ newObj[key.toLowerCase()] = object[key];
+ return newObj;
+ }, {});
}
-function testSet (set, version, options) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version)) {
- return false
- }
- }
+// pkg/dist-src/util/is-plain-object.js
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null)
+ return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]")
+ return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null)
+ return true;
+ const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+}
- if (version.prerelease.length && !options.includePrerelease) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (i = 0; i < set.length; i++) {
- debug(set[i].semver)
- if (set[i].semver === ANY) {
- continue
- }
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
+// pkg/dist-src/util/merge-deep.js
+function mergeDeep(defaults, options) {
+ const result = Object.assign({}, defaults);
+ Object.keys(options).forEach((key) => {
+ if (isPlainObject(options[key])) {
+ if (!(key in defaults))
+ Object.assign(result, { [key]: options[key] });
+ else
+ result[key] = mergeDeep(defaults[key], options[key]);
+ } else {
+ Object.assign(result, { [key]: options[key] });
}
-
- // Version has a -pre, but it's not one of the ones we like.
- return false
- }
-
- return true
+ });
+ return result;
}
-exports.satisfies = satisfies
-function satisfies (version, range, options) {
- try {
- range = new Range(range, options)
- } catch (er) {
- return false
+// pkg/dist-src/util/remove-undefined-properties.js
+function removeUndefinedProperties(obj) {
+ for (const key in obj) {
+ if (obj[key] === void 0) {
+ delete obj[key];
+ }
}
- return range.test(version)
+ return obj;
}
-exports.maxSatisfying = maxSatisfying
-function maxSatisfying (versions, range, options) {
- var max = null
- var maxSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
+// pkg/dist-src/merge.js
+function merge(defaults, route, options) {
+ if (typeof route === "string") {
+ let [method, url] = route.split(" ");
+ options = Object.assign(url ? { method, url } : { url: method }, options);
+ } else {
+ options = Object.assign({}, route);
}
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!max || maxSV.compare(v) === -1) {
- // compare(max, v, true)
- max = v
- maxSV = new SemVer(max, options)
- }
+ options.headers = lowercaseKeys(options.headers);
+ removeUndefinedProperties(options);
+ removeUndefinedProperties(options.headers);
+ const mergedOptions = mergeDeep(defaults || {}, options);
+ if (options.url === "/graphql") {
+ if (defaults && defaults.mediaType.previews?.length) {
+ mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
+ (preview) => !mergedOptions.mediaType.previews.includes(preview)
+ ).concat(mergedOptions.mediaType.previews);
}
- })
- return max
+ mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
+ }
+ return mergedOptions;
}
-exports.minSatisfying = minSatisfying
-function minSatisfying (versions, range, options) {
- var min = null
- var minSV = null
- try {
- var rangeObj = new Range(range, options)
- } catch (er) {
- return null
+// pkg/dist-src/util/add-query-parameters.js
+function addQueryParameters(url, parameters) {
+ const separator = /\?/.test(url) ? "&" : "?";
+ const names = Object.keys(parameters);
+ if (names.length === 0) {
+ return url;
}
- versions.forEach(function (v) {
- if (rangeObj.test(v)) {
- // satisfies(v, range, options)
- if (!min || minSV.compare(v) === 1) {
- // compare(min, v, true)
- min = v
- minSV = new SemVer(min, options)
- }
+ return url + separator + names.map((name) => {
+ if (name === "q") {
+ return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
}
- })
- return min
+ return `${name}=${encodeURIComponent(parameters[name])}`;
+ }).join("&");
}
-exports.minVersion = minVersion
-function minVersion (range, loose) {
- range = new Range(range, loose)
-
- var minver = new SemVer('0.0.0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = new SemVer('0.0.0-0')
- if (range.test(minver)) {
- return minver
- }
-
- minver = null
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- comparators.forEach(function (comparator) {
- // Clone to avoid manipulating the comparator's semver object.
- var compver = new SemVer(comparator.semver.version)
- switch (comparator.operator) {
- case '>':
- if (compver.prerelease.length === 0) {
- compver.patch++
- } else {
- compver.prerelease.push(0)
- }
- compver.raw = compver.format()
- /* fallthrough */
- case '':
- case '>=':
- if (!minver || gt(minver, compver)) {
- minver = compver
- }
- break
- case '<':
- case '<=':
- /* Ignore maximum versions */
- break
- /* istanbul ignore next */
- default:
- throw new Error('Unexpected operation: ' + comparator.operator)
- }
- })
- }
-
- if (minver && range.test(minver)) {
- return minver
+// pkg/dist-src/util/extract-url-variable-names.js
+var urlVariableRegex = /\{[^}]+\}/g;
+function removeNonChars(variableName) {
+ return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
+}
+function extractUrlVariableNames(url) {
+ const matches = url.match(urlVariableRegex);
+ if (!matches) {
+ return [];
}
-
- return null
+ return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
}
-exports.validRange = validRange
-function validRange (range, options) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, options).range || '*'
- } catch (er) {
- return null
+// pkg/dist-src/util/omit.js
+function omit(object, keysToOmit) {
+ const result = { __proto__: null };
+ for (const key of Object.keys(object)) {
+ if (keysToOmit.indexOf(key) === -1) {
+ result[key] = object[key];
+ }
}
+ return result;
}
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr
-function ltr (version, range, options) {
- return outside(version, range, '<', options)
+// pkg/dist-src/util/url-template.js
+function encodeReserved(str) {
+ return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
+ if (!/%[0-9A-Fa-f]/.test(part)) {
+ part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
+ }
+ return part;
+ }).join("");
}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr
-function gtr (version, range, options) {
- return outside(version, range, '>', options)
+function encodeUnreserved(str) {
+ return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+ return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+ });
}
-
-exports.outside = outside
-function outside (version, range, hilo, options) {
- version = new SemVer(version, options)
- range = new Range(range, options)
-
- var gtfn, ltefn, ltfn, comp, ecomp
- switch (hilo) {
- case '>':
- gtfn = gt
- ltefn = lte
- ltfn = lt
- comp = '>'
- ecomp = '>='
- break
- case '<':
- gtfn = lt
- ltefn = gte
- ltfn = gt
- comp = '<'
- ecomp = '<='
- break
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"')
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, options)) {
- return false
+function encodeValue(operator, value, key) {
+ value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
+ if (key) {
+ return encodeUnreserved(key) + "=" + value;
+ } else {
+ return value;
}
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i]
-
- var high = null
- var low = null
-
- comparators.forEach(function (comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
+}
+function isDefined(value) {
+ return value !== void 0 && value !== null;
+}
+function isKeyOperator(operator) {
+ return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues(context, operator, key, modifier) {
+ var value = context[key], result = [];
+ if (isDefined(value) && value !== "") {
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
+ value = value.toString();
+ if (modifier && modifier !== "*") {
+ value = value.substring(0, parseInt(modifier, 10));
}
- high = high || comparator
- low = low || comparator
- if (gtfn(comparator.semver, high.semver, options)) {
- high = comparator
- } else if (ltfn(comparator.semver, low.semver, options)) {
- low = comparator
+ result.push(
+ encodeValue(operator, value, isKeyOperator(operator) ? key : "")
+ );
+ } else {
+ if (modifier === "*") {
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ result.push(
+ encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
+ );
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ result.push(encodeValue(operator, value[k], k));
+ }
+ });
+ }
+ } else {
+ const tmp = [];
+ if (Array.isArray(value)) {
+ value.filter(isDefined).forEach(function(value2) {
+ tmp.push(encodeValue(operator, value2));
+ });
+ } else {
+ Object.keys(value).forEach(function(k) {
+ if (isDefined(value[k])) {
+ tmp.push(encodeUnreserved(k));
+ tmp.push(encodeValue(operator, value[k].toString()));
+ }
+ });
+ }
+ if (isKeyOperator(operator)) {
+ result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+ } else if (tmp.length !== 0) {
+ result.push(tmp.join(","));
+ }
}
- })
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
}
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false
+ } else {
+ if (operator === ";") {
+ if (isDefined(value)) {
+ result.push(encodeUnreserved(key));
+ }
+ } else if (value === "" && (operator === "&" || operator === "?")) {
+ result.push(encodeUnreserved(key) + "=");
+ } else if (value === "") {
+ result.push("");
}
}
- return true
-}
-
-exports.prerelease = prerelease
-function prerelease (version, options) {
- var parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+ return result;
}
-
-exports.intersects = intersects
-function intersects (r1, r2, options) {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2)
+function parseUrl(template) {
+ return {
+ expand: expand.bind(null, template)
+ };
}
-
-exports.coerce = coerce
-function coerce (version, options) {
- if (version instanceof SemVer) {
- return version
+function expand(template, context) {
+ var operators = ["+", "#", ".", "/", ";", "?", "&"];
+ template = template.replace(
+ /\{([^\{\}]+)\}|([^\{\}]+)/g,
+ function(_, expression, literal) {
+ if (expression) {
+ let operator = "";
+ const values = [];
+ if (operators.indexOf(expression.charAt(0)) !== -1) {
+ operator = expression.charAt(0);
+ expression = expression.substr(1);
+ }
+ expression.split(/,/g).forEach(function(variable) {
+ var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+ values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+ });
+ if (operator && operator !== "+") {
+ var separator = ",";
+ if (operator === "?") {
+ separator = "&";
+ } else if (operator !== "#") {
+ separator = operator;
+ }
+ return (values.length !== 0 ? operator : "") + values.join(separator);
+ } else {
+ return values.join(",");
+ }
+ } else {
+ return encodeReserved(literal);
+ }
+ }
+ );
+ if (template === "/") {
+ return template;
+ } else {
+ return template.replace(/\/$/, "");
}
+}
- if (typeof version === 'number') {
- version = String(version)
+// pkg/dist-src/parse.js
+function parse(options) {
+ let method = options.method.toUpperCase();
+ let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
+ let headers = Object.assign({}, options.headers);
+ let body;
+ let parameters = omit(options, [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "mediaType"
+ ]);
+ const urlVariableNames = extractUrlVariableNames(url);
+ url = parseUrl(url).expand(parameters);
+ if (!/^http/.test(url)) {
+ url = options.baseUrl + url;
}
-
- if (typeof version !== 'string') {
- return null
+ const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
+ const remainingParameters = omit(parameters, omittedParameters);
+ const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
+ if (!isBinaryRequest) {
+ if (options.mediaType.format) {
+ headers.accept = headers.accept.split(/,/).map(
+ (format) => format.replace(
+ /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
+ `application/vnd$1$2.${options.mediaType.format}`
+ )
+ ).join(",");
+ }
+ if (url.endsWith("/graphql")) {
+ if (options.mediaType.previews?.length) {
+ const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
+ headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
+ const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
+ return `application/vnd.github.${preview}-preview${format}`;
+ }).join(",");
+ }
+ }
}
-
- options = options || {}
-
- var match = null
- if (!options.rtl) {
- match = version.match(re[t.COERCE])
+ if (["GET", "HEAD"].includes(method)) {
+ url = addQueryParameters(url, remainingParameters);
} else {
- // Find the right-most coercible string that does not share
- // a terminus with a more left-ward coercible string.
- // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
- //
- // Walk through the string checking with a /g regexp
- // Manually set the index so as to pick up overlapping matches.
- // Stop when we get a match that ends at the string end, since no
- // coercible string can be more right-ward without the same terminus.
- var next
- while ((next = re[t.COERCERTL].exec(version)) &&
- (!match || match.index + match[0].length !== version.length)
- ) {
- if (!match ||
- next.index + next[0].length !== match.index + match[0].length) {
- match = next
+ if ("data" in remainingParameters) {
+ body = remainingParameters.data;
+ } else {
+ if (Object.keys(remainingParameters).length) {
+ body = remainingParameters;
}
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
}
- // leave it in a clean state
- re[t.COERCERTL].lastIndex = -1
}
-
- if (match === null) {
- return null
+ if (!headers["content-type"] && typeof body !== "undefined") {
+ headers["content-type"] = "application/json; charset=utf-8";
}
+ if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+ body = "";
+ }
+ return Object.assign(
+ { method, url, headers },
+ typeof body !== "undefined" ? { body } : null,
+ options.request ? { request: options.request } : null
+ );
+}
- return parse(match[2] +
- '.' + (match[3] || '0') +
- '.' + (match[4] || '0'), options)
+// pkg/dist-src/endpoint-with-defaults.js
+function endpointWithDefaults(defaults, route, options) {
+ return parse(merge(defaults, route, options));
+}
+
+// pkg/dist-src/with-defaults.js
+function withDefaults(oldDefaults, newDefaults) {
+ const DEFAULTS2 = merge(oldDefaults, newDefaults);
+ const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
+ return Object.assign(endpoint2, {
+ DEFAULTS: DEFAULTS2,
+ defaults: withDefaults.bind(null, DEFAULTS2),
+ merge: merge.bind(null, DEFAULTS2),
+ parse
+ });
}
+// pkg/dist-src/index.js
+var endpoint = withDefaults(null, DEFAULTS);
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
+
/***/ }),
-/***/ 7701:
-/***/ ((module) => {
+/***/ 8467:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-var byteToHex = [];
-for (var i = 0; i < 256; ++i) {
- byteToHex[i] = (i + 0x100).toString(16).substr(1);
-}
-
-function bytesToUuid(buf, offset) {
- var i = offset || 0;
- var bth = byteToHex;
- // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
- return ([
- bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]], '-',
- bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]],
- bth[buf[i++]], bth[buf[i++]]
- ]).join('');
-}
-
-module.exports = bytesToUuid;
-
-
-/***/ }),
-
-/***/ 7269:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-// Unique ID creation requires a high quality random # generator. In node.js
-// this is pretty straight-forward - we use the crypto API.
-
-var crypto = __nccwpck_require__(6113);
+"use strict";
-module.exports = function nodeRNG() {
- return crypto.randomBytes(16);
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ GraphqlResponseError: () => GraphqlResponseError,
+ graphql: () => graphql2,
+ withCustomRequest: () => withCustomRequest
+});
+module.exports = __toCommonJS(dist_src_exports);
+var import_request3 = __nccwpck_require__(6234);
+var import_universal_user_agent = __nccwpck_require__(5030);
-/***/ }),
-
-/***/ 7468:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// pkg/dist-src/version.js
+var VERSION = "7.0.2";
-var rng = __nccwpck_require__(7269);
-var bytesToUuid = __nccwpck_require__(7701);
+// pkg/dist-src/with-defaults.js
+var import_request2 = __nccwpck_require__(6234);
-function v4(options, buf, offset) {
- var i = buf && offset || 0;
+// pkg/dist-src/graphql.js
+var import_request = __nccwpck_require__(6234);
- if (typeof(options) == 'string') {
- buf = options === 'binary' ? new Array(16) : null;
- options = null;
+// pkg/dist-src/error.js
+function _buildMessageForResponseErrors(data) {
+ return `Request failed due to following response errors:
+` + data.errors.map((e) => ` - ${e.message}`).join("\n");
+}
+var GraphqlResponseError = class extends Error {
+ constructor(request2, headers, response) {
+ super(_buildMessageForResponseErrors(response));
+ this.request = request2;
+ this.headers = headers;
+ this.response = response;
+ this.name = "GraphqlResponseError";
+ this.errors = response.errors;
+ this.data = response.data;
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
}
- options = options || {};
-
- var rnds = options.random || (options.rng || rng)();
-
- // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
+};
- // Copy bytes to buffer, if provided
- if (buf) {
- for (var ii = 0; ii < 16; ++ii) {
- buf[i + ii] = rnds[ii];
+// pkg/dist-src/graphql.js
+var NON_VARIABLE_OPTIONS = [
+ "method",
+ "baseUrl",
+ "url",
+ "headers",
+ "request",
+ "query",
+ "mediaType"
+];
+var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
+var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
+function graphql(request2, 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;
+ }, {});
+ const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
+ if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
+ requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
}
+ return request2(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;
+ });
+}
- return buf || bytesToUuid(rnds);
+// pkg/dist-src/with-defaults.js
+function withDefaults(request2, newDefaults) {
+ const newRequest = request2.defaults(newDefaults);
+ const newApi = (query, options) => {
+ return graphql(newRequest, query, options);
+ };
+ return Object.assign(newApi, {
+ defaults: withDefaults.bind(null, newRequest),
+ endpoint: newRequest.endpoint
+ });
}
-module.exports = v4;
+// pkg/dist-src/index.js
+var graphql2 = withDefaults(import_request3.request, {
+ headers: {
+ "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+ },
+ method: "POST",
+ url: "/graphql"
+});
+function withCustomRequest(customRequest) {
+ return withDefaults(customRequest, {
+ method: "POST",
+ url: "/graphql"
+ });
+}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
/***/ }),
-/***/ 4389:
+/***/ 3493:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
+var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
@@ -8301,949 +8985,791 @@ var __copyProps = (to, from, except, desc) => {
}
return to;
};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- App: () => App,
- createNodeMiddleware: () => createNodeMiddleware
+ OAuthApp: () => OAuthApp,
+ createAWSLambdaAPIGatewayV2Handler: () => createAWSLambdaAPIGatewayV2Handler,
+ createNodeMiddleware: () => createNodeMiddleware,
+ createWebWorkerHandler: () => createWebWorkerHandler,
+ handleRequest: () => handleRequest,
+ sendNodeResponse: () => sendResponse,
+ unknownRouteResponse: () => unknownRouteResponse
});
module.exports = __toCommonJS(dist_src_exports);
-var import_core5 = __nccwpck_require__(6762);
-var import_auth_app3 = __nccwpck_require__(7541);
-var import_oauth_app2 = __nccwpck_require__(3493);
-var import_webhooks3 = __nccwpck_require__(8513);
+var import_auth_oauth_app = __nccwpck_require__(8459);
// pkg/dist-src/version.js
-var VERSION = "14.0.2";
+var VERSION = "6.1.0";
-// pkg/dist-src/webhooks.js
+// pkg/dist-src/add-event-handler.js
+function addEventHandler(state, eventName, eventHandler) {
+ if (Array.isArray(eventName)) {
+ for (const singleEventName of eventName) {
+ addEventHandler(state, singleEventName, eventHandler);
+ }
+ return;
+ }
+ if (!state.eventHandlers[eventName]) {
+ state.eventHandlers[eventName] = [];
+ }
+ state.eventHandlers[eventName].push(eventHandler);
+}
+
+// pkg/dist-src/oauth-app-octokit.js
var import_core = __nccwpck_require__(6762);
-var import_auth_app = __nccwpck_require__(7541);
-var import_auth_unauthenticated = __nccwpck_require__(9567);
-var import_webhooks = __nccwpck_require__(8513);
-function webhooks(appOctokit, options) {
- return new import_webhooks.Webhooks({
- secret: options.secret,
- transform: async (event) => {
- if (!("installation" in event.payload) || typeof event.payload.installation !== "object") {
- const octokit2 = new appOctokit.constructor({
- authStrategy: import_auth_unauthenticated.createUnauthenticatedAuth,
- auth: {
- reason: `"installation" key missing in webhook event payload`
- }
- });
- return {
- ...event,
- octokit: octokit2
- };
- }
- const installationId = event.payload.installation.id;
- const octokit = await appOctokit.auth({
- type: "installation",
- installationId,
- factory(auth) {
- return new auth.octokit.constructor({
- ...auth.octokitOptions,
- authStrategy: import_auth_app.createAppAuth,
- ...{
- auth: {
- ...auth,
- installationId
- }
- }
- });
- }
+var import_universal_user_agent = __nccwpck_require__(5030);
+var OAuthAppOctokit = import_core.Octokit.defaults({
+ userAgent: `octokit-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
+});
+
+// pkg/dist-src/methods/get-user-octokit.js
+var import_auth_oauth_user = __nccwpck_require__(1591);
+
+// pkg/dist-src/emit-event.js
+async function emitEvent(state, context) {
+ const { name, action } = context;
+ if (state.eventHandlers[`${name}.${action}`]) {
+ for (const eventHandler of state.eventHandlers[`${name}.${action}`]) {
+ await eventHandler(context);
+ }
+ }
+ if (state.eventHandlers[name]) {
+ for (const eventHandler of state.eventHandlers[name]) {
+ await eventHandler(context);
+ }
+ }
+}
+
+// pkg/dist-src/methods/get-user-octokit.js
+async function getUserOctokitWithState(state, options) {
+ return state.octokit.auth({
+ type: "oauth-user",
+ ...options,
+ async factory(options2) {
+ const octokit = new state.Octokit({
+ authStrategy: import_auth_oauth_user.createOAuthUserAuth,
+ auth: options2
});
- octokit.hook.before("request", (options2) => {
- options2.headers["x-github-delivery"] = event.id;
+ const authentication = await octokit.auth({
+ type: "get"
});
- return {
- ...event,
+ await emitEvent(state, {
+ name: "token",
+ action: "created",
+ token: authentication.token,
+ scopes: authentication.scopes,
+ authentication,
octokit
- };
+ });
+ return octokit;
}
});
}
-// pkg/dist-src/each-installation.js
-var import_plugin_paginate_rest = __nccwpck_require__(4193);
-var import_core3 = __nccwpck_require__(6762);
-
-// pkg/dist-src/get-installation-octokit.js
-var import_auth_app2 = __nccwpck_require__(7541);
-var import_core2 = __nccwpck_require__(6762);
-async function getInstallationOctokit(app, installationId) {
- return app.octokit.auth({
- type: "installation",
- installationId,
- factory(auth) {
- const options = {
- ...auth.octokitOptions,
- authStrategy: import_auth_app2.createAppAuth,
- ...{ auth: { ...auth, installationId } }
- };
- return new auth.octokit.constructor(options);
- }
+// pkg/dist-src/methods/get-web-flow-authorization-url.js
+var OAuthMethods = __toESM(__nccwpck_require__(8445));
+function getWebFlowAuthorizationUrlWithState(state, options) {
+ const optionsWithDefaults = {
+ clientId: state.clientId,
+ request: state.octokit.request,
+ ...options,
+ allowSignup: state.allowSignup ?? options.allowSignup,
+ redirectUrl: options.redirectUrl ?? state.redirectUrl,
+ scopes: options.scopes ?? state.defaultScopes
+ };
+ return OAuthMethods.getWebFlowAuthorizationUrl({
+ clientType: state.clientType,
+ ...optionsWithDefaults
});
}
-// pkg/dist-src/each-installation.js
-function eachInstallationFactory(app) {
- return Object.assign(eachInstallation.bind(null, app), {
- iterator: eachInstallationIterator.bind(null, app)
+// pkg/dist-src/methods/create-token.js
+var OAuthAppAuth = __toESM(__nccwpck_require__(8459));
+async function createTokenWithState(state, options) {
+ const authentication = await state.octokit.auth({
+ type: "oauth-user",
+ ...options
});
-}
-async function eachInstallation(app, callback) {
- const i = eachInstallationIterator(app)[Symbol.asyncIterator]();
- let result = await i.next();
- while (!result.done) {
- await callback(result.value);
- result = await i.next();
- }
-}
-function eachInstallationIterator(app) {
- return {
- async *[Symbol.asyncIterator]() {
- const iterator = import_plugin_paginate_rest.composePaginateRest.iterator(
- app.octokit,
- "GET /app/installations"
- );
- for await (const { data: installations } of iterator) {
- for (const installation of installations) {
- const installationOctokit = await getInstallationOctokit(
- app,
- installation.id
- );
- yield { octokit: installationOctokit, installation };
- }
+ await emitEvent(state, {
+ name: "token",
+ action: "created",
+ token: authentication.token,
+ scopes: authentication.scopes,
+ authentication,
+ octokit: new state.Octokit({
+ authStrategy: OAuthAppAuth.createOAuthUserAuth,
+ auth: {
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: authentication.token,
+ scopes: authentication.scopes,
+ refreshToken: authentication.refreshToken,
+ expiresAt: authentication.expiresAt,
+ refreshTokenExpiresAt: authentication.refreshTokenExpiresAt
}
- }
- };
+ })
+ });
+ return { authentication };
}
-// pkg/dist-src/each-repository.js
-var import_plugin_paginate_rest2 = __nccwpck_require__(4193);
-var import_core4 = __nccwpck_require__(6762);
-function eachRepositoryFactory(app) {
- return Object.assign(eachRepository.bind(null, app), {
- iterator: eachRepositoryIterator.bind(null, app)
+// pkg/dist-src/methods/check-token.js
+var OAuthMethods2 = __toESM(__nccwpck_require__(8445));
+async function checkTokenWithState(state, options) {
+ const result = await OAuthMethods2.checkToken({
+ // @ts-expect-error not worth the extra code to appease TS
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ ...options
});
-}
-async function eachRepository(app, queryOrCallback, callback) {
- const i = eachRepositoryIterator(
- app,
- callback ? queryOrCallback : void 0
- )[Symbol.asyncIterator]();
- let result = await i.next();
- while (!result.done) {
- if (callback) {
- await callback(result.value);
- } else {
- await queryOrCallback(result.value);
- }
- result = await i.next();
- }
-}
-function singleInstallationIterator(app, installationId) {
- return {
- async *[Symbol.asyncIterator]() {
- yield {
- octokit: await app.getInstallationOctokit(installationId)
- };
- }
- };
-}
-function eachRepositoryIterator(app, query) {
- return {
- async *[Symbol.asyncIterator]() {
- const iterator = query ? singleInstallationIterator(app, query.installationId) : app.eachInstallation.iterator();
- for await (const { octokit } of iterator) {
- const repositoriesIterator = import_plugin_paginate_rest2.composePaginateRest.iterator(
- octokit,
- "GET /installation/repositories"
- );
- for await (const { data: repositories } of repositoriesIterator) {
- for (const repository of repositories) {
- yield { octokit, repository };
- }
- }
- }
- }
- };
+ Object.assign(result.authentication, { type: "token", tokenType: "oauth" });
+ return result;
}
-// pkg/dist-src/middleware/node/index.js
-var import_oauth_app = __nccwpck_require__(3493);
-var import_webhooks2 = __nccwpck_require__(8513);
-function noop() {
-}
-function createNodeMiddleware(app, options = {}) {
- const log = Object.assign(
- {
- debug: noop,
- info: noop,
- warn: console.warn.bind(console),
- error: console.error.bind(console)
- },
- options.log
- );
+// pkg/dist-src/methods/reset-token.js
+var OAuthMethods3 = __toESM(__nccwpck_require__(8445));
+var import_auth_oauth_user2 = __nccwpck_require__(1591);
+async function resetTokenWithState(state, options) {
const optionsWithDefaults = {
- pathPrefix: "/api/github",
- ...options,
- log
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ ...options
};
- const webhooksMiddleware = (0, import_webhooks2.createNodeMiddleware)(app.webhooks, {
- path: optionsWithDefaults.pathPrefix + "/webhooks",
- log
- });
- const oauthMiddleware = (0, import_oauth_app.createNodeMiddleware)(app.oauth, {
- pathPrefix: optionsWithDefaults.pathPrefix + "/oauth"
- });
- return middleware.bind(
- null,
- optionsWithDefaults.pathPrefix,
- webhooksMiddleware,
- oauthMiddleware
- );
-}
-async function middleware(pathPrefix, webhooksMiddleware, oauthMiddleware, request, response, next) {
- const { pathname } = new URL(request.url, "http://localhost");
- if (pathname.startsWith(`${pathPrefix}/`)) {
- if (pathname === `${pathPrefix}/webhooks`) {
- webhooksMiddleware(request, response);
- } else if (pathname.startsWith(`${pathPrefix}/oauth/`)) {
- oauthMiddleware(request, response);
- } else {
- (0, import_oauth_app.sendNodeResponse)((0, import_oauth_app.unknownRouteResponse)(request), response);
- }
- return true;
- } else {
- next == null ? void 0 : next();
- return false;
+ if (state.clientType === "oauth-app") {
+ const response2 = await OAuthMethods3.resetToken({
+ clientType: "oauth-app",
+ ...optionsWithDefaults
+ });
+ const authentication2 = Object.assign(response2.authentication, {
+ type: "token",
+ tokenType: "oauth"
+ });
+ await emitEvent(state, {
+ name: "token",
+ action: "reset",
+ token: response2.authentication.token,
+ scopes: response2.authentication.scopes || void 0,
+ authentication: authentication2,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_oauth_user2.createOAuthUserAuth,
+ auth: {
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: response2.authentication.token,
+ scopes: response2.authentication.scopes
+ }
+ })
+ });
+ return { ...response2, authentication: authentication2 };
}
+ const response = await OAuthMethods3.resetToken({
+ clientType: "github-app",
+ ...optionsWithDefaults
+ });
+ const authentication = Object.assign(response.authentication, {
+ type: "token",
+ tokenType: "oauth"
+ });
+ await emitEvent(state, {
+ name: "token",
+ action: "reset",
+ token: response.authentication.token,
+ authentication,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_oauth_user2.createOAuthUserAuth,
+ auth: {
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: response.authentication.token
+ }
+ })
+ });
+ return { ...response, authentication };
}
-// pkg/dist-src/index.js
-var _App = class _App {
- static defaults(defaults) {
- const AppWithDefaults = class extends this {
- constructor(...args) {
- super({
- ...defaults,
- ...args[0]
- });
- }
- };
- return AppWithDefaults;
- }
- constructor(options) {
- const Octokit5 = options.Octokit || import_core5.Octokit;
- const authOptions = Object.assign(
- {
- appId: options.appId,
- privateKey: options.privateKey
- },
- options.oauth ? {
- clientId: options.oauth.clientId,
- clientSecret: options.oauth.clientSecret
- } : {}
- );
- this.octokit = new Octokit5({
- authStrategy: import_auth_app3.createAppAuth,
- auth: authOptions,
- log: options.log
- });
- this.log = Object.assign(
- {
- debug: () => {
- },
- info: () => {
- },
- warn: console.warn.bind(console),
- error: console.error.bind(console)
- },
- options.log
- );
- if (options.webhooks) {
- this.webhooks = webhooks(this.octokit, options.webhooks);
- } else {
- Object.defineProperty(this, "webhooks", {
- get() {
- throw new Error("[@octokit/app] webhooks option not set");
- }
- });
- }
- if (options.oauth) {
- this.oauth = new import_oauth_app2.OAuthApp({
- ...options.oauth,
- clientType: "github-app",
- Octokit: Octokit5
- });
- } else {
- Object.defineProperty(this, "oauth", {
- get() {
- throw new Error(
- "[@octokit/app] oauth.clientId / oauth.clientSecret options are not set"
- );
- }
- });
- }
- this.getInstallationOctokit = getInstallationOctokit.bind(
- null,
- this
- );
- this.eachInstallation = eachInstallationFactory(
- this
- );
- this.eachRepository = eachRepositoryFactory(
- this
+// pkg/dist-src/methods/refresh-token.js
+var OAuthMethods4 = __toESM(__nccwpck_require__(8445));
+var import_auth_oauth_user3 = __nccwpck_require__(1591);
+async function refreshTokenWithState(state, options) {
+ if (state.clientType === "oauth-app") {
+ throw new Error(
+ "[@octokit/oauth-app] app.refreshToken() is not supported for OAuth Apps"
);
}
-};
-_App.VERSION = VERSION;
-var App = _App;
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 7541:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
+ const response = await OAuthMethods4.refreshToken({
+ clientType: "github-app",
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ refreshToken: options.refreshToken
+ });
+ const authentication = Object.assign(response.authentication, {
+ type: "token",
+ tokenType: "oauth"
+ });
+ await emitEvent(state, {
+ name: "token",
+ action: "refreshed",
+ token: response.authentication.token,
+ authentication,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_oauth_user3.createOAuthUserAuth,
+ auth: {
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: response.authentication.token
+ }
+ })
+ });
+ return { ...response, authentication };
+}
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+// pkg/dist-src/methods/scope-token.js
+var OAuthMethods5 = __toESM(__nccwpck_require__(8445));
+var import_auth_oauth_user4 = __nccwpck_require__(1591);
+async function scopeTokenWithState(state, options) {
+ if (state.clientType === "oauth-app") {
+ throw new Error(
+ "[@octokit/oauth-app] app.scopeToken() is not supported for OAuth Apps"
+ );
}
- return to;
-};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
-));
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- createAppAuth: () => createAppAuth,
- createOAuthUserAuth: () => import_auth_oauth_user2.createOAuthUserAuth
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var import_request = __nccwpck_require__(6234);
-var import_auth_oauth_app = __nccwpck_require__(8459);
+ const response = await OAuthMethods5.scopeToken({
+ clientType: "github-app",
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ ...options
+ });
+ const authentication = Object.assign(response.authentication, {
+ type: "token",
+ tokenType: "oauth"
+ });
+ await emitEvent(state, {
+ name: "token",
+ action: "scoped",
+ token: response.authentication.token,
+ authentication,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_oauth_user4.createOAuthUserAuth,
+ auth: {
+ clientType: state.clientType,
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ token: response.authentication.token
+ }
+ })
+ });
+ return { ...response, authentication };
+}
-// pkg/dist-src/auth.js
-var import_deprecation = __nccwpck_require__(8932);
-var OAuthAppAuth = __toESM(__nccwpck_require__(8459));
-
-// pkg/dist-src/get-app-authentication.js
-var import_universal_github_app_jwt = __nccwpck_require__(4419);
-async function getAppAuthentication({
- appId,
- privateKey,
- timeDifference
-}) {
- try {
- const appAuthentication = await (0, import_universal_github_app_jwt.githubAppJwt)({
- id: +appId,
- privateKey,
- now: timeDifference && Math.floor(Date.now() / 1e3) + timeDifference
- });
- return {
- type: "app",
- token: appAuthentication.token,
- appId: appAuthentication.appId,
- expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()
- };
- } catch (error) {
- if (privateKey === "-----BEGIN RSA PRIVATE KEY-----") {
- throw new Error(
- "The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'"
- );
- } else {
- throw error;
- }
- }
+// pkg/dist-src/methods/delete-token.js
+var OAuthMethods6 = __toESM(__nccwpck_require__(8445));
+var import_auth_unauthenticated = __nccwpck_require__(9567);
+async function deleteTokenWithState(state, options) {
+ const optionsWithDefaults = {
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ ...options
+ };
+ const response = state.clientType === "oauth-app" ? await OAuthMethods6.deleteToken({
+ clientType: "oauth-app",
+ ...optionsWithDefaults
+ }) : (
+ // istanbul ignore next
+ await OAuthMethods6.deleteToken({
+ clientType: "github-app",
+ ...optionsWithDefaults
+ })
+ );
+ await emitEvent(state, {
+ name: "token",
+ action: "deleted",
+ token: options.token,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_unauthenticated.createUnauthenticatedAuth,
+ auth: {
+ reason: `Handling "token.deleted" event. The access for the token has been revoked.`
+ }
+ })
+ });
+ return response;
}
-// pkg/dist-src/cache.js
-var import_lru_cache = __nccwpck_require__(1153);
-function getCache() {
- return new import_lru_cache.LRUCache({
- // cache max. 15000 tokens, that will use less than 10mb memory
- max: 15e3,
- // Cache for 1 minute less than GitHub expiry
- ttl: 1e3 * 60 * 59
+// pkg/dist-src/methods/delete-authorization.js
+var OAuthMethods7 = __toESM(__nccwpck_require__(8445));
+var import_auth_unauthenticated2 = __nccwpck_require__(9567);
+async function deleteAuthorizationWithState(state, options) {
+ const optionsWithDefaults = {
+ clientId: state.clientId,
+ clientSecret: state.clientSecret,
+ request: state.octokit.request,
+ ...options
+ };
+ const response = state.clientType === "oauth-app" ? await OAuthMethods7.deleteAuthorization({
+ clientType: "oauth-app",
+ ...optionsWithDefaults
+ }) : (
+ // istanbul ignore next
+ await OAuthMethods7.deleteAuthorization({
+ clientType: "github-app",
+ ...optionsWithDefaults
+ })
+ );
+ await emitEvent(state, {
+ name: "token",
+ action: "deleted",
+ token: options.token,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_unauthenticated2.createUnauthenticatedAuth,
+ auth: {
+ reason: `Handling "token.deleted" event. The access for the token has been revoked.`
+ }
+ })
+ });
+ await emitEvent(state, {
+ name: "authorization",
+ action: "deleted",
+ token: options.token,
+ octokit: new state.Octokit({
+ authStrategy: import_auth_unauthenticated2.createUnauthenticatedAuth,
+ auth: {
+ reason: `Handling "authorization.deleted" event. The access for the app has been revoked.`
+ }
+ })
});
+ return response;
}
-async function get(cache, options) {
- const cacheKey = optionsToCacheKey(options);
- const result = await cache.get(cacheKey);
- if (!result) {
- return;
- }
- const [
- token,
- createdAt,
- expiresAt,
- repositorySelection,
- permissionsString,
- singleFileName
- ] = result.split("|");
- const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {
- if (/!$/.test(string)) {
- permissions2[string.slice(0, -1)] = "write";
- } else {
- permissions2[string] = "read";
- }
- return permissions2;
- }, {});
+
+// pkg/dist-src/middleware/unknown-route-response.js
+function unknownRouteResponse(request) {
return {
- token,
- createdAt,
- expiresAt,
- permissions,
- repositoryIds: options.repositoryIds,
- repositoryNames: options.repositoryNames,
- singleFileName,
- repositorySelection
+ status: 404,
+ headers: { "content-type": "application/json" },
+ text: JSON.stringify({
+ error: `Unknown route: ${request.method} ${request.url}`
+ })
};
}
-async function set(cache, options, data) {
- const key = optionsToCacheKey(options);
- const permissionsString = options.permissions ? "" : Object.keys(data.permissions).map(
- (name) => `${name}${data.permissions[name] === "write" ? "!" : ""}`
- ).join(",");
- const value = [
- data.token,
- data.createdAt,
- data.expiresAt,
- data.repositorySelection,
- permissionsString,
- data.singleFileName
- ].join("|");
- await cache.set(key, value);
-}
-function optionsToCacheKey({
- installationId,
- permissions = {},
- repositoryIds = [],
- repositoryNames = []
-}) {
- const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === "read" ? name : `${name}!`).join(",");
- const repositoryIdsString = repositoryIds.sort().join(",");
- const repositoryNamesString = repositoryNames.join(",");
- return [
- installationId,
- repositoryIdsString,
- repositoryNamesString,
- permissionsString
- ].filter(Boolean).join("|");
-}
-
-// pkg/dist-src/to-token-authentication.js
-function toTokenAuthentication({
- installationId,
- token,
- createdAt,
- expiresAt,
- repositorySelection,
- permissions,
- repositoryIds,
- repositoryNames,
- singleFileName
-}) {
- return Object.assign(
- {
- type: "token",
- tokenType: "installation",
- token,
- installationId,
- permissions,
- createdAt,
- expiresAt,
- repositorySelection
- },
- repositoryIds ? { repositoryIds } : null,
- repositoryNames ? { repositoryNames } : null,
- singleFileName ? { singleFileName } : null
- );
-}
-// pkg/dist-src/get-installation-authentication.js
-async function getInstallationAuthentication(state, options, customRequest) {
- const installationId = Number(options.installationId || state.installationId);
- if (!installationId) {
- throw new Error(
- "[@octokit/auth-app] installationId option is required for installation authentication."
- );
- }
- if (options.factory) {
- const { type, factory, oauthApp, ...factoryAuthOptions } = {
- ...state,
- ...options
+// pkg/dist-src/middleware/handle-request.js
+async function handleRequest(app, { pathPrefix = "/api/github/oauth" }, request) {
+ if (request.method === "OPTIONS") {
+ return {
+ status: 200,
+ headers: {
+ "access-control-allow-origin": "*",
+ "access-control-allow-methods": "*",
+ "access-control-allow-headers": "Content-Type, User-Agent, Authorization"
+ }
};
- return factory(factoryAuthOptions);
}
- const optionsWithInstallationTokenFromState = Object.assign(
- { installationId },
- options
- );
- if (!options.refresh) {
- const result = await get(
- state.cache,
- optionsWithInstallationTokenFromState
- );
- if (result) {
- const {
- token: token2,
- createdAt: createdAt2,
- expiresAt: expiresAt2,
- permissions: permissions2,
- repositoryIds: repositoryIds2,
- repositoryNames: repositoryNames2,
- singleFileName: singleFileName2,
- repositorySelection: repositorySelection2
- } = result;
- return toTokenAuthentication({
- installationId,
- token: token2,
- createdAt: createdAt2,
- expiresAt: expiresAt2,
- permissions: permissions2,
- repositorySelection: repositorySelection2,
- repositoryIds: repositoryIds2,
- repositoryNames: repositoryNames2,
- singleFileName: singleFileName2
- });
- }
+ let { pathname } = new URL(request.url, "http://localhost");
+ if (!pathname.startsWith(`${pathPrefix}/`)) {
+ return void 0;
}
- const appAuthentication = await getAppAuthentication(state);
- const request = customRequest || state.request;
- const {
- data: {
- token,
- expires_at: expiresAt,
- repositories,
- permissions: permissionsOptional,
- repository_selection: repositorySelectionOptional,
- single_file: singleFileName
- }
- } = await request("POST /app/installations/{installation_id}/access_tokens", {
- installation_id: installationId,
- repository_ids: options.repositoryIds,
- repositories: options.repositoryNames,
- permissions: options.permissions,
- mediaType: {
- previews: ["machine-man"]
- },
- headers: {
- authorization: `bearer ${appAuthentication.token}`
- }
- });
- const permissions = permissionsOptional || {};
- const repositorySelection = repositorySelectionOptional || "all";
- const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;
- const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;
- const createdAt = (/* @__PURE__ */ new Date()).toISOString();
- await set(state.cache, optionsWithInstallationTokenFromState, {
- token,
- createdAt,
- expiresAt,
- repositorySelection,
- permissions,
- repositoryIds,
- repositoryNames,
- singleFileName
- });
- return toTokenAuthentication({
- installationId,
- token,
- createdAt,
- expiresAt,
- repositorySelection,
- permissions,
- repositoryIds,
- repositoryNames,
- singleFileName
- });
-}
-
-// pkg/dist-src/auth.js
-async function auth(state, authOptions) {
- switch (authOptions.type) {
- case "app":
- return getAppAuthentication(state);
- case "oauth":
- state.log.warn(
- // @ts-expect-error `log.warn()` expects string
- new import_deprecation.Deprecation(
- `[@octokit/auth-app] {type: "oauth"} is deprecated. Use {type: "oauth-app"} instead`
- )
- );
- case "oauth-app":
- return state.oauthApp({ type: "oauth-app" });
- case "installation":
- authOptions;
- return getInstallationAuthentication(state, {
- ...authOptions,
- type: "installation"
- });
- case "oauth-user":
- return state.oauthApp(authOptions);
- default:
- throw new Error(`Invalid auth type: ${authOptions.type}`);
+ pathname = pathname.slice(pathPrefix.length + 1);
+ const route = [request.method, pathname].join(" ");
+ const routes = {
+ getLogin: `GET login`,
+ getCallback: `GET callback`,
+ createToken: `POST token`,
+ getToken: `GET token`,
+ patchToken: `PATCH token`,
+ patchRefreshToken: `PATCH refresh-token`,
+ scopeToken: `POST token/scoped`,
+ deleteToken: `DELETE token`,
+ deleteGrant: `DELETE grant`
+ };
+ if (!Object.values(routes).includes(route)) {
+ return unknownRouteResponse(request);
}
-}
-
-// pkg/dist-src/hook.js
-var import_auth_oauth_user = __nccwpck_require__(1591);
-var import_request_error = __nccwpck_require__(537);
-
-// pkg/dist-src/requires-app-auth.js
-var PATHS = [
- "/app",
- "/app/hook/config",
- "/app/hook/deliveries",
- "/app/hook/deliveries/{delivery_id}",
- "/app/hook/deliveries/{delivery_id}/attempts",
- "/app/installations",
- "/app/installations/{installation_id}",
- "/app/installations/{installation_id}/access_tokens",
- "/app/installations/{installation_id}/suspended",
- "/marketplace_listing/accounts/{account_id}",
- "/marketplace_listing/plan",
- "/marketplace_listing/plans",
- "/marketplace_listing/plans/{plan_id}/accounts",
- "/marketplace_listing/stubbed/accounts/{account_id}",
- "/marketplace_listing/stubbed/plan",
- "/marketplace_listing/stubbed/plans",
- "/marketplace_listing/stubbed/plans/{plan_id}/accounts",
- "/orgs/{org}/installation",
- "/repos/{owner}/{repo}/installation",
- "/users/{username}/installation"
-];
-function routeMatcher(paths) {
- const regexes = paths.map(
- (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/")
- );
- const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`;
- return new RegExp(regex, "i");
-}
-var REGEX = routeMatcher(PATHS);
-function requiresAppAuth(url) {
- return !!url && REGEX.test(url.split("?")[0]);
-}
-
-// pkg/dist-src/hook.js
-var FIVE_SECONDS_IN_MS = 5 * 1e3;
-function isNotTimeSkewError(error) {
- return !(error.message.match(
- /'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/
- ) || error.message.match(
- /'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/
- ));
-}
-async function hook(state, request, route, parameters) {
- const endpoint = request.endpoint.merge(route, parameters);
- const url = endpoint.url;
- if (/\/login\/oauth\/access_token$/.test(url)) {
- return request(endpoint);
+ let json;
+ try {
+ const text = await request.text();
+ json = text ? JSON.parse(text) : {};
+ } catch (error) {
+ return {
+ status: 400,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify({
+ error: "[@octokit/oauth-app] request error"
+ })
+ };
}
- if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, ""))) {
- const { token: token2 } = await getAppAuthentication(state);
- endpoint.headers.authorization = `bearer ${token2}`;
- let response;
- try {
- response = await request(endpoint);
- } catch (error) {
- if (isNotTimeSkewError(error)) {
- throw error;
+ const { searchParams } = new URL(request.url, "http://localhost");
+ const query = Object.fromEntries(searchParams);
+ const headers = request.headers;
+ try {
+ if (route === routes.getLogin) {
+ const { url } = app.getWebFlowAuthorizationUrl({
+ state: query.state,
+ scopes: query.scopes ? query.scopes.split(",") : void 0,
+ allowSignup: query.allowSignup ? query.allowSignup === "true" : void 0,
+ redirectUrl: query.redirectUrl
+ });
+ return { status: 302, headers: { location: url } };
+ }
+ if (route === routes.getCallback) {
+ if (query.error) {
+ throw new Error(
+ `[@octokit/oauth-app] ${query.error} ${query.error_description}`
+ );
}
- if (typeof error.response.headers.date === "undefined") {
- throw error;
+ if (!query.code) {
+ throw new Error('[@octokit/oauth-app] "code" parameter is required');
}
- const diff = Math.floor(
- (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3
- );
- state.log.warn(error.message);
- state.log.warn(
- `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`
- );
- const { token: token3 } = await getAppAuthentication({
- ...state,
- timeDifference: diff
+ const {
+ authentication: { token: token2 }
+ } = await app.createToken({
+ code: query.code
});
- endpoint.headers.authorization = `bearer ${token3}`;
- return request(endpoint);
+ return {
+ status: 200,
+ headers: {
+ "content-type": "text/html"
+ },
+ text: `
Token created successfully
+
+Your token is: ${token2}. Copy it now as it cannot be shown again.
`
+ };
}
- return response;
- }
- if ((0, import_auth_oauth_user.requiresBasicAuth)(url)) {
- const authentication = await state.oauthApp({ type: "oauth-app" });
- endpoint.headers.authorization = authentication.headers.authorization;
- return request(endpoint);
- }
- const { token, createdAt } = await getInstallationAuthentication(
- state,
- // @ts-expect-error TBD
- {},
- request
- );
- endpoint.headers.authorization = `token ${token}`;
- return sendRequestWithRetries(
- state,
- request,
- endpoint,
- createdAt
- );
-}
-async function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {
- const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);
- try {
- return await request(options);
- } catch (error) {
- if (error.status !== 401) {
- throw error;
+ if (route === routes.createToken) {
+ const { code, redirectUrl } = json;
+ if (!code) {
+ throw new Error('[@octokit/oauth-app] "code" parameter is required');
+ }
+ const result = await app.createToken({
+ code,
+ redirectUrl
+ });
+ delete result.authentication.clientSecret;
+ return {
+ status: 201,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify(result)
+ };
}
- if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {
- if (retries > 0) {
- error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;
+ if (route === routes.getToken) {
+ const token2 = headers.authorization?.substr("token ".length);
+ if (!token2) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
}
- throw error;
+ const result = await app.checkToken({
+ token: token2
+ });
+ delete result.authentication.clientSecret;
+ return {
+ status: 200,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify(result)
+ };
}
- ++retries;
- const awaitTime = retries * 1e3;
- state.log.warn(
- `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`
- );
- await new Promise((resolve) => setTimeout(resolve, awaitTime));
- return sendRequestWithRetries(state, request, options, createdAt, retries);
+ if (route === routes.patchToken) {
+ const token2 = headers.authorization?.substr("token ".length);
+ if (!token2) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
+ }
+ const result = await app.resetToken({ token: token2 });
+ delete result.authentication.clientSecret;
+ return {
+ status: 200,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify(result)
+ };
+ }
+ if (route === routes.patchRefreshToken) {
+ const token2 = headers.authorization?.substr("token ".length);
+ if (!token2) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
+ }
+ const { refreshToken: refreshToken2 } = json;
+ if (!refreshToken2) {
+ throw new Error(
+ "[@octokit/oauth-app] refreshToken must be sent in request body"
+ );
+ }
+ const result = await app.refreshToken({ refreshToken: refreshToken2 });
+ delete result.authentication.clientSecret;
+ return {
+ status: 200,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify(result)
+ };
+ }
+ if (route === routes.scopeToken) {
+ const token2 = headers.authorization?.substr("token ".length);
+ if (!token2) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
+ }
+ const result = await app.scopeToken({
+ token: token2,
+ ...json
+ });
+ delete result.authentication.clientSecret;
+ return {
+ status: 200,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify(result)
+ };
+ }
+ if (route === routes.deleteToken) {
+ const token2 = headers.authorization?.substr("token ".length);
+ if (!token2) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
+ }
+ await app.deleteToken({
+ token: token2
+ });
+ return {
+ status: 204,
+ headers: { "access-control-allow-origin": "*" }
+ };
+ }
+ const token = headers.authorization?.substr("token ".length);
+ if (!token) {
+ throw new Error(
+ '[@octokit/oauth-app] "Authorization" header is required'
+ );
+ }
+ await app.deleteAuthorization({
+ token
+ });
+ return {
+ status: 204,
+ headers: { "access-control-allow-origin": "*" }
+ };
+ } catch (error) {
+ return {
+ status: 400,
+ headers: {
+ "content-type": "application/json",
+ "access-control-allow-origin": "*"
+ },
+ text: JSON.stringify({ error: error.message })
+ };
}
}
-// pkg/dist-src/version.js
-var VERSION = "6.0.4";
-
-// pkg/dist-src/index.js
-var import_auth_oauth_user2 = __nccwpck_require__(1591);
-function createAppAuth(options) {
- if (!options.appId) {
- throw new Error("[@octokit/auth-app] appId option is required");
- }
- if (!Number.isFinite(+options.appId)) {
- throw new Error(
- "[@octokit/auth-app] appId option must be a number or numeric string"
- );
- }
- if (!options.privateKey) {
- throw new Error("[@octokit/auth-app] privateKey option is required");
- }
- if ("installationId" in options && !options.installationId) {
- throw new Error(
- "[@octokit/auth-app] installationId is set to a falsy value"
- );
+// pkg/dist-src/middleware/node/parse-request.js
+function parseRequest(request) {
+ const { method, url, headers } = request;
+ async function text() {
+ const text2 = await new Promise((resolve, reject) => {
+ let bodyChunks = [];
+ request.on("error", reject).on("data", (chunk) => bodyChunks.push(chunk)).on("end", () => resolve(Buffer.concat(bodyChunks).toString()));
+ });
+ return text2;
}
- const log = Object.assign(
- {
- warn: console.warn.bind(console)
- },
- options.log
- );
- const request = options.request || import_request.request.defaults({
- headers: {
- "user-agent": `octokit-auth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
- }
- });
- const state = Object.assign(
- {
- request,
- cache: getCache()
- },
- options,
- options.installationId ? { installationId: Number(options.installationId) } : {},
- {
- log,
- oauthApp: (0, import_auth_oauth_app.createOAuthAppAuth)({
- clientType: "github-app",
- clientId: options.clientId || "",
- clientSecret: options.clientSecret || "",
- request
- })
- }
- );
- return Object.assign(auth.bind(null, state), {
- hook: hook.bind(null, state)
- });
+ return { method, url, headers, text };
}
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
+// pkg/dist-src/middleware/node/send-response.js
+function sendResponse(octokitResponse, response) {
+ response.writeHead(octokitResponse.status, octokitResponse.headers);
+ response.end(octokitResponse.text);
+}
-/***/ }),
+// pkg/dist-src/middleware/node/index.js
+function createNodeMiddleware(app, options = {}) {
+ return async function(request, response, next) {
+ const octokitRequest = await parseRequest(request);
+ const octokitResponse = await handleRequest(app, options, octokitRequest);
+ if (octokitResponse) {
+ sendResponse(octokitResponse, response);
+ return true;
+ } else {
+ next?.();
+ return false;
+ }
+ };
+}
-/***/ 8459:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// pkg/dist-src/middleware/web-worker/parse-request.js
+function parseRequest2(request) {
+ const headers = Object.fromEntries(request.headers.entries());
+ return {
+ method: request.method,
+ url: request.url,
+ headers,
+ text: () => request.text()
+ };
+}
-"use strict";
+// pkg/dist-src/middleware/web-worker/send-response.js
+function sendResponse2(octokitResponse) {
+ return new Response(octokitResponse.text, {
+ status: octokitResponse.status,
+ headers: octokitResponse.headers
+ });
+}
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
-));
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+// pkg/dist-src/middleware/web-worker/index.js
+function createWebWorkerHandler(app, options = {}) {
+ return async function(request) {
+ const octokitRequest = await parseRequest2(request);
+ const octokitResponse = await handleRequest(app, options, octokitRequest);
+ return octokitResponse ? sendResponse2(octokitResponse) : void 0;
+ };
+}
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- createOAuthAppAuth: () => createOAuthAppAuth,
- createOAuthUserAuth: () => import_auth_oauth_user3.createOAuthUserAuth
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var import_request = __nccwpck_require__(6234);
+// pkg/dist-src/middleware/aws-lambda/api-gateway-v2-parse-request.js
+function parseRequest3(request) {
+ const { method } = request.requestContext.http;
+ let url = request.rawPath;
+ const { stage } = request.requestContext;
+ if (url.startsWith("/" + stage))
+ url = url.substring(stage.length + 1);
+ if (request.rawQueryString)
+ url += "?" + request.rawQueryString;
+ const headers = request.headers;
+ const text = async () => request.body || "";
+ return { method, url, headers, text };
+}
-// pkg/dist-src/auth.js
-var import_btoa_lite = __toESM(__nccwpck_require__(2358));
-var import_auth_oauth_user = __nccwpck_require__(1591);
-async function auth(state, authOptions) {
- if (authOptions.type === "oauth-app") {
- return {
- type: "oauth-app",
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- clientType: state.clientType,
- headers: {
- authorization: `basic ${(0, import_btoa_lite.default)(
- `${state.clientId}:${state.clientSecret}`
- )}`
- }
- };
- }
- if ("factory" in authOptions) {
- const { type, ...options } = {
- ...authOptions,
- ...state
- };
- return authOptions.factory(options);
- }
- const common = {
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.request,
- ...authOptions
+// pkg/dist-src/middleware/aws-lambda/api-gateway-v2-send-response.js
+function sendResponse3(octokitResponse) {
+ return {
+ statusCode: octokitResponse.status,
+ headers: octokitResponse.headers,
+ body: octokitResponse.text
};
- const userAuth = state.clientType === "oauth-app" ? await (0, import_auth_oauth_user.createOAuthUserAuth)({
- ...common,
- clientType: state.clientType
- }) : await (0, import_auth_oauth_user.createOAuthUserAuth)({
- ...common,
- clientType: state.clientType
- });
- return userAuth();
}
-// pkg/dist-src/hook.js
-var import_btoa_lite2 = __toESM(__nccwpck_require__(2358));
-var import_auth_oauth_user2 = __nccwpck_require__(1591);
-async function hook(state, request2, route, parameters) {
- let endpoint = request2.endpoint.merge(
- route,
- parameters
- );
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
- return request2(endpoint);
- }
- if (state.clientType === "github-app" && !(0, import_auth_oauth_user2.requiresBasicAuth)(endpoint.url)) {
- throw new Error(
- `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint.method} ${endpoint.url}" is not supported.`
- );
- }
- const credentials = (0, import_btoa_lite2.default)(`${state.clientId}:${state.clientSecret}`);
- endpoint.headers.authorization = `basic ${credentials}`;
- try {
- return await request2(endpoint);
- } catch (error) {
- if (error.status !== 401)
- throw error;
- error.message = `[@octokit/auth-oauth-app] "${endpoint.method} ${endpoint.url}" does not support clientId/clientSecret basic authentication.`;
- throw error;
- }
+// pkg/dist-src/middleware/aws-lambda/api-gateway-v2.js
+function createAWSLambdaAPIGatewayV2Handler(app, options = {}) {
+ return async function(event) {
+ const request = parseRequest3(event);
+ const response = await handleRequest(app, options, request);
+ return response ? sendResponse3(response) : void 0;
+ };
}
-// pkg/dist-src/version.js
-var VERSION = "7.0.1";
-
// pkg/dist-src/index.js
-var import_auth_oauth_user3 = __nccwpck_require__(1591);
-function createOAuthAppAuth(options) {
- const state = Object.assign(
- {
- request: import_request.request.defaults({
- headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
- }
- }),
- clientType: "oauth-app"
- },
- options
- );
- return Object.assign(auth.bind(null, state), {
- hook: hook.bind(null, state)
- });
-}
+var OAuthApp = class {
+ static {
+ this.VERSION = VERSION;
+ }
+ static defaults(defaults) {
+ const OAuthAppWithDefaults = class extends this {
+ constructor(...args) {
+ super({
+ ...defaults,
+ ...args[0]
+ });
+ }
+ };
+ return OAuthAppWithDefaults;
+ }
+ constructor(options) {
+ const Octokit2 = options.Octokit || OAuthAppOctokit;
+ this.type = options.clientType || "oauth-app";
+ const octokit = new Octokit2({
+ authStrategy: import_auth_oauth_app.createOAuthAppAuth,
+ auth: {
+ clientType: this.type,
+ clientId: options.clientId,
+ clientSecret: options.clientSecret
+ }
+ });
+ const state = {
+ clientType: this.type,
+ clientId: options.clientId,
+ clientSecret: options.clientSecret,
+ // @ts-expect-error defaultScopes not permitted for GitHub Apps
+ defaultScopes: options.defaultScopes || [],
+ allowSignup: options.allowSignup,
+ baseUrl: options.baseUrl,
+ redirectUrl: options.redirectUrl,
+ log: options.log,
+ Octokit: Octokit2,
+ octokit,
+ eventHandlers: {}
+ };
+ this.on = addEventHandler.bind(null, state);
+ this.octokit = octokit;
+ this.getUserOctokit = getUserOctokitWithState.bind(null, state);
+ this.getWebFlowAuthorizationUrl = getWebFlowAuthorizationUrlWithState.bind(
+ null,
+ state
+ );
+ this.createToken = createTokenWithState.bind(
+ null,
+ state
+ );
+ this.checkToken = checkTokenWithState.bind(
+ null,
+ state
+ );
+ this.resetToken = resetTokenWithState.bind(
+ null,
+ state
+ );
+ this.refreshToken = refreshTokenWithState.bind(
+ null,
+ state
+ );
+ this.scopeToken = scopeTokenWithState.bind(
+ null,
+ state
+ );
+ this.deleteToken = deleteTokenWithState.bind(null, state);
+ this.deleteAuthorization = deleteAuthorizationWithState.bind(null, state);
+ }
+};
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
-/***/ 4344:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 2272:
+/***/ ((module) => {
"use strict";
@@ -9268,146 +9794,49 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- createOAuthDeviceAuth: () => createOAuthDeviceAuth
+ oauthAuthorizationUrl: () => oauthAuthorizationUrl
});
module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var import_request = __nccwpck_require__(6234);
-
-// pkg/dist-src/get-oauth-access-token.js
-var import_oauth_methods = __nccwpck_require__(8445);
-async function getOAuthAccessToken(state, options) {
- const cachedAuthentication = getCachedAuthentication(state, options.auth);
- if (cachedAuthentication)
- return cachedAuthentication;
- const { data: verification } = await (0, import_oauth_methods.createDeviceCode)({
- clientType: state.clientType,
- clientId: state.clientId,
- request: options.request || state.request,
- // @ts-expect-error the extra code to make TS happy is not worth it
- scopes: options.auth.scopes || state.scopes
- });
- await state.onVerification(verification);
- const authentication = await waitForAccessToken(
- options.request || state.request,
- state.clientId,
- state.clientType,
- verification
- );
- state.authentication = authentication;
- return authentication;
-}
-function getCachedAuthentication(state, auth2) {
- if (auth2.refresh === true)
- return false;
- if (!state.authentication)
- return false;
- if (state.clientType === "github-app") {
- return state.authentication;
- }
- const authentication = state.authentication;
- const newScope = ("scopes" in auth2 && auth2.scopes || state.scopes).join(
- " "
- );
- const currentScope = authentication.scopes.join(" ");
- return newScope === currentScope ? authentication : false;
-}
-async function wait(seconds) {
- await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));
-}
-async function waitForAccessToken(request, clientId, clientType, verification) {
- try {
- const options = {
- clientId,
- request,
- code: verification.device_code
- };
- const { authentication } = clientType === "oauth-app" ? await (0, import_oauth_methods.exchangeDeviceCode)({
- ...options,
- clientType: "oauth-app"
- }) : await (0, import_oauth_methods.exchangeDeviceCode)({
- ...options,
- clientType: "github-app"
- });
- return {
- type: "token",
- tokenType: "oauth",
- ...authentication
- };
- } catch (error) {
- if (!error.response)
- throw error;
- const errorType = error.response.data.error;
- if (errorType === "authorization_pending") {
- await wait(verification.interval);
- return waitForAccessToken(request, clientId, clientType, verification);
- }
- if (errorType === "slow_down") {
- await wait(verification.interval + 5);
- return waitForAccessToken(request, clientId, clientType, verification);
- }
- throw error;
- }
-}
-
-// pkg/dist-src/auth.js
-async function auth(state, authOptions) {
- return getOAuthAccessToken(state, {
- auth: authOptions
- });
-}
-
-// pkg/dist-src/hook.js
-async function hook(state, request, route, parameters) {
- let endpoint = request.endpoint.merge(
- route,
- parameters
- );
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
- return request(endpoint);
+function oauthAuthorizationUrl(options) {
+ const clientType = options.clientType || "oauth-app";
+ const baseUrl = options.baseUrl || "https://github.com";
+ const result = {
+ clientType,
+ allowSignup: options.allowSignup === false ? false : true,
+ clientId: options.clientId,
+ login: options.login || null,
+ redirectUrl: options.redirectUrl || null,
+ state: options.state || Math.random().toString(36).substr(2),
+ url: ""
+ };
+ if (clientType === "oauth-app") {
+ const scopes = "scopes" in options ? options.scopes : [];
+ result.scopes = typeof scopes === "string" ? scopes.split(/[,\s]+/).filter(Boolean) : scopes;
}
- const { token } = await getOAuthAccessToken(state, {
- request,
- auth: { type: "oauth" }
- });
- endpoint.headers.authorization = `token ${token}`;
- return request(endpoint);
+ result.url = urlBuilderAuthorize(`${baseUrl}/login/oauth/authorize`, result);
+ return result;
}
-
-// pkg/dist-src/version.js
-var VERSION = "6.0.1";
-
-// pkg/dist-src/index.js
-function createOAuthDeviceAuth(options) {
- const requestWithDefaults = options.request || import_request.request.defaults({
- headers: {
- "user-agent": `octokit-auth-oauth-device.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
- }
- });
- const { request = requestWithDefaults, ...otherOptions } = options;
- const state = options.clientType === "github-app" ? {
- ...otherOptions,
- clientType: "github-app",
- request
- } : {
- ...otherOptions,
- clientType: "oauth-app",
- request,
- scopes: options.scopes || []
+function urlBuilderAuthorize(base, options) {
+ const map = {
+ allowSignup: "allow_signup",
+ clientId: "client_id",
+ login: "login",
+ redirectUrl: "redirect_uri",
+ scopes: "scope",
+ state: "state"
};
- if (!options.clientId) {
- throw new Error(
- '[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)'
- );
- }
- if (!options.onVerification) {
- throw new Error(
- '[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)'
- );
- }
- return Object.assign(auth.bind(null, state), {
- hook: hook.bind(null, state)
+ let url = base;
+ Object.keys(map).filter((k) => options[k] !== null).filter((k) => {
+ if (k !== "scopes")
+ return true;
+ if (options.clientType === "github-app")
+ return false;
+ return !Array.isArray(options[k]) || options[k].length > 0;
+ }).map((key) => [map[key], `${options[key]}`]).forEach(([key, value], index) => {
+ url += index === 0 ? `?` : "&";
+ url += `${key}=${encodeURIComponent(value)}`;
});
+ return url;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
@@ -9415,7 +9844,7 @@ function createOAuthDeviceAuth(options) {
/***/ }),
-/***/ 1591:
+/***/ 8445:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
@@ -9451,305 +9880,347 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- createOAuthUserAuth: () => createOAuthUserAuth,
- requiresBasicAuth: () => requiresBasicAuth
+ VERSION: () => VERSION,
+ checkToken: () => checkToken,
+ createDeviceCode: () => createDeviceCode,
+ deleteAuthorization: () => deleteAuthorization,
+ deleteToken: () => deleteToken,
+ exchangeDeviceCode: () => exchangeDeviceCode,
+ exchangeWebFlowCode: () => exchangeWebFlowCode,
+ getWebFlowAuthorizationUrl: () => getWebFlowAuthorizationUrl,
+ refreshToken: () => refreshToken,
+ resetToken: () => resetToken,
+ scopeToken: () => scopeToken
});
module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var import_request = __nccwpck_require__(6234);
// pkg/dist-src/version.js
var VERSION = "4.0.1";
-// pkg/dist-src/get-authentication.js
-var import_auth_oauth_device = __nccwpck_require__(4344);
-var import_oauth_methods = __nccwpck_require__(8445);
-async function getAuthentication(state) {
- if ("code" in state.strategyOptions) {
- const { authentication } = await (0, import_oauth_methods.exchangeWebFlowCode)({
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- clientType: state.clientType,
- onTokenCreated: state.onTokenCreated,
- ...state.strategyOptions,
- request: state.request
- });
- return {
- type: "token",
- tokenType: "oauth",
- ...authentication
- };
- }
- if ("onVerification" in state.strategyOptions) {
- const deviceAuth = (0, import_auth_oauth_device.createOAuthDeviceAuth)({
- clientType: state.clientType,
- clientId: state.clientId,
- onTokenCreated: state.onTokenCreated,
- ...state.strategyOptions,
- request: state.request
- });
- const authentication = await deviceAuth({
- type: "oauth"
- });
- return {
- clientSecret: state.clientSecret,
- ...authentication
- };
- }
- if ("token" in state.strategyOptions) {
- return {
- type: "token",
- tokenType: "oauth",
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- clientType: state.clientType,
- onTokenCreated: state.onTokenCreated,
- ...state.strategyOptions
- };
+// pkg/dist-src/get-web-flow-authorization-url.js
+var import_oauth_authorization_url = __nccwpck_require__(2272);
+var import_request = __nccwpck_require__(6234);
+
+// pkg/dist-src/utils.js
+var import_request_error = __nccwpck_require__(537);
+function requestToOAuthBaseUrl(request) {
+ const endpointDefaults = request.endpoint.DEFAULTS;
+ return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", "");
+}
+async function oauthRequest(request, route, parameters) {
+ const withOAuthParameters = {
+ baseUrl: requestToOAuthBaseUrl(request),
+ headers: {
+ accept: "application/json"
+ },
+ ...parameters
+ };
+ const response = await request(route, withOAuthParameters);
+ if ("error" in response.data) {
+ const error = new import_request_error.RequestError(
+ `${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,
+ 400,
+ {
+ request: request.endpoint.merge(
+ route,
+ withOAuthParameters
+ ),
+ headers: response.headers
+ }
+ );
+ error.response = response;
+ throw error;
}
- throw new Error("[@octokit/auth-oauth-user] Invalid strategy options");
+ return response;
}
-// pkg/dist-src/auth.js
-var import_oauth_methods2 = __nccwpck_require__(8445);
-async function auth(state, options = {}) {
- var _a, _b;
- if (!state.authentication) {
- state.authentication = state.clientType === "oauth-app" ? await getAuthentication(state) : await getAuthentication(state);
- }
- if (state.authentication.invalid) {
- throw new Error("[@octokit/auth-oauth-user] Token is invalid");
- }
- const currentAuthentication = state.authentication;
- if ("expiresAt" in currentAuthentication) {
- if (options.type === "refresh" || new Date(currentAuthentication.expiresAt) < /* @__PURE__ */ new Date()) {
- const { authentication } = await (0, import_oauth_methods2.refreshToken)({
- clientType: "github-app",
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- refreshToken: currentAuthentication.refreshToken,
- request: state.request
- });
- state.authentication = {
- tokenType: "oauth",
- type: "token",
- ...authentication
- };
+// pkg/dist-src/get-web-flow-authorization-url.js
+function getWebFlowAuthorizationUrl({
+ request = import_request.request,
+ ...options
+}) {
+ const baseUrl = requestToOAuthBaseUrl(request);
+ return (0, import_oauth_authorization_url.oauthAuthorizationUrl)({
+ ...options,
+ baseUrl
+ });
+}
+
+// pkg/dist-src/exchange-web-flow-code.js
+var import_request2 = __nccwpck_require__(6234);
+async function exchangeWebFlowCode(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request2.request;
+ const response = await oauthRequest(
+ request,
+ "POST /login/oauth/access_token",
+ {
+ client_id: options.clientId,
+ client_secret: options.clientSecret,
+ code: options.code,
+ redirect_uri: options.redirectUrl
}
- }
- if (options.type === "refresh") {
- if (state.clientType === "oauth-app") {
- throw new Error(
- "[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens"
+ );
+ const authentication = {
+ clientType: options.clientType,
+ clientId: options.clientId,
+ clientSecret: options.clientSecret,
+ token: response.data.access_token,
+ scopes: response.data.scope.split(/\s+/).filter(Boolean)
+ };
+ if (options.clientType === "github-app") {
+ if ("refresh_token" in response.data) {
+ const apiTimeInMs = new Date(response.headers.date).getTime();
+ authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp(
+ apiTimeInMs,
+ response.data.expires_in
+ ), authentication.refreshTokenExpiresAt = toTimestamp(
+ apiTimeInMs,
+ response.data.refresh_token_expires_in
);
}
- if (!currentAuthentication.hasOwnProperty("expiresAt")) {
- throw new Error("[@octokit/auth-oauth-user] Refresh token missing");
- }
- await ((_a = state.onTokenCreated) == null ? void 0 : _a.call(state, state.authentication, {
- type: options.type
- }));
- }
- if (options.type === "check" || options.type === "reset") {
- const method = options.type === "check" ? import_oauth_methods2.checkToken : import_oauth_methods2.resetToken;
- try {
- const { authentication } = await method({
- // @ts-expect-error making TS happy would require unnecessary code so no
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: state.authentication.token,
- request: state.request
- });
- state.authentication = {
- tokenType: "oauth",
- type: "token",
- // @ts-expect-error TBD
- ...authentication
- };
- if (options.type === "reset") {
- await ((_b = state.onTokenCreated) == null ? void 0 : _b.call(state, state.authentication, {
- type: options.type
- }));
- }
- return state.authentication;
- } catch (error) {
- if (error.status === 404) {
- error.message = "[@octokit/auth-oauth-user] Token is invalid";
- state.authentication.invalid = true;
- }
- throw error;
- }
- }
- if (options.type === "delete" || options.type === "deleteAuthorization") {
- const method = options.type === "delete" ? import_oauth_methods2.deleteToken : import_oauth_methods2.deleteAuthorization;
- try {
- await method({
- // @ts-expect-error making TS happy would require unnecessary code so no
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: state.authentication.token,
- request: state.request
- });
- } catch (error) {
- if (error.status !== 404)
- throw error;
- }
- state.authentication.invalid = true;
- return state.authentication;
+ delete authentication.scopes;
}
- return state.authentication;
+ return { ...response, authentication };
+}
+function toTimestamp(apiTimeInMs, expirationInSeconds) {
+ return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
-// pkg/dist-src/hook.js
-var import_btoa_lite = __toESM(__nccwpck_require__(2358));
-
-// pkg/dist-src/requires-basic-auth.js
-var ROUTES_REQUIRING_BASIC_AUTH = /\/applications\/[^/]+\/(token|grant)s?/;
-function requiresBasicAuth(url) {
- return url && ROUTES_REQUIRING_BASIC_AUTH.test(url);
+// pkg/dist-src/create-device-code.js
+var import_request3 = __nccwpck_require__(6234);
+async function createDeviceCode(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request3.request;
+ const parameters = {
+ client_id: options.clientId
+ };
+ if ("scopes" in options && Array.isArray(options.scopes)) {
+ parameters.scope = options.scopes.join(" ");
+ }
+ return oauthRequest(request, "POST /login/device/code", parameters);
}
-// pkg/dist-src/hook.js
-async function hook(state, request, route, parameters = {}) {
- const endpoint = request.endpoint.merge(
- route,
- parameters
+// pkg/dist-src/exchange-device-code.js
+var import_request4 = __nccwpck_require__(6234);
+async function exchangeDeviceCode(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request4.request;
+ const response = await oauthRequest(
+ request,
+ "POST /login/oauth/access_token",
+ {
+ client_id: options.clientId,
+ device_code: options.code,
+ grant_type: "urn:ietf:params:oauth:grant-type:device_code"
+ }
);
- if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint.url)) {
- return request(endpoint);
+ const authentication = {
+ clientType: options.clientType,
+ clientId: options.clientId,
+ token: response.data.access_token,
+ scopes: response.data.scope.split(/\s+/).filter(Boolean)
+ };
+ if ("clientSecret" in options) {
+ authentication.clientSecret = options.clientSecret;
}
- if (requiresBasicAuth(endpoint.url)) {
- const credentials = (0, import_btoa_lite.default)(`${state.clientId}:${state.clientSecret}`);
- endpoint.headers.authorization = `basic ${credentials}`;
- return request(endpoint);
+ if (options.clientType === "github-app") {
+ if ("refresh_token" in response.data) {
+ const apiTimeInMs = new Date(response.headers.date).getTime();
+ authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp2(
+ apiTimeInMs,
+ response.data.expires_in
+ ), authentication.refreshTokenExpiresAt = toTimestamp2(
+ apiTimeInMs,
+ response.data.refresh_token_expires_in
+ );
+ }
+ delete authentication.scopes;
}
- const { token } = state.clientType === "oauth-app" ? await auth({ ...state, request }) : await auth({ ...state, request });
- endpoint.headers.authorization = "token " + token;
- return request(endpoint);
+ return { ...response, authentication };
+}
+function toTimestamp2(apiTimeInMs, expirationInSeconds) {
+ return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
-// pkg/dist-src/index.js
-function createOAuthUserAuth({
- clientId,
- clientSecret,
- clientType = "oauth-app",
- request = import_request.request.defaults({
+// pkg/dist-src/check-token.js
+var import_request5 = __nccwpck_require__(6234);
+var import_btoa_lite = __toESM(__nccwpck_require__(2358));
+async function checkToken(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request5.request;
+ const response = await request("POST /applications/{client_id}/token", {
headers: {
- "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
- }
- }),
- onTokenCreated,
- ...strategyOptions
-}) {
- const state = Object.assign({
- clientType,
- clientId,
- clientSecret,
- onTokenCreated,
- strategyOptions,
- request
- });
- return Object.assign(auth.bind(null, state), {
- // @ts-expect-error not worth the extra code needed to appease TS
- hook: hook.bind(null, state)
+ authorization: `basic ${(0, import_btoa_lite.default)(
+ `${options.clientId}:${options.clientSecret}`
+ )}`
+ },
+ client_id: options.clientId,
+ access_token: options.token
});
+ const authentication = {
+ clientType: options.clientType,
+ clientId: options.clientId,
+ clientSecret: options.clientSecret,
+ token: options.token,
+ scopes: response.data.scopes
+ };
+ if (response.data.expires_at)
+ authentication.expiresAt = response.data.expires_at;
+ if (options.clientType === "github-app") {
+ delete authentication.scopes;
+ }
+ return { ...response, authentication };
}
-createOAuthUserAuth.VERSION = VERSION;
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 334:
-/***/ ((module) => {
-
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- createTokenAuth: () => createTokenAuth
-});
-module.exports = __toCommonJS(dist_src_exports);
+// pkg/dist-src/refresh-token.js
+var import_request6 = __nccwpck_require__(6234);
+async function refreshToken(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request6.request;
+ const response = await oauthRequest(
+ request,
+ "POST /login/oauth/access_token",
+ {
+ client_id: options.clientId,
+ client_secret: options.clientSecret,
+ grant_type: "refresh_token",
+ refresh_token: options.refreshToken
+ }
+ );
+ const apiTimeInMs = new Date(response.headers.date).getTime();
+ const authentication = {
+ clientType: "github-app",
+ clientId: options.clientId,
+ clientSecret: options.clientSecret,
+ token: response.data.access_token,
+ refreshToken: response.data.refresh_token,
+ expiresAt: toTimestamp3(apiTimeInMs, response.data.expires_in),
+ refreshTokenExpiresAt: toTimestamp3(
+ apiTimeInMs,
+ response.data.refresh_token_expires_in
+ )
+ };
+ return { ...response, authentication };
+}
+function toTimestamp3(apiTimeInMs, expirationInSeconds) {
+ return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
+}
-// pkg/dist-src/auth.js
-var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
-var REGEX_IS_INSTALLATION = /^ghs_/;
-var REGEX_IS_USER_TO_SERVER = /^ghu_/;
-async function auth(token) {
- const isApp = token.split(/\./).length === 3;
- const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
- const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
- const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
- return {
- type: "token",
+// pkg/dist-src/scope-token.js
+var import_request7 = __nccwpck_require__(6234);
+var import_btoa_lite2 = __toESM(__nccwpck_require__(2358));
+async function scopeToken(options) {
+ const {
+ request: optionsRequest,
+ clientType,
+ clientId,
+ clientSecret,
token,
- tokenType
- };
+ ...requestOptions
+ } = options;
+ const request = optionsRequest || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request7.request;
+ const response = await request(
+ "POST /applications/{client_id}/token/scoped",
+ {
+ headers: {
+ authorization: `basic ${(0, import_btoa_lite2.default)(`${clientId}:${clientSecret}`)}`
+ },
+ client_id: clientId,
+ access_token: token,
+ ...requestOptions
+ }
+ );
+ const authentication = Object.assign(
+ {
+ clientType,
+ clientId,
+ clientSecret,
+ token: response.data.token
+ },
+ response.data.expires_at ? { expiresAt: response.data.expires_at } : {}
+ );
+ return { ...response, authentication };
}
-// pkg/dist-src/with-authorization-prefix.js
-function withAuthorizationPrefix(token) {
- if (token.split(/\./).length === 3) {
- return `bearer ${token}`;
+// pkg/dist-src/reset-token.js
+var import_request8 = __nccwpck_require__(6234);
+var import_btoa_lite3 = __toESM(__nccwpck_require__(2358));
+async function resetToken(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request8.request;
+ const auth = (0, import_btoa_lite3.default)(`${options.clientId}:${options.clientSecret}`);
+ const response = await request(
+ "PATCH /applications/{client_id}/token",
+ {
+ headers: {
+ authorization: `basic ${auth}`
+ },
+ client_id: options.clientId,
+ access_token: options.token
+ }
+ );
+ const authentication = {
+ clientType: options.clientType,
+ clientId: options.clientId,
+ clientSecret: options.clientSecret,
+ token: response.data.token,
+ scopes: response.data.scopes
+ };
+ if (response.data.expires_at)
+ authentication.expiresAt = response.data.expires_at;
+ if (options.clientType === "github-app") {
+ delete authentication.scopes;
}
- return `token ${token}`;
+ return { ...response, authentication };
}
-// pkg/dist-src/hook.js
-async function hook(token, request, route, parameters) {
- const endpoint = request.endpoint.merge(
- route,
- parameters
+// pkg/dist-src/delete-token.js
+var import_request9 = __nccwpck_require__(6234);
+var import_btoa_lite4 = __toESM(__nccwpck_require__(2358));
+async function deleteToken(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request9.request;
+ const auth = (0, import_btoa_lite4.default)(`${options.clientId}:${options.clientSecret}`);
+ return request(
+ "DELETE /applications/{client_id}/token",
+ {
+ headers: {
+ authorization: `basic ${auth}`
+ },
+ client_id: options.clientId,
+ access_token: options.token
+ }
);
- endpoint.headers.authorization = withAuthorizationPrefix(token);
- return request(endpoint);
}
-// pkg/dist-src/index.js
-var createTokenAuth = function createTokenAuth2(token) {
- if (!token) {
- throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
- }
- if (typeof token !== "string") {
- throw new Error(
- "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
- );
- }
- token = token.replace(/^(token|bearer) +/i, "");
- return Object.assign(auth.bind(null, token), {
- hook: hook.bind(null, token)
- });
-};
+// pkg/dist-src/delete-authorization.js
+var import_request10 = __nccwpck_require__(6234);
+var import_btoa_lite5 = __toESM(__nccwpck_require__(2358));
+async function deleteAuthorization(options) {
+ const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
+ import_request10.request;
+ const auth = (0, import_btoa_lite5.default)(`${options.clientId}:${options.clientSecret}`);
+ return request(
+ "DELETE /applications/{client_id}/grant",
+ {
+ headers: {
+ authorization: `basic ${auth}`
+ },
+ client_id: options.clientId,
+ access_token: options.token
+ }
+ );
+}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
-/***/ 9567:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 5883:
+/***/ ((module) => {
"use strict";
@@ -9774,92 +10245,194 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- createUnauthenticatedAuth: () => createUnauthenticatedAuth
+ paginateGraphql: () => paginateGraphql
});
module.exports = __toCommonJS(dist_src_exports);
-// pkg/dist-src/auth.js
-async function auth(reason) {
- return {
- type: "unauthenticated",
- reason
- };
-}
-
-// pkg/dist-src/is-rate-limit-error.js
-var import_request_error = __nccwpck_require__(537);
-function isRateLimitError(error) {
- if (error.status !== 403) {
- return false;
+// pkg/dist-src/errors.js
+var generateMessage = (path, cursorValue) => `The cursor at "${path.join(
+ ","
+)}" did not change its value "${cursorValue}" after a page transition. Please make sure your that your query is set up correctly.`;
+var MissingCursorChange = class extends Error {
+ constructor(pageInfo, cursorValue) {
+ super(generateMessage(pageInfo.pathInQuery, cursorValue));
+ this.pageInfo = pageInfo;
+ this.cursorValue = cursorValue;
+ this.name = "MissingCursorChangeError";
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
}
- if (!error.response) {
- return false;
+};
+var MissingPageInfo = class extends Error {
+ constructor(response) {
+ super(
+ `No pageInfo property found in response. Please make sure to specify the pageInfo in your query. Response-Data: ${JSON.stringify(
+ response,
+ null,
+ 2
+ )}`
+ );
+ this.response = response;
+ this.name = "MissingPageInfo";
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
}
- return error.response.headers["x-ratelimit-remaining"] === "0";
-}
+};
-// pkg/dist-src/is-abuse-limit-error.js
-var import_request_error2 = __nccwpck_require__(537);
-var REGEX_ABUSE_LIMIT_MESSAGE = /\babuse\b/i;
-function isAbuseLimitError(error) {
- if (error.status !== 403) {
- return false;
+// pkg/dist-src/object-helpers.js
+var isObject = (value) => Object.prototype.toString.call(value) === "[object Object]";
+function findPaginatedResourcePath(responseData) {
+ const paginatedResourcePath = deepFindPathToProperty(
+ responseData,
+ "pageInfo"
+ );
+ if (paginatedResourcePath.length === 0) {
+ throw new MissingPageInfo(responseData);
}
- return REGEX_ABUSE_LIMIT_MESSAGE.test(error.message);
+ return paginatedResourcePath;
}
-
-// pkg/dist-src/hook.js
-async function hook(reason, request, route, parameters) {
- const endpoint = request.endpoint.merge(
- route,
- parameters
- );
- return request(endpoint).catch((error) => {
- if (error.status === 404) {
- error.message = `Not found. May be due to lack of authentication. Reason: ${reason}`;
- throw error;
- }
- if (isRateLimitError(error)) {
- error.message = `API rate limit exceeded. This maybe caused by the lack of authentication. Reason: ${reason}`;
- throw error;
- }
- if (isAbuseLimitError(error)) {
- error.message = `You have triggered an abuse detection mechanism. This maybe caused by the lack of authentication. Reason: ${reason}`;
- throw error;
- }
- if (error.status === 401) {
- error.message = `Unauthorized. "${endpoint.method} ${endpoint.url}" failed most likely due to lack of authentication. Reason: ${reason}`;
- throw error;
+var deepFindPathToProperty = (object, searchProp, path = []) => {
+ for (const key of Object.keys(object)) {
+ const currentPath = [...path, key];
+ const currentValue = object[key];
+ if (currentValue.hasOwnProperty(searchProp)) {
+ return currentPath;
}
- if (error.status >= 400 && error.status < 500) {
- error.message = error.message.replace(
- /\.?$/,
- `. May be caused by lack of authentication (${reason}).`
+ if (isObject(currentValue)) {
+ const result = deepFindPathToProperty(
+ currentValue,
+ searchProp,
+ currentPath
);
+ if (result.length > 0) {
+ return result;
+ }
}
- throw error;
- });
-}
+ }
+ return [];
+};
+var get = (object, path) => {
+ return path.reduce((current, nextProperty) => current[nextProperty], object);
+};
+var set = (object, path, mutator) => {
+ const lastProperty = path[path.length - 1];
+ const parentPath = [...path].slice(0, -1);
+ const parent = get(object, parentPath);
+ if (typeof mutator === "function") {
+ parent[lastProperty] = mutator(parent[lastProperty]);
+ } else {
+ parent[lastProperty] = mutator;
+ }
+};
-// pkg/dist-src/index.js
-var createUnauthenticatedAuth = function createUnauthenticatedAuth2(options) {
- if (!options || !options.reason) {
- throw new Error(
- "[@octokit/auth-unauthenticated] No reason passed to createUnauthenticatedAuth"
- );
+// pkg/dist-src/extract-page-info.js
+var extractPageInfos = (responseData) => {
+ const pageInfoPath = findPaginatedResourcePath(responseData);
+ return {
+ pathInQuery: pageInfoPath,
+ pageInfo: get(responseData, [...pageInfoPath, "pageInfo"])
+ };
+};
+
+// pkg/dist-src/page-info.js
+var isForwardSearch = (givenPageInfo) => {
+ return givenPageInfo.hasOwnProperty("hasNextPage");
+};
+var getCursorFrom = (pageInfo) => isForwardSearch(pageInfo) ? pageInfo.endCursor : pageInfo.startCursor;
+var hasAnotherPage = (pageInfo) => isForwardSearch(pageInfo) ? pageInfo.hasNextPage : pageInfo.hasPreviousPage;
+
+// pkg/dist-src/iterator.js
+var createIterator = (octokit) => {
+ return (query, initialParameters = {}) => {
+ let nextPageExists = true;
+ let parameters = { ...initialParameters };
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!nextPageExists)
+ return { done: true, value: {} };
+ const response = await octokit.graphql(
+ query,
+ parameters
+ );
+ const pageInfoContext = extractPageInfos(response);
+ const nextCursorValue = getCursorFrom(pageInfoContext.pageInfo);
+ nextPageExists = hasAnotherPage(pageInfoContext.pageInfo);
+ if (nextPageExists && nextCursorValue === parameters.cursor) {
+ throw new MissingCursorChange(pageInfoContext, nextCursorValue);
+ }
+ parameters = {
+ ...parameters,
+ cursor: nextCursorValue
+ };
+ return { done: false, value: response };
+ }
+ })
+ };
+ };
+};
+
+// pkg/dist-src/merge-responses.js
+var mergeResponses = (response1, response2) => {
+ if (Object.keys(response1).length === 0) {
+ return Object.assign(response1, response2);
}
- return Object.assign(auth.bind(null, options.reason), {
- hook: hook.bind(null, options.reason)
- });
+ const path = findPaginatedResourcePath(response1);
+ const nodesPath = [...path, "nodes"];
+ const newNodes = get(response2, nodesPath);
+ if (newNodes) {
+ set(response1, nodesPath, (values) => {
+ return [...values, ...newNodes];
+ });
+ }
+ const edgesPath = [...path, "edges"];
+ const newEdges = get(response2, edgesPath);
+ if (newEdges) {
+ set(response1, edgesPath, (values) => {
+ return [...values, ...newEdges];
+ });
+ }
+ const pageInfoPath = [...path, "pageInfo"];
+ set(response1, pageInfoPath, get(response2, pageInfoPath));
+ return response1;
+};
+
+// pkg/dist-src/paginate.js
+var createPaginate = (octokit) => {
+ const iterator = createIterator(octokit);
+ return async (query, initialParameters = {}) => {
+ let mergedResponse = {};
+ for await (const response of iterator(
+ query,
+ initialParameters
+ )) {
+ mergedResponse = mergeResponses(mergedResponse, response);
+ }
+ return mergedResponse;
+ };
};
+
+// pkg/dist-src/index.js
+function paginateGraphql(octokit) {
+ octokit.graphql;
+ return {
+ graphql: Object.assign(octokit.graphql, {
+ paginate: Object.assign(createPaginate(octokit), {
+ iterator: createIterator(octokit)
+ })
+ })
+ };
+}
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
-/***/ 6762:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 4193:
+/***/ ((module) => {
"use strict";
@@ -9884,701 +10457,389 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- Octokit: () => Octokit
+ composePaginateRest: () => composePaginateRest,
+ isPaginatingEndpoint: () => isPaginatingEndpoint,
+ paginateRest: () => paginateRest,
+ paginatingEndpoints: () => paginatingEndpoints
});
module.exports = __toCommonJS(dist_src_exports);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var import_before_after_hook = __nccwpck_require__(3682);
-var import_request = __nccwpck_require__(6234);
-var import_graphql = __nccwpck_require__(8467);
-var import_auth_token = __nccwpck_require__(334);
// pkg/dist-src/version.js
-var VERSION = "5.1.0";
+var VERSION = "9.2.1";
-// 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} ${(0, import_universal_user_agent.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
- )
- );
- }
+// pkg/dist-src/normalize-paginated-list-response.js
+function normalizePaginatedListResponse(response) {
+ if (!response.data) {
+ return {
+ ...response,
+ data: []
};
- return OctokitWithDefaults;
}
- static {
- this.plugins = [];
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
+ if (!responseNeedsNormalization)
+ return response;
+ const incompleteResults = response.data.incomplete_results;
+ const repositorySelection = response.data.repository_selection;
+ const totalCount = response.data.total_count;
+ delete response.data.incomplete_results;
+ delete response.data.repository_selection;
+ delete response.data.total_count;
+ const namespaceKey = Object.keys(response.data)[0];
+ const data = response.data[namespaceKey];
+ response.data = data;
+ if (typeof incompleteResults !== "undefined") {
+ response.data.incomplete_results = incompleteResults;
}
- /**
- * 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;
+ if (typeof repositorySelection !== "undefined") {
+ response.data.repository_selection = repositorySelection;
}
- constructor(options = {}) {
- const hook = new import_before_after_hook.Collection();
- const requestDefaults = {
- baseUrl: import_request.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 = import_request.request.defaults(requestDefaults);
- this.graphql = (0, import_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 = (0, import_auth_token.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));
- }
- }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 9440:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
-
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- endpoint: () => endpoint
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/defaults.js
-var import_universal_user_agent = __nccwpck_require__(5030);
-
-// pkg/dist-src/version.js
-var VERSION = "9.0.4";
-
-// pkg/dist-src/defaults.js
-var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
-var DEFAULTS = {
- method: "GET",
- baseUrl: "https://api.github.com",
- headers: {
- accept: "application/vnd.github.v3+json",
- "user-agent": userAgent
- },
- mediaType: {
- format: ""
- }
-};
-
-// pkg/dist-src/util/lowercase-keys.js
-function lowercaseKeys(object) {
- if (!object) {
- return {};
- }
- return Object.keys(object).reduce((newObj, key) => {
- newObj[key.toLowerCase()] = object[key];
- return newObj;
- }, {});
-}
-
-// pkg/dist-src/util/is-plain-object.js
-function isPlainObject(value) {
- if (typeof value !== "object" || value === null)
- return false;
- if (Object.prototype.toString.call(value) !== "[object Object]")
- return false;
- const proto = Object.getPrototypeOf(value);
- if (proto === null)
- return true;
- const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
- return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
+ response.data.total_count = totalCount;
+ return response;
}
-// pkg/dist-src/util/merge-deep.js
-function mergeDeep(defaults, options) {
- const result = Object.assign({}, defaults);
- Object.keys(options).forEach((key) => {
- if (isPlainObject(options[key])) {
- if (!(key in defaults))
- Object.assign(result, { [key]: options[key] });
- else
- result[key] = mergeDeep(defaults[key], options[key]);
- } else {
- Object.assign(result, { [key]: options[key] });
- }
- });
- return result;
+// pkg/dist-src/iterator.js
+function iterator(octokit, route, parameters) {
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
+ const requestMethod = typeof route === "function" ? route : octokit.request;
+ const method = options.method;
+ const headers = options.headers;
+ let url = options.url;
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!url)
+ return { done: true };
+ try {
+ const response = await requestMethod({ method, url, headers });
+ const normalizedResponse = normalizePaginatedListResponse(response);
+ url = ((normalizedResponse.headers.link || "").match(
+ /<([^>]+)>;\s*rel="next"/
+ ) || [])[1];
+ return { value: normalizedResponse };
+ } catch (error) {
+ if (error.status !== 409)
+ throw error;
+ url = "";
+ return {
+ value: {
+ status: 200,
+ headers: {},
+ data: []
+ }
+ };
+ }
+ }
+ })
+ };
}
-// pkg/dist-src/util/remove-undefined-properties.js
-function removeUndefinedProperties(obj) {
- for (const key in obj) {
- if (obj[key] === void 0) {
- delete obj[key];
- }
+// pkg/dist-src/paginate.js
+function paginate(octokit, route, parameters, mapFn) {
+ if (typeof parameters === "function") {
+ mapFn = parameters;
+ parameters = void 0;
}
- return obj;
+ return gather(
+ octokit,
+ [],
+ iterator(octokit, route, parameters)[Symbol.asyncIterator](),
+ mapFn
+ );
}
-
-// pkg/dist-src/merge.js
-function merge(defaults, route, options) {
- if (typeof route === "string") {
- let [method, url] = route.split(" ");
- options = Object.assign(url ? { method, url } : { url: method }, options);
- } else {
- options = Object.assign({}, route);
- }
- options.headers = lowercaseKeys(options.headers);
- removeUndefinedProperties(options);
- removeUndefinedProperties(options.headers);
- const mergedOptions = mergeDeep(defaults || {}, options);
- if (options.url === "/graphql") {
- if (defaults && defaults.mediaType.previews?.length) {
- mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
- (preview) => !mergedOptions.mediaType.previews.includes(preview)
- ).concat(mergedOptions.mediaType.previews);
+function gather(octokit, results, iterator2, mapFn) {
+ return iterator2.next().then((result) => {
+ if (result.done) {
+ return results;
}
- mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
- }
- return mergedOptions;
-}
-
-// pkg/dist-src/util/add-query-parameters.js
-function addQueryParameters(url, parameters) {
- const separator = /\?/.test(url) ? "&" : "?";
- const names = Object.keys(parameters);
- if (names.length === 0) {
- return url;
- }
- return url + separator + names.map((name) => {
- if (name === "q") {
- return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
+ let earlyExit = false;
+ function done() {
+ earlyExit = true;
}
- return `${name}=${encodeURIComponent(parameters[name])}`;
- }).join("&");
+ results = results.concat(
+ mapFn ? mapFn(result.value, done) : result.value.data
+ );
+ if (earlyExit) {
+ return results;
+ }
+ return gather(octokit, results, iterator2, mapFn);
+ });
}
-// pkg/dist-src/util/extract-url-variable-names.js
-var urlVariableRegex = /\{[^}]+\}/g;
-function removeNonChars(variableName) {
- return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
-}
-function extractUrlVariableNames(url) {
- const matches = url.match(urlVariableRegex);
- if (!matches) {
- return [];
- }
- return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
-}
-
-// pkg/dist-src/util/omit.js
-function omit(object, keysToOmit) {
- const result = { __proto__: null };
- for (const key of Object.keys(object)) {
- if (keysToOmit.indexOf(key) === -1) {
- result[key] = object[key];
- }
- }
- return result;
-}
-
-// pkg/dist-src/util/url-template.js
-function encodeReserved(str) {
- return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
- if (!/%[0-9A-Fa-f]/.test(part)) {
- part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
- }
- return part;
- }).join("");
-}
-function encodeUnreserved(str) {
- return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
- return "%" + c.charCodeAt(0).toString(16).toUpperCase();
- });
-}
-function encodeValue(operator, value, key) {
- value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
- if (key) {
- return encodeUnreserved(key) + "=" + value;
- } else {
- return value;
- }
-}
-function isDefined(value) {
- return value !== void 0 && value !== null;
-}
-function isKeyOperator(operator) {
- return operator === ";" || operator === "&" || operator === "?";
-}
-function getValues(context, operator, key, modifier) {
- var value = context[key], result = [];
- if (isDefined(value) && value !== "") {
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
- value = value.toString();
- if (modifier && modifier !== "*") {
- value = value.substring(0, parseInt(modifier, 10));
- }
- result.push(
- encodeValue(operator, value, isKeyOperator(operator) ? key : "")
- );
- } else {
- if (modifier === "*") {
- if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function(value2) {
- result.push(
- encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
- );
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined(value[k])) {
- result.push(encodeValue(operator, value[k], k));
- }
- });
- }
- } else {
- const tmp = [];
- if (Array.isArray(value)) {
- value.filter(isDefined).forEach(function(value2) {
- tmp.push(encodeValue(operator, value2));
- });
- } else {
- Object.keys(value).forEach(function(k) {
- if (isDefined(value[k])) {
- tmp.push(encodeUnreserved(k));
- tmp.push(encodeValue(operator, value[k].toString()));
- }
- });
- }
- if (isKeyOperator(operator)) {
- result.push(encodeUnreserved(key) + "=" + tmp.join(","));
- } else if (tmp.length !== 0) {
- result.push(tmp.join(","));
- }
- }
- }
- } else {
- if (operator === ";") {
- if (isDefined(value)) {
- result.push(encodeUnreserved(key));
- }
- } else if (value === "" && (operator === "&" || operator === "?")) {
- result.push(encodeUnreserved(key) + "=");
- } else if (value === "") {
- result.push("");
- }
- }
- return result;
-}
-function parseUrl(template) {
- return {
- expand: expand.bind(null, template)
- };
-}
-function expand(template, context) {
- var operators = ["+", "#", ".", "/", ";", "?", "&"];
- template = template.replace(
- /\{([^\{\}]+)\}|([^\{\}]+)/g,
- function(_, expression, literal) {
- if (expression) {
- let operator = "";
- const values = [];
- if (operators.indexOf(expression.charAt(0)) !== -1) {
- operator = expression.charAt(0);
- expression = expression.substr(1);
- }
- expression.split(/,/g).forEach(function(variable) {
- var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
- values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
- });
- if (operator && operator !== "+") {
- var separator = ",";
- if (operator === "?") {
- separator = "&";
- } else if (operator !== "#") {
- separator = operator;
- }
- return (values.length !== 0 ? operator : "") + values.join(separator);
- } else {
- return values.join(",");
- }
- } else {
- return encodeReserved(literal);
- }
- }
- );
- if (template === "/") {
- return template;
- } else {
- return template.replace(/\/$/, "");
- }
-}
-
-// pkg/dist-src/parse.js
-function parse(options) {
- let method = options.method.toUpperCase();
- let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
- let headers = Object.assign({}, options.headers);
- let body;
- let parameters = omit(options, [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "mediaType"
- ]);
- const urlVariableNames = extractUrlVariableNames(url);
- url = parseUrl(url).expand(parameters);
- if (!/^http/.test(url)) {
- url = options.baseUrl + url;
- }
- const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
- const remainingParameters = omit(parameters, omittedParameters);
- const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
- if (!isBinaryRequest) {
- if (options.mediaType.format) {
- headers.accept = headers.accept.split(/,/).map(
- (format) => format.replace(
- /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
- `application/vnd$1$2.${options.mediaType.format}`
- )
- ).join(",");
- }
- if (url.endsWith("/graphql")) {
- if (options.mediaType.previews?.length) {
- const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
- headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
- const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
- return `application/vnd.github.${preview}-preview${format}`;
- }).join(",");
- }
- }
- }
- if (["GET", "HEAD"].includes(method)) {
- url = addQueryParameters(url, remainingParameters);
- } else {
- if ("data" in remainingParameters) {
- body = remainingParameters.data;
- } else {
- if (Object.keys(remainingParameters).length) {
- body = remainingParameters;
- }
- }
- }
- if (!headers["content-type"] && typeof body !== "undefined") {
- headers["content-type"] = "application/json; charset=utf-8";
- }
- if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
- body = "";
- }
- return Object.assign(
- { method, url, headers },
- typeof body !== "undefined" ? { body } : null,
- options.request ? { request: options.request } : null
- );
-}
-
-// pkg/dist-src/endpoint-with-defaults.js
-function endpointWithDefaults(defaults, route, options) {
- return parse(merge(defaults, route, options));
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(oldDefaults, newDefaults) {
- const DEFAULTS2 = merge(oldDefaults, newDefaults);
- const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
- return Object.assign(endpoint2, {
- DEFAULTS: DEFAULTS2,
- defaults: withDefaults.bind(null, DEFAULTS2),
- merge: merge.bind(null, DEFAULTS2),
- parse
- });
-}
-
-// pkg/dist-src/index.js
-var endpoint = withDefaults(null, DEFAULTS);
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 8467:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
+// pkg/dist-src/compose-paginate.js
+var composePaginateRest = Object.assign(paginate, {
+ iterator
+});
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+// pkg/dist-src/generated/paginating-endpoints.js
+var paginatingEndpoints = [
+ "GET /advisories",
+ "GET /app/hook/deliveries",
+ "GET /app/installation-requests",
+ "GET /app/installations",
+ "GET /assignments/{assignment_id}/accepted_assignments",
+ "GET /classrooms",
+ "GET /classrooms/{classroom_id}/assignments",
+ "GET /enterprises/{enterprise}/dependabot/alerts",
+ "GET /enterprises/{enterprise}/secret-scanning/alerts",
+ "GET /events",
+ "GET /gists",
+ "GET /gists/public",
+ "GET /gists/starred",
+ "GET /gists/{gist_id}/comments",
+ "GET /gists/{gist_id}/commits",
+ "GET /gists/{gist_id}/forks",
+ "GET /installation/repositories",
+ "GET /issues",
+ "GET /licenses",
+ "GET /marketplace_listing/plans",
+ "GET /marketplace_listing/plans/{plan_id}/accounts",
+ "GET /marketplace_listing/stubbed/plans",
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
+ "GET /networks/{owner}/{repo}/events",
+ "GET /notifications",
+ "GET /organizations",
+ "GET /orgs/{org}/actions/cache/usage-by-repository",
+ "GET /orgs/{org}/actions/permissions/repositories",
+ "GET /orgs/{org}/actions/runners",
+ "GET /orgs/{org}/actions/secrets",
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/actions/variables",
+ "GET /orgs/{org}/actions/variables/{name}/repositories",
+ "GET /orgs/{org}/blocks",
+ "GET /orgs/{org}/code-scanning/alerts",
+ "GET /orgs/{org}/codespaces",
+ "GET /orgs/{org}/codespaces/secrets",
+ "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/copilot/billing/seats",
+ "GET /orgs/{org}/dependabot/alerts",
+ "GET /orgs/{org}/dependabot/secrets",
+ "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
+ "GET /orgs/{org}/events",
+ "GET /orgs/{org}/failed_invitations",
+ "GET /orgs/{org}/hooks",
+ "GET /orgs/{org}/hooks/{hook_id}/deliveries",
+ "GET /orgs/{org}/installations",
+ "GET /orgs/{org}/invitations",
+ "GET /orgs/{org}/invitations/{invitation_id}/teams",
+ "GET /orgs/{org}/issues",
+ "GET /orgs/{org}/members",
+ "GET /orgs/{org}/members/{username}/codespaces",
+ "GET /orgs/{org}/migrations",
+ "GET /orgs/{org}/migrations/{migration_id}/repositories",
+ "GET /orgs/{org}/organization-roles/{role_id}/teams",
+ "GET /orgs/{org}/organization-roles/{role_id}/users",
+ "GET /orgs/{org}/outside_collaborators",
+ "GET /orgs/{org}/packages",
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
+ "GET /orgs/{org}/personal-access-token-requests",
+ "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
+ "GET /orgs/{org}/personal-access-tokens",
+ "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
+ "GET /orgs/{org}/projects",
+ "GET /orgs/{org}/properties/values",
+ "GET /orgs/{org}/public_members",
+ "GET /orgs/{org}/repos",
+ "GET /orgs/{org}/rulesets",
+ "GET /orgs/{org}/rulesets/rule-suites",
+ "GET /orgs/{org}/secret-scanning/alerts",
+ "GET /orgs/{org}/security-advisories",
+ "GET /orgs/{org}/teams",
+ "GET /orgs/{org}/teams/{team_slug}/discussions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
+ "GET /orgs/{org}/teams/{team_slug}/invitations",
+ "GET /orgs/{org}/teams/{team_slug}/members",
+ "GET /orgs/{org}/teams/{team_slug}/projects",
+ "GET /orgs/{org}/teams/{team_slug}/repos",
+ "GET /orgs/{org}/teams/{team_slug}/teams",
+ "GET /projects/columns/{column_id}/cards",
+ "GET /projects/{project_id}/collaborators",
+ "GET /projects/{project_id}/columns",
+ "GET /repos/{owner}/{repo}/actions/artifacts",
+ "GET /repos/{owner}/{repo}/actions/caches",
+ "GET /repos/{owner}/{repo}/actions/organization-secrets",
+ "GET /repos/{owner}/{repo}/actions/organization-variables",
+ "GET /repos/{owner}/{repo}/actions/runners",
+ "GET /repos/{owner}/{repo}/actions/runs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
+ "GET /repos/{owner}/{repo}/actions/secrets",
+ "GET /repos/{owner}/{repo}/actions/variables",
+ "GET /repos/{owner}/{repo}/actions/workflows",
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
+ "GET /repos/{owner}/{repo}/activity",
+ "GET /repos/{owner}/{repo}/assignees",
+ "GET /repos/{owner}/{repo}/branches",
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts",
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
+ "GET /repos/{owner}/{repo}/code-scanning/analyses",
+ "GET /repos/{owner}/{repo}/codespaces",
+ "GET /repos/{owner}/{repo}/codespaces/devcontainers",
+ "GET /repos/{owner}/{repo}/codespaces/secrets",
+ "GET /repos/{owner}/{repo}/collaborators",
+ "GET /repos/{owner}/{repo}/comments",
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/commits",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
+ "GET /repos/{owner}/{repo}/commits/{ref}/status",
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
+ "GET /repos/{owner}/{repo}/contributors",
+ "GET /repos/{owner}/{repo}/dependabot/alerts",
+ "GET /repos/{owner}/{repo}/dependabot/secrets",
+ "GET /repos/{owner}/{repo}/deployments",
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
+ "GET /repos/{owner}/{repo}/environments",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
+ "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
+ "GET /repos/{owner}/{repo}/events",
+ "GET /repos/{owner}/{repo}/forks",
+ "GET /repos/{owner}/{repo}/hooks",
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
+ "GET /repos/{owner}/{repo}/invitations",
+ "GET /repos/{owner}/{repo}/issues",
+ "GET /repos/{owner}/{repo}/issues/comments",
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/issues/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
+ "GET /repos/{owner}/{repo}/keys",
+ "GET /repos/{owner}/{repo}/labels",
+ "GET /repos/{owner}/{repo}/milestones",
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
+ "GET /repos/{owner}/{repo}/notifications",
+ "GET /repos/{owner}/{repo}/pages/builds",
+ "GET /repos/{owner}/{repo}/projects",
+ "GET /repos/{owner}/{repo}/pulls",
+ "GET /repos/{owner}/{repo}/pulls/comments",
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
+ "GET /repos/{owner}/{repo}/releases",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
+ "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
+ "GET /repos/{owner}/{repo}/rules/branches/{branch}",
+ "GET /repos/{owner}/{repo}/rulesets",
+ "GET /repos/{owner}/{repo}/rulesets/rule-suites",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts",
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
+ "GET /repos/{owner}/{repo}/security-advisories",
+ "GET /repos/{owner}/{repo}/stargazers",
+ "GET /repos/{owner}/{repo}/subscribers",
+ "GET /repos/{owner}/{repo}/tags",
+ "GET /repos/{owner}/{repo}/teams",
+ "GET /repos/{owner}/{repo}/topics",
+ "GET /repositories",
+ "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
+ "GET /repositories/{repository_id}/environments/{environment_name}/variables",
+ "GET /search/code",
+ "GET /search/commits",
+ "GET /search/issues",
+ "GET /search/labels",
+ "GET /search/repositories",
+ "GET /search/topics",
+ "GET /search/users",
+ "GET /teams/{team_id}/discussions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments",
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+ "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
+ "GET /teams/{team_id}/invitations",
+ "GET /teams/{team_id}/members",
+ "GET /teams/{team_id}/projects",
+ "GET /teams/{team_id}/repos",
+ "GET /teams/{team_id}/teams",
+ "GET /user/blocks",
+ "GET /user/codespaces",
+ "GET /user/codespaces/secrets",
+ "GET /user/emails",
+ "GET /user/followers",
+ "GET /user/following",
+ "GET /user/gpg_keys",
+ "GET /user/installations",
+ "GET /user/installations/{installation_id}/repositories",
+ "GET /user/issues",
+ "GET /user/keys",
+ "GET /user/marketplace_purchases",
+ "GET /user/marketplace_purchases/stubbed",
+ "GET /user/memberships/orgs",
+ "GET /user/migrations",
+ "GET /user/migrations/{migration_id}/repositories",
+ "GET /user/orgs",
+ "GET /user/packages",
+ "GET /user/packages/{package_type}/{package_name}/versions",
+ "GET /user/public_emails",
+ "GET /user/repos",
+ "GET /user/repository_invitations",
+ "GET /user/social_accounts",
+ "GET /user/ssh_signing_keys",
+ "GET /user/starred",
+ "GET /user/subscriptions",
+ "GET /user/teams",
+ "GET /users",
+ "GET /users/{username}/events",
+ "GET /users/{username}/events/orgs/{org}",
+ "GET /users/{username}/events/public",
+ "GET /users/{username}/followers",
+ "GET /users/{username}/following",
+ "GET /users/{username}/gists",
+ "GET /users/{username}/gpg_keys",
+ "GET /users/{username}/keys",
+ "GET /users/{username}/orgs",
+ "GET /users/{username}/packages",
+ "GET /users/{username}/projects",
+ "GET /users/{username}/received_events",
+ "GET /users/{username}/received_events/public",
+ "GET /users/{username}/repos",
+ "GET /users/{username}/social_accounts",
+ "GET /users/{username}/ssh_signing_keys",
+ "GET /users/{username}/starred",
+ "GET /users/{username}/subscriptions"
+];
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- GraphqlResponseError: () => GraphqlResponseError,
- graphql: () => graphql2,
- withCustomRequest: () => withCustomRequest
-});
-module.exports = __toCommonJS(dist_src_exports);
-var import_request3 = __nccwpck_require__(6234);
-var import_universal_user_agent = __nccwpck_require__(5030);
-
-// pkg/dist-src/version.js
-var VERSION = "7.0.2";
-
-// pkg/dist-src/with-defaults.js
-var import_request2 = __nccwpck_require__(6234);
-
-// pkg/dist-src/graphql.js
-var import_request = __nccwpck_require__(6234);
-
-// pkg/dist-src/error.js
-function _buildMessageForResponseErrors(data) {
- return `Request failed due to following response errors:
-` + data.errors.map((e) => ` - ${e.message}`).join("\n");
-}
-var GraphqlResponseError = class extends Error {
- constructor(request2, headers, response) {
- super(_buildMessageForResponseErrors(response));
- this.request = request2;
- this.headers = headers;
- this.response = response;
- this.name = "GraphqlResponseError";
- this.errors = response.errors;
- this.data = response.data;
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- }
-};
-
-// pkg/dist-src/graphql.js
-var NON_VARIABLE_OPTIONS = [
- "method",
- "baseUrl",
- "url",
- "headers",
- "request",
- "query",
- "mediaType"
-];
-var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
-var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
-function graphql(request2, 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;
- }, {});
- const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
- if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
- requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
+// pkg/dist-src/paginating-endpoints.js
+function isPaginatingEndpoint(arg) {
+ if (typeof arg === "string") {
+ return paginatingEndpoints.includes(arg);
+ } else {
+ return false;
}
- return request2(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;
- });
-}
-
-// pkg/dist-src/with-defaults.js
-function withDefaults(request2, newDefaults) {
- const newRequest = request2.defaults(newDefaults);
- const newApi = (query, options) => {
- return graphql(newRequest, query, options);
- };
- return Object.assign(newApi, {
- defaults: withDefaults.bind(null, newRequest),
- endpoint: newRequest.endpoint
- });
}
// pkg/dist-src/index.js
-var graphql2 = withDefaults(import_request3.request, {
- headers: {
- "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
- },
- method: "POST",
- url: "/graphql"
-});
-function withCustomRequest(customRequest) {
- return withDefaults(customRequest, {
- method: "POST",
- url: "/graphql"
- });
+function paginateRest(octokit) {
+ return {
+ paginate: Object.assign(paginate.bind(null, octokit), {
+ iterator: iterator.bind(null, octokit)
+ })
+ };
}
+paginateRest.VERSION = VERSION;
// Annotate the CommonJS export names for ESM import in node:
0 && (0);
/***/ }),
-/***/ 3493:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 3044:
+/***/ ((module) => {
"use strict";
-var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
@@ -10592,1886 +10853,18 @@ var __copyProps = (to, from, except, desc) => {
}
return to;
};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
-));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
- OAuthApp: () => OAuthApp,
- createAWSLambdaAPIGatewayV2Handler: () => createAWSLambdaAPIGatewayV2Handler,
- createNodeMiddleware: () => createNodeMiddleware,
- createWebWorkerHandler: () => createWebWorkerHandler,
- handleRequest: () => handleRequest,
- sendNodeResponse: () => sendResponse,
- unknownRouteResponse: () => unknownRouteResponse
+ legacyRestEndpointMethods: () => legacyRestEndpointMethods,
+ restEndpointMethods: () => restEndpointMethods
});
module.exports = __toCommonJS(dist_src_exports);
-var import_auth_oauth_app = __nccwpck_require__(8459);
// pkg/dist-src/version.js
-var VERSION = "6.1.0";
-
-// pkg/dist-src/add-event-handler.js
-function addEventHandler(state, eventName, eventHandler) {
- if (Array.isArray(eventName)) {
- for (const singleEventName of eventName) {
- addEventHandler(state, singleEventName, eventHandler);
- }
- return;
- }
- if (!state.eventHandlers[eventName]) {
- state.eventHandlers[eventName] = [];
- }
- state.eventHandlers[eventName].push(eventHandler);
-}
-
-// pkg/dist-src/oauth-app-octokit.js
-var import_core = __nccwpck_require__(6762);
-var import_universal_user_agent = __nccwpck_require__(5030);
-var OAuthAppOctokit = import_core.Octokit.defaults({
- userAgent: `octokit-oauth-app.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
-});
-
-// pkg/dist-src/methods/get-user-octokit.js
-var import_auth_oauth_user = __nccwpck_require__(1591);
-
-// pkg/dist-src/emit-event.js
-async function emitEvent(state, context) {
- const { name, action } = context;
- if (state.eventHandlers[`${name}.${action}`]) {
- for (const eventHandler of state.eventHandlers[`${name}.${action}`]) {
- await eventHandler(context);
- }
- }
- if (state.eventHandlers[name]) {
- for (const eventHandler of state.eventHandlers[name]) {
- await eventHandler(context);
- }
- }
-}
-
-// pkg/dist-src/methods/get-user-octokit.js
-async function getUserOctokitWithState(state, options) {
- return state.octokit.auth({
- type: "oauth-user",
- ...options,
- async factory(options2) {
- const octokit = new state.Octokit({
- authStrategy: import_auth_oauth_user.createOAuthUserAuth,
- auth: options2
- });
- const authentication = await octokit.auth({
- type: "get"
- });
- await emitEvent(state, {
- name: "token",
- action: "created",
- token: authentication.token,
- scopes: authentication.scopes,
- authentication,
- octokit
- });
- return octokit;
- }
- });
-}
-
-// pkg/dist-src/methods/get-web-flow-authorization-url.js
-var OAuthMethods = __toESM(__nccwpck_require__(8445));
-function getWebFlowAuthorizationUrlWithState(state, options) {
- const optionsWithDefaults = {
- clientId: state.clientId,
- request: state.octokit.request,
- ...options,
- allowSignup: state.allowSignup ?? options.allowSignup,
- redirectUrl: options.redirectUrl ?? state.redirectUrl,
- scopes: options.scopes ?? state.defaultScopes
- };
- return OAuthMethods.getWebFlowAuthorizationUrl({
- clientType: state.clientType,
- ...optionsWithDefaults
- });
-}
-
-// pkg/dist-src/methods/create-token.js
-var OAuthAppAuth = __toESM(__nccwpck_require__(8459));
-async function createTokenWithState(state, options) {
- const authentication = await state.octokit.auth({
- type: "oauth-user",
- ...options
- });
- await emitEvent(state, {
- name: "token",
- action: "created",
- token: authentication.token,
- scopes: authentication.scopes,
- authentication,
- octokit: new state.Octokit({
- authStrategy: OAuthAppAuth.createOAuthUserAuth,
- auth: {
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: authentication.token,
- scopes: authentication.scopes,
- refreshToken: authentication.refreshToken,
- expiresAt: authentication.expiresAt,
- refreshTokenExpiresAt: authentication.refreshTokenExpiresAt
- }
- })
- });
- return { authentication };
-}
-
-// pkg/dist-src/methods/check-token.js
-var OAuthMethods2 = __toESM(__nccwpck_require__(8445));
-async function checkTokenWithState(state, options) {
- const result = await OAuthMethods2.checkToken({
- // @ts-expect-error not worth the extra code to appease TS
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- ...options
- });
- Object.assign(result.authentication, { type: "token", tokenType: "oauth" });
- return result;
-}
-
-// pkg/dist-src/methods/reset-token.js
-var OAuthMethods3 = __toESM(__nccwpck_require__(8445));
-var import_auth_oauth_user2 = __nccwpck_require__(1591);
-async function resetTokenWithState(state, options) {
- const optionsWithDefaults = {
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- ...options
- };
- if (state.clientType === "oauth-app") {
- const response2 = await OAuthMethods3.resetToken({
- clientType: "oauth-app",
- ...optionsWithDefaults
- });
- const authentication2 = Object.assign(response2.authentication, {
- type: "token",
- tokenType: "oauth"
- });
- await emitEvent(state, {
- name: "token",
- action: "reset",
- token: response2.authentication.token,
- scopes: response2.authentication.scopes || void 0,
- authentication: authentication2,
- octokit: new state.Octokit({
- authStrategy: import_auth_oauth_user2.createOAuthUserAuth,
- auth: {
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: response2.authentication.token,
- scopes: response2.authentication.scopes
- }
- })
- });
- return { ...response2, authentication: authentication2 };
- }
- const response = await OAuthMethods3.resetToken({
- clientType: "github-app",
- ...optionsWithDefaults
- });
- const authentication = Object.assign(response.authentication, {
- type: "token",
- tokenType: "oauth"
- });
- await emitEvent(state, {
- name: "token",
- action: "reset",
- token: response.authentication.token,
- authentication,
- octokit: new state.Octokit({
- authStrategy: import_auth_oauth_user2.createOAuthUserAuth,
- auth: {
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: response.authentication.token
- }
- })
- });
- return { ...response, authentication };
-}
-
-// pkg/dist-src/methods/refresh-token.js
-var OAuthMethods4 = __toESM(__nccwpck_require__(8445));
-var import_auth_oauth_user3 = __nccwpck_require__(1591);
-async function refreshTokenWithState(state, options) {
- if (state.clientType === "oauth-app") {
- throw new Error(
- "[@octokit/oauth-app] app.refreshToken() is not supported for OAuth Apps"
- );
- }
- const response = await OAuthMethods4.refreshToken({
- clientType: "github-app",
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- refreshToken: options.refreshToken
- });
- const authentication = Object.assign(response.authentication, {
- type: "token",
- tokenType: "oauth"
- });
- await emitEvent(state, {
- name: "token",
- action: "refreshed",
- token: response.authentication.token,
- authentication,
- octokit: new state.Octokit({
- authStrategy: import_auth_oauth_user3.createOAuthUserAuth,
- auth: {
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: response.authentication.token
- }
- })
- });
- return { ...response, authentication };
-}
-
-// pkg/dist-src/methods/scope-token.js
-var OAuthMethods5 = __toESM(__nccwpck_require__(8445));
-var import_auth_oauth_user4 = __nccwpck_require__(1591);
-async function scopeTokenWithState(state, options) {
- if (state.clientType === "oauth-app") {
- throw new Error(
- "[@octokit/oauth-app] app.scopeToken() is not supported for OAuth Apps"
- );
- }
- const response = await OAuthMethods5.scopeToken({
- clientType: "github-app",
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- ...options
- });
- const authentication = Object.assign(response.authentication, {
- type: "token",
- tokenType: "oauth"
- });
- await emitEvent(state, {
- name: "token",
- action: "scoped",
- token: response.authentication.token,
- authentication,
- octokit: new state.Octokit({
- authStrategy: import_auth_oauth_user4.createOAuthUserAuth,
- auth: {
- clientType: state.clientType,
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- token: response.authentication.token
- }
- })
- });
- return { ...response, authentication };
-}
-
-// pkg/dist-src/methods/delete-token.js
-var OAuthMethods6 = __toESM(__nccwpck_require__(8445));
-var import_auth_unauthenticated = __nccwpck_require__(9567);
-async function deleteTokenWithState(state, options) {
- const optionsWithDefaults = {
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- ...options
- };
- const response = state.clientType === "oauth-app" ? await OAuthMethods6.deleteToken({
- clientType: "oauth-app",
- ...optionsWithDefaults
- }) : (
- // istanbul ignore next
- await OAuthMethods6.deleteToken({
- clientType: "github-app",
- ...optionsWithDefaults
- })
- );
- await emitEvent(state, {
- name: "token",
- action: "deleted",
- token: options.token,
- octokit: new state.Octokit({
- authStrategy: import_auth_unauthenticated.createUnauthenticatedAuth,
- auth: {
- reason: `Handling "token.deleted" event. The access for the token has been revoked.`
- }
- })
- });
- return response;
-}
-
-// pkg/dist-src/methods/delete-authorization.js
-var OAuthMethods7 = __toESM(__nccwpck_require__(8445));
-var import_auth_unauthenticated2 = __nccwpck_require__(9567);
-async function deleteAuthorizationWithState(state, options) {
- const optionsWithDefaults = {
- clientId: state.clientId,
- clientSecret: state.clientSecret,
- request: state.octokit.request,
- ...options
- };
- const response = state.clientType === "oauth-app" ? await OAuthMethods7.deleteAuthorization({
- clientType: "oauth-app",
- ...optionsWithDefaults
- }) : (
- // istanbul ignore next
- await OAuthMethods7.deleteAuthorization({
- clientType: "github-app",
- ...optionsWithDefaults
- })
- );
- await emitEvent(state, {
- name: "token",
- action: "deleted",
- token: options.token,
- octokit: new state.Octokit({
- authStrategy: import_auth_unauthenticated2.createUnauthenticatedAuth,
- auth: {
- reason: `Handling "token.deleted" event. The access for the token has been revoked.`
- }
- })
- });
- await emitEvent(state, {
- name: "authorization",
- action: "deleted",
- token: options.token,
- octokit: new state.Octokit({
- authStrategy: import_auth_unauthenticated2.createUnauthenticatedAuth,
- auth: {
- reason: `Handling "authorization.deleted" event. The access for the app has been revoked.`
- }
- })
- });
- return response;
-}
-
-// pkg/dist-src/middleware/unknown-route-response.js
-function unknownRouteResponse(request) {
- return {
- status: 404,
- headers: { "content-type": "application/json" },
- text: JSON.stringify({
- error: `Unknown route: ${request.method} ${request.url}`
- })
- };
-}
-
-// pkg/dist-src/middleware/handle-request.js
-async function handleRequest(app, { pathPrefix = "/api/github/oauth" }, request) {
- if (request.method === "OPTIONS") {
- return {
- status: 200,
- headers: {
- "access-control-allow-origin": "*",
- "access-control-allow-methods": "*",
- "access-control-allow-headers": "Content-Type, User-Agent, Authorization"
- }
- };
- }
- let { pathname } = new URL(request.url, "http://localhost");
- if (!pathname.startsWith(`${pathPrefix}/`)) {
- return void 0;
- }
- pathname = pathname.slice(pathPrefix.length + 1);
- const route = [request.method, pathname].join(" ");
- const routes = {
- getLogin: `GET login`,
- getCallback: `GET callback`,
- createToken: `POST token`,
- getToken: `GET token`,
- patchToken: `PATCH token`,
- patchRefreshToken: `PATCH refresh-token`,
- scopeToken: `POST token/scoped`,
- deleteToken: `DELETE token`,
- deleteGrant: `DELETE grant`
- };
- if (!Object.values(routes).includes(route)) {
- return unknownRouteResponse(request);
- }
- let json;
- try {
- const text = await request.text();
- json = text ? JSON.parse(text) : {};
- } catch (error) {
- return {
- status: 400,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify({
- error: "[@octokit/oauth-app] request error"
- })
- };
- }
- const { searchParams } = new URL(request.url, "http://localhost");
- const query = Object.fromEntries(searchParams);
- const headers = request.headers;
- try {
- if (route === routes.getLogin) {
- const { url } = app.getWebFlowAuthorizationUrl({
- state: query.state,
- scopes: query.scopes ? query.scopes.split(",") : void 0,
- allowSignup: query.allowSignup ? query.allowSignup === "true" : void 0,
- redirectUrl: query.redirectUrl
- });
- return { status: 302, headers: { location: url } };
- }
- if (route === routes.getCallback) {
- if (query.error) {
- throw new Error(
- `[@octokit/oauth-app] ${query.error} ${query.error_description}`
- );
- }
- if (!query.code) {
- throw new Error('[@octokit/oauth-app] "code" parameter is required');
- }
- const {
- authentication: { token: token2 }
- } = await app.createToken({
- code: query.code
- });
- return {
- status: 200,
- headers: {
- "content-type": "text/html"
- },
- text: `Token created successfully
-
-Your token is: ${token2}. Copy it now as it cannot be shown again.
`
- };
- }
- if (route === routes.createToken) {
- const { code, redirectUrl } = json;
- if (!code) {
- throw new Error('[@octokit/oauth-app] "code" parameter is required');
- }
- const result = await app.createToken({
- code,
- redirectUrl
- });
- delete result.authentication.clientSecret;
- return {
- status: 201,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify(result)
- };
- }
- if (route === routes.getToken) {
- const token2 = headers.authorization?.substr("token ".length);
- if (!token2) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- const result = await app.checkToken({
- token: token2
- });
- delete result.authentication.clientSecret;
- return {
- status: 200,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify(result)
- };
- }
- if (route === routes.patchToken) {
- const token2 = headers.authorization?.substr("token ".length);
- if (!token2) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- const result = await app.resetToken({ token: token2 });
- delete result.authentication.clientSecret;
- return {
- status: 200,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify(result)
- };
- }
- if (route === routes.patchRefreshToken) {
- const token2 = headers.authorization?.substr("token ".length);
- if (!token2) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- const { refreshToken: refreshToken2 } = json;
- if (!refreshToken2) {
- throw new Error(
- "[@octokit/oauth-app] refreshToken must be sent in request body"
- );
- }
- const result = await app.refreshToken({ refreshToken: refreshToken2 });
- delete result.authentication.clientSecret;
- return {
- status: 200,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify(result)
- };
- }
- if (route === routes.scopeToken) {
- const token2 = headers.authorization?.substr("token ".length);
- if (!token2) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- const result = await app.scopeToken({
- token: token2,
- ...json
- });
- delete result.authentication.clientSecret;
- return {
- status: 200,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify(result)
- };
- }
- if (route === routes.deleteToken) {
- const token2 = headers.authorization?.substr("token ".length);
- if (!token2) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- await app.deleteToken({
- token: token2
- });
- return {
- status: 204,
- headers: { "access-control-allow-origin": "*" }
- };
- }
- const token = headers.authorization?.substr("token ".length);
- if (!token) {
- throw new Error(
- '[@octokit/oauth-app] "Authorization" header is required'
- );
- }
- await app.deleteAuthorization({
- token
- });
- return {
- status: 204,
- headers: { "access-control-allow-origin": "*" }
- };
- } catch (error) {
- return {
- status: 400,
- headers: {
- "content-type": "application/json",
- "access-control-allow-origin": "*"
- },
- text: JSON.stringify({ error: error.message })
- };
- }
-}
-
-// pkg/dist-src/middleware/node/parse-request.js
-function parseRequest(request) {
- const { method, url, headers } = request;
- async function text() {
- const text2 = await new Promise((resolve, reject) => {
- let bodyChunks = [];
- request.on("error", reject).on("data", (chunk) => bodyChunks.push(chunk)).on("end", () => resolve(Buffer.concat(bodyChunks).toString()));
- });
- return text2;
- }
- return { method, url, headers, text };
-}
-
-// pkg/dist-src/middleware/node/send-response.js
-function sendResponse(octokitResponse, response) {
- response.writeHead(octokitResponse.status, octokitResponse.headers);
- response.end(octokitResponse.text);
-}
-
-// pkg/dist-src/middleware/node/index.js
-function createNodeMiddleware(app, options = {}) {
- return async function(request, response, next) {
- const octokitRequest = await parseRequest(request);
- const octokitResponse = await handleRequest(app, options, octokitRequest);
- if (octokitResponse) {
- sendResponse(octokitResponse, response);
- return true;
- } else {
- next?.();
- return false;
- }
- };
-}
-
-// pkg/dist-src/middleware/web-worker/parse-request.js
-function parseRequest2(request) {
- const headers = Object.fromEntries(request.headers.entries());
- return {
- method: request.method,
- url: request.url,
- headers,
- text: () => request.text()
- };
-}
-
-// pkg/dist-src/middleware/web-worker/send-response.js
-function sendResponse2(octokitResponse) {
- return new Response(octokitResponse.text, {
- status: octokitResponse.status,
- headers: octokitResponse.headers
- });
-}
-
-// pkg/dist-src/middleware/web-worker/index.js
-function createWebWorkerHandler(app, options = {}) {
- return async function(request) {
- const octokitRequest = await parseRequest2(request);
- const octokitResponse = await handleRequest(app, options, octokitRequest);
- return octokitResponse ? sendResponse2(octokitResponse) : void 0;
- };
-}
-
-// pkg/dist-src/middleware/aws-lambda/api-gateway-v2-parse-request.js
-function parseRequest3(request) {
- const { method } = request.requestContext.http;
- let url = request.rawPath;
- const { stage } = request.requestContext;
- if (url.startsWith("/" + stage))
- url = url.substring(stage.length + 1);
- if (request.rawQueryString)
- url += "?" + request.rawQueryString;
- const headers = request.headers;
- const text = async () => request.body || "";
- return { method, url, headers, text };
-}
-
-// pkg/dist-src/middleware/aws-lambda/api-gateway-v2-send-response.js
-function sendResponse3(octokitResponse) {
- return {
- statusCode: octokitResponse.status,
- headers: octokitResponse.headers,
- body: octokitResponse.text
- };
-}
-
-// pkg/dist-src/middleware/aws-lambda/api-gateway-v2.js
-function createAWSLambdaAPIGatewayV2Handler(app, options = {}) {
- return async function(event) {
- const request = parseRequest3(event);
- const response = await handleRequest(app, options, request);
- return response ? sendResponse3(response) : void 0;
- };
-}
-
-// pkg/dist-src/index.js
-var OAuthApp = class {
- static {
- this.VERSION = VERSION;
- }
- static defaults(defaults) {
- const OAuthAppWithDefaults = class extends this {
- constructor(...args) {
- super({
- ...defaults,
- ...args[0]
- });
- }
- };
- return OAuthAppWithDefaults;
- }
- constructor(options) {
- const Octokit2 = options.Octokit || OAuthAppOctokit;
- this.type = options.clientType || "oauth-app";
- const octokit = new Octokit2({
- authStrategy: import_auth_oauth_app.createOAuthAppAuth,
- auth: {
- clientType: this.type,
- clientId: options.clientId,
- clientSecret: options.clientSecret
- }
- });
- const state = {
- clientType: this.type,
- clientId: options.clientId,
- clientSecret: options.clientSecret,
- // @ts-expect-error defaultScopes not permitted for GitHub Apps
- defaultScopes: options.defaultScopes || [],
- allowSignup: options.allowSignup,
- baseUrl: options.baseUrl,
- redirectUrl: options.redirectUrl,
- log: options.log,
- Octokit: Octokit2,
- octokit,
- eventHandlers: {}
- };
- this.on = addEventHandler.bind(null, state);
- this.octokit = octokit;
- this.getUserOctokit = getUserOctokitWithState.bind(null, state);
- this.getWebFlowAuthorizationUrl = getWebFlowAuthorizationUrlWithState.bind(
- null,
- state
- );
- this.createToken = createTokenWithState.bind(
- null,
- state
- );
- this.checkToken = checkTokenWithState.bind(
- null,
- state
- );
- this.resetToken = resetTokenWithState.bind(
- null,
- state
- );
- this.refreshToken = refreshTokenWithState.bind(
- null,
- state
- );
- this.scopeToken = scopeTokenWithState.bind(
- null,
- state
- );
- this.deleteToken = deleteTokenWithState.bind(null, state);
- this.deleteAuthorization = deleteAuthorizationWithState.bind(null, state);
- }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 2272:
-/***/ ((module) => {
-
-"use strict";
-
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- oauthAuthorizationUrl: () => oauthAuthorizationUrl
-});
-module.exports = __toCommonJS(dist_src_exports);
-function oauthAuthorizationUrl(options) {
- const clientType = options.clientType || "oauth-app";
- const baseUrl = options.baseUrl || "https://github.com";
- const result = {
- clientType,
- allowSignup: options.allowSignup === false ? false : true,
- clientId: options.clientId,
- login: options.login || null,
- redirectUrl: options.redirectUrl || null,
- state: options.state || Math.random().toString(36).substr(2),
- url: ""
- };
- if (clientType === "oauth-app") {
- const scopes = "scopes" in options ? options.scopes : [];
- result.scopes = typeof scopes === "string" ? scopes.split(/[,\s]+/).filter(Boolean) : scopes;
- }
- result.url = urlBuilderAuthorize(`${baseUrl}/login/oauth/authorize`, result);
- return result;
-}
-function urlBuilderAuthorize(base, options) {
- const map = {
- allowSignup: "allow_signup",
- clientId: "client_id",
- login: "login",
- redirectUrl: "redirect_uri",
- scopes: "scope",
- state: "state"
- };
- let url = base;
- Object.keys(map).filter((k) => options[k] !== null).filter((k) => {
- if (k !== "scopes")
- return true;
- if (options.clientType === "github-app")
- return false;
- return !Array.isArray(options[k]) || options[k].length > 0;
- }).map((key) => [map[key], `${options[key]}`]).forEach(([key, value], index) => {
- url += index === 0 ? `?` : "&";
- url += `${key}=${encodeURIComponent(value)}`;
- });
- return url;
-}
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 8445:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
-
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
-));
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- VERSION: () => VERSION,
- checkToken: () => checkToken,
- createDeviceCode: () => createDeviceCode,
- deleteAuthorization: () => deleteAuthorization,
- deleteToken: () => deleteToken,
- exchangeDeviceCode: () => exchangeDeviceCode,
- exchangeWebFlowCode: () => exchangeWebFlowCode,
- getWebFlowAuthorizationUrl: () => getWebFlowAuthorizationUrl,
- refreshToken: () => refreshToken,
- resetToken: () => resetToken,
- scopeToken: () => scopeToken
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/version.js
-var VERSION = "4.0.1";
-
-// pkg/dist-src/get-web-flow-authorization-url.js
-var import_oauth_authorization_url = __nccwpck_require__(2272);
-var import_request = __nccwpck_require__(6234);
-
-// pkg/dist-src/utils.js
-var import_request_error = __nccwpck_require__(537);
-function requestToOAuthBaseUrl(request) {
- const endpointDefaults = request.endpoint.DEFAULTS;
- return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", "");
-}
-async function oauthRequest(request, route, parameters) {
- const withOAuthParameters = {
- baseUrl: requestToOAuthBaseUrl(request),
- headers: {
- accept: "application/json"
- },
- ...parameters
- };
- const response = await request(route, withOAuthParameters);
- if ("error" in response.data) {
- const error = new import_request_error.RequestError(
- `${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,
- 400,
- {
- request: request.endpoint.merge(
- route,
- withOAuthParameters
- ),
- headers: response.headers
- }
- );
- error.response = response;
- throw error;
- }
- return response;
-}
-
-// pkg/dist-src/get-web-flow-authorization-url.js
-function getWebFlowAuthorizationUrl({
- request = import_request.request,
- ...options
-}) {
- const baseUrl = requestToOAuthBaseUrl(request);
- return (0, import_oauth_authorization_url.oauthAuthorizationUrl)({
- ...options,
- baseUrl
- });
-}
-
-// pkg/dist-src/exchange-web-flow-code.js
-var import_request2 = __nccwpck_require__(6234);
-async function exchangeWebFlowCode(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request2.request;
- const response = await oauthRequest(
- request,
- "POST /login/oauth/access_token",
- {
- client_id: options.clientId,
- client_secret: options.clientSecret,
- code: options.code,
- redirect_uri: options.redirectUrl
- }
- );
- const authentication = {
- clientType: options.clientType,
- clientId: options.clientId,
- clientSecret: options.clientSecret,
- token: response.data.access_token,
- scopes: response.data.scope.split(/\s+/).filter(Boolean)
- };
- if (options.clientType === "github-app") {
- if ("refresh_token" in response.data) {
- const apiTimeInMs = new Date(response.headers.date).getTime();
- authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp(
- apiTimeInMs,
- response.data.expires_in
- ), authentication.refreshTokenExpiresAt = toTimestamp(
- apiTimeInMs,
- response.data.refresh_token_expires_in
- );
- }
- delete authentication.scopes;
- }
- return { ...response, authentication };
-}
-function toTimestamp(apiTimeInMs, expirationInSeconds) {
- return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
-}
-
-// pkg/dist-src/create-device-code.js
-var import_request3 = __nccwpck_require__(6234);
-async function createDeviceCode(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request3.request;
- const parameters = {
- client_id: options.clientId
- };
- if ("scopes" in options && Array.isArray(options.scopes)) {
- parameters.scope = options.scopes.join(" ");
- }
- return oauthRequest(request, "POST /login/device/code", parameters);
-}
-
-// pkg/dist-src/exchange-device-code.js
-var import_request4 = __nccwpck_require__(6234);
-async function exchangeDeviceCode(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request4.request;
- const response = await oauthRequest(
- request,
- "POST /login/oauth/access_token",
- {
- client_id: options.clientId,
- device_code: options.code,
- grant_type: "urn:ietf:params:oauth:grant-type:device_code"
- }
- );
- const authentication = {
- clientType: options.clientType,
- clientId: options.clientId,
- token: response.data.access_token,
- scopes: response.data.scope.split(/\s+/).filter(Boolean)
- };
- if ("clientSecret" in options) {
- authentication.clientSecret = options.clientSecret;
- }
- if (options.clientType === "github-app") {
- if ("refresh_token" in response.data) {
- const apiTimeInMs = new Date(response.headers.date).getTime();
- authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp2(
- apiTimeInMs,
- response.data.expires_in
- ), authentication.refreshTokenExpiresAt = toTimestamp2(
- apiTimeInMs,
- response.data.refresh_token_expires_in
- );
- }
- delete authentication.scopes;
- }
- return { ...response, authentication };
-}
-function toTimestamp2(apiTimeInMs, expirationInSeconds) {
- return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
-}
-
-// pkg/dist-src/check-token.js
-var import_request5 = __nccwpck_require__(6234);
-var import_btoa_lite = __toESM(__nccwpck_require__(2358));
-async function checkToken(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request5.request;
- const response = await request("POST /applications/{client_id}/token", {
- headers: {
- authorization: `basic ${(0, import_btoa_lite.default)(
- `${options.clientId}:${options.clientSecret}`
- )}`
- },
- client_id: options.clientId,
- access_token: options.token
- });
- const authentication = {
- clientType: options.clientType,
- clientId: options.clientId,
- clientSecret: options.clientSecret,
- token: options.token,
- scopes: response.data.scopes
- };
- if (response.data.expires_at)
- authentication.expiresAt = response.data.expires_at;
- if (options.clientType === "github-app") {
- delete authentication.scopes;
- }
- return { ...response, authentication };
-}
-
-// pkg/dist-src/refresh-token.js
-var import_request6 = __nccwpck_require__(6234);
-async function refreshToken(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request6.request;
- const response = await oauthRequest(
- request,
- "POST /login/oauth/access_token",
- {
- client_id: options.clientId,
- client_secret: options.clientSecret,
- grant_type: "refresh_token",
- refresh_token: options.refreshToken
- }
- );
- const apiTimeInMs = new Date(response.headers.date).getTime();
- const authentication = {
- clientType: "github-app",
- clientId: options.clientId,
- clientSecret: options.clientSecret,
- token: response.data.access_token,
- refreshToken: response.data.refresh_token,
- expiresAt: toTimestamp3(apiTimeInMs, response.data.expires_in),
- refreshTokenExpiresAt: toTimestamp3(
- apiTimeInMs,
- response.data.refresh_token_expires_in
- )
- };
- return { ...response, authentication };
-}
-function toTimestamp3(apiTimeInMs, expirationInSeconds) {
- return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
-}
-
-// pkg/dist-src/scope-token.js
-var import_request7 = __nccwpck_require__(6234);
-var import_btoa_lite2 = __toESM(__nccwpck_require__(2358));
-async function scopeToken(options) {
- const {
- request: optionsRequest,
- clientType,
- clientId,
- clientSecret,
- token,
- ...requestOptions
- } = options;
- const request = optionsRequest || /* istanbul ignore next: we always pass a custom request in tests */
- import_request7.request;
- const response = await request(
- "POST /applications/{client_id}/token/scoped",
- {
- headers: {
- authorization: `basic ${(0, import_btoa_lite2.default)(`${clientId}:${clientSecret}`)}`
- },
- client_id: clientId,
- access_token: token,
- ...requestOptions
- }
- );
- const authentication = Object.assign(
- {
- clientType,
- clientId,
- clientSecret,
- token: response.data.token
- },
- response.data.expires_at ? { expiresAt: response.data.expires_at } : {}
- );
- return { ...response, authentication };
-}
-
-// pkg/dist-src/reset-token.js
-var import_request8 = __nccwpck_require__(6234);
-var import_btoa_lite3 = __toESM(__nccwpck_require__(2358));
-async function resetToken(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request8.request;
- const auth = (0, import_btoa_lite3.default)(`${options.clientId}:${options.clientSecret}`);
- const response = await request(
- "PATCH /applications/{client_id}/token",
- {
- headers: {
- authorization: `basic ${auth}`
- },
- client_id: options.clientId,
- access_token: options.token
- }
- );
- const authentication = {
- clientType: options.clientType,
- clientId: options.clientId,
- clientSecret: options.clientSecret,
- token: response.data.token,
- scopes: response.data.scopes
- };
- if (response.data.expires_at)
- authentication.expiresAt = response.data.expires_at;
- if (options.clientType === "github-app") {
- delete authentication.scopes;
- }
- return { ...response, authentication };
-}
-
-// pkg/dist-src/delete-token.js
-var import_request9 = __nccwpck_require__(6234);
-var import_btoa_lite4 = __toESM(__nccwpck_require__(2358));
-async function deleteToken(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request9.request;
- const auth = (0, import_btoa_lite4.default)(`${options.clientId}:${options.clientSecret}`);
- return request(
- "DELETE /applications/{client_id}/token",
- {
- headers: {
- authorization: `basic ${auth}`
- },
- client_id: options.clientId,
- access_token: options.token
- }
- );
-}
-
-// pkg/dist-src/delete-authorization.js
-var import_request10 = __nccwpck_require__(6234);
-var import_btoa_lite5 = __toESM(__nccwpck_require__(2358));
-async function deleteAuthorization(options) {
- const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
- import_request10.request;
- const auth = (0, import_btoa_lite5.default)(`${options.clientId}:${options.clientSecret}`);
- return request(
- "DELETE /applications/{client_id}/grant",
- {
- headers: {
- authorization: `basic ${auth}`
- },
- client_id: options.clientId,
- access_token: options.token
- }
- );
-}
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 5883:
-/***/ ((module) => {
-
-"use strict";
-
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- paginateGraphql: () => paginateGraphql
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/errors.js
-var generateMessage = (path, cursorValue) => `The cursor at "${path.join(
- ","
-)}" did not change its value "${cursorValue}" after a page transition. Please make sure your that your query is set up correctly.`;
-var MissingCursorChange = class extends Error {
- constructor(pageInfo, cursorValue) {
- super(generateMessage(pageInfo.pathInQuery, cursorValue));
- this.pageInfo = pageInfo;
- this.cursorValue = cursorValue;
- this.name = "MissingCursorChangeError";
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- }
-};
-var MissingPageInfo = class extends Error {
- constructor(response) {
- super(
- `No pageInfo property found in response. Please make sure to specify the pageInfo in your query. Response-Data: ${JSON.stringify(
- response,
- null,
- 2
- )}`
- );
- this.response = response;
- this.name = "MissingPageInfo";
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- }
-};
-
-// pkg/dist-src/object-helpers.js
-var isObject = (value) => Object.prototype.toString.call(value) === "[object Object]";
-function findPaginatedResourcePath(responseData) {
- const paginatedResourcePath = deepFindPathToProperty(
- responseData,
- "pageInfo"
- );
- if (paginatedResourcePath.length === 0) {
- throw new MissingPageInfo(responseData);
- }
- return paginatedResourcePath;
-}
-var deepFindPathToProperty = (object, searchProp, path = []) => {
- for (const key of Object.keys(object)) {
- const currentPath = [...path, key];
- const currentValue = object[key];
- if (currentValue.hasOwnProperty(searchProp)) {
- return currentPath;
- }
- if (isObject(currentValue)) {
- const result = deepFindPathToProperty(
- currentValue,
- searchProp,
- currentPath
- );
- if (result.length > 0) {
- return result;
- }
- }
- }
- return [];
-};
-var get = (object, path) => {
- return path.reduce((current, nextProperty) => current[nextProperty], object);
-};
-var set = (object, path, mutator) => {
- const lastProperty = path[path.length - 1];
- const parentPath = [...path].slice(0, -1);
- const parent = get(object, parentPath);
- if (typeof mutator === "function") {
- parent[lastProperty] = mutator(parent[lastProperty]);
- } else {
- parent[lastProperty] = mutator;
- }
-};
-
-// pkg/dist-src/extract-page-info.js
-var extractPageInfos = (responseData) => {
- const pageInfoPath = findPaginatedResourcePath(responseData);
- return {
- pathInQuery: pageInfoPath,
- pageInfo: get(responseData, [...pageInfoPath, "pageInfo"])
- };
-};
-
-// pkg/dist-src/page-info.js
-var isForwardSearch = (givenPageInfo) => {
- return givenPageInfo.hasOwnProperty("hasNextPage");
-};
-var getCursorFrom = (pageInfo) => isForwardSearch(pageInfo) ? pageInfo.endCursor : pageInfo.startCursor;
-var hasAnotherPage = (pageInfo) => isForwardSearch(pageInfo) ? pageInfo.hasNextPage : pageInfo.hasPreviousPage;
-
-// pkg/dist-src/iterator.js
-var createIterator = (octokit) => {
- return (query, initialParameters = {}) => {
- let nextPageExists = true;
- let parameters = { ...initialParameters };
- return {
- [Symbol.asyncIterator]: () => ({
- async next() {
- if (!nextPageExists)
- return { done: true, value: {} };
- const response = await octokit.graphql(
- query,
- parameters
- );
- const pageInfoContext = extractPageInfos(response);
- const nextCursorValue = getCursorFrom(pageInfoContext.pageInfo);
- nextPageExists = hasAnotherPage(pageInfoContext.pageInfo);
- if (nextPageExists && nextCursorValue === parameters.cursor) {
- throw new MissingCursorChange(pageInfoContext, nextCursorValue);
- }
- parameters = {
- ...parameters,
- cursor: nextCursorValue
- };
- return { done: false, value: response };
- }
- })
- };
- };
-};
-
-// pkg/dist-src/merge-responses.js
-var mergeResponses = (response1, response2) => {
- if (Object.keys(response1).length === 0) {
- return Object.assign(response1, response2);
- }
- const path = findPaginatedResourcePath(response1);
- const nodesPath = [...path, "nodes"];
- const newNodes = get(response2, nodesPath);
- if (newNodes) {
- set(response1, nodesPath, (values) => {
- return [...values, ...newNodes];
- });
- }
- const edgesPath = [...path, "edges"];
- const newEdges = get(response2, edgesPath);
- if (newEdges) {
- set(response1, edgesPath, (values) => {
- return [...values, ...newEdges];
- });
- }
- const pageInfoPath = [...path, "pageInfo"];
- set(response1, pageInfoPath, get(response2, pageInfoPath));
- return response1;
-};
-
-// pkg/dist-src/paginate.js
-var createPaginate = (octokit) => {
- const iterator = createIterator(octokit);
- return async (query, initialParameters = {}) => {
- let mergedResponse = {};
- for await (const response of iterator(
- query,
- initialParameters
- )) {
- mergedResponse = mergeResponses(mergedResponse, response);
- }
- return mergedResponse;
- };
-};
-
-// pkg/dist-src/index.js
-function paginateGraphql(octokit) {
- octokit.graphql;
- return {
- graphql: Object.assign(octokit.graphql, {
- paginate: Object.assign(createPaginate(octokit), {
- iterator: createIterator(octokit)
- })
- })
- };
-}
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 4193:
-/***/ ((module) => {
-
-"use strict";
-
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- composePaginateRest: () => composePaginateRest,
- isPaginatingEndpoint: () => isPaginatingEndpoint,
- paginateRest: () => paginateRest,
- paginatingEndpoints: () => paginatingEndpoints
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/version.js
-var VERSION = "9.2.1";
-
-// pkg/dist-src/normalize-paginated-list-response.js
-function normalizePaginatedListResponse(response) {
- if (!response.data) {
- return {
- ...response,
- data: []
- };
- }
- const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
- if (!responseNeedsNormalization)
- return response;
- const incompleteResults = response.data.incomplete_results;
- const repositorySelection = response.data.repository_selection;
- const totalCount = response.data.total_count;
- delete response.data.incomplete_results;
- delete response.data.repository_selection;
- delete response.data.total_count;
- const namespaceKey = Object.keys(response.data)[0];
- const data = response.data[namespaceKey];
- response.data = data;
- if (typeof incompleteResults !== "undefined") {
- response.data.incomplete_results = incompleteResults;
- }
- if (typeof repositorySelection !== "undefined") {
- response.data.repository_selection = repositorySelection;
- }
- response.data.total_count = totalCount;
- return response;
-}
-
-// pkg/dist-src/iterator.js
-function iterator(octokit, route, parameters) {
- const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
- const requestMethod = typeof route === "function" ? route : octokit.request;
- const method = options.method;
- const headers = options.headers;
- let url = options.url;
- return {
- [Symbol.asyncIterator]: () => ({
- async next() {
- if (!url)
- return { done: true };
- try {
- const response = await requestMethod({ method, url, headers });
- const normalizedResponse = normalizePaginatedListResponse(response);
- url = ((normalizedResponse.headers.link || "").match(
- /<([^>]+)>;\s*rel="next"/
- ) || [])[1];
- return { value: normalizedResponse };
- } catch (error) {
- if (error.status !== 409)
- throw error;
- url = "";
- return {
- value: {
- status: 200,
- headers: {},
- data: []
- }
- };
- }
- }
- })
- };
-}
-
-// pkg/dist-src/paginate.js
-function paginate(octokit, route, parameters, mapFn) {
- if (typeof parameters === "function") {
- mapFn = parameters;
- parameters = void 0;
- }
- return gather(
- octokit,
- [],
- iterator(octokit, route, parameters)[Symbol.asyncIterator](),
- mapFn
- );
-}
-function gather(octokit, results, iterator2, mapFn) {
- return iterator2.next().then((result) => {
- if (result.done) {
- return results;
- }
- let earlyExit = false;
- function done() {
- earlyExit = true;
- }
- results = results.concat(
- mapFn ? mapFn(result.value, done) : result.value.data
- );
- if (earlyExit) {
- return results;
- }
- return gather(octokit, results, iterator2, mapFn);
- });
-}
-
-// pkg/dist-src/compose-paginate.js
-var composePaginateRest = Object.assign(paginate, {
- iterator
-});
-
-// pkg/dist-src/generated/paginating-endpoints.js
-var paginatingEndpoints = [
- "GET /advisories",
- "GET /app/hook/deliveries",
- "GET /app/installation-requests",
- "GET /app/installations",
- "GET /assignments/{assignment_id}/accepted_assignments",
- "GET /classrooms",
- "GET /classrooms/{classroom_id}/assignments",
- "GET /enterprises/{enterprise}/dependabot/alerts",
- "GET /enterprises/{enterprise}/secret-scanning/alerts",
- "GET /events",
- "GET /gists",
- "GET /gists/public",
- "GET /gists/starred",
- "GET /gists/{gist_id}/comments",
- "GET /gists/{gist_id}/commits",
- "GET /gists/{gist_id}/forks",
- "GET /installation/repositories",
- "GET /issues",
- "GET /licenses",
- "GET /marketplace_listing/plans",
- "GET /marketplace_listing/plans/{plan_id}/accounts",
- "GET /marketplace_listing/stubbed/plans",
- "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
- "GET /networks/{owner}/{repo}/events",
- "GET /notifications",
- "GET /organizations",
- "GET /orgs/{org}/actions/cache/usage-by-repository",
- "GET /orgs/{org}/actions/permissions/repositories",
- "GET /orgs/{org}/actions/runners",
- "GET /orgs/{org}/actions/secrets",
- "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
- "GET /orgs/{org}/actions/variables",
- "GET /orgs/{org}/actions/variables/{name}/repositories",
- "GET /orgs/{org}/blocks",
- "GET /orgs/{org}/code-scanning/alerts",
- "GET /orgs/{org}/codespaces",
- "GET /orgs/{org}/codespaces/secrets",
- "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
- "GET /orgs/{org}/copilot/billing/seats",
- "GET /orgs/{org}/dependabot/alerts",
- "GET /orgs/{org}/dependabot/secrets",
- "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
- "GET /orgs/{org}/events",
- "GET /orgs/{org}/failed_invitations",
- "GET /orgs/{org}/hooks",
- "GET /orgs/{org}/hooks/{hook_id}/deliveries",
- "GET /orgs/{org}/installations",
- "GET /orgs/{org}/invitations",
- "GET /orgs/{org}/invitations/{invitation_id}/teams",
- "GET /orgs/{org}/issues",
- "GET /orgs/{org}/members",
- "GET /orgs/{org}/members/{username}/codespaces",
- "GET /orgs/{org}/migrations",
- "GET /orgs/{org}/migrations/{migration_id}/repositories",
- "GET /orgs/{org}/organization-roles/{role_id}/teams",
- "GET /orgs/{org}/organization-roles/{role_id}/users",
- "GET /orgs/{org}/outside_collaborators",
- "GET /orgs/{org}/packages",
- "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
- "GET /orgs/{org}/personal-access-token-requests",
- "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
- "GET /orgs/{org}/personal-access-tokens",
- "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
- "GET /orgs/{org}/projects",
- "GET /orgs/{org}/properties/values",
- "GET /orgs/{org}/public_members",
- "GET /orgs/{org}/repos",
- "GET /orgs/{org}/rulesets",
- "GET /orgs/{org}/rulesets/rule-suites",
- "GET /orgs/{org}/secret-scanning/alerts",
- "GET /orgs/{org}/security-advisories",
- "GET /orgs/{org}/teams",
- "GET /orgs/{org}/teams/{team_slug}/discussions",
- "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
- "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
- "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
- "GET /orgs/{org}/teams/{team_slug}/invitations",
- "GET /orgs/{org}/teams/{team_slug}/members",
- "GET /orgs/{org}/teams/{team_slug}/projects",
- "GET /orgs/{org}/teams/{team_slug}/repos",
- "GET /orgs/{org}/teams/{team_slug}/teams",
- "GET /projects/columns/{column_id}/cards",
- "GET /projects/{project_id}/collaborators",
- "GET /projects/{project_id}/columns",
- "GET /repos/{owner}/{repo}/actions/artifacts",
- "GET /repos/{owner}/{repo}/actions/caches",
- "GET /repos/{owner}/{repo}/actions/organization-secrets",
- "GET /repos/{owner}/{repo}/actions/organization-variables",
- "GET /repos/{owner}/{repo}/actions/runners",
- "GET /repos/{owner}/{repo}/actions/runs",
- "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
- "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
- "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
- "GET /repos/{owner}/{repo}/actions/secrets",
- "GET /repos/{owner}/{repo}/actions/variables",
- "GET /repos/{owner}/{repo}/actions/workflows",
- "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
- "GET /repos/{owner}/{repo}/activity",
- "GET /repos/{owner}/{repo}/assignees",
- "GET /repos/{owner}/{repo}/branches",
- "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
- "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
- "GET /repos/{owner}/{repo}/code-scanning/alerts",
- "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
- "GET /repos/{owner}/{repo}/code-scanning/analyses",
- "GET /repos/{owner}/{repo}/codespaces",
- "GET /repos/{owner}/{repo}/codespaces/devcontainers",
- "GET /repos/{owner}/{repo}/codespaces/secrets",
- "GET /repos/{owner}/{repo}/collaborators",
- "GET /repos/{owner}/{repo}/comments",
- "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
- "GET /repos/{owner}/{repo}/commits",
- "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
- "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
- "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
- "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
- "GET /repos/{owner}/{repo}/commits/{ref}/status",
- "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
- "GET /repos/{owner}/{repo}/contributors",
- "GET /repos/{owner}/{repo}/dependabot/alerts",
- "GET /repos/{owner}/{repo}/dependabot/secrets",
- "GET /repos/{owner}/{repo}/deployments",
- "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
- "GET /repos/{owner}/{repo}/environments",
- "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
- "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
- "GET /repos/{owner}/{repo}/events",
- "GET /repos/{owner}/{repo}/forks",
- "GET /repos/{owner}/{repo}/hooks",
- "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
- "GET /repos/{owner}/{repo}/invitations",
- "GET /repos/{owner}/{repo}/issues",
- "GET /repos/{owner}/{repo}/issues/comments",
- "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
- "GET /repos/{owner}/{repo}/issues/events",
- "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
- "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
- "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
- "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
- "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
- "GET /repos/{owner}/{repo}/keys",
- "GET /repos/{owner}/{repo}/labels",
- "GET /repos/{owner}/{repo}/milestones",
- "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
- "GET /repos/{owner}/{repo}/notifications",
- "GET /repos/{owner}/{repo}/pages/builds",
- "GET /repos/{owner}/{repo}/projects",
- "GET /repos/{owner}/{repo}/pulls",
- "GET /repos/{owner}/{repo}/pulls/comments",
- "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
- "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
- "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
- "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
- "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
- "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
- "GET /repos/{owner}/{repo}/releases",
- "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
- "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
- "GET /repos/{owner}/{repo}/rules/branches/{branch}",
- "GET /repos/{owner}/{repo}/rulesets",
- "GET /repos/{owner}/{repo}/rulesets/rule-suites",
- "GET /repos/{owner}/{repo}/secret-scanning/alerts",
- "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
- "GET /repos/{owner}/{repo}/security-advisories",
- "GET /repos/{owner}/{repo}/stargazers",
- "GET /repos/{owner}/{repo}/subscribers",
- "GET /repos/{owner}/{repo}/tags",
- "GET /repos/{owner}/{repo}/teams",
- "GET /repos/{owner}/{repo}/topics",
- "GET /repositories",
- "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
- "GET /repositories/{repository_id}/environments/{environment_name}/variables",
- "GET /search/code",
- "GET /search/commits",
- "GET /search/issues",
- "GET /search/labels",
- "GET /search/repositories",
- "GET /search/topics",
- "GET /search/users",
- "GET /teams/{team_id}/discussions",
- "GET /teams/{team_id}/discussions/{discussion_number}/comments",
- "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
- "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
- "GET /teams/{team_id}/invitations",
- "GET /teams/{team_id}/members",
- "GET /teams/{team_id}/projects",
- "GET /teams/{team_id}/repos",
- "GET /teams/{team_id}/teams",
- "GET /user/blocks",
- "GET /user/codespaces",
- "GET /user/codespaces/secrets",
- "GET /user/emails",
- "GET /user/followers",
- "GET /user/following",
- "GET /user/gpg_keys",
- "GET /user/installations",
- "GET /user/installations/{installation_id}/repositories",
- "GET /user/issues",
- "GET /user/keys",
- "GET /user/marketplace_purchases",
- "GET /user/marketplace_purchases/stubbed",
- "GET /user/memberships/orgs",
- "GET /user/migrations",
- "GET /user/migrations/{migration_id}/repositories",
- "GET /user/orgs",
- "GET /user/packages",
- "GET /user/packages/{package_type}/{package_name}/versions",
- "GET /user/public_emails",
- "GET /user/repos",
- "GET /user/repository_invitations",
- "GET /user/social_accounts",
- "GET /user/ssh_signing_keys",
- "GET /user/starred",
- "GET /user/subscriptions",
- "GET /user/teams",
- "GET /users",
- "GET /users/{username}/events",
- "GET /users/{username}/events/orgs/{org}",
- "GET /users/{username}/events/public",
- "GET /users/{username}/followers",
- "GET /users/{username}/following",
- "GET /users/{username}/gists",
- "GET /users/{username}/gpg_keys",
- "GET /users/{username}/keys",
- "GET /users/{username}/orgs",
- "GET /users/{username}/packages",
- "GET /users/{username}/projects",
- "GET /users/{username}/received_events",
- "GET /users/{username}/received_events/public",
- "GET /users/{username}/repos",
- "GET /users/{username}/social_accounts",
- "GET /users/{username}/ssh_signing_keys",
- "GET /users/{username}/starred",
- "GET /users/{username}/subscriptions"
-];
-
-// pkg/dist-src/paginating-endpoints.js
-function isPaginatingEndpoint(arg) {
- if (typeof arg === "string") {
- return paginatingEndpoints.includes(arg);
- } else {
- return false;
- }
-}
-
-// pkg/dist-src/index.js
-function paginateRest(octokit) {
- return {
- paginate: Object.assign(paginate.bind(null, octokit), {
- iterator: iterator.bind(null, octokit)
- })
- };
-}
-paginateRest.VERSION = VERSION;
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
-
-
-/***/ }),
-
-/***/ 3044:
-/***/ ((module) => {
-
-"use strict";
-
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- legacyRestEndpointMethods: () => legacyRestEndpointMethods,
- restEndpointMethods: () => restEndpointMethods
-});
-module.exports = __toCommonJS(dist_src_exports);
-
-// pkg/dist-src/version.js
-var VERSION = "10.4.1";
+var VERSION = "10.4.1";
// pkg/dist-src/generated/endpoints.js
var Endpoints = {
@@ -15489,6 +13882,9 @@ var createLogger = (logger) => ({
// pkg/dist-src/generated/webhook-names.js
var emitterEventNames = [
+ "branch_protection_configuration",
+ "branch_protection_rule.disabled",
+ "branch_protection_rule.enabled",
"branch_protection_rule",
"branch_protection_rule.created",
"branch_protection_rule.deleted",
@@ -15512,6 +13908,11 @@ var emitterEventNames = [
"commit_comment",
"commit_comment.created",
"create",
+ "custom_property",
+ "custom_property.created",
+ "custom_property.deleted",
+ "custom_property_values",
+ "custom_property_values.updated",
"delete",
"dependabot_alert",
"dependabot_alert.created",
@@ -15759,8270 +14160,10181 @@ var emitterEventNames = [
"workflow_run.requested"
];
-// pkg/dist-src/event-handler/on.js
-function handleEventHandlers(state, webhookName, handler) {
- if (!state.hooks[webhookName]) {
- state.hooks[webhookName] = [];
- }
- state.hooks[webhookName].push(handler);
-}
-function receiverOn(state, webhookNameOrNames, handler) {
- if (Array.isArray(webhookNameOrNames)) {
- webhookNameOrNames.forEach(
- (webhookName) => receiverOn(state, webhookName, handler)
- );
- return;
- }
- if (["*", "error"].includes(webhookNameOrNames)) {
- const webhookName = webhookNameOrNames === "*" ? "any" : webhookNameOrNames;
- const message = `Using the "${webhookNameOrNames}" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.on${webhookName.charAt(0).toUpperCase() + webhookName.slice(1)}() method instead`;
- throw new Error(message);
- }
- if (!emitterEventNames.includes(webhookNameOrNames)) {
- state.log.warn(
- `"${webhookNameOrNames}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`
- );
- }
- handleEventHandlers(state, webhookNameOrNames, handler);
-}
-function receiverOnAny(state, handler) {
- handleEventHandlers(state, "*", handler);
-}
-function receiverOnError(state, handler) {
- handleEventHandlers(state, "error", handler);
-}
+// pkg/dist-src/event-handler/on.js
+function handleEventHandlers(state, webhookName, handler) {
+ if (!state.hooks[webhookName]) {
+ state.hooks[webhookName] = [];
+ }
+ state.hooks[webhookName].push(handler);
+}
+function receiverOn(state, webhookNameOrNames, handler) {
+ if (Array.isArray(webhookNameOrNames)) {
+ webhookNameOrNames.forEach(
+ (webhookName) => receiverOn(state, webhookName, handler)
+ );
+ return;
+ }
+ if (["*", "error"].includes(webhookNameOrNames)) {
+ const webhookName = webhookNameOrNames === "*" ? "any" : webhookNameOrNames;
+ const message = `Using the "${webhookNameOrNames}" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.on${webhookName.charAt(0).toUpperCase() + webhookName.slice(1)}() method instead`;
+ throw new Error(message);
+ }
+ if (!emitterEventNames.includes(webhookNameOrNames)) {
+ state.log.warn(
+ `"${webhookNameOrNames}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`
+ );
+ }
+ handleEventHandlers(state, webhookNameOrNames, handler);
+}
+function receiverOnAny(state, handler) {
+ handleEventHandlers(state, "*", handler);
+}
+function receiverOnError(state, handler) {
+ handleEventHandlers(state, "error", handler);
+}
+
+// pkg/dist-src/event-handler/receive.js
+var import_aggregate_error = __toESM(__nccwpck_require__(1231));
+
+// pkg/dist-src/event-handler/wrap-error-handler.js
+function wrapErrorHandler(handler, error) {
+ let returnValue;
+ try {
+ returnValue = handler(error);
+ } catch (error2) {
+ console.log('FATAL: Error occurred in "error" event handler');
+ console.log(error2);
+ }
+ if (returnValue && returnValue.catch) {
+ returnValue.catch((error2) => {
+ console.log('FATAL: Error occurred in "error" event handler');
+ console.log(error2);
+ });
+ }
+}
+
+// pkg/dist-src/event-handler/receive.js
+function getHooks(state, eventPayloadAction, eventName) {
+ const hooks = [state.hooks[eventName], state.hooks["*"]];
+ if (eventPayloadAction) {
+ hooks.unshift(state.hooks[`${eventName}.${eventPayloadAction}`]);
+ }
+ return [].concat(...hooks.filter(Boolean));
+}
+function receiverHandle(state, event) {
+ const errorHandlers = state.hooks.error || [];
+ if (event instanceof Error) {
+ const error = Object.assign(new import_aggregate_error.default([event]), {
+ event,
+ errors: [event]
+ });
+ errorHandlers.forEach((handler) => wrapErrorHandler(handler, error));
+ return Promise.reject(error);
+ }
+ if (!event || !event.name) {
+ throw new import_aggregate_error.default(["Event name not passed"]);
+ }
+ if (!event.payload) {
+ throw new import_aggregate_error.default(["Event payload not passed"]);
+ }
+ const hooks = getHooks(
+ state,
+ "action" in event.payload ? event.payload.action : null,
+ event.name
+ );
+ if (hooks.length === 0) {
+ return Promise.resolve();
+ }
+ const errors = [];
+ const promises = hooks.map((handler) => {
+ let promise = Promise.resolve(event);
+ if (state.transform) {
+ promise = promise.then(state.transform);
+ }
+ return promise.then((event2) => {
+ return handler(event2);
+ }).catch((error) => errors.push(Object.assign(error, { event })));
+ });
+ return Promise.all(promises).then(() => {
+ if (errors.length === 0) {
+ return;
+ }
+ const error = new import_aggregate_error.default(errors);
+ Object.assign(error, {
+ event,
+ errors
+ });
+ errorHandlers.forEach((handler) => wrapErrorHandler(handler, error));
+ throw error;
+ });
+}
+
+// pkg/dist-src/event-handler/remove-listener.js
+function removeListener(state, webhookNameOrNames, handler) {
+ if (Array.isArray(webhookNameOrNames)) {
+ webhookNameOrNames.forEach(
+ (webhookName) => removeListener(state, webhookName, handler)
+ );
+ return;
+ }
+ if (!state.hooks[webhookNameOrNames]) {
+ return;
+ }
+ for (let i = state.hooks[webhookNameOrNames].length - 1; i >= 0; i--) {
+ if (state.hooks[webhookNameOrNames][i] === handler) {
+ state.hooks[webhookNameOrNames].splice(i, 1);
+ return;
+ }
+ }
+}
+
+// pkg/dist-src/event-handler/index.js
+function createEventHandler(options) {
+ const state = {
+ hooks: {},
+ log: createLogger(options && options.log)
+ };
+ if (options && options.transform) {
+ state.transform = options.transform;
+ }
+ return {
+ on: receiverOn.bind(null, state),
+ onAny: receiverOnAny.bind(null, state),
+ onError: receiverOnError.bind(null, state),
+ removeListener: removeListener.bind(null, state),
+ receive: receiverHandle.bind(null, state)
+ };
+}
+
+// pkg/dist-src/index.js
+var import_webhooks_methods2 = __nccwpck_require__(9768);
+
+// pkg/dist-src/verify-and-receive.js
+var import_aggregate_error2 = __toESM(__nccwpck_require__(1231));
+var import_webhooks_methods = __nccwpck_require__(9768);
+async function verifyAndReceive(state, event) {
+ const matchesSignature = await (0, import_webhooks_methods.verify)(
+ state.secret,
+ event.payload,
+ event.signature
+ ).catch(() => false);
+ if (!matchesSignature) {
+ const error = new Error(
+ "[@octokit/webhooks] signature does not match event payload and secret"
+ );
+ return state.eventHandler.receive(
+ Object.assign(error, { event, status: 400 })
+ );
+ }
+ let payload;
+ try {
+ payload = JSON.parse(event.payload);
+ } catch (error) {
+ error.message = "Invalid JSON";
+ error.status = 400;
+ throw new import_aggregate_error2.default([error]);
+ }
+ return state.eventHandler.receive({
+ id: event.id,
+ name: event.name,
+ payload
+ });
+}
+
+// pkg/dist-src/middleware/node/get-missing-headers.js
+var WEBHOOK_HEADERS = [
+ "x-github-event",
+ "x-hub-signature-256",
+ "x-github-delivery"
+];
+function getMissingHeaders(request) {
+ return WEBHOOK_HEADERS.filter((header) => !(header in request.headers));
+}
+
+// pkg/dist-src/middleware/node/get-payload.js
+var import_aggregate_error3 = __toESM(__nccwpck_require__(1231));
+function getPayload(request) {
+ if ("body" in request) {
+ if (typeof request.body === "object" && "rawBody" in request && request.rawBody instanceof Buffer) {
+ return Promise.resolve(request.rawBody.toString("utf8"));
+ } else {
+ return Promise.resolve(request.body);
+ }
+ }
+ return new Promise((resolve, reject) => {
+ let data = [];
+ request.on("error", (error) => reject(new import_aggregate_error3.default([error])));
+ request.on("data", (chunk) => data.push(chunk));
+ request.on(
+ "end",
+ () => (
+ // setImmediate improves the throughput by reducing the pressure from
+ // the event loop
+ setImmediate(
+ resolve,
+ data.length === 1 ? data[0].toString("utf8") : Buffer.concat(data).toString("utf8")
+ )
+ )
+ );
+ });
+}
+
+// pkg/dist-src/middleware/node/on-unhandled-request-default.js
+function onUnhandledRequestDefault(request, response) {
+ response.writeHead(404, {
+ "content-type": "application/json"
+ });
+ response.end(
+ JSON.stringify({
+ error: `Unknown route: ${request.method} ${request.url}`
+ })
+ );
+}
+
+// pkg/dist-src/middleware/node/middleware.js
+async function middleware(webhooks, options, request, response, next) {
+ let pathname;
+ try {
+ pathname = new URL(request.url, "http://localhost").pathname;
+ } catch (error) {
+ response.writeHead(422, {
+ "content-type": "application/json"
+ });
+ response.end(
+ JSON.stringify({
+ error: `Request URL could not be parsed: ${request.url}`
+ })
+ );
+ return true;
+ }
+ if (pathname !== options.path) {
+ next?.();
+ return false;
+ } else if (request.method !== "POST") {
+ onUnhandledRequestDefault(request, response);
+ return true;
+ }
+ if (!request.headers["content-type"] || !request.headers["content-type"].startsWith("application/json")) {
+ response.writeHead(415, {
+ "content-type": "application/json",
+ accept: "application/json"
+ });
+ response.end(
+ JSON.stringify({
+ error: `Unsupported "Content-Type" header value. Must be "application/json"`
+ })
+ );
+ return true;
+ }
+ const missingHeaders = getMissingHeaders(request).join(", ");
+ if (missingHeaders) {
+ response.writeHead(400, {
+ "content-type": "application/json"
+ });
+ response.end(
+ JSON.stringify({
+ error: `Required headers missing: ${missingHeaders}`
+ })
+ );
+ return true;
+ }
+ const eventName = request.headers["x-github-event"];
+ const signatureSHA256 = request.headers["x-hub-signature-256"];
+ const id = request.headers["x-github-delivery"];
+ options.log.debug(`${eventName} event received (id: ${id})`);
+ let didTimeout = false;
+ const timeout = setTimeout(() => {
+ didTimeout = true;
+ response.statusCode = 202;
+ response.end("still processing\n");
+ }, 9e3).unref();
+ try {
+ const payload = await getPayload(request);
+ await webhooks.verifyAndReceive({
+ id,
+ name: eventName,
+ payload,
+ signature: signatureSHA256
+ });
+ clearTimeout(timeout);
+ if (didTimeout)
+ return true;
+ response.end("ok\n");
+ return true;
+ } catch (error) {
+ clearTimeout(timeout);
+ if (didTimeout)
+ return true;
+ const err = Array.from(error)[0];
+ const errorMessage = err.message ? `${err.name}: ${err.message}` : "Error: An Unspecified error occurred";
+ response.statusCode = typeof err.status !== "undefined" ? err.status : 500;
+ options.log.error(error);
+ response.end(
+ JSON.stringify({
+ error: errorMessage
+ })
+ );
+ return true;
+ }
+}
+
+// pkg/dist-src/middleware/node/index.js
+function createNodeMiddleware(webhooks, {
+ path = "/api/github/webhooks",
+ log = createLogger()
+} = {}) {
+ return middleware.bind(null, webhooks, {
+ path,
+ log
+ });
+}
+
+// pkg/dist-src/index.js
+var Webhooks = class {
+ constructor(options) {
+ if (!options || !options.secret) {
+ throw new Error("[@octokit/webhooks] options.secret required");
+ }
+ const state = {
+ eventHandler: createEventHandler(options),
+ secret: options.secret,
+ hooks: {},
+ log: createLogger(options.log)
+ };
+ this.sign = import_webhooks_methods2.sign.bind(null, options.secret);
+ this.verify = import_webhooks_methods2.verify.bind(null, options.secret);
+ this.on = state.eventHandler.on;
+ this.onAny = state.eventHandler.onAny;
+ this.onError = state.eventHandler.onError;
+ this.removeListener = state.eventHandler.removeListener;
+ this.receive = state.eventHandler.receive;
+ this.verifyAndReceive = verifyAndReceive.bind(null, state);
+ }
+};
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
+
+
+/***/ }),
+
+/***/ 1231:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+"use strict";
+
+const indentString = __nccwpck_require__(8043);
+const cleanStack = __nccwpck_require__(7972);
+
+const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
+
+class AggregateError extends Error {
+ constructor(errors) {
+ if (!Array.isArray(errors)) {
+ throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
+ }
+
+ errors = [...errors].map(error => {
+ if (error instanceof Error) {
+ return error;
+ }
+
+ if (error !== null && typeof error === 'object') {
+ // Handle plain error objects with message property and/or possibly other metadata
+ return Object.assign(new Error(error.message), error);
+ }
+
+ return new Error(error);
+ });
+
+ let message = errors
+ .map(error => {
+ // The `stack` property is not standardized, so we can't assume it exists
+ return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);
+ })
+ .join('\n');
+ message = '\n' + indentString(message, 4);
+ super(message);
+
+ this.name = 'AggregateError';
+
+ Object.defineProperty(this, '_errors', {value: errors});
+ }
+
+ * [Symbol.iterator]() {
+ for (const error of this._errors) {
+ yield error;
+ }
+ }
+}
+
+module.exports = AggregateError;
+
+
+/***/ }),
+
+/***/ 3682:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+var register = __nccwpck_require__(4670);
+var addHook = __nccwpck_require__(5549);
+var removeHook = __nccwpck_require__(6819);
+
+// bind with array of arguments: https://stackoverflow.com/a/21792913
+var bind = Function.bind;
+var bindable = bind.bind(bind);
+
+function bindApi(hook, state, name) {
+ var removeHookRef = bindable(removeHook, null).apply(
+ null,
+ name ? [state, name] : [state]
+ );
+ hook.api = { remove: removeHookRef };
+ hook.remove = removeHookRef;
+ ["before", "error", "after", "wrap"].forEach(function (kind) {
+ var args = name ? [state, kind, name] : [state, kind];
+ hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
+ });
+}
+
+function HookSingular() {
+ var singularHookName = "h";
+ var singularHookState = {
+ registry: {},
+ };
+ var singularHook = register.bind(null, singularHookState, singularHookName);
+ bindApi(singularHook, singularHookState, singularHookName);
+ return singularHook;
+}
+
+function HookCollection() {
+ var state = {
+ registry: {},
+ };
+
+ var hook = register.bind(null, state);
+ bindApi(hook, state);
+
+ return hook;
+}
+
+var collectionHookDeprecationMessageDisplayed = false;
+function Hook() {
+ if (!collectionHookDeprecationMessageDisplayed) {
+ console.warn(
+ '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
+ );
+ collectionHookDeprecationMessageDisplayed = true;
+ }
+ return HookCollection();
+}
+
+Hook.Singular = HookSingular.bind();
+Hook.Collection = HookCollection.bind();
+
+module.exports = Hook;
+// expose constructors as a named property for TypeScript
+module.exports.Hook = Hook;
+module.exports.Singular = Hook.Singular;
+module.exports.Collection = Hook.Collection;
+
+
+/***/ }),
+
+/***/ 5549:
+/***/ ((module) => {
+
+module.exports = addHook;
+
+function addHook(state, kind, name, hook) {
+ var orig = hook;
+ if (!state.registry[name]) {
+ state.registry[name] = [];
+ }
+
+ if (kind === "before") {
+ hook = function (method, options) {
+ return Promise.resolve()
+ .then(orig.bind(null, options))
+ .then(method.bind(null, options));
+ };
+ }
+
+ if (kind === "after") {
+ hook = function (method, options) {
+ var result;
+ return Promise.resolve()
+ .then(method.bind(null, options))
+ .then(function (result_) {
+ result = result_;
+ return orig(result, options);
+ })
+ .then(function () {
+ return result;
+ });
+ };
+ }
+
+ if (kind === "error") {
+ hook = function (method, options) {
+ return Promise.resolve()
+ .then(method.bind(null, options))
+ .catch(function (error) {
+ return orig(error, options);
+ });
+ };
+ }
+
+ state.registry[name].push({
+ hook: hook,
+ orig: orig,
+ });
+}
+
+
+/***/ }),
+
+/***/ 4670:
+/***/ ((module) => {
+
+module.exports = register;
+
+function register(state, name, method, options) {
+ if (typeof method !== "function") {
+ throw new Error("method for before hook must be a function");
+ }
+
+ if (!options) {
+ options = {};
+ }
+
+ if (Array.isArray(name)) {
+ return name.reverse().reduce(function (callback, name) {
+ return register.bind(null, state, name, callback, options);
+ }, method)();
+ }
+
+ return Promise.resolve().then(function () {
+ if (!state.registry[name]) {
+ return method(options);
+ }
+
+ return state.registry[name].reduce(function (method, registered) {
+ return registered.hook.bind(null, method, options);
+ }, method)();
+ });
+}
+
+
+/***/ }),
+
+/***/ 6819:
+/***/ ((module) => {
+
+module.exports = removeHook;
+
+function removeHook(state, name, method) {
+ if (!state.registry[name]) {
+ return;
+ }
+
+ var index = state.registry[name]
+ .map(function (registered) {
+ return registered.orig;
+ })
+ .indexOf(method);
+
+ if (index === -1) {
+ return;
+ }
+
+ state.registry[name].splice(index, 1);
+}
+
+
+/***/ }),
+
+/***/ 1174:
+/***/ (function(module) {
+
+/**
+ * This file contains the Bottleneck library (MIT), compiled to ES2017, and without Clustering support.
+ * https://github.com/SGrondin/bottleneck
+ */
+(function (global, factory) {
+ true ? module.exports = factory() :
+ 0;
+}(this, (function () { 'use strict';
+
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+ function getCjsExportFromNamespace (n) {
+ return n && n['default'] || n;
+ }
+
+ var load = function(received, defaults, onto = {}) {
+ var k, ref, v;
+ for (k in defaults) {
+ v = defaults[k];
+ onto[k] = (ref = received[k]) != null ? ref : v;
+ }
+ return onto;
+ };
+
+ var overwrite = function(received, defaults, onto = {}) {
+ var k, v;
+ for (k in received) {
+ v = received[k];
+ if (defaults[k] !== void 0) {
+ onto[k] = v;
+ }
+ }
+ return onto;
+ };
+
+ var parser = {
+ load: load,
+ overwrite: overwrite
+ };
+
+ var DLList;
+
+ DLList = class DLList {
+ constructor(incr, decr) {
+ this.incr = incr;
+ this.decr = decr;
+ this._first = null;
+ this._last = null;
+ this.length = 0;
+ }
+
+ push(value) {
+ var node;
+ this.length++;
+ if (typeof this.incr === "function") {
+ this.incr();
+ }
+ node = {
+ value,
+ prev: this._last,
+ next: null
+ };
+ if (this._last != null) {
+ this._last.next = node;
+ this._last = node;
+ } else {
+ this._first = this._last = node;
+ }
+ return void 0;
+ }
+
+ shift() {
+ var value;
+ if (this._first == null) {
+ return;
+ } else {
+ this.length--;
+ if (typeof this.decr === "function") {
+ this.decr();
+ }
+ }
+ value = this._first.value;
+ if ((this._first = this._first.next) != null) {
+ this._first.prev = null;
+ } else {
+ this._last = null;
+ }
+ return value;
+ }
+
+ first() {
+ if (this._first != null) {
+ return this._first.value;
+ }
+ }
+
+ getArray() {
+ var node, ref, results;
+ node = this._first;
+ results = [];
+ while (node != null) {
+ results.push((ref = node, node = node.next, ref.value));
+ }
+ return results;
+ }
+
+ forEachShift(cb) {
+ var node;
+ node = this.shift();
+ while (node != null) {
+ (cb(node), node = this.shift());
+ }
+ return void 0;
+ }
+
+ debug() {
+ var node, ref, ref1, ref2, results;
+ node = this._first;
+ results = [];
+ while (node != null) {
+ results.push((ref = node, node = node.next, {
+ value: ref.value,
+ prev: (ref1 = ref.prev) != null ? ref1.value : void 0,
+ next: (ref2 = ref.next) != null ? ref2.value : void 0
+ }));
+ }
+ return results;
+ }
+
+ };
+
+ var DLList_1 = DLList;
+
+ var Events;
+
+ Events = class Events {
+ constructor(instance) {
+ this.instance = instance;
+ this._events = {};
+ if ((this.instance.on != null) || (this.instance.once != null) || (this.instance.removeAllListeners != null)) {
+ throw new Error("An Emitter already exists for this object");
+ }
+ this.instance.on = (name, cb) => {
+ return this._addListener(name, "many", cb);
+ };
+ this.instance.once = (name, cb) => {
+ return this._addListener(name, "once", cb);
+ };
+ this.instance.removeAllListeners = (name = null) => {
+ if (name != null) {
+ return delete this._events[name];
+ } else {
+ return this._events = {};
+ }
+ };
+ }
+
+ _addListener(name, status, cb) {
+ var base;
+ if ((base = this._events)[name] == null) {
+ base[name] = [];
+ }
+ this._events[name].push({cb, status});
+ return this.instance;
+ }
+
+ listenerCount(name) {
+ if (this._events[name] != null) {
+ return this._events[name].length;
+ } else {
+ return 0;
+ }
+ }
+
+ async trigger(name, ...args) {
+ var e, promises;
+ try {
+ if (name !== "debug") {
+ this.trigger("debug", `Event triggered: ${name}`, args);
+ }
+ if (this._events[name] == null) {
+ return;
+ }
+ this._events[name] = this._events[name].filter(function(listener) {
+ return listener.status !== "none";
+ });
+ promises = this._events[name].map(async(listener) => {
+ var e, returned;
+ if (listener.status === "none") {
+ return;
+ }
+ if (listener.status === "once") {
+ listener.status = "none";
+ }
+ try {
+ returned = typeof listener.cb === "function" ? listener.cb(...args) : void 0;
+ if (typeof (returned != null ? returned.then : void 0) === "function") {
+ return (await returned);
+ } else {
+ return returned;
+ }
+ } catch (error) {
+ e = error;
+ {
+ this.trigger("error", e);
+ }
+ return null;
+ }
+ });
+ return ((await Promise.all(promises))).find(function(x) {
+ return x != null;
+ });
+ } catch (error) {
+ e = error;
+ {
+ this.trigger("error", e);
+ }
+ return null;
+ }
+ }
+
+ };
+
+ var Events_1 = Events;
+
+ var DLList$1, Events$1, Queues;
+
+ DLList$1 = DLList_1;
+
+ Events$1 = Events_1;
+
+ Queues = class Queues {
+ constructor(num_priorities) {
+ var i;
+ this.Events = new Events$1(this);
+ this._length = 0;
+ this._lists = (function() {
+ var j, ref, results;
+ results = [];
+ for (i = j = 1, ref = num_priorities; (1 <= ref ? j <= ref : j >= ref); i = 1 <= ref ? ++j : --j) {
+ results.push(new DLList$1((() => {
+ return this.incr();
+ }), (() => {
+ return this.decr();
+ })));
+ }
+ return results;
+ }).call(this);
+ }
+
+ incr() {
+ if (this._length++ === 0) {
+ return this.Events.trigger("leftzero");
+ }
+ }
+
+ decr() {
+ if (--this._length === 0) {
+ return this.Events.trigger("zero");
+ }
+ }
+
+ push(job) {
+ return this._lists[job.options.priority].push(job);
+ }
+
+ queued(priority) {
+ if (priority != null) {
+ return this._lists[priority].length;
+ } else {
+ return this._length;
+ }
+ }
+
+ shiftAll(fn) {
+ return this._lists.forEach(function(list) {
+ return list.forEachShift(fn);
+ });
+ }
+
+ getFirst(arr = this._lists) {
+ var j, len, list;
+ for (j = 0, len = arr.length; j < len; j++) {
+ list = arr[j];
+ if (list.length > 0) {
+ return list;
+ }
+ }
+ return [];
+ }
+
+ shiftLastFrom(priority) {
+ return this.getFirst(this._lists.slice(priority).reverse()).shift();
+ }
+
+ };
+
+ var Queues_1 = Queues;
+
+ var BottleneckError;
+
+ BottleneckError = class BottleneckError extends Error {};
+
+ var BottleneckError_1 = BottleneckError;
+
+ var BottleneckError$1, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser$1;
+
+ NUM_PRIORITIES = 10;
+
+ DEFAULT_PRIORITY = 5;
+
+ parser$1 = parser;
+
+ BottleneckError$1 = BottleneckError_1;
+
+ Job = class Job {
+ constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {
+ this.task = task;
+ this.args = args;
+ this.rejectOnDrop = rejectOnDrop;
+ this.Events = Events;
+ this._states = _states;
+ this.Promise = Promise;
+ this.options = parser$1.load(options, jobDefaults);
+ this.options.priority = this._sanitizePriority(this.options.priority);
+ if (this.options.id === jobDefaults.id) {
+ this.options.id = `${this.options.id}-${this._randomIndex()}`;
+ }
+ this.promise = new this.Promise((_resolve, _reject) => {
+ this._resolve = _resolve;
+ this._reject = _reject;
+ });
+ this.retryCount = 0;
+ }
+
+ _sanitizePriority(priority) {
+ var sProperty;
+ sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;
+ if (sProperty < 0) {
+ return 0;
+ } else if (sProperty > NUM_PRIORITIES - 1) {
+ return NUM_PRIORITIES - 1;
+ } else {
+ return sProperty;
+ }
+ }
+
+ _randomIndex() {
+ return Math.random().toString(36).slice(2);
+ }
+
+ doDrop({error, message = "This job has been dropped by Bottleneck"} = {}) {
+ if (this._states.remove(this.options.id)) {
+ if (this.rejectOnDrop) {
+ this._reject(error != null ? error : new BottleneckError$1(message));
+ }
+ this.Events.trigger("dropped", {args: this.args, options: this.options, task: this.task, promise: this.promise});
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ _assertStatus(expected) {
+ var status;
+ status = this._states.jobStatus(this.options.id);
+ if (!(status === expected || (expected === "DONE" && status === null))) {
+ throw new BottleneckError$1(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);
+ }
+ }
+
+ doReceive() {
+ this._states.start(this.options.id);
+ return this.Events.trigger("received", {args: this.args, options: this.options});
+ }
+
+ doQueue(reachedHWM, blocked) {
+ this._assertStatus("RECEIVED");
+ this._states.next(this.options.id);
+ return this.Events.trigger("queued", {args: this.args, options: this.options, reachedHWM, blocked});
+ }
+
+ doRun() {
+ if (this.retryCount === 0) {
+ this._assertStatus("QUEUED");
+ this._states.next(this.options.id);
+ } else {
+ this._assertStatus("EXECUTING");
+ }
+ return this.Events.trigger("scheduled", {args: this.args, options: this.options});
+ }
+
+ async doExecute(chained, clearGlobalState, run, free) {
+ var error, eventInfo, passed;
+ if (this.retryCount === 0) {
+ this._assertStatus("RUNNING");
+ this._states.next(this.options.id);
+ } else {
+ this._assertStatus("EXECUTING");
+ }
+ eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};
+ this.Events.trigger("executing", eventInfo);
+ try {
+ passed = (await (chained != null ? chained.schedule(this.options, this.task, ...this.args) : this.task(...this.args)));
+ if (clearGlobalState()) {
+ this.doDone(eventInfo);
+ await free(this.options, eventInfo);
+ this._assertStatus("DONE");
+ return this._resolve(passed);
+ }
+ } catch (error1) {
+ error = error1;
+ return this._onFailure(error, eventInfo, clearGlobalState, run, free);
+ }
+ }
+
+ doExpire(clearGlobalState, run, free) {
+ var error, eventInfo;
+ if (this._states.jobStatus(this.options.id === "RUNNING")) {
+ this._states.next(this.options.id);
+ }
+ this._assertStatus("EXECUTING");
+ eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};
+ error = new BottleneckError$1(`This job timed out after ${this.options.expiration} ms.`);
+ return this._onFailure(error, eventInfo, clearGlobalState, run, free);
+ }
+
+ async _onFailure(error, eventInfo, clearGlobalState, run, free) {
+ var retry, retryAfter;
+ if (clearGlobalState()) {
+ retry = (await this.Events.trigger("failed", error, eventInfo));
+ if (retry != null) {
+ retryAfter = ~~retry;
+ this.Events.trigger("retry", `Retrying ${this.options.id} after ${retryAfter} ms`, eventInfo);
+ this.retryCount++;
+ return run(retryAfter);
+ } else {
+ this.doDone(eventInfo);
+ await free(this.options, eventInfo);
+ this._assertStatus("DONE");
+ return this._reject(error);
+ }
+ }
+ }
+
+ doDone(eventInfo) {
+ this._assertStatus("EXECUTING");
+ this._states.next(this.options.id);
+ return this.Events.trigger("done", eventInfo);
+ }
+
+ };
+
+ var Job_1 = Job;
+
+ var BottleneckError$2, LocalDatastore, parser$2;
+
+ parser$2 = parser;
+
+ BottleneckError$2 = BottleneckError_1;
+
+ LocalDatastore = class LocalDatastore {
+ constructor(instance, storeOptions, storeInstanceOptions) {
+ this.instance = instance;
+ this.storeOptions = storeOptions;
+ this.clientId = this.instance._randomIndex();
+ parser$2.load(storeInstanceOptions, storeInstanceOptions, this);
+ this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();
+ this._running = 0;
+ this._done = 0;
+ this._unblockTime = 0;
+ this.ready = this.Promise.resolve();
+ this.clients = {};
+ this._startHeartbeat();
+ }
+
+ _startHeartbeat() {
+ var base;
+ if ((this.heartbeat == null) && (((this.storeOptions.reservoirRefreshInterval != null) && (this.storeOptions.reservoirRefreshAmount != null)) || ((this.storeOptions.reservoirIncreaseInterval != null) && (this.storeOptions.reservoirIncreaseAmount != null)))) {
+ return typeof (base = (this.heartbeat = setInterval(() => {
+ var amount, incr, maximum, now, reservoir;
+ now = Date.now();
+ if ((this.storeOptions.reservoirRefreshInterval != null) && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {
+ this._lastReservoirRefresh = now;
+ this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;
+ this.instance._drainAll(this.computeCapacity());
+ }
+ if ((this.storeOptions.reservoirIncreaseInterval != null) && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {
+ ({
+ reservoirIncreaseAmount: amount,
+ reservoirIncreaseMaximum: maximum,
+ reservoir
+ } = this.storeOptions);
+ this._lastReservoirIncrease = now;
+ incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;
+ if (incr > 0) {
+ this.storeOptions.reservoir += incr;
+ return this.instance._drainAll(this.computeCapacity());
+ }
+ }
+ }, this.heartbeatInterval))).unref === "function" ? base.unref() : void 0;
+ } else {
+ return clearInterval(this.heartbeat);
+ }
+ }
+
+ async __publish__(message) {
+ await this.yieldLoop();
+ return this.instance.Events.trigger("message", message.toString());
+ }
+
+ async __disconnect__(flush) {
+ await this.yieldLoop();
+ clearInterval(this.heartbeat);
+ return this.Promise.resolve();
+ }
+
+ yieldLoop(t = 0) {
+ return new this.Promise(function(resolve, reject) {
+ return setTimeout(resolve, t);
+ });
+ }
+
+ computePenalty() {
+ var ref;
+ return (ref = this.storeOptions.penalty) != null ? ref : (15 * this.storeOptions.minTime) || 5000;
+ }
+
+ async __updateSettings__(options) {
+ await this.yieldLoop();
+ parser$2.overwrite(options, options, this.storeOptions);
+ this._startHeartbeat();
+ this.instance._drainAll(this.computeCapacity());
+ return true;
+ }
+
+ async __running__() {
+ await this.yieldLoop();
+ return this._running;
+ }
+
+ async __queued__() {
+ await this.yieldLoop();
+ return this.instance.queued();
+ }
+
+ async __done__() {
+ await this.yieldLoop();
+ return this._done;
+ }
+
+ async __groupCheck__(time) {
+ await this.yieldLoop();
+ return (this._nextRequest + this.timeout) < time;
+ }
+
+ computeCapacity() {
+ var maxConcurrent, reservoir;
+ ({maxConcurrent, reservoir} = this.storeOptions);
+ if ((maxConcurrent != null) && (reservoir != null)) {
+ return Math.min(maxConcurrent - this._running, reservoir);
+ } else if (maxConcurrent != null) {
+ return maxConcurrent - this._running;
+ } else if (reservoir != null) {
+ return reservoir;
+ } else {
+ return null;
+ }
+ }
+
+ conditionsCheck(weight) {
+ var capacity;
+ capacity = this.computeCapacity();
+ return (capacity == null) || weight <= capacity;
+ }
+
+ async __incrementReservoir__(incr) {
+ var reservoir;
+ await this.yieldLoop();
+ reservoir = this.storeOptions.reservoir += incr;
+ this.instance._drainAll(this.computeCapacity());
+ return reservoir;
+ }
+
+ async __currentReservoir__() {
+ await this.yieldLoop();
+ return this.storeOptions.reservoir;
+ }
+
+ isBlocked(now) {
+ return this._unblockTime >= now;
+ }
+
+ check(weight, now) {
+ return this.conditionsCheck(weight) && (this._nextRequest - now) <= 0;
+ }
+
+ async __check__(weight) {
+ var now;
+ await this.yieldLoop();
+ now = Date.now();
+ return this.check(weight, now);
+ }
+
+ async __register__(index, weight, expiration) {
+ var now, wait;
+ await this.yieldLoop();
+ now = Date.now();
+ if (this.conditionsCheck(weight)) {
+ this._running += weight;
+ if (this.storeOptions.reservoir != null) {
+ this.storeOptions.reservoir -= weight;
+ }
+ wait = Math.max(this._nextRequest - now, 0);
+ this._nextRequest = now + wait + this.storeOptions.minTime;
+ return {
+ success: true,
+ wait,
+ reservoir: this.storeOptions.reservoir
+ };
+ } else {
+ return {
+ success: false
+ };
+ }
+ }
+
+ strategyIsBlock() {
+ return this.storeOptions.strategy === 3;
+ }
+
+ async __submit__(queueLength, weight) {
+ var blocked, now, reachedHWM;
+ await this.yieldLoop();
+ if ((this.storeOptions.maxConcurrent != null) && weight > this.storeOptions.maxConcurrent) {
+ throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);
+ }
+ now = Date.now();
+ reachedHWM = (this.storeOptions.highWater != null) && queueLength === this.storeOptions.highWater && !this.check(weight, now);
+ blocked = this.strategyIsBlock() && (reachedHWM || this.isBlocked(now));
+ if (blocked) {
+ this._unblockTime = now + this.computePenalty();
+ this._nextRequest = this._unblockTime + this.storeOptions.minTime;
+ this.instance._dropAllQueued();
+ }
+ return {
+ reachedHWM,
+ blocked,
+ strategy: this.storeOptions.strategy
+ };
+ }
+
+ async __free__(index, weight) {
+ await this.yieldLoop();
+ this._running -= weight;
+ this._done += weight;
+ this.instance._drainAll(this.computeCapacity());
+ return {
+ running: this._running
+ };
+ }
+
+ };
+
+ var LocalDatastore_1 = LocalDatastore;
+
+ var BottleneckError$3, States;
+
+ BottleneckError$3 = BottleneckError_1;
+
+ States = class States {
+ constructor(status1) {
+ this.status = status1;
+ this._jobs = {};
+ this.counts = this.status.map(function() {
+ return 0;
+ });
+ }
+
+ next(id) {
+ var current, next;
+ current = this._jobs[id];
+ next = current + 1;
+ if ((current != null) && next < this.status.length) {
+ this.counts[current]--;
+ this.counts[next]++;
+ return this._jobs[id]++;
+ } else if (current != null) {
+ this.counts[current]--;
+ return delete this._jobs[id];
+ }
+ }
+
+ start(id) {
+ var initial;
+ initial = 0;
+ this._jobs[id] = initial;
+ return this.counts[initial]++;
+ }
+
+ remove(id) {
+ var current;
+ current = this._jobs[id];
+ if (current != null) {
+ this.counts[current]--;
+ delete this._jobs[id];
+ }
+ return current != null;
+ }
+
+ jobStatus(id) {
+ var ref;
+ return (ref = this.status[this._jobs[id]]) != null ? ref : null;
+ }
+
+ statusJobs(status) {
+ var k, pos, ref, results, v;
+ if (status != null) {
+ pos = this.status.indexOf(status);
+ if (pos < 0) {
+ throw new BottleneckError$3(`status must be one of ${this.status.join(', ')}`);
+ }
+ ref = this._jobs;
+ results = [];
+ for (k in ref) {
+ v = ref[k];
+ if (v === pos) {
+ results.push(k);
+ }
+ }
+ return results;
+ } else {
+ return Object.keys(this._jobs);
+ }
+ }
+
+ statusCounts() {
+ return this.counts.reduce(((acc, v, i) => {
+ acc[this.status[i]] = v;
+ return acc;
+ }), {});
+ }
+
+ };
+
+ var States_1 = States;
+
+ var DLList$2, Sync;
+
+ DLList$2 = DLList_1;
+
+ Sync = class Sync {
+ constructor(name, Promise) {
+ this.schedule = this.schedule.bind(this);
+ this.name = name;
+ this.Promise = Promise;
+ this._running = 0;
+ this._queue = new DLList$2();
+ }
+
+ isEmpty() {
+ return this._queue.length === 0;
+ }
+
+ async _tryToRun() {
+ var args, cb, error, reject, resolve, returned, task;
+ if ((this._running < 1) && this._queue.length > 0) {
+ this._running++;
+ ({task, args, resolve, reject} = this._queue.shift());
+ cb = (await (async function() {
+ try {
+ returned = (await task(...args));
+ return function() {
+ return resolve(returned);
+ };
+ } catch (error1) {
+ error = error1;
+ return function() {
+ return reject(error);
+ };
+ }
+ })());
+ this._running--;
+ this._tryToRun();
+ return cb();
+ }
+ }
+
+ schedule(task, ...args) {
+ var promise, reject, resolve;
+ resolve = reject = null;
+ promise = new this.Promise(function(_resolve, _reject) {
+ resolve = _resolve;
+ return reject = _reject;
+ });
+ this._queue.push({task, args, resolve, reject});
+ this._tryToRun();
+ return promise;
+ }
+
+ };
+
+ var Sync_1 = Sync;
+
+ var version = "2.19.5";
+ var version$1 = {
+ version: version
+ };
+
+ var version$2 = /*#__PURE__*/Object.freeze({
+ version: version,
+ default: version$1
+ });
+
+ var require$$2 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+
+ var require$$3 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+
+ var require$$4 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+
+ var Events$2, Group, IORedisConnection$1, RedisConnection$1, Scripts$1, parser$3;
+
+ parser$3 = parser;
+
+ Events$2 = Events_1;
+
+ RedisConnection$1 = require$$2;
+
+ IORedisConnection$1 = require$$3;
+
+ Scripts$1 = require$$4;
+
+ Group = (function() {
+ class Group {
+ constructor(limiterOptions = {}) {
+ this.deleteKey = this.deleteKey.bind(this);
+ this.limiterOptions = limiterOptions;
+ parser$3.load(this.limiterOptions, this.defaults, this);
+ this.Events = new Events$2(this);
+ this.instances = {};
+ this.Bottleneck = Bottleneck_1;
+ this._startAutoCleanup();
+ this.sharedConnection = this.connection != null;
+ if (this.connection == null) {
+ if (this.limiterOptions.datastore === "redis") {
+ this.connection = new RedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));
+ } else if (this.limiterOptions.datastore === "ioredis") {
+ this.connection = new IORedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));
+ }
+ }
+ }
+
+ key(key = "") {
+ var ref;
+ return (ref = this.instances[key]) != null ? ref : (() => {
+ var limiter;
+ limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {
+ id: `${this.id}-${key}`,
+ timeout: this.timeout,
+ connection: this.connection
+ }));
+ this.Events.trigger("created", limiter, key);
+ return limiter;
+ })();
+ }
+
+ async deleteKey(key = "") {
+ var deleted, instance;
+ instance = this.instances[key];
+ if (this.connection) {
+ deleted = (await this.connection.__runCommand__(['del', ...Scripts$1.allKeys(`${this.id}-${key}`)]));
+ }
+ if (instance != null) {
+ delete this.instances[key];
+ await instance.disconnect();
+ }
+ return (instance != null) || deleted > 0;
+ }
+
+ limiters() {
+ var k, ref, results, v;
+ ref = this.instances;
+ results = [];
+ for (k in ref) {
+ v = ref[k];
+ results.push({
+ key: k,
+ limiter: v
+ });
+ }
+ return results;
+ }
+
+ keys() {
+ return Object.keys(this.instances);
+ }
+
+ async clusterKeys() {
+ var cursor, end, found, i, k, keys, len, next, start;
+ if (this.connection == null) {
+ return this.Promise.resolve(this.keys());
+ }
+ keys = [];
+ cursor = null;
+ start = `b_${this.id}-`.length;
+ end = "_settings".length;
+ while (cursor !== 0) {
+ [next, found] = (await this.connection.__runCommand__(["scan", cursor != null ? cursor : 0, "match", `b_${this.id}-*_settings`, "count", 10000]));
+ cursor = ~~next;
+ for (i = 0, len = found.length; i < len; i++) {
+ k = found[i];
+ keys.push(k.slice(start, -end));
+ }
+ }
+ return keys;
+ }
+
+ _startAutoCleanup() {
+ var base;
+ clearInterval(this.interval);
+ return typeof (base = (this.interval = setInterval(async() => {
+ var e, k, ref, results, time, v;
+ time = Date.now();
+ ref = this.instances;
+ results = [];
+ for (k in ref) {
+ v = ref[k];
+ try {
+ if ((await v._store.__groupCheck__(time))) {
+ results.push(this.deleteKey(k));
+ } else {
+ results.push(void 0);
+ }
+ } catch (error) {
+ e = error;
+ results.push(v.Events.trigger("error", e));
+ }
+ }
+ return results;
+ }, this.timeout / 2))).unref === "function" ? base.unref() : void 0;
+ }
+
+ updateSettings(options = {}) {
+ parser$3.overwrite(options, this.defaults, this);
+ parser$3.overwrite(options, options, this.limiterOptions);
+ if (options.timeout != null) {
+ return this._startAutoCleanup();
+ }
+ }
-// pkg/dist-src/event-handler/receive.js
-var import_aggregate_error = __toESM(__nccwpck_require__(1231));
+ disconnect(flush = true) {
+ var ref;
+ if (!this.sharedConnection) {
+ return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;
+ }
+ }
-// pkg/dist-src/event-handler/wrap-error-handler.js
-function wrapErrorHandler(handler, error) {
- let returnValue;
- try {
- returnValue = handler(error);
- } catch (error2) {
- console.log('FATAL: Error occurred in "error" event handler');
- console.log(error2);
- }
- if (returnValue && returnValue.catch) {
- returnValue.catch((error2) => {
- console.log('FATAL: Error occurred in "error" event handler');
- console.log(error2);
- });
- }
-}
+ }
+ Group.prototype.defaults = {
+ timeout: 1000 * 60 * 5,
+ connection: null,
+ Promise: Promise,
+ id: "group-key"
+ };
-// pkg/dist-src/event-handler/receive.js
-function getHooks(state, eventPayloadAction, eventName) {
- const hooks = [state.hooks[eventName], state.hooks["*"]];
- if (eventPayloadAction) {
- hooks.unshift(state.hooks[`${eventName}.${eventPayloadAction}`]);
- }
- return [].concat(...hooks.filter(Boolean));
-}
-function receiverHandle(state, event) {
- const errorHandlers = state.hooks.error || [];
- if (event instanceof Error) {
- const error = Object.assign(new import_aggregate_error.default([event]), {
- event,
- errors: [event]
- });
- errorHandlers.forEach((handler) => wrapErrorHandler(handler, error));
- return Promise.reject(error);
- }
- if (!event || !event.name) {
- throw new import_aggregate_error.default(["Event name not passed"]);
- }
- if (!event.payload) {
- throw new import_aggregate_error.default(["Event payload not passed"]);
- }
- const hooks = getHooks(
- state,
- "action" in event.payload ? event.payload.action : null,
- event.name
- );
- if (hooks.length === 0) {
- return Promise.resolve();
- }
- const errors = [];
- const promises = hooks.map((handler) => {
- let promise = Promise.resolve(event);
- if (state.transform) {
- promise = promise.then(state.transform);
- }
- return promise.then((event2) => {
- return handler(event2);
- }).catch((error) => errors.push(Object.assign(error, { event })));
- });
- return Promise.all(promises).then(() => {
- if (errors.length === 0) {
- return;
- }
- const error = new import_aggregate_error.default(errors);
- Object.assign(error, {
- event,
- errors
- });
- errorHandlers.forEach((handler) => wrapErrorHandler(handler, error));
- throw error;
- });
-}
+ return Group;
-// pkg/dist-src/event-handler/remove-listener.js
-function removeListener(state, webhookNameOrNames, handler) {
- if (Array.isArray(webhookNameOrNames)) {
- webhookNameOrNames.forEach(
- (webhookName) => removeListener(state, webhookName, handler)
- );
- return;
- }
- if (!state.hooks[webhookNameOrNames]) {
- return;
- }
- for (let i = state.hooks[webhookNameOrNames].length - 1; i >= 0; i--) {
- if (state.hooks[webhookNameOrNames][i] === handler) {
- state.hooks[webhookNameOrNames].splice(i, 1);
- return;
- }
- }
-}
+ }).call(commonjsGlobal);
-// pkg/dist-src/event-handler/index.js
-function createEventHandler(options) {
- const state = {
- hooks: {},
- log: createLogger(options && options.log)
- };
- if (options && options.transform) {
- state.transform = options.transform;
- }
- return {
- on: receiverOn.bind(null, state),
- onAny: receiverOnAny.bind(null, state),
- onError: receiverOnError.bind(null, state),
- removeListener: removeListener.bind(null, state),
- receive: receiverHandle.bind(null, state)
- };
-}
+ var Group_1 = Group;
+
+ var Batcher, Events$3, parser$4;
+
+ parser$4 = parser;
+
+ Events$3 = Events_1;
+
+ Batcher = (function() {
+ class Batcher {
+ constructor(options = {}) {
+ this.options = options;
+ parser$4.load(this.options, this.defaults, this);
+ this.Events = new Events$3(this);
+ this._arr = [];
+ this._resetPromise();
+ this._lastFlush = Date.now();
+ }
+
+ _resetPromise() {
+ return this._promise = new this.Promise((res, rej) => {
+ return this._resolve = res;
+ });
+ }
+
+ _flush() {
+ clearTimeout(this._timeout);
+ this._lastFlush = Date.now();
+ this._resolve();
+ this.Events.trigger("batch", this._arr);
+ this._arr = [];
+ return this._resetPromise();
+ }
+
+ add(data) {
+ var ret;
+ this._arr.push(data);
+ ret = this._promise;
+ if (this._arr.length === this.maxSize) {
+ this._flush();
+ } else if ((this.maxTime != null) && this._arr.length === 1) {
+ this._timeout = setTimeout(() => {
+ return this._flush();
+ }, this.maxTime);
+ }
+ return ret;
+ }
+
+ }
+ Batcher.prototype.defaults = {
+ maxTime: null,
+ maxSize: null,
+ Promise: Promise
+ };
+
+ return Batcher;
+
+ }).call(commonjsGlobal);
+
+ var Batcher_1 = Batcher;
+
+ var require$$4$1 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+
+ var require$$8 = getCjsExportFromNamespace(version$2);
+
+ var Bottleneck, DEFAULT_PRIORITY$1, Events$4, Job$1, LocalDatastore$1, NUM_PRIORITIES$1, Queues$1, RedisDatastore$1, States$1, Sync$1, parser$5,
+ splice = [].splice;
+
+ NUM_PRIORITIES$1 = 10;
+
+ DEFAULT_PRIORITY$1 = 5;
+
+ parser$5 = parser;
+
+ Queues$1 = Queues_1;
+
+ Job$1 = Job_1;
+
+ LocalDatastore$1 = LocalDatastore_1;
+
+ RedisDatastore$1 = require$$4$1;
+
+ Events$4 = Events_1;
+
+ States$1 = States_1;
-// pkg/dist-src/index.js
-var import_webhooks_methods2 = __nccwpck_require__(9768);
+ Sync$1 = Sync_1;
-// pkg/dist-src/verify-and-receive.js
-var import_aggregate_error2 = __toESM(__nccwpck_require__(1231));
-var import_webhooks_methods = __nccwpck_require__(9768);
-async function verifyAndReceive(state, event) {
- const matchesSignature = await (0, import_webhooks_methods.verify)(
- state.secret,
- event.payload,
- event.signature
- ).catch(() => false);
- if (!matchesSignature) {
- const error = new Error(
- "[@octokit/webhooks] signature does not match event payload and secret"
- );
- return state.eventHandler.receive(
- Object.assign(error, { event, status: 400 })
- );
- }
- let payload;
- try {
- payload = JSON.parse(event.payload);
- } catch (error) {
- error.message = "Invalid JSON";
- error.status = 400;
- throw new import_aggregate_error2.default([error]);
- }
- return state.eventHandler.receive({
- id: event.id,
- name: event.name,
- payload
- });
-}
+ Bottleneck = (function() {
+ class Bottleneck {
+ constructor(options = {}, ...invalid) {
+ var storeInstanceOptions, storeOptions;
+ this._addToQueue = this._addToQueue.bind(this);
+ this._validateOptions(options, invalid);
+ parser$5.load(options, this.instanceDefaults, this);
+ this._queues = new Queues$1(NUM_PRIORITIES$1);
+ this._scheduled = {};
+ this._states = new States$1(["RECEIVED", "QUEUED", "RUNNING", "EXECUTING"].concat(this.trackDoneStatus ? ["DONE"] : []));
+ this._limiter = null;
+ this.Events = new Events$4(this);
+ this._submitLock = new Sync$1("submit", this.Promise);
+ this._registerLock = new Sync$1("register", this.Promise);
+ storeOptions = parser$5.load(options, this.storeDefaults, {});
+ this._store = (function() {
+ if (this.datastore === "redis" || this.datastore === "ioredis" || (this.connection != null)) {
+ storeInstanceOptions = parser$5.load(options, this.redisStoreDefaults, {});
+ return new RedisDatastore$1(this, storeOptions, storeInstanceOptions);
+ } else if (this.datastore === "local") {
+ storeInstanceOptions = parser$5.load(options, this.localStoreDefaults, {});
+ return new LocalDatastore$1(this, storeOptions, storeInstanceOptions);
+ } else {
+ throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);
+ }
+ }).call(this);
+ this._queues.on("leftzero", () => {
+ var ref;
+ return (ref = this._store.heartbeat) != null ? typeof ref.ref === "function" ? ref.ref() : void 0 : void 0;
+ });
+ this._queues.on("zero", () => {
+ var ref;
+ return (ref = this._store.heartbeat) != null ? typeof ref.unref === "function" ? ref.unref() : void 0 : void 0;
+ });
+ }
-// pkg/dist-src/middleware/node/get-missing-headers.js
-var WEBHOOK_HEADERS = [
- "x-github-event",
- "x-hub-signature-256",
- "x-github-delivery"
-];
-function getMissingHeaders(request) {
- return WEBHOOK_HEADERS.filter((header) => !(header in request.headers));
-}
+ _validateOptions(options, invalid) {
+ if (!((options != null) && typeof options === "object" && invalid.length === 0)) {
+ throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.");
+ }
+ }
-// pkg/dist-src/middleware/node/get-payload.js
-var import_aggregate_error3 = __toESM(__nccwpck_require__(1231));
-function getPayload(request) {
- if ("body" in request) {
- if (typeof request.body === "object" && "rawBody" in request && request.rawBody instanceof Buffer) {
- return Promise.resolve(request.rawBody.toString("utf8"));
- } else {
- return Promise.resolve(request.body);
- }
- }
- return new Promise((resolve, reject) => {
- let data = [];
- request.on("error", (error) => reject(new import_aggregate_error3.default([error])));
- request.on("data", (chunk) => data.push(chunk));
- request.on(
- "end",
- () => (
- // setImmediate improves the throughput by reducing the pressure from
- // the event loop
- setImmediate(
- resolve,
- data.length === 1 ? data[0].toString("utf8") : Buffer.concat(data).toString("utf8")
- )
- )
- );
- });
-}
+ ready() {
+ return this._store.ready;
+ }
-// pkg/dist-src/middleware/node/on-unhandled-request-default.js
-function onUnhandledRequestDefault(request, response) {
- response.writeHead(404, {
- "content-type": "application/json"
- });
- response.end(
- JSON.stringify({
- error: `Unknown route: ${request.method} ${request.url}`
- })
- );
-}
+ clients() {
+ return this._store.clients;
+ }
-// pkg/dist-src/middleware/node/middleware.js
-async function middleware(webhooks, options, request, response, next) {
- let pathname;
- try {
- pathname = new URL(request.url, "http://localhost").pathname;
- } catch (error) {
- response.writeHead(422, {
- "content-type": "application/json"
- });
- response.end(
- JSON.stringify({
- error: `Request URL could not be parsed: ${request.url}`
- })
- );
- return true;
- }
- if (pathname !== options.path) {
- next?.();
- return false;
- } else if (request.method !== "POST") {
- onUnhandledRequestDefault(request, response);
- return true;
- }
- if (!request.headers["content-type"] || !request.headers["content-type"].startsWith("application/json")) {
- response.writeHead(415, {
- "content-type": "application/json",
- accept: "application/json"
- });
- response.end(
- JSON.stringify({
- error: `Unsupported "Content-Type" header value. Must be "application/json"`
- })
- );
- return true;
- }
- const missingHeaders = getMissingHeaders(request).join(", ");
- if (missingHeaders) {
- response.writeHead(400, {
- "content-type": "application/json"
- });
- response.end(
- JSON.stringify({
- error: `Required headers missing: ${missingHeaders}`
- })
- );
- return true;
- }
- const eventName = request.headers["x-github-event"];
- const signatureSHA256 = request.headers["x-hub-signature-256"];
- const id = request.headers["x-github-delivery"];
- options.log.debug(`${eventName} event received (id: ${id})`);
- let didTimeout = false;
- const timeout = setTimeout(() => {
- didTimeout = true;
- response.statusCode = 202;
- response.end("still processing\n");
- }, 9e3).unref();
- try {
- const payload = await getPayload(request);
- await webhooks.verifyAndReceive({
- id,
- name: eventName,
- payload,
- signature: signatureSHA256
- });
- clearTimeout(timeout);
- if (didTimeout)
- return true;
- response.end("ok\n");
- return true;
- } catch (error) {
- clearTimeout(timeout);
- if (didTimeout)
- return true;
- const err = Array.from(error)[0];
- const errorMessage = err.message ? `${err.name}: ${err.message}` : "Error: An Unspecified error occurred";
- response.statusCode = typeof err.status !== "undefined" ? err.status : 500;
- options.log.error(error);
- response.end(
- JSON.stringify({
- error: errorMessage
- })
- );
- return true;
- }
-}
+ channel() {
+ return `b_${this.id}`;
+ }
-// pkg/dist-src/middleware/node/index.js
-function createNodeMiddleware(webhooks, {
- path = "/api/github/webhooks",
- log = createLogger()
-} = {}) {
- return middleware.bind(null, webhooks, {
- path,
- log
- });
-}
+ channel_client() {
+ return `b_${this.id}_${this._store.clientId}`;
+ }
-// pkg/dist-src/index.js
-var Webhooks = class {
- constructor(options) {
- if (!options || !options.secret) {
- throw new Error("[@octokit/webhooks] options.secret required");
- }
- const state = {
- eventHandler: createEventHandler(options),
- secret: options.secret,
- hooks: {},
- log: createLogger(options.log)
- };
- this.sign = import_webhooks_methods2.sign.bind(null, options.secret);
- this.verify = import_webhooks_methods2.verify.bind(null, options.secret);
- this.on = state.eventHandler.on;
- this.onAny = state.eventHandler.onAny;
- this.onError = state.eventHandler.onError;
- this.removeListener = state.eventHandler.removeListener;
- this.receive = state.eventHandler.receive;
- this.verifyAndReceive = verifyAndReceive.bind(null, state);
- }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
+ publish(message) {
+ return this._store.__publish__(message);
+ }
+ disconnect(flush = true) {
+ return this._store.__disconnect__(flush);
+ }
-/***/ }),
+ chain(_limiter) {
+ this._limiter = _limiter;
+ return this;
+ }
-/***/ 1231:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ queued(priority) {
+ return this._queues.queued(priority);
+ }
-"use strict";
+ clusterQueued() {
+ return this._store.__queued__();
+ }
-const indentString = __nccwpck_require__(8043);
-const cleanStack = __nccwpck_require__(7972);
+ empty() {
+ return this.queued() === 0 && this._submitLock.isEmpty();
+ }
-const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
+ running() {
+ return this._store.__running__();
+ }
-class AggregateError extends Error {
- constructor(errors) {
- if (!Array.isArray(errors)) {
- throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
- }
+ done() {
+ return this._store.__done__();
+ }
- errors = [...errors].map(error => {
- if (error instanceof Error) {
- return error;
- }
+ jobStatus(id) {
+ return this._states.jobStatus(id);
+ }
- if (error !== null && typeof error === 'object') {
- // Handle plain error objects with message property and/or possibly other metadata
- return Object.assign(new Error(error.message), error);
- }
+ jobs(status) {
+ return this._states.statusJobs(status);
+ }
- return new Error(error);
- });
+ counts() {
+ return this._states.statusCounts();
+ }
- let message = errors
- .map(error => {
- // The `stack` property is not standardized, so we can't assume it exists
- return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);
- })
- .join('\n');
- message = '\n' + indentString(message, 4);
- super(message);
+ _randomIndex() {
+ return Math.random().toString(36).slice(2);
+ }
- this.name = 'AggregateError';
+ check(weight = 1) {
+ return this._store.__check__(weight);
+ }
- Object.defineProperty(this, '_errors', {value: errors});
- }
+ _clearGlobalState(index) {
+ if (this._scheduled[index] != null) {
+ clearTimeout(this._scheduled[index].expiration);
+ delete this._scheduled[index];
+ return true;
+ } else {
+ return false;
+ }
+ }
- * [Symbol.iterator]() {
- for (const error of this._errors) {
- yield error;
- }
- }
-}
+ async _free(index, job, options, eventInfo) {
+ var e, running;
+ try {
+ ({running} = (await this._store.__free__(index, options.weight)));
+ this.Events.trigger("debug", `Freed ${options.id}`, eventInfo);
+ if (running === 0 && this.empty()) {
+ return this.Events.trigger("idle");
+ }
+ } catch (error1) {
+ e = error1;
+ return this.Events.trigger("error", e);
+ }
+ }
-module.exports = AggregateError;
+ _run(index, job, wait) {
+ var clearGlobalState, free, run;
+ job.doRun();
+ clearGlobalState = this._clearGlobalState.bind(this, index);
+ run = this._run.bind(this, index, job);
+ free = this._free.bind(this, index, job);
+ return this._scheduled[index] = {
+ timeout: setTimeout(() => {
+ return job.doExecute(this._limiter, clearGlobalState, run, free);
+ }, wait),
+ expiration: job.options.expiration != null ? setTimeout(function() {
+ return job.doExpire(clearGlobalState, run, free);
+ }, wait + job.options.expiration) : void 0,
+ job: job
+ };
+ }
+
+ _drainOne(capacity) {
+ return this._registerLock.schedule(() => {
+ var args, index, next, options, queue;
+ if (this.queued() === 0) {
+ return this.Promise.resolve(null);
+ }
+ queue = this._queues.getFirst();
+ ({options, args} = next = queue.first());
+ if ((capacity != null) && options.weight > capacity) {
+ return this.Promise.resolve(null);
+ }
+ this.Events.trigger("debug", `Draining ${options.id}`, {args, options});
+ index = this._randomIndex();
+ return this._store.__register__(index, options.weight, options.expiration).then(({success, wait, reservoir}) => {
+ var empty;
+ this.Events.trigger("debug", `Drained ${options.id}`, {success, args, options});
+ if (success) {
+ queue.shift();
+ empty = this.empty();
+ if (empty) {
+ this.Events.trigger("empty");
+ }
+ if (reservoir === 0) {
+ this.Events.trigger("depleted", empty);
+ }
+ this._run(index, next, wait);
+ return this.Promise.resolve(options.weight);
+ } else {
+ return this.Promise.resolve(null);
+ }
+ });
+ });
+ }
+ _drainAll(capacity, total = 0) {
+ return this._drainOne(capacity).then((drained) => {
+ var newCapacity;
+ if (drained != null) {
+ newCapacity = capacity != null ? capacity - drained : capacity;
+ return this._drainAll(newCapacity, total + drained);
+ } else {
+ return this.Promise.resolve(total);
+ }
+ }).catch((e) => {
+ return this.Events.trigger("error", e);
+ });
+ }
-/***/ }),
+ _dropAllQueued(message) {
+ return this._queues.shiftAll(function(job) {
+ return job.doDrop({message});
+ });
+ }
-/***/ 3682:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ stop(options = {}) {
+ var done, waitForExecuting;
+ options = parser$5.load(options, this.stopDefaults);
+ waitForExecuting = (at) => {
+ var finished;
+ finished = () => {
+ var counts;
+ counts = this._states.counts;
+ return (counts[0] + counts[1] + counts[2] + counts[3]) === at;
+ };
+ return new this.Promise((resolve, reject) => {
+ if (finished()) {
+ return resolve();
+ } else {
+ return this.on("done", () => {
+ if (finished()) {
+ this.removeAllListeners("done");
+ return resolve();
+ }
+ });
+ }
+ });
+ };
+ done = options.dropWaitingJobs ? (this._run = function(index, next) {
+ return next.doDrop({
+ message: options.dropErrorMessage
+ });
+ }, this._drainOne = () => {
+ return this.Promise.resolve(null);
+ }, this._registerLock.schedule(() => {
+ return this._submitLock.schedule(() => {
+ var k, ref, v;
+ ref = this._scheduled;
+ for (k in ref) {
+ v = ref[k];
+ if (this.jobStatus(v.job.options.id) === "RUNNING") {
+ clearTimeout(v.timeout);
+ clearTimeout(v.expiration);
+ v.job.doDrop({
+ message: options.dropErrorMessage
+ });
+ }
+ }
+ this._dropAllQueued(options.dropErrorMessage);
+ return waitForExecuting(0);
+ });
+ })) : this.schedule({
+ priority: NUM_PRIORITIES$1 - 1,
+ weight: 0
+ }, () => {
+ return waitForExecuting(1);
+ });
+ this._receive = function(job) {
+ return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));
+ };
+ this.stop = () => {
+ return this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called"));
+ };
+ return done;
+ }
+
+ async _addToQueue(job) {
+ var args, blocked, error, options, reachedHWM, shifted, strategy;
+ ({args, options} = job);
+ try {
+ ({reachedHWM, blocked, strategy} = (await this._store.__submit__(this.queued(), options.weight)));
+ } catch (error1) {
+ error = error1;
+ this.Events.trigger("debug", `Could not queue ${options.id}`, {args, options, error});
+ job.doDrop({error});
+ return false;
+ }
+ if (blocked) {
+ job.doDrop();
+ return true;
+ } else if (reachedHWM) {
+ shifted = strategy === Bottleneck.prototype.strategy.LEAK ? this._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? this._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;
+ if (shifted != null) {
+ shifted.doDrop();
+ }
+ if ((shifted == null) || strategy === Bottleneck.prototype.strategy.OVERFLOW) {
+ if (shifted == null) {
+ job.doDrop();
+ }
+ return reachedHWM;
+ }
+ }
+ job.doQueue(reachedHWM, blocked);
+ this._queues.push(job);
+ await this._drainAll();
+ return reachedHWM;
+ }
-var register = __nccwpck_require__(4670);
-var addHook = __nccwpck_require__(5549);
-var removeHook = __nccwpck_require__(6819);
+ _receive(job) {
+ if (this._states.jobStatus(job.options.id) != null) {
+ job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));
+ return false;
+ } else {
+ job.doReceive();
+ return this._submitLock.schedule(this._addToQueue, job);
+ }
+ }
-// bind with array of arguments: https://stackoverflow.com/a/21792913
-var bind = Function.bind;
-var bindable = bind.bind(bind);
+ submit(...args) {
+ var cb, fn, job, options, ref, ref1, task;
+ if (typeof args[0] === "function") {
+ ref = args, [fn, ...args] = ref, [cb] = splice.call(args, -1);
+ options = parser$5.load({}, this.jobDefaults);
+ } else {
+ ref1 = args, [options, fn, ...args] = ref1, [cb] = splice.call(args, -1);
+ options = parser$5.load(options, this.jobDefaults);
+ }
+ task = (...args) => {
+ return new this.Promise(function(resolve, reject) {
+ return fn(...args, function(...args) {
+ return (args[0] != null ? reject : resolve)(args);
+ });
+ });
+ };
+ job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);
+ job.promise.then(function(args) {
+ return typeof cb === "function" ? cb(...args) : void 0;
+ }).catch(function(args) {
+ if (Array.isArray(args)) {
+ return typeof cb === "function" ? cb(...args) : void 0;
+ } else {
+ return typeof cb === "function" ? cb(args) : void 0;
+ }
+ });
+ return this._receive(job);
+ }
-function bindApi(hook, state, name) {
- var removeHookRef = bindable(removeHook, null).apply(
- null,
- name ? [state, name] : [state]
- );
- hook.api = { remove: removeHookRef };
- hook.remove = removeHookRef;
- ["before", "error", "after", "wrap"].forEach(function (kind) {
- var args = name ? [state, kind, name] : [state, kind];
- hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
- });
-}
+ schedule(...args) {
+ var job, options, task;
+ if (typeof args[0] === "function") {
+ [task, ...args] = args;
+ options = {};
+ } else {
+ [options, task, ...args] = args;
+ }
+ job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);
+ this._receive(job);
+ return job.promise;
+ }
-function HookSingular() {
- var singularHookName = "h";
- var singularHookState = {
- registry: {},
- };
- var singularHook = register.bind(null, singularHookState, singularHookName);
- bindApi(singularHook, singularHookState, singularHookName);
- return singularHook;
-}
+ wrap(fn) {
+ var schedule, wrapped;
+ schedule = this.schedule.bind(this);
+ wrapped = function(...args) {
+ return schedule(fn.bind(this), ...args);
+ };
+ wrapped.withOptions = function(options, ...args) {
+ return schedule(options, fn, ...args);
+ };
+ return wrapped;
+ }
-function HookCollection() {
- var state = {
- registry: {},
- };
+ async updateSettings(options = {}) {
+ await this._store.__updateSettings__(parser$5.overwrite(options, this.storeDefaults));
+ parser$5.overwrite(options, this.instanceDefaults, this);
+ return this;
+ }
- var hook = register.bind(null, state);
- bindApi(hook, state);
+ currentReservoir() {
+ return this._store.__currentReservoir__();
+ }
- return hook;
-}
+ incrementReservoir(incr = 0) {
+ return this._store.__incrementReservoir__(incr);
+ }
-var collectionHookDeprecationMessageDisplayed = false;
-function Hook() {
- if (!collectionHookDeprecationMessageDisplayed) {
- console.warn(
- '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
- );
- collectionHookDeprecationMessageDisplayed = true;
- }
- return HookCollection();
-}
+ }
+ Bottleneck.default = Bottleneck;
-Hook.Singular = HookSingular.bind();
-Hook.Collection = HookCollection.bind();
+ Bottleneck.Events = Events$4;
-module.exports = Hook;
-// expose constructors as a named property for TypeScript
-module.exports.Hook = Hook;
-module.exports.Singular = Hook.Singular;
-module.exports.Collection = Hook.Collection;
+ Bottleneck.version = Bottleneck.prototype.version = require$$8.version;
+ Bottleneck.strategy = Bottleneck.prototype.strategy = {
+ LEAK: 1,
+ OVERFLOW: 2,
+ OVERFLOW_PRIORITY: 4,
+ BLOCK: 3
+ };
-/***/ }),
+ Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1;
-/***/ 5549:
-/***/ ((module) => {
+ Bottleneck.Group = Bottleneck.prototype.Group = Group_1;
-module.exports = addHook;
+ Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require$$2;
-function addHook(state, kind, name, hook) {
- var orig = hook;
- if (!state.registry[name]) {
- state.registry[name] = [];
- }
+ Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require$$3;
- if (kind === "before") {
- hook = function (method, options) {
- return Promise.resolve()
- .then(orig.bind(null, options))
- .then(method.bind(null, options));
- };
- }
+ Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1;
- if (kind === "after") {
- hook = function (method, options) {
- var result;
- return Promise.resolve()
- .then(method.bind(null, options))
- .then(function (result_) {
- result = result_;
- return orig(result, options);
- })
- .then(function () {
- return result;
- });
- };
- }
+ Bottleneck.prototype.jobDefaults = {
+ priority: DEFAULT_PRIORITY$1,
+ weight: 1,
+ expiration: null,
+ id: ""
+ };
- if (kind === "error") {
- hook = function (method, options) {
- return Promise.resolve()
- .then(method.bind(null, options))
- .catch(function (error) {
- return orig(error, options);
- });
- };
- }
+ Bottleneck.prototype.storeDefaults = {
+ maxConcurrent: null,
+ minTime: 0,
+ highWater: null,
+ strategy: Bottleneck.prototype.strategy.LEAK,
+ penalty: null,
+ reservoir: null,
+ reservoirRefreshInterval: null,
+ reservoirRefreshAmount: null,
+ reservoirIncreaseInterval: null,
+ reservoirIncreaseAmount: null,
+ reservoirIncreaseMaximum: null
+ };
- state.registry[name].push({
- hook: hook,
- orig: orig,
- });
-}
+ Bottleneck.prototype.localStoreDefaults = {
+ Promise: Promise,
+ timeout: null,
+ heartbeatInterval: 250
+ };
+ Bottleneck.prototype.redisStoreDefaults = {
+ Promise: Promise,
+ timeout: null,
+ heartbeatInterval: 5000,
+ clientTimeout: 10000,
+ Redis: null,
+ clientOptions: {},
+ clusterNodes: null,
+ clearDatastore: false,
+ connection: null
+ };
-/***/ }),
+ Bottleneck.prototype.instanceDefaults = {
+ datastore: "local",
+ connection: null,
+ id: "",
+ rejectOnDrop: true,
+ trackDoneStatus: false,
+ Promise: Promise
+ };
-/***/ 4670:
-/***/ ((module) => {
+ Bottleneck.prototype.stopDefaults = {
+ enqueueErrorMessage: "This limiter has been stopped and cannot accept new jobs.",
+ dropWaitingJobs: true,
+ dropErrorMessage: "This limiter has been stopped."
+ };
-module.exports = register;
+ return Bottleneck;
-function register(state, name, method, options) {
- if (typeof method !== "function") {
- throw new Error("method for before hook must be a function");
- }
+ }).call(commonjsGlobal);
- if (!options) {
- options = {};
- }
+ var Bottleneck_1 = Bottleneck;
- if (Array.isArray(name)) {
- return name.reverse().reduce(function (callback, name) {
- return register.bind(null, state, name, callback, options);
- }, method)();
- }
+ var lib = Bottleneck_1;
- return Promise.resolve().then(function () {
- if (!state.registry[name]) {
- return method(options);
- }
+ return lib;
- return state.registry[name].reduce(function (method, registered) {
- return registered.hook.bind(null, method, options);
- }, method)();
- });
-}
+})));
/***/ }),
-/***/ 6819:
+/***/ 2358:
/***/ ((module) => {
-module.exports = removeHook;
+module.exports = function btoa(str) {
+ return new Buffer(str).toString('base64')
+}
-function removeHook(state, name, method) {
- if (!state.registry[name]) {
- return;
- }
- var index = state.registry[name]
- .map(function (registered) {
- return registered.orig;
- })
- .indexOf(method);
+/***/ }),
- if (index === -1) {
- return;
- }
+/***/ 9239:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- state.registry[name].splice(index, 1);
-}
+"use strict";
+/*jshint node:true */
+var Buffer = (__nccwpck_require__(4300).Buffer); // browserify
+var SlowBuffer = (__nccwpck_require__(4300).SlowBuffer);
-/***/ }),
+module.exports = bufferEq;
-/***/ 1174:
-/***/ (function(module) {
+function bufferEq(a, b) {
-/**
- * This file contains the Bottleneck library (MIT), compiled to ES2017, and without Clustering support.
- * https://github.com/SGrondin/bottleneck
- */
-(function (global, factory) {
- true ? module.exports = factory() :
- 0;
-}(this, (function () { 'use strict';
+ // shortcutting on type is necessary for correctness
+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+ return false;
+ }
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+ // buffer sizes should be well-known information, so despite this
+ // shortcutting, it doesn't leak any information about the *contents* of the
+ // buffers.
+ if (a.length !== b.length) {
+ return false;
+ }
- function getCjsExportFromNamespace (n) {
- return n && n['default'] || n;
- }
+ var c = 0;
+ for (var i = 0; i < a.length; i++) {
+ /*jshint bitwise:false */
+ c |= a[i] ^ b[i]; // XOR
+ }
+ return c === 0;
+}
- var load = function(received, defaults, onto = {}) {
- var k, ref, v;
- for (k in defaults) {
- v = defaults[k];
- onto[k] = (ref = received[k]) != null ? ref : v;
- }
- return onto;
- };
+bufferEq.install = function() {
+ Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
+ return bufferEq(this, that);
+ };
+};
- var overwrite = function(received, defaults, onto = {}) {
- var k, v;
- for (k in received) {
- v = received[k];
- if (defaults[k] !== void 0) {
- onto[k] = v;
- }
- }
- return onto;
- };
+var origBufEqual = Buffer.prototype.equal;
+var origSlowBufEqual = SlowBuffer.prototype.equal;
+bufferEq.restore = function() {
+ Buffer.prototype.equal = origBufEqual;
+ SlowBuffer.prototype.equal = origSlowBufEqual;
+};
- var parser = {
- load: load,
- overwrite: overwrite
- };
- var DLList;
+/***/ }),
- DLList = class DLList {
- constructor(incr, decr) {
- this.incr = incr;
- this.decr = decr;
- this._first = null;
- this._last = null;
- this.length = 0;
- }
+/***/ 7972:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- push(value) {
- var node;
- this.length++;
- if (typeof this.incr === "function") {
- this.incr();
- }
- node = {
- value,
- prev: this._last,
- next: null
- };
- if (this._last != null) {
- this._last.next = node;
- this._last = node;
- } else {
- this._first = this._last = node;
- }
- return void 0;
- }
+"use strict";
- shift() {
- var value;
- if (this._first == null) {
- return;
- } else {
- this.length--;
- if (typeof this.decr === "function") {
- this.decr();
- }
- }
- value = this._first.value;
- if ((this._first = this._first.next) != null) {
- this._first.prev = null;
- } else {
- this._last = null;
- }
- return value;
- }
+const os = __nccwpck_require__(2037);
- first() {
- if (this._first != null) {
- return this._first.value;
- }
- }
+const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
+const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
+const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
- getArray() {
- var node, ref, results;
- node = this._first;
- results = [];
- while (node != null) {
- results.push((ref = node, node = node.next, ref.value));
- }
- return results;
- }
+module.exports = (stack, options) => {
+ options = Object.assign({pretty: false}, options);
- forEachShift(cb) {
- var node;
- node = this.shift();
- while (node != null) {
- (cb(node), node = this.shift());
- }
- return void 0;
- }
+ return stack.replace(/\\/g, '/')
+ .split('\n')
+ .filter(line => {
+ const pathMatches = line.match(extractPathRegex);
+ if (pathMatches === null || !pathMatches[1]) {
+ return true;
+ }
- debug() {
- var node, ref, ref1, ref2, results;
- node = this._first;
- results = [];
- while (node != null) {
- results.push((ref = node, node = node.next, {
- value: ref.value,
- prev: (ref1 = ref.prev) != null ? ref1.value : void 0,
- next: (ref2 = ref.next) != null ? ref2.value : void 0
- }));
- }
- return results;
- }
+ const match = pathMatches[1];
- };
+ // Electron
+ if (
+ match.includes('.app/Contents/Resources/electron.asar') ||
+ match.includes('.app/Contents/Resources/default_app.asar')
+ ) {
+ return false;
+ }
- var DLList_1 = DLList;
+ return !pathRegex.test(match);
+ })
+ .filter(line => line.trim() !== '')
+ .map(line => {
+ if (options.pretty) {
+ return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
+ }
- var Events;
+ return line;
+ })
+ .join('\n');
+};
- Events = class Events {
- constructor(instance) {
- this.instance = instance;
- this._events = {};
- if ((this.instance.on != null) || (this.instance.once != null) || (this.instance.removeAllListeners != null)) {
- throw new Error("An Emitter already exists for this object");
- }
- this.instance.on = (name, cb) => {
- return this._addListener(name, "many", cb);
- };
- this.instance.once = (name, cb) => {
- return this._addListener(name, "once", cb);
- };
- this.instance.removeAllListeners = (name = null) => {
- if (name != null) {
- return delete this._events[name];
- } else {
- return this._events = {};
- }
- };
- }
- _addListener(name, status, cb) {
- var base;
- if ((base = this._events)[name] == null) {
- base[name] = [];
- }
- this._events[name].push({cb, status});
- return this.instance;
- }
+/***/ }),
- listenerCount(name) {
- if (this._events[name] != null) {
- return this._events[name].length;
- } else {
- return 0;
- }
- }
+/***/ 8932:
+/***/ ((__unused_webpack_module, exports) => {
- async trigger(name, ...args) {
- var e, promises;
- try {
- if (name !== "debug") {
- this.trigger("debug", `Event triggered: ${name}`, args);
- }
- if (this._events[name] == null) {
- return;
- }
- this._events[name] = this._events[name].filter(function(listener) {
- return listener.status !== "none";
- });
- promises = this._events[name].map(async(listener) => {
- var e, returned;
- if (listener.status === "none") {
- return;
- }
- if (listener.status === "once") {
- listener.status = "none";
- }
- try {
- returned = typeof listener.cb === "function" ? listener.cb(...args) : void 0;
- if (typeof (returned != null ? returned.then : void 0) === "function") {
- return (await returned);
- } else {
- return returned;
- }
- } catch (error) {
- e = error;
- {
- this.trigger("error", e);
- }
- return null;
- }
- });
- return ((await Promise.all(promises))).find(function(x) {
- return x != null;
- });
- } catch (error) {
- e = error;
- {
- this.trigger("error", e);
- }
- return null;
- }
- }
+"use strict";
- };
- var Events_1 = Events;
+Object.defineProperty(exports, "__esModule", ({ value: true }));
- var DLList$1, Events$1, Queues;
+class Deprecation extends Error {
+ constructor(message) {
+ super(message); // Maintains proper stack trace (only available on V8)
- DLList$1 = DLList_1;
+ /* istanbul ignore next */
- Events$1 = Events_1;
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
- Queues = class Queues {
- constructor(num_priorities) {
- var i;
- this.Events = new Events$1(this);
- this._length = 0;
- this._lists = (function() {
- var j, ref, results;
- results = [];
- for (i = j = 1, ref = num_priorities; (1 <= ref ? j <= ref : j >= ref); i = 1 <= ref ? ++j : --j) {
- results.push(new DLList$1((() => {
- return this.incr();
- }), (() => {
- return this.decr();
- })));
- }
- return results;
- }).call(this);
- }
+ this.name = 'Deprecation';
+ }
- incr() {
- if (this._length++ === 0) {
- return this.Events.trigger("leftzero");
- }
- }
+}
- decr() {
- if (--this._length === 0) {
- return this.Events.trigger("zero");
- }
- }
+exports.Deprecation = Deprecation;
- push(job) {
- return this._lists[job.options.priority].push(job);
- }
- queued(priority) {
- if (priority != null) {
- return this._lists[priority].length;
- } else {
- return this._length;
- }
- }
+/***/ }),
- shiftAll(fn) {
- return this._lists.forEach(function(list) {
- return list.forEachShift(fn);
- });
- }
+/***/ 1728:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- getFirst(arr = this._lists) {
- var j, len, list;
- for (j = 0, len = arr.length; j < len; j++) {
- list = arr[j];
- if (list.length > 0) {
- return list;
- }
- }
- return [];
- }
+"use strict";
- shiftLastFrom(priority) {
- return this.getFirst(this._lists.slice(priority).reverse()).shift();
- }
- };
+var Buffer = (__nccwpck_require__(1867).Buffer);
- var Queues_1 = Queues;
+var getParamBytesForAlg = __nccwpck_require__(528);
- var BottleneckError;
+var MAX_OCTET = 0x80,
+ CLASS_UNIVERSAL = 0,
+ PRIMITIVE_BIT = 0x20,
+ TAG_SEQ = 0x10,
+ TAG_INT = 0x02,
+ ENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),
+ ENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);
- BottleneckError = class BottleneckError extends Error {};
+function base64Url(base64) {
+ return base64
+ .replace(/=/g, '')
+ .replace(/\+/g, '-')
+ .replace(/\//g, '_');
+}
- var BottleneckError_1 = BottleneckError;
+function signatureAsBuffer(signature) {
+ if (Buffer.isBuffer(signature)) {
+ return signature;
+ } else if ('string' === typeof signature) {
+ return Buffer.from(signature, 'base64');
+ }
- var BottleneckError$1, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser$1;
+ throw new TypeError('ECDSA signature must be a Base64 string or a Buffer');
+}
- NUM_PRIORITIES = 10;
+function derToJose(signature, alg) {
+ signature = signatureAsBuffer(signature);
+ var paramBytes = getParamBytesForAlg(alg);
- DEFAULT_PRIORITY = 5;
+ // the DER encoded param should at most be the param size, plus a padding
+ // zero, since due to being a signed integer
+ var maxEncodedParamLength = paramBytes + 1;
- parser$1 = parser;
+ var inputLength = signature.length;
- BottleneckError$1 = BottleneckError_1;
+ var offset = 0;
+ if (signature[offset++] !== ENCODED_TAG_SEQ) {
+ throw new Error('Could not find expected "seq"');
+ }
- Job = class Job {
- constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {
- this.task = task;
- this.args = args;
- this.rejectOnDrop = rejectOnDrop;
- this.Events = Events;
- this._states = _states;
- this.Promise = Promise;
- this.options = parser$1.load(options, jobDefaults);
- this.options.priority = this._sanitizePriority(this.options.priority);
- if (this.options.id === jobDefaults.id) {
- this.options.id = `${this.options.id}-${this._randomIndex()}`;
- }
- this.promise = new this.Promise((_resolve, _reject) => {
- this._resolve = _resolve;
- this._reject = _reject;
- });
- this.retryCount = 0;
- }
+ var seqLength = signature[offset++];
+ if (seqLength === (MAX_OCTET | 1)) {
+ seqLength = signature[offset++];
+ }
- _sanitizePriority(priority) {
- var sProperty;
- sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;
- if (sProperty < 0) {
- return 0;
- } else if (sProperty > NUM_PRIORITIES - 1) {
- return NUM_PRIORITIES - 1;
- } else {
- return sProperty;
- }
- }
+ if (inputLength - offset < seqLength) {
+ throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining');
+ }
- _randomIndex() {
- return Math.random().toString(36).slice(2);
- }
+ if (signature[offset++] !== ENCODED_TAG_INT) {
+ throw new Error('Could not find expected "int" for "r"');
+ }
- doDrop({error, message = "This job has been dropped by Bottleneck"} = {}) {
- if (this._states.remove(this.options.id)) {
- if (this.rejectOnDrop) {
- this._reject(error != null ? error : new BottleneckError$1(message));
- }
- this.Events.trigger("dropped", {args: this.args, options: this.options, task: this.task, promise: this.promise});
- return true;
- } else {
- return false;
- }
- }
+ var rLength = signature[offset++];
- _assertStatus(expected) {
- var status;
- status = this._states.jobStatus(this.options.id);
- if (!(status === expected || (expected === "DONE" && status === null))) {
- throw new BottleneckError$1(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);
- }
- }
+ if (inputLength - offset - 2 < rLength) {
+ throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available');
+ }
- doReceive() {
- this._states.start(this.options.id);
- return this.Events.trigger("received", {args: this.args, options: this.options});
- }
+ if (maxEncodedParamLength < rLength) {
+ throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable');
+ }
+
+ var rOffset = offset;
+ offset += rLength;
+
+ if (signature[offset++] !== ENCODED_TAG_INT) {
+ throw new Error('Could not find expected "int" for "s"');
+ }
- doQueue(reachedHWM, blocked) {
- this._assertStatus("RECEIVED");
- this._states.next(this.options.id);
- return this.Events.trigger("queued", {args: this.args, options: this.options, reachedHWM, blocked});
- }
+ var sLength = signature[offset++];
- doRun() {
- if (this.retryCount === 0) {
- this._assertStatus("QUEUED");
- this._states.next(this.options.id);
- } else {
- this._assertStatus("EXECUTING");
- }
- return this.Events.trigger("scheduled", {args: this.args, options: this.options});
- }
+ if (inputLength - offset !== sLength) {
+ throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"');
+ }
- async doExecute(chained, clearGlobalState, run, free) {
- var error, eventInfo, passed;
- if (this.retryCount === 0) {
- this._assertStatus("RUNNING");
- this._states.next(this.options.id);
- } else {
- this._assertStatus("EXECUTING");
- }
- eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};
- this.Events.trigger("executing", eventInfo);
- try {
- passed = (await (chained != null ? chained.schedule(this.options, this.task, ...this.args) : this.task(...this.args)));
- if (clearGlobalState()) {
- this.doDone(eventInfo);
- await free(this.options, eventInfo);
- this._assertStatus("DONE");
- return this._resolve(passed);
- }
- } catch (error1) {
- error = error1;
- return this._onFailure(error, eventInfo, clearGlobalState, run, free);
- }
- }
+ if (maxEncodedParamLength < sLength) {
+ throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable');
+ }
- doExpire(clearGlobalState, run, free) {
- var error, eventInfo;
- if (this._states.jobStatus(this.options.id === "RUNNING")) {
- this._states.next(this.options.id);
- }
- this._assertStatus("EXECUTING");
- eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};
- error = new BottleneckError$1(`This job timed out after ${this.options.expiration} ms.`);
- return this._onFailure(error, eventInfo, clearGlobalState, run, free);
- }
+ var sOffset = offset;
+ offset += sLength;
- async _onFailure(error, eventInfo, clearGlobalState, run, free) {
- var retry, retryAfter;
- if (clearGlobalState()) {
- retry = (await this.Events.trigger("failed", error, eventInfo));
- if (retry != null) {
- retryAfter = ~~retry;
- this.Events.trigger("retry", `Retrying ${this.options.id} after ${retryAfter} ms`, eventInfo);
- this.retryCount++;
- return run(retryAfter);
- } else {
- this.doDone(eventInfo);
- await free(this.options, eventInfo);
- this._assertStatus("DONE");
- return this._reject(error);
- }
- }
- }
+ if (offset !== inputLength) {
+ throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain');
+ }
- doDone(eventInfo) {
- this._assertStatus("EXECUTING");
- this._states.next(this.options.id);
- return this.Events.trigger("done", eventInfo);
- }
+ var rPadding = paramBytes - rLength,
+ sPadding = paramBytes - sLength;
- };
+ var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);
- var Job_1 = Job;
+ for (offset = 0; offset < rPadding; ++offset) {
+ dst[offset] = 0;
+ }
+ signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);
- var BottleneckError$2, LocalDatastore, parser$2;
+ offset = paramBytes;
- parser$2 = parser;
+ for (var o = offset; offset < o + sPadding; ++offset) {
+ dst[offset] = 0;
+ }
+ signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);
- BottleneckError$2 = BottleneckError_1;
+ dst = dst.toString('base64');
+ dst = base64Url(dst);
- LocalDatastore = class LocalDatastore {
- constructor(instance, storeOptions, storeInstanceOptions) {
- this.instance = instance;
- this.storeOptions = storeOptions;
- this.clientId = this.instance._randomIndex();
- parser$2.load(storeInstanceOptions, storeInstanceOptions, this);
- this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();
- this._running = 0;
- this._done = 0;
- this._unblockTime = 0;
- this.ready = this.Promise.resolve();
- this.clients = {};
- this._startHeartbeat();
- }
+ return dst;
+}
- _startHeartbeat() {
- var base;
- if ((this.heartbeat == null) && (((this.storeOptions.reservoirRefreshInterval != null) && (this.storeOptions.reservoirRefreshAmount != null)) || ((this.storeOptions.reservoirIncreaseInterval != null) && (this.storeOptions.reservoirIncreaseAmount != null)))) {
- return typeof (base = (this.heartbeat = setInterval(() => {
- var amount, incr, maximum, now, reservoir;
- now = Date.now();
- if ((this.storeOptions.reservoirRefreshInterval != null) && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {
- this._lastReservoirRefresh = now;
- this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;
- this.instance._drainAll(this.computeCapacity());
- }
- if ((this.storeOptions.reservoirIncreaseInterval != null) && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {
- ({
- reservoirIncreaseAmount: amount,
- reservoirIncreaseMaximum: maximum,
- reservoir
- } = this.storeOptions);
- this._lastReservoirIncrease = now;
- incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;
- if (incr > 0) {
- this.storeOptions.reservoir += incr;
- return this.instance._drainAll(this.computeCapacity());
- }
- }
- }, this.heartbeatInterval))).unref === "function" ? base.unref() : void 0;
- } else {
- return clearInterval(this.heartbeat);
- }
- }
+function countPadding(buf, start, stop) {
+ var padding = 0;
+ while (start + padding < stop && buf[start + padding] === 0) {
+ ++padding;
+ }
- async __publish__(message) {
- await this.yieldLoop();
- return this.instance.Events.trigger("message", message.toString());
- }
+ var needsSign = buf[start + padding] >= MAX_OCTET;
+ if (needsSign) {
+ --padding;
+ }
- async __disconnect__(flush) {
- await this.yieldLoop();
- clearInterval(this.heartbeat);
- return this.Promise.resolve();
- }
+ return padding;
+}
- yieldLoop(t = 0) {
- return new this.Promise(function(resolve, reject) {
- return setTimeout(resolve, t);
- });
- }
+function joseToDer(signature, alg) {
+ signature = signatureAsBuffer(signature);
+ var paramBytes = getParamBytesForAlg(alg);
- computePenalty() {
- var ref;
- return (ref = this.storeOptions.penalty) != null ? ref : (15 * this.storeOptions.minTime) || 5000;
- }
+ var signatureBytes = signature.length;
+ if (signatureBytes !== paramBytes * 2) {
+ throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"');
+ }
- async __updateSettings__(options) {
- await this.yieldLoop();
- parser$2.overwrite(options, options, this.storeOptions);
- this._startHeartbeat();
- this.instance._drainAll(this.computeCapacity());
- return true;
- }
+ var rPadding = countPadding(signature, 0, paramBytes);
+ var sPadding = countPadding(signature, paramBytes, signature.length);
+ var rLength = paramBytes - rPadding;
+ var sLength = paramBytes - sPadding;
- async __running__() {
- await this.yieldLoop();
- return this._running;
- }
+ var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;
- async __queued__() {
- await this.yieldLoop();
- return this.instance.queued();
- }
+ var shortLength = rsBytes < MAX_OCTET;
- async __done__() {
- await this.yieldLoop();
- return this._done;
- }
+ var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);
- async __groupCheck__(time) {
- await this.yieldLoop();
- return (this._nextRequest + this.timeout) < time;
- }
+ var offset = 0;
+ dst[offset++] = ENCODED_TAG_SEQ;
+ if (shortLength) {
+ // Bit 8 has value "0"
+ // bits 7-1 give the length.
+ dst[offset++] = rsBytes;
+ } else {
+ // Bit 8 of first octet has value "1"
+ // bits 7-1 give the number of additional length octets.
+ dst[offset++] = MAX_OCTET | 1;
+ // length, base 256
+ dst[offset++] = rsBytes & 0xff;
+ }
+ dst[offset++] = ENCODED_TAG_INT;
+ dst[offset++] = rLength;
+ if (rPadding < 0) {
+ dst[offset++] = 0;
+ offset += signature.copy(dst, offset, 0, paramBytes);
+ } else {
+ offset += signature.copy(dst, offset, rPadding, paramBytes);
+ }
+ dst[offset++] = ENCODED_TAG_INT;
+ dst[offset++] = sLength;
+ if (sPadding < 0) {
+ dst[offset++] = 0;
+ signature.copy(dst, offset, paramBytes);
+ } else {
+ signature.copy(dst, offset, paramBytes + sPadding);
+ }
- computeCapacity() {
- var maxConcurrent, reservoir;
- ({maxConcurrent, reservoir} = this.storeOptions);
- if ((maxConcurrent != null) && (reservoir != null)) {
- return Math.min(maxConcurrent - this._running, reservoir);
- } else if (maxConcurrent != null) {
- return maxConcurrent - this._running;
- } else if (reservoir != null) {
- return reservoir;
- } else {
- return null;
- }
- }
+ return dst;
+}
+
+module.exports = {
+ derToJose: derToJose,
+ joseToDer: joseToDer
+};
- conditionsCheck(weight) {
- var capacity;
- capacity = this.computeCapacity();
- return (capacity == null) || weight <= capacity;
- }
- async __incrementReservoir__(incr) {
- var reservoir;
- await this.yieldLoop();
- reservoir = this.storeOptions.reservoir += incr;
- this.instance._drainAll(this.computeCapacity());
- return reservoir;
- }
+/***/ }),
- async __currentReservoir__() {
- await this.yieldLoop();
- return this.storeOptions.reservoir;
- }
+/***/ 528:
+/***/ ((module) => {
- isBlocked(now) {
- return this._unblockTime >= now;
- }
+"use strict";
- check(weight, now) {
- return this.conditionsCheck(weight) && (this._nextRequest - now) <= 0;
- }
- async __check__(weight) {
- var now;
- await this.yieldLoop();
- now = Date.now();
- return this.check(weight, now);
- }
+function getParamSize(keySize) {
+ var result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);
+ return result;
+}
- async __register__(index, weight, expiration) {
- var now, wait;
- await this.yieldLoop();
- now = Date.now();
- if (this.conditionsCheck(weight)) {
- this._running += weight;
- if (this.storeOptions.reservoir != null) {
- this.storeOptions.reservoir -= weight;
- }
- wait = Math.max(this._nextRequest - now, 0);
- this._nextRequest = now + wait + this.storeOptions.minTime;
- return {
- success: true,
- wait,
- reservoir: this.storeOptions.reservoir
- };
- } else {
- return {
- success: false
- };
- }
- }
+var paramBytesForAlg = {
+ ES256: getParamSize(256),
+ ES384: getParamSize(384),
+ ES512: getParamSize(521)
+};
- strategyIsBlock() {
- return this.storeOptions.strategy === 3;
- }
+function getParamBytesForAlg(alg) {
+ var paramBytes = paramBytesForAlg[alg];
+ if (paramBytes) {
+ return paramBytes;
+ }
- async __submit__(queueLength, weight) {
- var blocked, now, reachedHWM;
- await this.yieldLoop();
- if ((this.storeOptions.maxConcurrent != null) && weight > this.storeOptions.maxConcurrent) {
- throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);
- }
- now = Date.now();
- reachedHWM = (this.storeOptions.highWater != null) && queueLength === this.storeOptions.highWater && !this.check(weight, now);
- blocked = this.strategyIsBlock() && (reachedHWM || this.isBlocked(now));
- if (blocked) {
- this._unblockTime = now + this.computePenalty();
- this._nextRequest = this._unblockTime + this.storeOptions.minTime;
- this.instance._dropAllQueued();
- }
- return {
- reachedHWM,
- blocked,
- strategy: this.storeOptions.strategy
- };
- }
+ throw new Error('Unknown algorithm "' + alg + '"');
+}
- async __free__(index, weight) {
- await this.yieldLoop();
- this._running -= weight;
- this._done += weight;
- this.instance._drainAll(this.computeCapacity());
- return {
- running: this._running
- };
- }
+module.exports = getParamBytesForAlg;
- };
- var LocalDatastore_1 = LocalDatastore;
+/***/ }),
- var BottleneckError$3, States;
+/***/ 8043:
+/***/ ((module) => {
- BottleneckError$3 = BottleneckError_1;
+"use strict";
- States = class States {
- constructor(status1) {
- this.status = status1;
- this._jobs = {};
- this.counts = this.status.map(function() {
- return 0;
- });
- }
- next(id) {
- var current, next;
- current = this._jobs[id];
- next = current + 1;
- if ((current != null) && next < this.status.length) {
- this.counts[current]--;
- this.counts[next]++;
- return this._jobs[id]++;
- } else if (current != null) {
- this.counts[current]--;
- return delete this._jobs[id];
- }
- }
+module.exports = (string, count = 1, options) => {
+ options = {
+ indent: ' ',
+ includeEmptyLines: false,
+ ...options
+ };
- start(id) {
- var initial;
- initial = 0;
- this._jobs[id] = initial;
- return this.counts[initial]++;
- }
+ if (typeof string !== 'string') {
+ throw new TypeError(
+ `Expected \`input\` to be a \`string\`, got \`${typeof string}\``
+ );
+ }
- remove(id) {
- var current;
- current = this._jobs[id];
- if (current != null) {
- this.counts[current]--;
- delete this._jobs[id];
- }
- return current != null;
- }
+ if (typeof count !== 'number') {
+ throw new TypeError(
+ `Expected \`count\` to be a \`number\`, got \`${typeof count}\``
+ );
+ }
- jobStatus(id) {
- var ref;
- return (ref = this.status[this._jobs[id]]) != null ? ref : null;
- }
+ if (typeof options.indent !== 'string') {
+ throw new TypeError(
+ `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
+ );
+ }
- statusJobs(status) {
- var k, pos, ref, results, v;
- if (status != null) {
- pos = this.status.indexOf(status);
- if (pos < 0) {
- throw new BottleneckError$3(`status must be one of ${this.status.join(', ')}`);
- }
- ref = this._jobs;
- results = [];
- for (k in ref) {
- v = ref[k];
- if (v === pos) {
- results.push(k);
- }
- }
- return results;
- } else {
- return Object.keys(this._jobs);
- }
- }
+ if (count === 0) {
+ return string;
+ }
- statusCounts() {
- return this.counts.reduce(((acc, v, i) => {
- acc[this.status[i]] = v;
- return acc;
- }), {});
- }
+ const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
- };
+ return string.replace(regex, options.indent.repeat(count));
+};
- var States_1 = States;
- var DLList$2, Sync;
+/***/ }),
- DLList$2 = DLList_1;
+/***/ 3359:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- Sync = class Sync {
- constructor(name, Promise) {
- this.schedule = this.schedule.bind(this);
- this.name = name;
- this.Promise = Promise;
- this._running = 0;
- this._queue = new DLList$2();
- }
+var jws = __nccwpck_require__(4636);
+
+module.exports = function (jwt, options) {
+ options = options || {};
+ var decoded = jws.decode(jwt, options);
+ if (!decoded) { return null; }
+ var payload = decoded.payload;
+
+ //try parse the payload
+ if(typeof payload === 'string') {
+ try {
+ var obj = JSON.parse(payload);
+ if(obj !== null && typeof obj === 'object') {
+ payload = obj;
+ }
+ } catch (e) { }
+ }
+
+ //return header if `complete` option is enabled. header includes claims
+ //such as `kid` and `alg` used to select the key within a JWKS needed to
+ //verify the signature
+ if (options.complete === true) {
+ return {
+ header: decoded.header,
+ payload: payload,
+ signature: decoded.signature
+ };
+ }
+ return payload;
+};
- isEmpty() {
- return this._queue.length === 0;
- }
- async _tryToRun() {
- var args, cb, error, reject, resolve, returned, task;
- if ((this._running < 1) && this._queue.length > 0) {
- this._running++;
- ({task, args, resolve, reject} = this._queue.shift());
- cb = (await (async function() {
- try {
- returned = (await task(...args));
- return function() {
- return resolve(returned);
- };
- } catch (error1) {
- error = error1;
- return function() {
- return reject(error);
- };
- }
- })());
- this._running--;
- this._tryToRun();
- return cb();
- }
- }
+/***/ }),
- schedule(task, ...args) {
- var promise, reject, resolve;
- resolve = reject = null;
- promise = new this.Promise(function(_resolve, _reject) {
- resolve = _resolve;
- return reject = _reject;
- });
- this._queue.push({task, args, resolve, reject});
- this._tryToRun();
- return promise;
- }
+/***/ 7486:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- };
+module.exports = {
+ decode: __nccwpck_require__(3359),
+ verify: __nccwpck_require__(2327),
+ sign: __nccwpck_require__(2022),
+ JsonWebTokenError: __nccwpck_require__(405),
+ NotBeforeError: __nccwpck_require__(4383),
+ TokenExpiredError: __nccwpck_require__(6637),
+};
- var Sync_1 = Sync;
- var version = "2.19.5";
- var version$1 = {
- version: version
- };
+/***/ }),
- var version$2 = /*#__PURE__*/Object.freeze({
- version: version,
- default: version$1
- });
+/***/ 405:
+/***/ ((module) => {
- var require$$2 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+var JsonWebTokenError = function (message, error) {
+ Error.call(this, message);
+ if(Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+ this.name = 'JsonWebTokenError';
+ this.message = message;
+ if (error) this.inner = error;
+};
- var require$$3 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+JsonWebTokenError.prototype = Object.create(Error.prototype);
+JsonWebTokenError.prototype.constructor = JsonWebTokenError;
- var require$$4 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+module.exports = JsonWebTokenError;
- var Events$2, Group, IORedisConnection$1, RedisConnection$1, Scripts$1, parser$3;
- parser$3 = parser;
+/***/ }),
- Events$2 = Events_1;
+/***/ 4383:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- RedisConnection$1 = require$$2;
+var JsonWebTokenError = __nccwpck_require__(405);
- IORedisConnection$1 = require$$3;
+var NotBeforeError = function (message, date) {
+ JsonWebTokenError.call(this, message);
+ this.name = 'NotBeforeError';
+ this.date = date;
+};
- Scripts$1 = require$$4;
+NotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);
- Group = (function() {
- class Group {
- constructor(limiterOptions = {}) {
- this.deleteKey = this.deleteKey.bind(this);
- this.limiterOptions = limiterOptions;
- parser$3.load(this.limiterOptions, this.defaults, this);
- this.Events = new Events$2(this);
- this.instances = {};
- this.Bottleneck = Bottleneck_1;
- this._startAutoCleanup();
- this.sharedConnection = this.connection != null;
- if (this.connection == null) {
- if (this.limiterOptions.datastore === "redis") {
- this.connection = new RedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));
- } else if (this.limiterOptions.datastore === "ioredis") {
- this.connection = new IORedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));
- }
- }
- }
+NotBeforeError.prototype.constructor = NotBeforeError;
- key(key = "") {
- var ref;
- return (ref = this.instances[key]) != null ? ref : (() => {
- var limiter;
- limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {
- id: `${this.id}-${key}`,
- timeout: this.timeout,
- connection: this.connection
- }));
- this.Events.trigger("created", limiter, key);
- return limiter;
- })();
- }
+module.exports = NotBeforeError;
- async deleteKey(key = "") {
- var deleted, instance;
- instance = this.instances[key];
- if (this.connection) {
- deleted = (await this.connection.__runCommand__(['del', ...Scripts$1.allKeys(`${this.id}-${key}`)]));
- }
- if (instance != null) {
- delete this.instances[key];
- await instance.disconnect();
- }
- return (instance != null) || deleted > 0;
- }
+/***/ }),
- limiters() {
- var k, ref, results, v;
- ref = this.instances;
- results = [];
- for (k in ref) {
- v = ref[k];
- results.push({
- key: k,
- limiter: v
- });
- }
- return results;
- }
+/***/ 6637:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- keys() {
- return Object.keys(this.instances);
- }
+var JsonWebTokenError = __nccwpck_require__(405);
- async clusterKeys() {
- var cursor, end, found, i, k, keys, len, next, start;
- if (this.connection == null) {
- return this.Promise.resolve(this.keys());
- }
- keys = [];
- cursor = null;
- start = `b_${this.id}-`.length;
- end = "_settings".length;
- while (cursor !== 0) {
- [next, found] = (await this.connection.__runCommand__(["scan", cursor != null ? cursor : 0, "match", `b_${this.id}-*_settings`, "count", 10000]));
- cursor = ~~next;
- for (i = 0, len = found.length; i < len; i++) {
- k = found[i];
- keys.push(k.slice(start, -end));
- }
- }
- return keys;
- }
+var TokenExpiredError = function (message, expiredAt) {
+ JsonWebTokenError.call(this, message);
+ this.name = 'TokenExpiredError';
+ this.expiredAt = expiredAt;
+};
- _startAutoCleanup() {
- var base;
- clearInterval(this.interval);
- return typeof (base = (this.interval = setInterval(async() => {
- var e, k, ref, results, time, v;
- time = Date.now();
- ref = this.instances;
- results = [];
- for (k in ref) {
- v = ref[k];
- try {
- if ((await v._store.__groupCheck__(time))) {
- results.push(this.deleteKey(k));
- } else {
- results.push(void 0);
- }
- } catch (error) {
- e = error;
- results.push(v.Events.trigger("error", e));
- }
- }
- return results;
- }, this.timeout / 2))).unref === "function" ? base.unref() : void 0;
- }
+TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);
- updateSettings(options = {}) {
- parser$3.overwrite(options, this.defaults, this);
- parser$3.overwrite(options, options, this.limiterOptions);
- if (options.timeout != null) {
- return this._startAutoCleanup();
- }
- }
+TokenExpiredError.prototype.constructor = TokenExpiredError;
- disconnect(flush = true) {
- var ref;
- if (!this.sharedConnection) {
- return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;
- }
- }
+module.exports = TokenExpiredError;
- }
- Group.prototype.defaults = {
- timeout: 1000 * 60 * 5,
- connection: null,
- Promise: Promise,
- id: "group-key"
- };
+/***/ }),
- return Group;
+/***/ 7622:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- }).call(commonjsGlobal);
+const semver = __nccwpck_require__(3998);
- var Group_1 = Group;
+module.exports = semver.satisfies(process.version, '>=15.7.0');
- var Batcher, Events$3, parser$4;
- parser$4 = parser;
+/***/ }),
- Events$3 = Events_1;
+/***/ 9085:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- Batcher = (function() {
- class Batcher {
- constructor(options = {}) {
- this.options = options;
- parser$4.load(this.options, this.defaults, this);
- this.Events = new Events$3(this);
- this._arr = [];
- this._resetPromise();
- this._lastFlush = Date.now();
- }
+var semver = __nccwpck_require__(3998);
+
+module.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');
- _resetPromise() {
- return this._promise = new this.Promise((res, rej) => {
- return this._resolve = res;
- });
- }
- _flush() {
- clearTimeout(this._timeout);
- this._lastFlush = Date.now();
- this._resolve();
- this.Events.trigger("batch", this._arr);
- this._arr = [];
- return this._resetPromise();
- }
+/***/ }),
- add(data) {
- var ret;
- this._arr.push(data);
- ret = this._promise;
- if (this._arr.length === this.maxSize) {
- this._flush();
- } else if ((this.maxTime != null) && this._arr.length === 1) {
- this._timeout = setTimeout(() => {
- return this._flush();
- }, this.maxTime);
- }
- return ret;
- }
+/***/ 5170:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- }
- Batcher.prototype.defaults = {
- maxTime: null,
- maxSize: null,
- Promise: Promise
- };
+const semver = __nccwpck_require__(3998);
- return Batcher;
+module.exports = semver.satisfies(process.version, '>=16.9.0');
- }).call(commonjsGlobal);
- var Batcher_1 = Batcher;
+/***/ }),
- var require$$4$1 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');
+/***/ 6098:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- var require$$8 = getCjsExportFromNamespace(version$2);
+var ms = __nccwpck_require__(900);
- var Bottleneck, DEFAULT_PRIORITY$1, Events$4, Job$1, LocalDatastore$1, NUM_PRIORITIES$1, Queues$1, RedisDatastore$1, States$1, Sync$1, parser$5,
- splice = [].splice;
+module.exports = function (time, iat) {
+ var timestamp = iat || Math.floor(Date.now() / 1000);
- NUM_PRIORITIES$1 = 10;
+ if (typeof time === 'string') {
+ var milliseconds = ms(time);
+ if (typeof milliseconds === 'undefined') {
+ return;
+ }
+ return Math.floor(timestamp + milliseconds / 1000);
+ } else if (typeof time === 'number') {
+ return timestamp + time;
+ } else {
+ return;
+ }
- DEFAULT_PRIORITY$1 = 5;
+};
- parser$5 = parser;
+/***/ }),
- Queues$1 = Queues_1;
+/***/ 7596:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- Job$1 = Job_1;
+const ASYMMETRIC_KEY_DETAILS_SUPPORTED = __nccwpck_require__(7622);
+const RSA_PSS_KEY_DETAILS_SUPPORTED = __nccwpck_require__(5170);
- LocalDatastore$1 = LocalDatastore_1;
+const allowedAlgorithmsForKeys = {
+ 'ec': ['ES256', 'ES384', 'ES512'],
+ 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],
+ 'rsa-pss': ['PS256', 'PS384', 'PS512']
+};
- RedisDatastore$1 = require$$4$1;
+const allowedCurves = {
+ ES256: 'prime256v1',
+ ES384: 'secp384r1',
+ ES512: 'secp521r1',
+};
- Events$4 = Events_1;
+module.exports = function(algorithm, key) {
+ if (!algorithm || !key) return;
- States$1 = States_1;
+ const keyType = key.asymmetricKeyType;
+ if (!keyType) return;
- Sync$1 = Sync_1;
+ const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];
- Bottleneck = (function() {
- class Bottleneck {
- constructor(options = {}, ...invalid) {
- var storeInstanceOptions, storeOptions;
- this._addToQueue = this._addToQueue.bind(this);
- this._validateOptions(options, invalid);
- parser$5.load(options, this.instanceDefaults, this);
- this._queues = new Queues$1(NUM_PRIORITIES$1);
- this._scheduled = {};
- this._states = new States$1(["RECEIVED", "QUEUED", "RUNNING", "EXECUTING"].concat(this.trackDoneStatus ? ["DONE"] : []));
- this._limiter = null;
- this.Events = new Events$4(this);
- this._submitLock = new Sync$1("submit", this.Promise);
- this._registerLock = new Sync$1("register", this.Promise);
- storeOptions = parser$5.load(options, this.storeDefaults, {});
- this._store = (function() {
- if (this.datastore === "redis" || this.datastore === "ioredis" || (this.connection != null)) {
- storeInstanceOptions = parser$5.load(options, this.redisStoreDefaults, {});
- return new RedisDatastore$1(this, storeOptions, storeInstanceOptions);
- } else if (this.datastore === "local") {
- storeInstanceOptions = parser$5.load(options, this.localStoreDefaults, {});
- return new LocalDatastore$1(this, storeOptions, storeInstanceOptions);
- } else {
- throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);
- }
- }).call(this);
- this._queues.on("leftzero", () => {
- var ref;
- return (ref = this._store.heartbeat) != null ? typeof ref.ref === "function" ? ref.ref() : void 0 : void 0;
- });
- this._queues.on("zero", () => {
- var ref;
- return (ref = this._store.heartbeat) != null ? typeof ref.unref === "function" ? ref.unref() : void 0 : void 0;
- });
- }
+ if (!allowedAlgorithms) {
+ throw new Error(`Unknown key type "${keyType}".`);
+ }
- _validateOptions(options, invalid) {
- if (!((options != null) && typeof options === "object" && invalid.length === 0)) {
- throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.");
- }
- }
+ if (!allowedAlgorithms.includes(algorithm)) {
+ throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(', ')}.`)
+ }
- ready() {
- return this._store.ready;
- }
+ /*
+ * Ignore the next block from test coverage because it gets executed
+ * conditionally depending on the Node version. Not ignoring it would
+ * prevent us from reaching the target % of coverage for versions of
+ * Node under 15.7.0.
+ */
+ /* istanbul ignore next */
+ if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {
+ switch (keyType) {
+ case 'ec':
+ const keyCurve = key.asymmetricKeyDetails.namedCurve;
+ const allowedCurve = allowedCurves[algorithm];
- clients() {
- return this._store.clients;
- }
+ if (keyCurve !== allowedCurve) {
+ throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`);
+ }
+ break;
- channel() {
- return `b_${this.id}`;
- }
+ case 'rsa-pss':
+ if (RSA_PSS_KEY_DETAILS_SUPPORTED) {
+ const length = parseInt(algorithm.slice(-3), 10);
+ const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;
- channel_client() {
- return `b_${this.id}_${this._store.clientId}`;
- }
+ if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {
+ throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`);
+ }
- publish(message) {
- return this._store.__publish__(message);
- }
+ if (saltLength !== undefined && saltLength > length >> 3) {
+ throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`)
+ }
+ }
+ break;
+ }
+ }
+}
- disconnect(flush = true) {
- return this._store.__disconnect__(flush);
- }
- chain(_limiter) {
- this._limiter = _limiter;
- return this;
- }
+/***/ }),
- queued(priority) {
- return this._queues.queued(priority);
- }
+/***/ 4644:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- clusterQueued() {
- return this._store.__queued__();
- }
+const ANY = Symbol('SemVer ANY')
+// hoisted class for cyclic dependency
+class Comparator {
+ static get ANY () {
+ return ANY
+ }
- empty() {
- return this.queued() === 0 && this._submitLock.isEmpty();
- }
+ constructor (comp, options) {
+ options = parseOptions(options)
- running() {
- return this._store.__running__();
- }
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
- done() {
- return this._store.__done__();
- }
+ comp = comp.trim().split(/\s+/).join(' ')
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
- jobStatus(id) {
- return this._states.jobStatus(id);
- }
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
- jobs(status) {
- return this._states.statusJobs(status);
- }
+ debug('comp', this)
+ }
- counts() {
- return this._states.statusCounts();
- }
+ parse (comp) {
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ const m = comp.match(r)
- _randomIndex() {
- return Math.random().toString(36).slice(2);
- }
+ if (!m) {
+ throw new TypeError(`Invalid comparator: ${comp}`)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+ }
- check(weight = 1) {
- return this._store.__check__(weight);
- }
+ toString () {
+ return this.value
+ }
- _clearGlobalState(index) {
- if (this._scheduled[index] != null) {
- clearTimeout(this._scheduled[index].expiration);
- delete this._scheduled[index];
- return true;
- } else {
- return false;
- }
- }
+ test (version) {
+ debug('Comparator.test', version, this.options.loose)
- async _free(index, job, options, eventInfo) {
- var e, running;
- try {
- ({running} = (await this._store.__free__(index, options.weight)));
- this.Events.trigger("debug", `Freed ${options.id}`, eventInfo);
- if (running === 0 && this.empty()) {
- return this.Events.trigger("idle");
- }
- } catch (error1) {
- e = error1;
- return this.Events.trigger("error", e);
- }
- }
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
- _run(index, job, wait) {
- var clearGlobalState, free, run;
- job.doRun();
- clearGlobalState = this._clearGlobalState.bind(this, index);
- run = this._run.bind(this, index, job);
- free = this._free.bind(this, index, job);
- return this._scheduled[index] = {
- timeout: setTimeout(() => {
- return job.doExecute(this._limiter, clearGlobalState, run, free);
- }, wait),
- expiration: job.options.expiration != null ? setTimeout(function() {
- return job.doExpire(clearGlobalState, run, free);
- }, wait + job.options.expiration) : void 0,
- job: job
- };
- }
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
- _drainOne(capacity) {
- return this._registerLock.schedule(() => {
- var args, index, next, options, queue;
- if (this.queued() === 0) {
- return this.Promise.resolve(null);
- }
- queue = this._queues.getFirst();
- ({options, args} = next = queue.first());
- if ((capacity != null) && options.weight > capacity) {
- return this.Promise.resolve(null);
- }
- this.Events.trigger("debug", `Draining ${options.id}`, {args, options});
- index = this._randomIndex();
- return this._store.__register__(index, options.weight, options.expiration).then(({success, wait, reservoir}) => {
- var empty;
- this.Events.trigger("debug", `Drained ${options.id}`, {success, args, options});
- if (success) {
- queue.shift();
- empty = this.empty();
- if (empty) {
- this.Events.trigger("empty");
- }
- if (reservoir === 0) {
- this.Events.trigger("depleted", empty);
- }
- this._run(index, next, wait);
- return this.Promise.resolve(options.weight);
- } else {
- return this.Promise.resolve(null);
- }
- });
- });
- }
+ return cmp(version, this.operator, this.semver, this.options)
+ }
- _drainAll(capacity, total = 0) {
- return this._drainOne(capacity).then((drained) => {
- var newCapacity;
- if (drained != null) {
- newCapacity = capacity != null ? capacity - drained : capacity;
- return this._drainAll(newCapacity, total + drained);
- } else {
- return this.Promise.resolve(total);
- }
- }).catch((e) => {
- return this.Events.trigger("error", e);
- });
- }
+ intersects (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
- _dropAllQueued(message) {
- return this._queues.shiftAll(function(job) {
- return job.doDrop({message});
- });
- }
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ return new Range(comp.value, options).test(this.value)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ return new Range(this.value, options).test(comp.semver)
+ }
- stop(options = {}) {
- var done, waitForExecuting;
- options = parser$5.load(options, this.stopDefaults);
- waitForExecuting = (at) => {
- var finished;
- finished = () => {
- var counts;
- counts = this._states.counts;
- return (counts[0] + counts[1] + counts[2] + counts[3]) === at;
- };
- return new this.Promise((resolve, reject) => {
- if (finished()) {
- return resolve();
- } else {
- return this.on("done", () => {
- if (finished()) {
- this.removeAllListeners("done");
- return resolve();
- }
- });
- }
- });
- };
- done = options.dropWaitingJobs ? (this._run = function(index, next) {
- return next.doDrop({
- message: options.dropErrorMessage
- });
- }, this._drainOne = () => {
- return this.Promise.resolve(null);
- }, this._registerLock.schedule(() => {
- return this._submitLock.schedule(() => {
- var k, ref, v;
- ref = this._scheduled;
- for (k in ref) {
- v = ref[k];
- if (this.jobStatus(v.job.options.id) === "RUNNING") {
- clearTimeout(v.timeout);
- clearTimeout(v.expiration);
- v.job.doDrop({
- message: options.dropErrorMessage
- });
- }
- }
- this._dropAllQueued(options.dropErrorMessage);
- return waitForExecuting(0);
- });
- })) : this.schedule({
- priority: NUM_PRIORITIES$1 - 1,
- weight: 0
- }, () => {
- return waitForExecuting(1);
- });
- this._receive = function(job) {
- return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));
- };
- this.stop = () => {
- return this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called"));
- };
- return done;
- }
+ options = parseOptions(options)
- async _addToQueue(job) {
- var args, blocked, error, options, reachedHWM, shifted, strategy;
- ({args, options} = job);
- try {
- ({reachedHWM, blocked, strategy} = (await this._store.__submit__(this.queued(), options.weight)));
- } catch (error1) {
- error = error1;
- this.Events.trigger("debug", `Could not queue ${options.id}`, {args, options, error});
- job.doDrop({error});
- return false;
- }
- if (blocked) {
- job.doDrop();
- return true;
- } else if (reachedHWM) {
- shifted = strategy === Bottleneck.prototype.strategy.LEAK ? this._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? this._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;
- if (shifted != null) {
- shifted.doDrop();
- }
- if ((shifted == null) || strategy === Bottleneck.prototype.strategy.OVERFLOW) {
- if (shifted == null) {
- job.doDrop();
- }
- return reachedHWM;
- }
- }
- job.doQueue(reachedHWM, blocked);
- this._queues.push(job);
- await this._drainAll();
- return reachedHWM;
- }
+ // Special cases where nothing can possibly be lower
+ if (options.includePrerelease &&
+ (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {
+ return false
+ }
+ if (!options.includePrerelease &&
+ (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {
+ return false
+ }
- _receive(job) {
- if (this._states.jobStatus(job.options.id) != null) {
- job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));
- return false;
- } else {
- job.doReceive();
- return this._submitLock.schedule(this._addToQueue, job);
- }
- }
+ // Same direction increasing (> or >=)
+ if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {
+ return true
+ }
+ // Same direction decreasing (< or <=)
+ if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // same SemVer and both sides are inclusive (<= or >=)
+ if (
+ (this.semver.version === comp.semver.version) &&
+ this.operator.includes('=') && comp.operator.includes('=')) {
+ return true
+ }
+ // opposite directions less than
+ if (cmp(this.semver, '<', comp.semver, options) &&
+ this.operator.startsWith('>') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // opposite directions greater than
+ if (cmp(this.semver, '>', comp.semver, options) &&
+ this.operator.startsWith('<') && comp.operator.startsWith('>')) {
+ return true
+ }
+ return false
+ }
+}
- submit(...args) {
- var cb, fn, job, options, ref, ref1, task;
- if (typeof args[0] === "function") {
- ref = args, [fn, ...args] = ref, [cb] = splice.call(args, -1);
- options = parser$5.load({}, this.jobDefaults);
- } else {
- ref1 = args, [options, fn, ...args] = ref1, [cb] = splice.call(args, -1);
- options = parser$5.load(options, this.jobDefaults);
- }
- task = (...args) => {
- return new this.Promise(function(resolve, reject) {
- return fn(...args, function(...args) {
- return (args[0] != null ? reject : resolve)(args);
- });
- });
- };
- job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);
- job.promise.then(function(args) {
- return typeof cb === "function" ? cb(...args) : void 0;
- }).catch(function(args) {
- if (Array.isArray(args)) {
- return typeof cb === "function" ? cb(...args) : void 0;
- } else {
- return typeof cb === "function" ? cb(args) : void 0;
- }
- });
- return this._receive(job);
- }
+module.exports = Comparator
- schedule(...args) {
- var job, options, task;
- if (typeof args[0] === "function") {
- [task, ...args] = args;
- options = {};
- } else {
- [options, task, ...args] = args;
- }
- job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);
- this._receive(job);
- return job.promise;
- }
+const parseOptions = __nccwpck_require__(5185)
+const { safeRe: re, t } = __nccwpck_require__(6091)
+const cmp = __nccwpck_require__(3621)
+const debug = __nccwpck_require__(2935)
+const SemVer = __nccwpck_require__(3402)
+const Range = __nccwpck_require__(4502)
- wrap(fn) {
- var schedule, wrapped;
- schedule = this.schedule.bind(this);
- wrapped = function(...args) {
- return schedule(fn.bind(this), ...args);
- };
- wrapped.withOptions = function(options, ...args) {
- return schedule(options, fn, ...args);
- };
- return wrapped;
- }
- async updateSettings(options = {}) {
- await this._store.__updateSettings__(parser$5.overwrite(options, this.storeDefaults));
- parser$5.overwrite(options, this.instanceDefaults, this);
- return this;
- }
+/***/ }),
- currentReservoir() {
- return this._store.__currentReservoir__();
- }
+/***/ 4502:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- incrementReservoir(incr = 0) {
- return this._store.__incrementReservoir__(incr);
- }
+// hoisted class for cyclic dependency
+class Range {
+ constructor (range, options) {
+ options = parseOptions(options)
- }
- Bottleneck.default = Bottleneck;
+ if (range instanceof Range) {
+ if (
+ range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease
+ ) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
- Bottleneck.Events = Events$4;
+ if (range instanceof Comparator) {
+ // just put it in the set and return
+ this.raw = range.value
+ this.set = [[range]]
+ this.format()
+ return this
+ }
- Bottleneck.version = Bottleneck.prototype.version = require$$8.version;
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
- Bottleneck.strategy = Bottleneck.prototype.strategy = {
- LEAK: 1,
- OVERFLOW: 2,
- OVERFLOW_PRIORITY: 4,
- BLOCK: 3
- };
+ // First reduce all whitespace as much as possible so we do not have to rely
+ // on potentially slow regexes like \s*. This is then stored and used for
+ // future error messages as well.
+ this.raw = range
+ .trim()
+ .split(/\s+/)
+ .join(' ')
- Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1;
+ // First, split on ||
+ this.set = this.raw
+ .split('||')
+ // map the range to a 2d array of comparators
+ .map(r => this.parseRange(r.trim()))
+ // throw out any comparator lists that are empty
+ // this generally means that it was not a valid range, which is allowed
+ // in loose mode, but will still throw if the WHOLE range is invalid.
+ .filter(c => c.length)
- Bottleneck.Group = Bottleneck.prototype.Group = Group_1;
+ if (!this.set.length) {
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
+ }
- Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require$$2;
+ // if we have any that are not the null set, throw out null sets.
+ if (this.set.length > 1) {
+ // keep the first one, in case they're all null sets
+ const first = this.set[0]
+ this.set = this.set.filter(c => !isNullSet(c[0]))
+ if (this.set.length === 0) {
+ this.set = [first]
+ } else if (this.set.length > 1) {
+ // if we have any that are *, then the range is just *
+ for (const c of this.set) {
+ if (c.length === 1 && isAny(c[0])) {
+ this.set = [c]
+ break
+ }
+ }
+ }
+ }
- Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require$$3;
+ this.format()
+ }
- Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1;
+ format () {
+ this.range = this.set
+ .map((comps) => comps.join(' ').trim())
+ .join('||')
+ .trim()
+ return this.range
+ }
- Bottleneck.prototype.jobDefaults = {
- priority: DEFAULT_PRIORITY$1,
- weight: 1,
- expiration: null,
- id: ""
- };
+ toString () {
+ return this.range
+ }
- Bottleneck.prototype.storeDefaults = {
- maxConcurrent: null,
- minTime: 0,
- highWater: null,
- strategy: Bottleneck.prototype.strategy.LEAK,
- penalty: null,
- reservoir: null,
- reservoirRefreshInterval: null,
- reservoirRefreshAmount: null,
- reservoirIncreaseInterval: null,
- reservoirIncreaseAmount: null,
- reservoirIncreaseMaximum: null
- };
+ parseRange (range) {
+ // memoize range parsing for performance.
+ // this is a very hot path, and fully deterministic.
+ const memoOpts =
+ (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
+ (this.options.loose && FLAG_LOOSE)
+ const memoKey = memoOpts + ':' + range
+ const cached = cache.get(memoKey)
+ if (cached) {
+ return cached
+ }
- Bottleneck.prototype.localStoreDefaults = {
- Promise: Promise,
- timeout: null,
- heartbeatInterval: 250
- };
+ const loose = this.options.loose
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
+ debug('hyphen replace', range)
- Bottleneck.prototype.redisStoreDefaults = {
- Promise: Promise,
- timeout: null,
- heartbeatInterval: 5000,
- clientTimeout: 10000,
- Redis: null,
- clientOptions: {},
- clusterNodes: null,
- clearDatastore: false,
- connection: null
- };
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range)
- Bottleneck.prototype.instanceDefaults = {
- datastore: "local",
- connection: null,
- id: "",
- rejectOnDrop: true,
- trackDoneStatus: false,
- Promise: Promise
- };
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+ debug('tilde trim', range)
- Bottleneck.prototype.stopDefaults = {
- enqueueErrorMessage: "This limiter has been stopped and cannot accept new jobs.",
- dropWaitingJobs: true,
- dropErrorMessage: "This limiter has been stopped."
- };
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+ debug('caret trim', range)
- return Bottleneck;
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
- }).call(commonjsGlobal);
+ let rangeList = range
+ .split(' ')
+ .map(comp => parseComparator(comp, this.options))
+ .join(' ')
+ .split(/\s+/)
+ // >=0.0.0 is equivalent to *
+ .map(comp => replaceGTE0(comp, this.options))
- var Bottleneck_1 = Bottleneck;
+ if (loose) {
+ // in loose mode, throw out any that are not valid comparators
+ rangeList = rangeList.filter(comp => {
+ debug('loose invalid filter', comp, this.options)
+ return !!comp.match(re[t.COMPARATORLOOSE])
+ })
+ }
+ debug('range list', rangeList)
- var lib = Bottleneck_1;
+ // if any comparators are the null set, then replace with JUST null set
+ // if more than one comparator, remove any * comparators
+ // also, don't include the same comparator more than once
+ const rangeMap = new Map()
+ const comparators = rangeList.map(comp => new Comparator(comp, this.options))
+ for (const comp of comparators) {
+ if (isNullSet(comp)) {
+ return [comp]
+ }
+ rangeMap.set(comp.value, comp)
+ }
+ if (rangeMap.size > 1 && rangeMap.has('')) {
+ rangeMap.delete('')
+ }
- return lib;
+ const result = [...rangeMap.values()]
+ cache.set(memoKey, result)
+ return result
+ }
-})));
+ intersects (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+ return this.set.some((thisComparators) => {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some((rangeComparators) => {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every((thisComparator) => {
+ return rangeComparators.every((rangeComparator) => {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+ }
-/***/ }),
+ // if ANY of the sets match ALL of its comparators, then pass
+ test (version) {
+ if (!version) {
+ return false
+ }
-/***/ 2358:
-/***/ ((module) => {
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
-module.exports = function btoa(str) {
- return new Buffer(str).toString('base64')
+ for (let i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+ }
}
+module.exports = Range
-/***/ }),
-
-/***/ 9239:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
-/*jshint node:true */
+const LRU = __nccwpck_require__(7129)
+const cache = new LRU({ max: 1000 })
-var Buffer = (__nccwpck_require__(4300).Buffer); // browserify
-var SlowBuffer = (__nccwpck_require__(4300).SlowBuffer);
+const parseOptions = __nccwpck_require__(5185)
+const Comparator = __nccwpck_require__(4644)
+const debug = __nccwpck_require__(2935)
+const SemVer = __nccwpck_require__(3402)
+const {
+ safeRe: re,
+ t,
+ comparatorTrimReplace,
+ tildeTrimReplace,
+ caretTrimReplace,
+} = __nccwpck_require__(6091)
+const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __nccwpck_require__(7344)
-module.exports = bufferEq;
+const isNullSet = c => c.value === '<0.0.0-0'
+const isAny = c => c.value === ''
-function bufferEq(a, b) {
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+const isSatisfiable = (comparators, options) => {
+ let result = true
+ const remainingComparators = comparators.slice()
+ let testComparator = remainingComparators.pop()
- // shortcutting on type is necessary for correctness
- if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
- return false;
- }
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every((otherComparator) => {
+ return testComparator.intersects(otherComparator, options)
+ })
- // buffer sizes should be well-known information, so despite this
- // shortcutting, it doesn't leak any information about the *contents* of the
- // buffers.
- if (a.length !== b.length) {
- return false;
+ testComparator = remainingComparators.pop()
}
- var c = 0;
- for (var i = 0; i < a.length; i++) {
- /*jshint bitwise:false */
- c |= a[i] ^ b[i]; // XOR
- }
- return c === 0;
+ return result
}
-bufferEq.install = function() {
- Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
- return bufferEq(this, that);
- };
-};
-
-var origBufEqual = Buffer.prototype.equal;
-var origSlowBufEqual = SlowBuffer.prototype.equal;
-bufferEq.restore = function() {
- Buffer.prototype.equal = origBufEqual;
- SlowBuffer.prototype.equal = origSlowBufEqual;
-};
-
-
-/***/ }),
-
-/***/ 7972:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+const parseComparator = (comp, options) => {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
-const os = __nccwpck_require__(2037);
+const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
-const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
-const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
-const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
+// ~0.0.1 --> >=0.0.1 <0.1.0-0
+const replaceTildes = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceTilde(c, options))
+ .join(' ')
+}
-module.exports = (stack, options) => {
- options = Object.assign({pretty: false}, options);
+const replaceTilde = (comp, options) => {
+ const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('tilde', comp, _, M, m, p, pr)
+ let ret
- return stack.replace(/\\/g, '/')
- .split('\n')
- .filter(line => {
- const pathMatches = line.match(extractPathRegex);
- if (pathMatches === null || !pathMatches[1]) {
- return true;
- }
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0-0
+ ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0-0
+ ret = `>=${M}.${m}.${p
+ } <${M}.${+m + 1}.0-0`
+ }
- const match = pathMatches[1];
+ debug('tilde return', ret)
+ return ret
+ })
+}
- // Electron
- if (
- match.includes('.app/Contents/Resources/electron.asar') ||
- match.includes('.app/Contents/Resources/default_app.asar')
- ) {
- return false;
- }
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
+// ^1.2.3 --> >=1.2.3 <2.0.0-0
+// ^1.2.0 --> >=1.2.0 <2.0.0-0
+// ^0.0.1 --> >=0.0.1 <0.0.2-0
+// ^0.1.0 --> >=0.1.0 <0.2.0-0
+const replaceCarets = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceCaret(c, options))
+ .join(' ')
+}
- return !pathRegex.test(match);
- })
- .filter(line => line.trim() !== '')
- .map(line => {
- if (options.pretty) {
- return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
- }
+const replaceCaret = (comp, options) => {
+ debug('caret', comp, options)
+ const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ const z = options.includePrerelease ? '-0' : ''
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('caret', comp, _, M, m, p, pr)
+ let ret
- return line;
- })
- .join('\n');
-};
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
+ } else {
+ ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${+M + 1}.0.0-0`
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p
+ } <${+M + 1}.0.0-0`
+ }
+ }
+ debug('caret return', ret)
+ return ret
+ })
+}
-/***/ }),
+const replaceXRanges = (comp, options) => {
+ debug('replaceXRanges', comp, options)
+ return comp
+ .split(/\s+/)
+ .map((c) => replaceXRange(c, options))
+ .join(' ')
+}
-/***/ 8932:
-/***/ ((__unused_webpack_module, exports) => {
+const replaceXRange = (comp, options) => {
+ comp = comp.trim()
+ const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ const xM = isX(M)
+ const xm = xM || isX(m)
+ const xp = xm || isX(p)
+ const anyX = xp
-"use strict";
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
-Object.defineProperty(exports, "__esModule", ({ value: true }));
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
-class Deprecation extends Error {
- constructor(message) {
- super(message); // Maintains proper stack trace (only available on V8)
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
- /* istanbul ignore next */
+ if (gtlt === '<') {
+ pr = '-0'
+ }
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
+ ret = `${gtlt + M}.${m}.${p}${pr}`
+ } else if (xm) {
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
+ } else if (xp) {
+ ret = `>=${M}.${m}.0${pr
+ } <${M}.${+m + 1}.0-0`
}
- this.name = 'Deprecation';
- }
+ debug('xRange return', ret)
+ return ret
+ })
}
-exports.Deprecation = Deprecation;
-
-
-/***/ }),
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+const replaceStars = (comp, options) => {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp
+ .trim()
+ .replace(re[t.STAR], '')
+}
-/***/ 1728:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+const replaceGTE0 = (comp, options) => {
+ debug('replaceGTE0', comp, options)
+ return comp
+ .trim()
+ .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
+}
-"use strict";
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
+const hyphenReplace = incPr => ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) => {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = `>=${fM}.0.0${incPr ? '-0' : ''}`
+ } else if (isX(fp)) {
+ from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
+ } else if (fpr) {
+ from = `>=${from}`
+ } else {
+ from = `>=${from}${incPr ? '-0' : ''}`
+ }
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = `<${+tM + 1}.0.0-0`
+ } else if (isX(tp)) {
+ to = `<${tM}.${+tm + 1}.0-0`
+ } else if (tpr) {
+ to = `<=${tM}.${tm}.${tp}-${tpr}`
+ } else if (incPr) {
+ to = `<${tM}.${tm}.${+tp + 1}-0`
+ } else {
+ to = `<=${to}`
+ }
-var Buffer = (__nccwpck_require__(1867).Buffer);
+ return `${from} ${to}`.trim()
+}
-var getParamBytesForAlg = __nccwpck_require__(528);
+const testSet = (set, version, options) => {
+ for (let i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
-var MAX_OCTET = 0x80,
- CLASS_UNIVERSAL = 0,
- PRIMITIVE_BIT = 0x20,
- TAG_SEQ = 0x10,
- TAG_INT = 0x02,
- ENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),
- ENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (let i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === Comparator.ANY) {
+ continue
+ }
-function base64Url(base64) {
- return base64
- .replace(/=/g, '')
- .replace(/\+/g, '-')
- .replace(/\//g, '_');
-}
+ if (set[i].semver.prerelease.length > 0) {
+ const allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
-function signatureAsBuffer(signature) {
- if (Buffer.isBuffer(signature)) {
- return signature;
- } else if ('string' === typeof signature) {
- return Buffer.from(signature, 'base64');
- }
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
- throw new TypeError('ECDSA signature must be a Base64 string or a Buffer');
+ return true
}
-function derToJose(signature, alg) {
- signature = signatureAsBuffer(signature);
- var paramBytes = getParamBytesForAlg(alg);
-
- // the DER encoded param should at most be the param size, plus a padding
- // zero, since due to being a signed integer
- var maxEncodedParamLength = paramBytes + 1;
-
- var inputLength = signature.length;
- var offset = 0;
- if (signature[offset++] !== ENCODED_TAG_SEQ) {
- throw new Error('Could not find expected "seq"');
- }
+/***/ }),
- var seqLength = signature[offset++];
- if (seqLength === (MAX_OCTET | 1)) {
- seqLength = signature[offset++];
- }
+/***/ 3402:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (inputLength - offset < seqLength) {
- throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining');
- }
+const debug = __nccwpck_require__(2935)
+const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(7344)
+const { safeRe: re, t } = __nccwpck_require__(6091)
- if (signature[offset++] !== ENCODED_TAG_INT) {
- throw new Error('Could not find expected "int" for "r"');
- }
+const parseOptions = __nccwpck_require__(5185)
+const { compareIdentifiers } = __nccwpck_require__(2179)
+class SemVer {
+ constructor (version, options) {
+ options = parseOptions(options)
- var rLength = signature[offset++];
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose &&
+ version.includePrerelease === !!options.includePrerelease) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
+ }
- if (inputLength - offset - 2 < rLength) {
- throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available');
- }
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError(
+ `version is longer than ${MAX_LENGTH} characters`
+ )
+ }
- if (maxEncodedParamLength < rLength) {
- throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable');
- }
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+ // this isn't actually relevant for versions, but keep it so that we
+ // don't run into trouble passing this.options around.
+ this.includePrerelease = !!options.includePrerelease
- var rOffset = offset;
- offset += rLength;
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
- if (signature[offset++] !== ENCODED_TAG_INT) {
- throw new Error('Could not find expected "int" for "s"');
- }
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`)
+ }
- var sLength = signature[offset++];
+ this.raw = version
- if (inputLength - offset !== sLength) {
- throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"');
- }
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
- if (maxEncodedParamLength < sLength) {
- throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable');
- }
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
- var sOffset = offset;
- offset += sLength;
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
- if (offset !== inputLength) {
- throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain');
- }
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
- var rPadding = paramBytes - rLength,
- sPadding = paramBytes - sLength;
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map((id) => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
- var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+ }
- for (offset = 0; offset < rPadding; ++offset) {
- dst[offset] = 0;
- }
- signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);
+ format () {
+ this.version = `${this.major}.${this.minor}.${this.patch}`
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join('.')}`
+ }
+ return this.version
+ }
- offset = paramBytes;
+ toString () {
+ return this.version
+ }
- for (var o = offset; offset < o + sPadding; ++offset) {
- dst[offset] = 0;
- }
- signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);
+ compare (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0
+ }
+ other = new SemVer(other, this.options)
+ }
- dst = dst.toString('base64');
- dst = base64Url(dst);
+ if (other.version === this.version) {
+ return 0
+ }
- return dst;
-}
+ return this.compareMain(other) || this.comparePre(other)
+ }
-function countPadding(buf, start, stop) {
- var padding = 0;
- while (start + padding < stop && buf[start + padding] === 0) {
- ++padding;
- }
+ compareMain (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
- var needsSign = buf[start + padding] >= MAX_OCTET;
- if (needsSign) {
- --padding;
- }
+ return (
+ compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+ )
+ }
- return padding;
-}
+ comparePre (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-function joseToDer(signature, alg) {
- signature = signatureAsBuffer(signature);
- var paramBytes = getParamBytesForAlg(alg);
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
- var signatureBytes = signature.length;
- if (signatureBytes !== paramBytes * 2) {
- throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"');
- }
+ let i = 0
+ do {
+ const a = this.prerelease[i]
+ const b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
- var rPadding = countPadding(signature, 0, paramBytes);
- var sPadding = countPadding(signature, paramBytes, signature.length);
- var rLength = paramBytes - rPadding;
- var sLength = paramBytes - sPadding;
+ compareBuild (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
- var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;
+ let i = 0
+ do {
+ const a = this.build[i]
+ const b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
- var shortLength = rsBytes < MAX_OCTET;
+ // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+ inc (release, identifier, identifierBase) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier, identifierBase)
+ this.inc('pre', identifier, identifierBase)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier, identifierBase)
+ }
+ this.inc('pre', identifier, identifierBase)
+ break
- var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (
+ this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0
+ ) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+ case 'pre': {
+ const base = Number(identifierBase) ? 1 : 0
- var offset = 0;
- dst[offset++] = ENCODED_TAG_SEQ;
- if (shortLength) {
- // Bit 8 has value "0"
- // bits 7-1 give the length.
- dst[offset++] = rsBytes;
- } else {
- // Bit 8 of first octet has value "1"
- // bits 7-1 give the number of additional length octets.
- dst[offset++] = MAX_OCTET | 1;
- // length, base 256
- dst[offset++] = rsBytes & 0xff;
- }
- dst[offset++] = ENCODED_TAG_INT;
- dst[offset++] = rLength;
- if (rPadding < 0) {
- dst[offset++] = 0;
- offset += signature.copy(dst, offset, 0, paramBytes);
- } else {
- offset += signature.copy(dst, offset, rPadding, paramBytes);
- }
- dst[offset++] = ENCODED_TAG_INT;
- dst[offset++] = sLength;
- if (sPadding < 0) {
- dst[offset++] = 0;
- signature.copy(dst, offset, paramBytes);
- } else {
- signature.copy(dst, offset, paramBytes + sPadding);
- }
+ if (!identifier && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier is empty')
+ }
- return dst;
+ if (this.prerelease.length === 0) {
+ this.prerelease = [base]
+ } else {
+ let i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ if (identifier === this.prerelease.join('.') && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier already exists')
+ }
+ this.prerelease.push(base)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ let prerelease = [identifier, base]
+ if (identifierBase === false) {
+ prerelease = [identifier]
+ }
+ if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = prerelease
+ }
+ } else {
+ this.prerelease = prerelease
+ }
+ }
+ break
+ }
+ default:
+ throw new Error(`invalid increment argument: ${release}`)
+ }
+ this.raw = this.format()
+ if (this.build.length) {
+ this.raw += `+${this.build.join('.')}`
+ }
+ return this
+ }
}
-module.exports = {
- derToJose: derToJose,
- joseToDer: joseToDer
-};
+module.exports = SemVer
/***/ }),
-/***/ 528:
-/***/ ((module) => {
-
-"use strict";
-
+/***/ 8751:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function getParamSize(keySize) {
- var result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);
- return result;
+const parse = __nccwpck_require__(3371)
+const clean = (version, options) => {
+ const s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
}
+module.exports = clean
-var paramBytesForAlg = {
- ES256: getParamSize(256),
- ES384: getParamSize(384),
- ES512: getParamSize(521)
-};
-function getParamBytesForAlg(alg) {
- var paramBytes = paramBytesForAlg[alg];
- if (paramBytes) {
- return paramBytes;
- }
+/***/ }),
- throw new Error('Unknown algorithm "' + alg + '"');
-}
+/***/ 3621:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-module.exports = getParamBytesForAlg;
+const eq = __nccwpck_require__(9792)
+const neq = __nccwpck_require__(658)
+const gt = __nccwpck_require__(7040)
+const gte = __nccwpck_require__(7445)
+const lt = __nccwpck_require__(6054)
+const lte = __nccwpck_require__(9387)
+const cmp = (a, op, b, loose) => {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a === b
-/***/ }),
+ case '!==':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a !== b
-/***/ 8043:
-/***/ ((module) => {
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
-"use strict";
+ case '!=':
+ return neq(a, b, loose)
+ case '>':
+ return gt(a, b, loose)
-module.exports = (string, count = 1, options) => {
- options = {
- indent: ' ',
- includeEmptyLines: false,
- ...options
- };
+ case '>=':
+ return gte(a, b, loose)
- if (typeof string !== 'string') {
- throw new TypeError(
- `Expected \`input\` to be a \`string\`, got \`${typeof string}\``
- );
- }
+ case '<':
+ return lt(a, b, loose)
- if (typeof count !== 'number') {
- throw new TypeError(
- `Expected \`count\` to be a \`number\`, got \`${typeof count}\``
- );
- }
+ case '<=':
+ return lte(a, b, loose)
- if (typeof options.indent !== 'string') {
- throw new TypeError(
- `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
- );
- }
+ default:
+ throw new TypeError(`Invalid operator: ${op}`)
+ }
+}
+module.exports = cmp
- if (count === 0) {
- return string;
- }
- const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
+/***/ }),
- return string.replace(regex, options.indent.repeat(count));
-};
+/***/ 5766:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+const SemVer = __nccwpck_require__(3402)
+const parse = __nccwpck_require__(3371)
+const { safeRe: re, t } = __nccwpck_require__(6091)
-/***/ }),
+const coerce = (version, options) => {
+ if (version instanceof SemVer) {
+ return version
+ }
-/***/ 3359:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ if (typeof version === 'number') {
+ version = String(version)
+ }
-var jws = __nccwpck_require__(4636);
+ if (typeof version !== 'string') {
+ return null
+ }
-module.exports = function (jwt, options) {
- options = options || {};
- var decoded = jws.decode(jwt, options);
- if (!decoded) { return null; }
- var payload = decoded.payload;
+ options = options || {}
- //try parse the payload
- if(typeof payload === 'string') {
- try {
- var obj = JSON.parse(payload);
- if(obj !== null && typeof obj === 'object') {
- payload = obj;
+ let match = null
+ if (!options.rtl) {
+ match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]
+ let next
+ while ((next = coerceRtlRegex.exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
}
- } catch (e) { }
+ coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ coerceRtlRegex.lastIndex = -1
}
- //return header if `complete` option is enabled. header includes claims
- //such as `kid` and `alg` used to select the key within a JWKS needed to
- //verify the signature
- if (options.complete === true) {
- return {
- header: decoded.header,
- payload: payload,
- signature: decoded.signature
- };
+ if (match === null) {
+ return null
}
- return payload;
-};
+
+ const major = match[2]
+ const minor = match[3] || '0'
+ const patch = match[4] || '0'
+ const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''
+ const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''
+
+ return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)
+}
+module.exports = coerce
/***/ }),
-/***/ 7486:
+/***/ 1036:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-module.exports = {
- decode: __nccwpck_require__(3359),
- verify: __nccwpck_require__(2327),
- sign: __nccwpck_require__(2022),
- JsonWebTokenError: __nccwpck_require__(405),
- NotBeforeError: __nccwpck_require__(4383),
- TokenExpiredError: __nccwpck_require__(6637),
-};
+const SemVer = __nccwpck_require__(3402)
+const compareBuild = (a, b, loose) => {
+ const versionA = new SemVer(a, loose)
+ const versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+module.exports = compareBuild
/***/ }),
-/***/ 405:
-/***/ ((module) => {
-
-var JsonWebTokenError = function (message, error) {
- Error.call(this, message);
- if(Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- }
- this.name = 'JsonWebTokenError';
- this.message = message;
- if (error) this.inner = error;
-};
-
-JsonWebTokenError.prototype = Object.create(Error.prototype);
-JsonWebTokenError.prototype.constructor = JsonWebTokenError;
+/***/ 4626:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-module.exports = JsonWebTokenError;
+const compare = __nccwpck_require__(4343)
+const compareLoose = (a, b) => compare(a, b, true)
+module.exports = compareLoose
/***/ }),
-/***/ 4383:
+/***/ 4343:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-var JsonWebTokenError = __nccwpck_require__(405);
-
-var NotBeforeError = function (message, date) {
- JsonWebTokenError.call(this, message);
- this.name = 'NotBeforeError';
- this.date = date;
-};
-
-NotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);
+const SemVer = __nccwpck_require__(3402)
+const compare = (a, b, loose) =>
+ new SemVer(a, loose).compare(new SemVer(b, loose))
-NotBeforeError.prototype.constructor = NotBeforeError;
+module.exports = compare
-module.exports = NotBeforeError;
/***/ }),
-/***/ 6637:
+/***/ 4836:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-var JsonWebTokenError = __nccwpck_require__(405);
+const parse = __nccwpck_require__(3371)
-var TokenExpiredError = function (message, expiredAt) {
- JsonWebTokenError.call(this, message);
- this.name = 'TokenExpiredError';
- this.expiredAt = expiredAt;
-};
+const diff = (version1, version2) => {
+ const v1 = parse(version1, null, true)
+ const v2 = parse(version2, null, true)
+ const comparison = v1.compare(v2)
-TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);
+ if (comparison === 0) {
+ return null
+ }
-TokenExpiredError.prototype.constructor = TokenExpiredError;
+ const v1Higher = comparison > 0
+ const highVersion = v1Higher ? v1 : v2
+ const lowVersion = v1Higher ? v2 : v1
+ const highHasPre = !!highVersion.prerelease.length
+ const lowHasPre = !!lowVersion.prerelease.length
-module.exports = TokenExpiredError;
+ if (lowHasPre && !highHasPre) {
+ // Going from prerelease -> no prerelease requires some special casing
-/***/ }),
+ // If the low version has only a major, then it will always be a major
+ // Some examples:
+ // 1.0.0-1 -> 1.0.0
+ // 1.0.0-1 -> 1.1.1
+ // 1.0.0-1 -> 2.0.0
+ if (!lowVersion.patch && !lowVersion.minor) {
+ return 'major'
+ }
-/***/ 7622:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ // Otherwise it can be determined by checking the high version
-const semver = __nccwpck_require__(1383);
+ if (highVersion.patch) {
+ // anything higher than a patch bump would result in the wrong version
+ return 'patch'
+ }
-module.exports = semver.satisfies(process.version, '>=15.7.0');
+ if (highVersion.minor) {
+ // anything higher than a minor bump would result in the wrong version
+ return 'minor'
+ }
+ // bumping major/minor/patch all have same result
+ return 'major'
+ }
-/***/ }),
+ // add the `pre` prefix if we are going to a prerelease version
+ const prefix = highHasPre ? 'pre' : ''
-/***/ 9085:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ if (v1.major !== v2.major) {
+ return prefix + 'major'
+ }
-var semver = __nccwpck_require__(1383);
+ if (v1.minor !== v2.minor) {
+ return prefix + 'minor'
+ }
-module.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');
+ if (v1.patch !== v2.patch) {
+ return prefix + 'patch'
+ }
+
+ // high and low are preleases
+ return 'prerelease'
+}
+
+module.exports = diff
/***/ }),
-/***/ 5170:
+/***/ 9792:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const semver = __nccwpck_require__(1383);
-
-module.exports = semver.satisfies(process.version, '>=16.9.0');
+const compare = __nccwpck_require__(4343)
+const eq = (a, b, loose) => compare(a, b, loose) === 0
+module.exports = eq
/***/ }),
-/***/ 6098:
+/***/ 7040:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-var ms = __nccwpck_require__(9992);
-
-module.exports = function (time, iat) {
- var timestamp = iat || Math.floor(Date.now() / 1000);
-
- if (typeof time === 'string') {
- var milliseconds = ms(time);
- if (typeof milliseconds === 'undefined') {
- return;
- }
- return Math.floor(timestamp + milliseconds / 1000);
- } else if (typeof time === 'number') {
- return timestamp + time;
- } else {
- return;
- }
+const compare = __nccwpck_require__(4343)
+const gt = (a, b, loose) => compare(a, b, loose) > 0
+module.exports = gt
-};
/***/ }),
-/***/ 7596:
+/***/ 7445:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const ASYMMETRIC_KEY_DETAILS_SUPPORTED = __nccwpck_require__(7622);
-const RSA_PSS_KEY_DETAILS_SUPPORTED = __nccwpck_require__(5170);
-
-const allowedAlgorithmsForKeys = {
- 'ec': ['ES256', 'ES384', 'ES512'],
- 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],
- 'rsa-pss': ['PS256', 'PS384', 'PS512']
-};
-
-const allowedCurves = {
- ES256: 'prime256v1',
- ES384: 'secp384r1',
- ES512: 'secp521r1',
-};
+const compare = __nccwpck_require__(4343)
+const gte = (a, b, loose) => compare(a, b, loose) >= 0
+module.exports = gte
-module.exports = function(algorithm, key) {
- if (!algorithm || !key) return;
- const keyType = key.asymmetricKeyType;
- if (!keyType) return;
+/***/ }),
- const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];
+/***/ 8877:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (!allowedAlgorithms) {
- throw new Error(`Unknown key type "${keyType}".`);
- }
+const SemVer = __nccwpck_require__(3402)
- if (!allowedAlgorithms.includes(algorithm)) {
- throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(', ')}.`)
+const inc = (version, release, options, identifier, identifierBase) => {
+ if (typeof (options) === 'string') {
+ identifierBase = identifier
+ identifier = options
+ options = undefined
}
- /*
- * Ignore the next block from test coverage because it gets executed
- * conditionally depending on the Node version. Not ignoring it would
- * prevent us from reaching the target % of coverage for versions of
- * Node under 15.7.0.
- */
- /* istanbul ignore next */
- if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {
- switch (keyType) {
- case 'ec':
- const keyCurve = key.asymmetricKeyDetails.namedCurve;
- const allowedCurve = allowedCurves[algorithm];
-
- if (keyCurve !== allowedCurve) {
- throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`);
- }
- break;
-
- case 'rsa-pss':
- if (RSA_PSS_KEY_DETAILS_SUPPORTED) {
- const length = parseInt(algorithm.slice(-3), 10);
- const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;
-
- if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {
- throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`);
- }
-
- if (saltLength !== undefined && saltLength > length >> 3) {
- throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`)
- }
- }
- break;
- }
+ try {
+ return new SemVer(
+ version instanceof SemVer ? version.version : version,
+ options
+ ).inc(release, identifier, identifierBase).version
+ } catch (er) {
+ return null
}
}
+module.exports = inc
/***/ }),
-/***/ 2022:
+/***/ 6054:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const timespan = __nccwpck_require__(6098);
-const PS_SUPPORTED = __nccwpck_require__(9085);
-const validateAsymmetricKey = __nccwpck_require__(7596);
-const jws = __nccwpck_require__(4636);
-const includes = __nccwpck_require__(7931);
-const isBoolean = __nccwpck_require__(6501);
-const isInteger = __nccwpck_require__(1441);
-const isNumber = __nccwpck_require__(298);
-const isPlainObject = __nccwpck_require__(5723);
-const isString = __nccwpck_require__(5180);
-const once = __nccwpck_require__(4499);
-const { KeyObject, createSecretKey, createPrivateKey } = __nccwpck_require__(6113)
+const compare = __nccwpck_require__(4343)
+const lt = (a, b, loose) => compare(a, b, loose) < 0
+module.exports = lt
-const SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];
-if (PS_SUPPORTED) {
- SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');
-}
-const sign_options_schema = {
- expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"expiresIn" should be a number of seconds or string representing a timespan' },
- notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"notBefore" should be a number of seconds or string representing a timespan' },
- audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '"audience" must be a string or array' },
- algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' },
- header: { isValid: isPlainObject, message: '"header" must be an object' },
- encoding: { isValid: isString, message: '"encoding" must be a string' },
- issuer: { isValid: isString, message: '"issuer" must be a string' },
- subject: { isValid: isString, message: '"subject" must be a string' },
- jwtid: { isValid: isString, message: '"jwtid" must be a string' },
- noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' },
- keyid: { isValid: isString, message: '"keyid" must be a string' },
- mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' },
- allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean'},
- allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean'}
-};
+/***/ }),
+
+/***/ 9387:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const registered_claims_schema = {
- iat: { isValid: isNumber, message: '"iat" should be a number of seconds' },
- exp: { isValid: isNumber, message: '"exp" should be a number of seconds' },
- nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' }
-};
+const compare = __nccwpck_require__(4343)
+const lte = (a, b, loose) => compare(a, b, loose) <= 0
+module.exports = lte
-function validate(schema, allowUnknown, object, parameterName) {
- if (!isPlainObject(object)) {
- throw new Error('Expected "' + parameterName + '" to be a plain object.');
- }
- Object.keys(object)
- .forEach(function(key) {
- const validator = schema[key];
- if (!validator) {
- if (!allowUnknown) {
- throw new Error('"' + key + '" is not allowed in "' + parameterName + '"');
- }
- return;
- }
- if (!validator.isValid(object[key])) {
- throw new Error(validator.message);
- }
- });
-}
-function validateOptions(options) {
- return validate(sign_options_schema, false, options, 'options');
-}
+/***/ }),
-function validatePayload(payload) {
- return validate(registered_claims_schema, true, payload, 'payload');
-}
+/***/ 2100:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const options_to_payload = {
- 'audience': 'aud',
- 'issuer': 'iss',
- 'subject': 'sub',
- 'jwtid': 'jti'
-};
+const SemVer = __nccwpck_require__(3402)
+const major = (a, loose) => new SemVer(a, loose).major
+module.exports = major
-const options_for_objects = [
- 'expiresIn',
- 'notBefore',
- 'noTimestamp',
- 'audience',
- 'issuer',
- 'subject',
- 'jwtid',
-];
-module.exports = function (payload, secretOrPrivateKey, options, callback) {
- if (typeof options === 'function') {
- callback = options;
- options = {};
- } else {
- options = options || {};
- }
+/***/ }),
- const isObjectPayload = typeof payload === 'object' &&
- !Buffer.isBuffer(payload);
+/***/ 9725:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- const header = Object.assign({
- alg: options.algorithm || 'HS256',
- typ: isObjectPayload ? 'JWT' : undefined,
- kid: options.keyid
- }, options.header);
+const SemVer = __nccwpck_require__(3402)
+const minor = (a, loose) => new SemVer(a, loose).minor
+module.exports = minor
- function failure(err) {
- if (callback) {
- return callback(err);
- }
- throw err;
- }
- if (!secretOrPrivateKey && options.algorithm !== 'none') {
- return failure(new Error('secretOrPrivateKey must have a value'));
- }
+/***/ }),
- if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {
- try {
- secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)
- } catch (_) {
- try {
- secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)
- } catch (_) {
- return failure(new Error('secretOrPrivateKey is not valid key material'));
- }
- }
- }
+/***/ 658:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {
- return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))
- } else if (/^(?:RS|PS|ES)/.test(header.alg)) {
- if (secretOrPrivateKey.type !== 'private') {
- return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))
- }
- if (!options.allowInsecureKeySizes &&
- !header.alg.startsWith('ES') &&
- secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+
- secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {
- return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));
- }
- }
+const compare = __nccwpck_require__(4343)
+const neq = (a, b, loose) => compare(a, b, loose) !== 0
+module.exports = neq
- if (typeof payload === 'undefined') {
- return failure(new Error('payload is required'));
- } else if (isObjectPayload) {
- try {
- validatePayload(payload);
- }
- catch (error) {
- return failure(error);
- }
- if (!options.mutatePayload) {
- payload = Object.assign({},payload);
- }
- } else {
- const invalid_options = options_for_objects.filter(function (opt) {
- return typeof options[opt] !== 'undefined';
- });
- if (invalid_options.length > 0) {
- return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));
- }
- }
+/***/ }),
- if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {
- return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.'));
- }
+/***/ 3371:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {
- return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.'));
+const SemVer = __nccwpck_require__(3402)
+const parse = (version, options, throwErrors = false) => {
+ if (version instanceof SemVer) {
+ return version
}
-
try {
- validateOptions(options);
- }
- catch (error) {
- return failure(error);
- }
-
- if (!options.allowInvalidAsymmetricKeyTypes) {
- try {
- validateAsymmetricKey(header.alg, secretOrPrivateKey);
- } catch (error) {
- return failure(error);
+ return new SemVer(version, options)
+ } catch (er) {
+ if (!throwErrors) {
+ return null
}
+ throw er
}
+}
- const timestamp = payload.iat || Math.floor(Date.now() / 1000);
+module.exports = parse
- if (options.noTimestamp) {
- delete payload.iat;
- } else if (isObjectPayload) {
- payload.iat = timestamp;
- }
- if (typeof options.notBefore !== 'undefined') {
- try {
- payload.nbf = timespan(options.notBefore, timestamp);
- }
- catch (err) {
- return failure(err);
- }
- if (typeof payload.nbf === 'undefined') {
- return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
- }
- }
+/***/ }),
- if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {
- try {
- payload.exp = timespan(options.expiresIn, timestamp);
- }
- catch (err) {
- return failure(err);
- }
- if (typeof payload.exp === 'undefined') {
- return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
- }
- }
+/***/ 8691:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- Object.keys(options_to_payload).forEach(function (key) {
- const claim = options_to_payload[key];
- if (typeof options[key] !== 'undefined') {
- if (typeof payload[claim] !== 'undefined') {
- return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.'));
- }
- payload[claim] = options[key];
- }
- });
+const SemVer = __nccwpck_require__(3402)
+const patch = (a, loose) => new SemVer(a, loose).patch
+module.exports = patch
- const encoding = options.encoding || 'utf8';
- if (typeof callback === 'function') {
- callback = callback && once(callback);
+/***/ }),
- jws.createSign({
- header: header,
- privateKey: secretOrPrivateKey,
- payload: payload,
- encoding: encoding
- }).once('error', callback)
- .once('done', function (signature) {
- // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version
- if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {
- return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))
- }
- callback(null, signature);
- });
- } else {
- let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});
- // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version
- if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {
- throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)
- }
- return signature
+/***/ 7892:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const parse = __nccwpck_require__(3371)
+const prerelease = (version, options) => {
+ const parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+module.exports = prerelease
+
+
+/***/ }),
+
+/***/ 8227:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const compare = __nccwpck_require__(4343)
+const rcompare = (a, b, loose) => compare(b, a, loose)
+module.exports = rcompare
+
+
+/***/ }),
+
+/***/ 4590:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const compareBuild = __nccwpck_require__(1036)
+const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
+module.exports = rsort
+
+
+/***/ }),
+
+/***/ 5056:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const Range = __nccwpck_require__(4502)
+const satisfies = (version, range, options) => {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
}
-};
+ return range.test(version)
+}
+module.exports = satisfies
/***/ }),
-/***/ 2327:
+/***/ 2340:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const JsonWebTokenError = __nccwpck_require__(405);
-const NotBeforeError = __nccwpck_require__(4383);
-const TokenExpiredError = __nccwpck_require__(6637);
-const decode = __nccwpck_require__(3359);
-const timespan = __nccwpck_require__(6098);
-const validateAsymmetricKey = __nccwpck_require__(7596);
-const PS_SUPPORTED = __nccwpck_require__(9085);
-const jws = __nccwpck_require__(4636);
-const {KeyObject, createSecretKey, createPublicKey} = __nccwpck_require__(6113);
+const compareBuild = __nccwpck_require__(1036)
+const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
+module.exports = sort
-const PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];
-const EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];
-const RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];
-const HS_ALGS = ['HS256', 'HS384', 'HS512'];
-if (PS_SUPPORTED) {
- PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');
- RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');
+/***/ }),
+
+/***/ 5715:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const parse = __nccwpck_require__(3371)
+const valid = (version, options) => {
+ const v = parse(version, options)
+ return v ? v.version : null
}
+module.exports = valid
-module.exports = function (jwtString, secretOrPublicKey, options, callback) {
- if ((typeof options === 'function') && !callback) {
- callback = options;
- options = {};
- }
- if (!options) {
- options = {};
- }
+/***/ }),
- //clone this object since we are going to mutate it.
- options = Object.assign({}, options);
+/***/ 3998:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- let done;
+// just pre-load all the stuff that index.js lazily exports
+const internalRe = __nccwpck_require__(6091)
+const constants = __nccwpck_require__(7344)
+const SemVer = __nccwpck_require__(3402)
+const identifiers = __nccwpck_require__(2179)
+const parse = __nccwpck_require__(3371)
+const valid = __nccwpck_require__(5715)
+const clean = __nccwpck_require__(8751)
+const inc = __nccwpck_require__(8877)
+const diff = __nccwpck_require__(4836)
+const major = __nccwpck_require__(2100)
+const minor = __nccwpck_require__(9725)
+const patch = __nccwpck_require__(8691)
+const prerelease = __nccwpck_require__(7892)
+const compare = __nccwpck_require__(4343)
+const rcompare = __nccwpck_require__(8227)
+const compareLoose = __nccwpck_require__(4626)
+const compareBuild = __nccwpck_require__(1036)
+const sort = __nccwpck_require__(2340)
+const rsort = __nccwpck_require__(4590)
+const gt = __nccwpck_require__(7040)
+const lt = __nccwpck_require__(6054)
+const eq = __nccwpck_require__(9792)
+const neq = __nccwpck_require__(658)
+const gte = __nccwpck_require__(7445)
+const lte = __nccwpck_require__(9387)
+const cmp = __nccwpck_require__(3621)
+const coerce = __nccwpck_require__(5766)
+const Comparator = __nccwpck_require__(4644)
+const Range = __nccwpck_require__(4502)
+const satisfies = __nccwpck_require__(5056)
+const toComparators = __nccwpck_require__(4676)
+const maxSatisfying = __nccwpck_require__(5471)
+const minSatisfying = __nccwpck_require__(5356)
+const minVersion = __nccwpck_require__(87)
+const validRange = __nccwpck_require__(6895)
+const outside = __nccwpck_require__(8629)
+const gtr = __nccwpck_require__(8360)
+const ltr = __nccwpck_require__(3270)
+const intersects = __nccwpck_require__(1373)
+const simplifyRange = __nccwpck_require__(4336)
+const subset = __nccwpck_require__(4979)
+module.exports = {
+ parse,
+ valid,
+ clean,
+ inc,
+ diff,
+ major,
+ minor,
+ patch,
+ prerelease,
+ compare,
+ rcompare,
+ compareLoose,
+ compareBuild,
+ sort,
+ rsort,
+ gt,
+ lt,
+ eq,
+ neq,
+ gte,
+ lte,
+ cmp,
+ coerce,
+ Comparator,
+ Range,
+ satisfies,
+ toComparators,
+ maxSatisfying,
+ minSatisfying,
+ minVersion,
+ validRange,
+ outside,
+ gtr,
+ ltr,
+ intersects,
+ simplifyRange,
+ subset,
+ SemVer,
+ re: internalRe.re,
+ src: internalRe.src,
+ tokens: internalRe.t,
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
+ RELEASE_TYPES: constants.RELEASE_TYPES,
+ compareIdentifiers: identifiers.compareIdentifiers,
+ rcompareIdentifiers: identifiers.rcompareIdentifiers,
+}
- if (callback) {
- done = callback;
- } else {
- done = function(err, data) {
- if (err) throw err;
- return data;
- };
- }
- if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {
- return done(new JsonWebTokenError('clockTimestamp must be a number'));
- }
+/***/ }),
- if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {
- return done(new JsonWebTokenError('nonce must be a non-empty string'));
- }
+/***/ 7344:
+/***/ ((module) => {
- if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {
- return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));
- }
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+const SEMVER_SPEC_VERSION = '2.0.0'
- const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);
+const MAX_LENGTH = 256
+const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+/* istanbul ignore next */ 9007199254740991
- if (!jwtString){
- return done(new JsonWebTokenError('jwt must be provided'));
- }
+// Max safe segment length for coercion.
+const MAX_SAFE_COMPONENT_LENGTH = 16
- if (typeof jwtString !== 'string') {
- return done(new JsonWebTokenError('jwt must be a string'));
- }
+// Max safe length for a build identifier. The max length minus 6 characters for
+// the shortest version with a build 0.0.0+BUILD.
+const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
- const parts = jwtString.split('.');
+const RELEASE_TYPES = [
+ 'major',
+ 'premajor',
+ 'minor',
+ 'preminor',
+ 'patch',
+ 'prepatch',
+ 'prerelease',
+]
- if (parts.length !== 3){
- return done(new JsonWebTokenError('jwt malformed'));
- }
+module.exports = {
+ MAX_LENGTH,
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_SAFE_INTEGER,
+ RELEASE_TYPES,
+ SEMVER_SPEC_VERSION,
+ FLAG_INCLUDE_PRERELEASE: 0b001,
+ FLAG_LOOSE: 0b010,
+}
- let decodedToken;
- try {
- decodedToken = decode(jwtString, { complete: true });
- } catch(err) {
- return done(err);
- }
+/***/ }),
- if (!decodedToken) {
- return done(new JsonWebTokenError('invalid token'));
+/***/ 2935:
+/***/ ((module) => {
+
+const debug = (
+ typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)
+) ? (...args) => console.error('SEMVER', ...args)
+ : () => {}
+
+module.exports = debug
+
+
+/***/ }),
+
+/***/ 2179:
+/***/ ((module) => {
+
+const numeric = /^[0-9]+$/
+const compareIdentifiers = (a, b) => {
+ const anum = numeric.test(a)
+ const bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
}
- const header = decodedToken.header;
- let getSecret;
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
- if(typeof secretOrPublicKey === 'function') {
- if(!callback) {
- return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));
- }
+const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
- getSecret = secretOrPublicKey;
+module.exports = {
+ compareIdentifiers,
+ rcompareIdentifiers,
+}
+
+
+/***/ }),
+
+/***/ 5185:
+/***/ ((module) => {
+
+// parse out just the options we care about
+const looseOption = Object.freeze({ loose: true })
+const emptyOpts = Object.freeze({ })
+const parseOptions = options => {
+ if (!options) {
+ return emptyOpts
}
- else {
- getSecret = function(header, secretCallback) {
- return secretCallback(null, secretOrPublicKey);
- };
+
+ if (typeof options !== 'object') {
+ return looseOption
}
- return getSecret(header, function(err, secretOrPublicKey) {
- if(err) {
- return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));
- }
+ return options
+}
+module.exports = parseOptions
- const hasSignature = parts[2].trim() !== '';
- if (!hasSignature && secretOrPublicKey){
- return done(new JsonWebTokenError('jwt signature is required'));
- }
+/***/ }),
- if (hasSignature && !secretOrPublicKey) {
- return done(new JsonWebTokenError('secret or public key must be provided'));
- }
+/***/ 6091:
+/***/ ((module, exports, __nccwpck_require__) => {
- if (!hasSignature && !options.algorithms) {
- return done(new JsonWebTokenError('please specify "none" in "algorithms" to verify unsigned tokens'));
- }
+const {
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_LENGTH,
+} = __nccwpck_require__(7344)
+const debug = __nccwpck_require__(2935)
+exports = module.exports = {}
- if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {
- try {
- secretOrPublicKey = createPublicKey(secretOrPublicKey);
- } catch (_) {
- try {
- secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);
- } catch (_) {
- return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))
- }
- }
- }
+// The actual regexps go on exports.re
+const re = exports.re = []
+const safeRe = exports.safeRe = []
+const src = exports.src = []
+const t = exports.t = {}
+let R = 0
- if (!options.algorithms) {
- if (secretOrPublicKey.type === 'secret') {
- options.algorithms = HS_ALGS;
- } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {
- options.algorithms = RSA_KEY_ALGS
- } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {
- options.algorithms = EC_KEY_ALGS
- } else {
- options.algorithms = PUB_KEY_ALGS
- }
- }
+const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
- if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {
- return done(new JsonWebTokenError('invalid algorithm'));
- }
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+const safeRegexReplacements = [
+ ['\\s', 1],
+ ['\\d', MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
- if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {
- return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))
- } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {
- return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))
- }
+const makeSafeRegex = (value) => {
+ for (const [token, max] of safeRegexReplacements) {
+ value = value
+ .split(`${token}*`).join(`${token}{0,${max}}`)
+ .split(`${token}+`).join(`${token}{1,${max}}`)
+ }
+ return value
+}
- if (!options.allowInvalidAsymmetricKeyTypes) {
- try {
- validateAsymmetricKey(header.alg, secretOrPublicKey);
- } catch (e) {
- return done(e);
- }
- }
+const createToken = (name, value, isGlobal) => {
+ const safe = makeSafeRegex(value)
+ const index = R++
+ debug(name, index, value)
+ t[name] = index
+ src[index] = value
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
+ safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
+}
- let valid;
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
- try {
- valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);
- } catch (e) {
- return done(e);
- }
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
- if (!valid) {
- return done(new JsonWebTokenError('invalid signature'));
- }
+createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
+createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
- const payload = decodedToken.payload;
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
- if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {
- if (typeof payload.nbf !== 'number') {
- return done(new JsonWebTokenError('invalid nbf value'));
- }
- if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {
- return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));
- }
- }
+createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
- if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {
- if (typeof payload.exp !== 'number') {
- return done(new JsonWebTokenError('invalid exp value'));
- }
- if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {
- return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));
- }
- }
+// ## Main Version
+// Three dot-separated numeric identifiers.
- if (options.audience) {
- const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];
- const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];
+createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})`)
- const match = target.some(function (targetAudience) {
- return audiences.some(function (audience) {
- return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;
- });
- });
+createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
- if (!match) {
- return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));
- }
- }
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
- if (options.issuer) {
- const invalid_issuer =
- (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||
- (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);
+createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
- if (invalid_issuer) {
- return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));
- }
- }
+createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
- if (options.subject) {
- if (payload.sub !== options.subject) {
- return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));
- }
- }
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
- if (options.jwtid) {
- if (payload.jti !== options.jwtid) {
- return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));
- }
- }
+createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
+}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
- if (options.nonce) {
- if (payload.nonce !== options.nonce) {
- return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));
- }
- }
+createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
+}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
- if (options.maxAge) {
- if (typeof payload.iat !== 'number') {
- return done(new JsonWebTokenError('iat required when maxAge is specified'));
- }
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
- const maxAgeTimestamp = timespan(options.maxAge, payload.iat);
- if (typeof maxAgeTimestamp === 'undefined') {
- return done(new JsonWebTokenError('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
- }
- if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {
- return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));
- }
- }
+createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
- if (options.complete === true) {
- const signature = decodedToken.signature;
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
- return done(null, {
- header: header,
- payload: payload,
- signature: signature
- });
- }
+createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
+}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
- return done(null, payload);
- });
-};
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
-/***/ }),
+createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
+}${src[t.PRERELEASE]}?${
+ src[t.BUILD]}?`)
-/***/ 6010:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+createToken('FULL', `^${src[t.FULLPLAIN]}$`)
-var bufferEqual = __nccwpck_require__(9239);
-var Buffer = (__nccwpck_require__(1867).Buffer);
-var crypto = __nccwpck_require__(6113);
-var formatEcdsa = __nccwpck_require__(1728);
-var util = __nccwpck_require__(3837);
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
+}${src[t.PRERELEASELOOSE]}?${
+ src[t.BUILD]}?`)
-var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'
-var MSG_INVALID_SECRET = 'secret must be a string or buffer';
-var MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';
-var MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';
+createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
-var supportsKeyObjects = typeof crypto.createPublicKey === 'function';
-if (supportsKeyObjects) {
- MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';
- MSG_INVALID_SECRET += 'or a KeyObject';
-}
+createToken('GTLT', '((?:<|>)?=?)')
-function checkIsPublicKey(key) {
- if (Buffer.isBuffer(key)) {
- return;
- }
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
+createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
- if (typeof key === 'string') {
- return;
- }
+createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:${src[t.PRERELEASE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
- if (!supportsKeyObjects) {
- throw typeError(MSG_INVALID_VERIFIER_KEY);
- }
+createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:${src[t.PRERELEASELOOSE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
+createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+createToken('COERCEPLAIN', `${'(^|[^\\d])' +
+ '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
+createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
+createToken('COERCEFULL', src[t.COERCEPLAIN] +
+ `(?:${src[t.PRERELEASE]})?` +
+ `(?:${src[t.BUILD]})?` +
+ `(?:$|[^\\d])`)
+createToken('COERCERTL', src[t.COERCE], true)
+createToken('COERCERTLFULL', src[t.COERCEFULL], true)
- if (typeof key !== 'object') {
- throw typeError(MSG_INVALID_VERIFIER_KEY);
- }
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+createToken('LONETILDE', '(?:~>?)')
- if (typeof key.type !== 'string') {
- throw typeError(MSG_INVALID_VERIFIER_KEY);
- }
+createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
+exports.tildeTrimReplace = '$1~'
- if (typeof key.asymmetricKeyType !== 'string') {
- throw typeError(MSG_INVALID_VERIFIER_KEY);
- }
+createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
+createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
- if (typeof key.export !== 'function') {
- throw typeError(MSG_INVALID_VERIFIER_KEY);
- }
-};
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+createToken('LONECARET', '(?:\\^)')
-function checkIsPrivateKey(key) {
- if (Buffer.isBuffer(key)) {
- return;
- }
+createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
+exports.caretTrimReplace = '$1^'
- if (typeof key === 'string') {
- return;
- }
+createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
+createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
- if (typeof key === 'object') {
- return;
- }
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
+createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
- throw typeError(MSG_INVALID_SIGNER_KEY);
-};
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
+}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
+exports.comparatorTrimReplace = '$1$2$3'
-function checkIsSecretKey(key) {
- if (Buffer.isBuffer(key)) {
- return;
- }
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAIN]})` +
+ `\\s*$`)
- if (typeof key === 'string') {
- return key;
- }
+createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s*$`)
- if (!supportsKeyObjects) {
- throw typeError(MSG_INVALID_SECRET);
- }
+// Star ranges basically just allow anything at all.
+createToken('STAR', '(<|>)?=?\\s*\\*')
+// >=0.0.0 is like a star
+createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
+createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
- if (typeof key !== 'object') {
- throw typeError(MSG_INVALID_SECRET);
- }
- if (key.type !== 'secret') {
- throw typeError(MSG_INVALID_SECRET);
- }
+/***/ }),
- if (typeof key.export !== 'function') {
- throw typeError(MSG_INVALID_SECRET);
- }
-}
+/***/ 8360:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function fromBase64(base64) {
- return base64
- .replace(/=/g, '')
- .replace(/\+/g, '-')
- .replace(/\//g, '_');
-}
+// Determine if version is greater than all the versions possible in the range.
+const outside = __nccwpck_require__(8629)
+const gtr = (version, range, options) => outside(version, range, '>', options)
+module.exports = gtr
-function toBase64(base64url) {
- base64url = base64url.toString();
- var padding = 4 - base64url.length % 4;
- if (padding !== 4) {
- for (var i = 0; i < padding; ++i) {
- base64url += '=';
- }
- }
+/***/ }),
- return base64url
- .replace(/\-/g, '+')
- .replace(/_/g, '/');
-}
+/***/ 1373:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function typeError(template) {
- var args = [].slice.call(arguments, 1);
- var errMsg = util.format.bind(util, template).apply(null, args);
- return new TypeError(errMsg);
+const Range = __nccwpck_require__(4502)
+const intersects = (r1, r2, options) => {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2, options)
}
+module.exports = intersects
-function bufferOrString(obj) {
- return Buffer.isBuffer(obj) || typeof obj === 'string';
-}
-function normalizeInput(thing) {
- if (!bufferOrString(thing))
- thing = JSON.stringify(thing);
- return thing;
-}
+/***/ }),
-function createHmacSigner(bits) {
- return function sign(thing, secret) {
- checkIsSecretKey(secret);
- thing = normalizeInput(thing);
- var hmac = crypto.createHmac('sha' + bits, secret);
- var sig = (hmac.update(thing), hmac.digest('base64'))
- return fromBase64(sig);
- }
-}
+/***/ 3270:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function createHmacVerifier(bits) {
- return function verify(thing, signature, secret) {
- var computedSig = createHmacSigner(bits)(thing, secret);
- return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));
- }
-}
+const outside = __nccwpck_require__(8629)
+// Determine if version is less than all the versions possible in the range
+const ltr = (version, range, options) => outside(version, range, '<', options)
+module.exports = ltr
-function createKeySigner(bits) {
- return function sign(thing, privateKey) {
- checkIsPrivateKey(privateKey);
- thing = normalizeInput(thing);
- // Even though we are specifying "RSA" here, this works with ECDSA
- // keys as well.
- var signer = crypto.createSign('RSA-SHA' + bits);
- var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));
- return fromBase64(sig);
- }
-}
-function createKeyVerifier(bits) {
- return function verify(thing, signature, publicKey) {
- checkIsPublicKey(publicKey);
- thing = normalizeInput(thing);
- signature = toBase64(signature);
- var verifier = crypto.createVerify('RSA-SHA' + bits);
- verifier.update(thing);
- return verifier.verify(publicKey, signature, 'base64');
- }
-}
+/***/ }),
-function createPSSKeySigner(bits) {
- return function sign(thing, privateKey) {
- checkIsPrivateKey(privateKey);
- thing = normalizeInput(thing);
- var signer = crypto.createSign('RSA-SHA' + bits);
- var sig = (signer.update(thing), signer.sign({
- key: privateKey,
- padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
- saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST
- }, 'base64'));
- return fromBase64(sig);
- }
-}
+/***/ 5471:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-function createPSSKeyVerifier(bits) {
- return function verify(thing, signature, publicKey) {
- checkIsPublicKey(publicKey);
- thing = normalizeInput(thing);
- signature = toBase64(signature);
- var verifier = crypto.createVerify('RSA-SHA' + bits);
- verifier.update(thing);
- return verifier.verify({
- key: publicKey,
- padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
- saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST
- }, signature, 'base64');
+const SemVer = __nccwpck_require__(3402)
+const Range = __nccwpck_require__(4502)
+
+const maxSatisfying = (versions, range, options) => {
+ let max = null
+ let maxSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
}
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
}
+module.exports = maxSatisfying
-function createECDSASigner(bits) {
- var inner = createKeySigner(bits);
- return function sign() {
- var signature = inner.apply(null, arguments);
- signature = formatEcdsa.derToJose(signature, 'ES' + bits);
- return signature;
- };
-}
-function createECDSAVerifer(bits) {
- var inner = createKeyVerifier(bits);
- return function verify(thing, signature, publicKey) {
- signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');
- var result = inner(thing, signature, publicKey);
- return result;
- };
-}
+/***/ }),
-function createNoneSigner() {
- return function sign() {
- return '';
+/***/ 5356:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const SemVer = __nccwpck_require__(3402)
+const Range = __nccwpck_require__(4502)
+const minSatisfying = (versions, range, options) => {
+ let min = null
+ let minSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
}
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
}
+module.exports = minSatisfying
-function createNoneVerifier() {
- return function verify(thing, signature) {
- return signature === '';
+
+/***/ }),
+
+/***/ 87:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+const SemVer = __nccwpck_require__(3402)
+const Range = __nccwpck_require__(4502)
+const gt = __nccwpck_require__(7040)
+
+const minVersion = (range, loose) => {
+ range = new Range(range, loose)
+
+ let minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
}
-}
-module.exports = function jwa(algorithm) {
- var signerFactories = {
- hs: createHmacSigner,
- rs: createKeySigner,
- ps: createPSSKeySigner,
- es: createECDSASigner,
- none: createNoneSigner,
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
}
- var verifierFactories = {
- hs: createHmacVerifier,
- rs: createKeyVerifier,
- ps: createPSSKeyVerifier,
- es: createECDSAVerifer,
- none: createNoneVerifier,
+
+ minver = null
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
+
+ let setMin = null
+ comparators.forEach((comparator) => {
+ // Clone to avoid manipulating the comparator's semver object.
+ const compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!setMin || gt(compver, setMin)) {
+ setMin = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error(`Unexpected operation: ${comparator.operator}`)
+ }
+ })
+ if (setMin && (!minver || gt(minver, setMin))) {
+ minver = setMin
+ }
}
- var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);
- if (!match)
- throw typeError(MSG_INVALID_ALGORITHM, algorithm);
- var algo = (match[1] || match[3]).toLowerCase();
- var bits = match[2];
- return {
- sign: signerFactories[algo](bits),
- verify: verifierFactories[algo](bits),
+ if (minver && range.test(minver)) {
+ return minver
}
-};
+
+ return null
+}
+module.exports = minVersion
/***/ }),
-/***/ 4636:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
+/***/ 8629:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/*global exports*/
-var SignStream = __nccwpck_require__(3334);
-var VerifyStream = __nccwpck_require__(660);
+const SemVer = __nccwpck_require__(3402)
+const Comparator = __nccwpck_require__(4644)
+const { ANY } = Comparator
+const Range = __nccwpck_require__(4502)
+const satisfies = __nccwpck_require__(5056)
+const gt = __nccwpck_require__(7040)
+const lt = __nccwpck_require__(6054)
+const lte = __nccwpck_require__(9387)
+const gte = __nccwpck_require__(7445)
-var ALGORITHMS = [
- 'HS256', 'HS384', 'HS512',
- 'RS256', 'RS384', 'RS512',
- 'PS256', 'PS384', 'PS512',
- 'ES256', 'ES384', 'ES512'
-];
+const outside = (version, range, hilo, options) => {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
-exports.ALGORITHMS = ALGORITHMS;
-exports.sign = SignStream.sign;
-exports.verify = VerifyStream.verify;
-exports.decode = VerifyStream.decode;
-exports.isValid = VerifyStream.isValid;
-exports.createSign = function createSign(opts) {
- return new SignStream(opts);
-};
-exports.createVerify = function createVerify(opts) {
- return new VerifyStream(opts);
-};
+ let gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+ // If it satisfies the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
-/***/ }),
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
-/***/ 1868:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
-/*global module, process*/
-var Buffer = (__nccwpck_require__(1867).Buffer);
-var Stream = __nccwpck_require__(2781);
-var util = __nccwpck_require__(3837);
+ let high = null
+ let low = null
-function DataStream(data) {
- this.buffer = null;
- this.writable = true;
- this.readable = true;
+ comparators.forEach((comparator) => {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
- // No input
- if (!data) {
- this.buffer = Buffer.alloc(0);
- return this;
- }
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
- // Stream
- if (typeof data.pipe === 'function') {
- this.buffer = Buffer.alloc(0);
- data.pipe(this);
- return this;
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
}
+ return true
+}
- // Buffer or String
- // or Object (assumedly a passworded key)
- if (data.length || typeof data === 'object') {
- this.buffer = data;
- this.writable = false;
- process.nextTick(function () {
- this.emit('end', data);
- this.readable = false;
- this.emit('close');
- }.bind(this));
- return this;
- }
+module.exports = outside
- throw new TypeError('Unexpected data type ('+ typeof data + ')');
-}
-util.inherits(DataStream, Stream);
-DataStream.prototype.write = function write(data) {
- this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);
- this.emit('data', data);
-};
+/***/ }),
-DataStream.prototype.end = function end(data) {
- if (data)
- this.write(data);
- this.emit('end', data);
- this.emit('close');
- this.writable = false;
- this.readable = false;
-};
+/***/ 4336:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-module.exports = DataStream;
+// given a set of versions and a range, create a "simplified" range
+// that includes the same versions that the original range does
+// If the original range is shorter than the simplified one, return that.
+const satisfies = __nccwpck_require__(5056)
+const compare = __nccwpck_require__(4343)
+module.exports = (versions, range, options) => {
+ const set = []
+ let first = null
+ let prev = null
+ const v = versions.sort((a, b) => compare(a, b, options))
+ for (const version of v) {
+ const included = satisfies(version, range, options)
+ if (included) {
+ prev = version
+ if (!first) {
+ first = version
+ }
+ } else {
+ if (prev) {
+ set.push([first, prev])
+ }
+ prev = null
+ first = null
+ }
+ }
+ if (first) {
+ set.push([first, null])
+ }
+
+ const ranges = []
+ for (const [min, max] of set) {
+ if (min === max) {
+ ranges.push(min)
+ } else if (!max && min === v[0]) {
+ ranges.push('*')
+ } else if (!max) {
+ ranges.push(`>=${min}`)
+ } else if (min === v[0]) {
+ ranges.push(`<=${max}`)
+ } else {
+ ranges.push(`${min} - ${max}`)
+ }
+ }
+ const simplified = ranges.join(' || ')
+ const original = typeof range.raw === 'string' ? range.raw : String(range)
+ return simplified.length < original.length ? simplified : range
+}
/***/ }),
-/***/ 3334:
+/***/ 4979:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/*global module*/
-var Buffer = (__nccwpck_require__(1867).Buffer);
-var DataStream = __nccwpck_require__(1868);
-var jwa = __nccwpck_require__(6010);
-var Stream = __nccwpck_require__(2781);
-var toString = __nccwpck_require__(5292);
-var util = __nccwpck_require__(3837);
+const Range = __nccwpck_require__(4502)
+const Comparator = __nccwpck_require__(4644)
+const { ANY } = Comparator
+const satisfies = __nccwpck_require__(5056)
+const compare = __nccwpck_require__(4343)
-function base64url(string, encoding) {
- return Buffer
- .from(string, encoding)
- .toString('base64')
- .replace(/=/g, '')
- .replace(/\+/g, '-')
- .replace(/\//g, '_');
-}
+// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
+// - Every simple range `r1, r2, ...` is a null set, OR
+// - Every simple range `r1, r2, ...` which is not a null set is a subset of
+// some `R1, R2, ...`
+//
+// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
+// - If c is only the ANY comparator
+// - If C is only the ANY comparator, return true
+// - Else if in prerelease mode, return false
+// - else replace c with `[>=0.0.0]`
+// - If C is only the ANY comparator
+// - if in prerelease mode, return true
+// - else replace C with `[>=0.0.0]`
+// - Let EQ be the set of = comparators in c
+// - If EQ is more than one, return true (null set)
+// - Let GT be the highest > or >= comparator in c
+// - Let LT be the lowest < or <= comparator in c
+// - If GT and LT, and GT.semver > LT.semver, return true (null set)
+// - If any C is a = range, and GT or LT are set, return false
+// - If EQ
+// - If GT, and EQ does not satisfy GT, return true (null set)
+// - If LT, and EQ does not satisfy LT, return true (null set)
+// - If EQ satisfies every C, return true
+// - Else return false
+// - If GT
+// - If GT.semver is lower than any > or >= comp in C, return false
+// - If GT is >=, and GT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the GT.semver tuple, return false
+// - If LT
+// - If LT.semver is greater than any < or <= comp in C, return false
+// - If LT is <=, and LT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the LT.semver tuple, return false
+// - Else return true
-function jwsSecuredInput(header, payload, encoding) {
- encoding = encoding || 'utf8';
- var encodedHeader = base64url(toString(header), 'binary');
- var encodedPayload = base64url(toString(payload), encoding);
- return util.format('%s.%s', encodedHeader, encodedPayload);
-}
+const subset = (sub, dom, options = {}) => {
+ if (sub === dom) {
+ return true
+ }
-function jwsSign(opts) {
- var header = opts.header;
- var payload = opts.payload;
- var secretOrKey = opts.secret || opts.privateKey;
- var encoding = opts.encoding;
- var algo = jwa(header.alg);
- var securedInput = jwsSecuredInput(header, payload, encoding);
- var signature = algo.sign(securedInput, secretOrKey);
- return util.format('%s.%s', securedInput, signature);
+ sub = new Range(sub, options)
+ dom = new Range(dom, options)
+ let sawNonNull = false
+
+ OUTER: for (const simpleSub of sub.set) {
+ for (const simpleDom of dom.set) {
+ const isSub = simpleSubset(simpleSub, simpleDom, options)
+ sawNonNull = sawNonNull || isSub !== null
+ if (isSub) {
+ continue OUTER
+ }
+ }
+ // the null set is a subset of everything, but null simple ranges in
+ // a complex range should be ignored. so if we saw a non-null range,
+ // then we know this isn't a subset, but if EVERY simple range was null,
+ // then it is a subset.
+ if (sawNonNull) {
+ return false
+ }
+ }
+ return true
}
-function SignStream(opts) {
- var secret = opts.secret||opts.privateKey||opts.key;
- var secretStream = new DataStream(secret);
- this.readable = true;
- this.header = opts.header;
- this.encoding = opts.encoding;
- this.secret = this.privateKey = this.key = secretStream;
- this.payload = new DataStream(opts.payload);
- this.secret.once('close', function () {
- if (!this.payload.writable && this.readable)
- this.sign();
- }.bind(this));
+const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]
+const minimumVersion = [new Comparator('>=0.0.0')]
- this.payload.once('close', function () {
- if (!this.secret.writable && this.readable)
- this.sign();
- }.bind(this));
-}
-util.inherits(SignStream, Stream);
+const simpleSubset = (sub, dom, options) => {
+ if (sub === dom) {
+ return true
+ }
-SignStream.prototype.sign = function sign() {
- try {
- var signature = jwsSign({
- header: this.header,
- payload: this.payload.buffer,
- secret: this.secret.buffer,
- encoding: this.encoding
- });
- this.emit('done', signature);
- this.emit('data', signature);
- this.emit('end');
- this.readable = false;
- return signature;
- } catch (e) {
- this.readable = false;
- this.emit('error', e);
- this.emit('close');
+ if (sub.length === 1 && sub[0].semver === ANY) {
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ return true
+ } else if (options.includePrerelease) {
+ sub = minimumVersionWithPreRelease
+ } else {
+ sub = minimumVersion
+ }
}
-};
-SignStream.sign = jwsSign;
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ if (options.includePrerelease) {
+ return true
+ } else {
+ dom = minimumVersion
+ }
+ }
-module.exports = SignStream;
+ const eqSet = new Set()
+ let gt, lt
+ for (const c of sub) {
+ if (c.operator === '>' || c.operator === '>=') {
+ gt = higherGT(gt, c, options)
+ } else if (c.operator === '<' || c.operator === '<=') {
+ lt = lowerLT(lt, c, options)
+ } else {
+ eqSet.add(c.semver)
+ }
+ }
+ if (eqSet.size > 1) {
+ return null
+ }
-/***/ }),
+ let gtltComp
+ if (gt && lt) {
+ gtltComp = compare(gt.semver, lt.semver, options)
+ if (gtltComp > 0) {
+ return null
+ } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
+ return null
+ }
+ }
-/***/ 5292:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ // will iterate one or zero times
+ for (const eq of eqSet) {
+ if (gt && !satisfies(eq, String(gt), options)) {
+ return null
+ }
-/*global module*/
-var Buffer = (__nccwpck_require__(4300).Buffer);
+ if (lt && !satisfies(eq, String(lt), options)) {
+ return null
+ }
-module.exports = function toString(obj) {
- if (typeof obj === 'string')
- return obj;
- if (typeof obj === 'number' || Buffer.isBuffer(obj))
- return obj.toString();
- return JSON.stringify(obj);
-};
+ for (const c of dom) {
+ if (!satisfies(eq, String(c), options)) {
+ return false
+ }
+ }
+ return true
+ }
-/***/ }),
+ let higher, lower
+ let hasDomLT, hasDomGT
+ // if the subset has a prerelease, we need a comparator in the superset
+ // with the same tuple and a prerelease, or it's not a subset
+ let needDomLTPre = lt &&
+ !options.includePrerelease &&
+ lt.semver.prerelease.length ? lt.semver : false
+ let needDomGTPre = gt &&
+ !options.includePrerelease &&
+ gt.semver.prerelease.length ? gt.semver : false
+ // exception: <1.2.3-0 is the same as <1.2.3
+ if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&
+ lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
+ needDomLTPre = false
+ }
-/***/ 660:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ for (const c of dom) {
+ hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
+ hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
+ if (gt) {
+ if (needDomGTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomGTPre.major &&
+ c.semver.minor === needDomGTPre.minor &&
+ c.semver.patch === needDomGTPre.patch) {
+ needDomGTPre = false
+ }
+ }
+ if (c.operator === '>' || c.operator === '>=') {
+ higher = higherGT(gt, c, options)
+ if (higher === c && higher !== gt) {
+ return false
+ }
+ } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (lt) {
+ if (needDomLTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomLTPre.major &&
+ c.semver.minor === needDomLTPre.minor &&
+ c.semver.patch === needDomLTPre.patch) {
+ needDomLTPre = false
+ }
+ }
+ if (c.operator === '<' || c.operator === '<=') {
+ lower = lowerLT(lt, c, options)
+ if (lower === c && lower !== lt) {
+ return false
+ }
+ } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (!c.operator && (lt || gt) && gtltComp !== 0) {
+ return false
+ }
+ }
-/*global module*/
-var Buffer = (__nccwpck_require__(1867).Buffer);
-var DataStream = __nccwpck_require__(1868);
-var jwa = __nccwpck_require__(6010);
-var Stream = __nccwpck_require__(2781);
-var toString = __nccwpck_require__(5292);
-var util = __nccwpck_require__(3837);
-var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;
+ // if there was a < or >, and nothing in the dom, then must be false
+ // UNLESS it was limited by another range in the other direction.
+ // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
+ if (gt && hasDomLT && !lt && gtltComp !== 0) {
+ return false
+ }
-function isObject(thing) {
- return Object.prototype.toString.call(thing) === '[object Object]';
-}
+ if (lt && hasDomGT && !gt && gtltComp !== 0) {
+ return false
+ }
-function safeJsonParse(thing) {
- if (isObject(thing))
- return thing;
- try { return JSON.parse(thing); }
- catch (e) { return undefined; }
-}
+ // we needed a prerelease range in a specific tuple, but didn't get one
+ // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
+ // because it includes prereleases in the 1.2.3 tuple
+ if (needDomGTPre || needDomLTPre) {
+ return false
+ }
-function headerFromJWS(jwsSig) {
- var encodedHeader = jwsSig.split('.', 1)[0];
- return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));
+ return true
}
-function securedInputFromJWS(jwsSig) {
- return jwsSig.split('.', 2).join('.');
+// >=1.2.3 is lower than >1.2.3
+const higherGT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp > 0 ? a
+ : comp < 0 ? b
+ : b.operator === '>' && a.operator === '>=' ? b
+ : a
}
-function signatureFromJWS(jwsSig) {
- return jwsSig.split('.')[2];
+// <=1.2.3 is higher than <1.2.3
+const lowerLT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp < 0 ? a
+ : comp > 0 ? b
+ : b.operator === '<' && a.operator === '<=' ? b
+ : a
}
-function payloadFromJWS(jwsSig, encoding) {
- encoding = encoding || 'utf8';
- var payload = jwsSig.split('.')[1];
- return Buffer.from(payload, 'base64').toString(encoding);
-}
+module.exports = subset
-function isValidJws(string) {
- return JWS_REGEX.test(string) && !!headerFromJWS(string);
-}
-function jwsVerify(jwsSig, algorithm, secretOrKey) {
- if (!algorithm) {
- var err = new Error("Missing algorithm parameter for jws.verify");
- err.code = "MISSING_ALGORITHM";
- throw err;
- }
- jwsSig = toString(jwsSig);
- var signature = signatureFromJWS(jwsSig);
- var securedInput = securedInputFromJWS(jwsSig);
- var algo = jwa(algorithm);
- return algo.verify(securedInput, signature, secretOrKey);
-}
+/***/ }),
-function jwsDecode(jwsSig, opts) {
- opts = opts || {};
- jwsSig = toString(jwsSig);
+/***/ 4676:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- if (!isValidJws(jwsSig))
- return null;
+const Range = __nccwpck_require__(4502)
- var header = headerFromJWS(jwsSig);
+// Mostly just for testing and legacy API reasons
+const toComparators = (range, options) =>
+ new Range(range, options).set
+ .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
- if (!header)
- return null;
+module.exports = toComparators
- var payload = payloadFromJWS(jwsSig);
- if (header.typ === 'JWT' || opts.json)
- payload = JSON.parse(payload, opts.encoding);
- return {
- header: header,
- payload: payload,
- signature: signatureFromJWS(jwsSig)
- };
-}
+/***/ }),
-function VerifyStream(opts) {
- opts = opts || {};
- var secretOrKey = opts.secret||opts.publicKey||opts.key;
- var secretStream = new DataStream(secretOrKey);
- this.readable = true;
- this.algorithm = opts.algorithm;
- this.encoding = opts.encoding;
- this.secret = this.publicKey = this.key = secretStream;
- this.signature = new DataStream(opts.signature);
- this.secret.once('close', function () {
- if (!this.signature.writable && this.readable)
- this.verify();
- }.bind(this));
+/***/ 6895:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- this.signature.once('close', function () {
- if (!this.secret.writable && this.readable)
- this.verify();
- }.bind(this));
-}
-util.inherits(VerifyStream, Stream);
-VerifyStream.prototype.verify = function verify() {
+const Range = __nccwpck_require__(4502)
+const validRange = (range, options) => {
try {
- var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);
- var obj = jwsDecode(this.signature.buffer, this.encoding);
- this.emit('done', valid, obj);
- this.emit('data', valid);
- this.emit('end');
- this.readable = false;
- return valid;
- } catch (e) {
- this.readable = false;
- this.emit('error', e);
- this.emit('close');
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
}
-};
-
-VerifyStream.decode = jwsDecode;
-VerifyStream.isValid = isValidJws;
-VerifyStream.verify = jwsVerify;
-
-module.exports = VerifyStream;
+}
+module.exports = validRange
/***/ }),
-/***/ 7931:
-/***/ ((module) => {
-
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
+/***/ 2022:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991,
- MAX_INTEGER = 1.7976931348623157e+308,
- NAN = 0 / 0;
+const timespan = __nccwpck_require__(6098);
+const PS_SUPPORTED = __nccwpck_require__(9085);
+const validateAsymmetricKey = __nccwpck_require__(7596);
+const jws = __nccwpck_require__(4636);
+const includes = __nccwpck_require__(7931);
+const isBoolean = __nccwpck_require__(6501);
+const isInteger = __nccwpck_require__(1441);
+const isNumber = __nccwpck_require__(298);
+const isPlainObject = __nccwpck_require__(5723);
+const isString = __nccwpck_require__(5180);
+const once = __nccwpck_require__(4499);
+const { KeyObject, createSecretKey, createPrivateKey } = __nccwpck_require__(6113)
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]';
+const SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];
+if (PS_SUPPORTED) {
+ SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');
+}
-/** Used to match leading and trailing whitespace. */
-var reTrim = /^\s+|\s+$/g;
+const sign_options_schema = {
+ expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"expiresIn" should be a number of seconds or string representing a timespan' },
+ notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"notBefore" should be a number of seconds or string representing a timespan' },
+ audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '"audience" must be a string or array' },
+ algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' },
+ header: { isValid: isPlainObject, message: '"header" must be an object' },
+ encoding: { isValid: isString, message: '"encoding" must be a string' },
+ issuer: { isValid: isString, message: '"issuer" must be a string' },
+ subject: { isValid: isString, message: '"subject" must be a string' },
+ jwtid: { isValid: isString, message: '"jwtid" must be a string' },
+ noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' },
+ keyid: { isValid: isString, message: '"keyid" must be a string' },
+ mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' },
+ allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean'},
+ allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean'}
+};
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+const registered_claims_schema = {
+ iat: { isValid: isNumber, message: '"iat" should be a number of seconds' },
+ exp: { isValid: isNumber, message: '"exp" should be a number of seconds' },
+ nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' }
+};
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
+function validate(schema, allowUnknown, object, parameterName) {
+ if (!isPlainObject(object)) {
+ throw new Error('Expected "' + parameterName + '" to be a plain object.');
+ }
+ Object.keys(object)
+ .forEach(function(key) {
+ const validator = schema[key];
+ if (!validator) {
+ if (!allowUnknown) {
+ throw new Error('"' + key + '" is not allowed in "' + parameterName + '"');
+ }
+ return;
+ }
+ if (!validator.isValid(object[key])) {
+ throw new Error(validator.message);
+ }
+ });
+}
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
+function validateOptions(options) {
+ return validate(sign_options_schema, false, options, 'options');
+}
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
+function validatePayload(payload) {
+ return validate(registered_claims_schema, true, payload, 'payload');
+}
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
+const options_to_payload = {
+ 'audience': 'aud',
+ 'issuer': 'iss',
+ 'subject': 'sub',
+ 'jwtid': 'jti'
+};
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
- var index = -1,
- length = array ? array.length : 0,
- result = Array(length);
+const options_for_objects = [
+ 'expiresIn',
+ 'notBefore',
+ 'noTimestamp',
+ 'audience',
+ 'issuer',
+ 'subject',
+ 'jwtid',
+];
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
+module.exports = function (payload, secretOrPrivateKey, options, callback) {
+ if (typeof options === 'function') {
+ callback = options;
+ options = {};
+ } else {
+ options = options || {};
}
- return result;
-}
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
+ const isObjectPayload = typeof payload === 'object' &&
+ !Buffer.isBuffer(payload);
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
+ const header = Object.assign({
+ alg: options.algorithm || 'HS256',
+ typ: isObjectPayload ? 'JWT' : undefined,
+ kid: options.keyid
+ }, options.header);
+
+ function failure(err) {
+ if (callback) {
+ return callback(err);
}
+ throw err;
}
- return -1;
-}
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
- if (value !== value) {
- return baseFindIndex(array, baseIsNaN, fromIndex);
+ if (!secretOrPrivateKey && options.algorithm !== 'none') {
+ return failure(new Error('secretOrPrivateKey must have a value'));
}
- var index = fromIndex - 1,
- length = array.length;
- while (++index < length) {
- if (array[index] === value) {
- return index;
+ if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {
+ try {
+ secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)
+ } catch (_) {
+ try {
+ secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)
+ } catch (_) {
+ return failure(new Error('secretOrPrivateKey is not valid key material'));
+ }
}
}
- return -1;
-}
-
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
- return value !== value;
-}
-
-/**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
-function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
- while (++index < n) {
- result[index] = iteratee(index);
+ if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {
+ return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))
+ } else if (/^(?:RS|PS|ES)/.test(header.alg)) {
+ if (secretOrPrivateKey.type !== 'private') {
+ return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))
+ }
+ if (!options.allowInsecureKeySizes &&
+ !header.alg.startsWith('ES') &&
+ secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+
+ secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {
+ return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));
+ }
}
- return result;
-}
-
-/**
- * The base implementation of `_.values` and `_.valuesIn` which creates an
- * array of `object` property values corresponding to the property names
- * of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the array of property values.
- */
-function baseValues(object, props) {
- return arrayMap(props, function(key) {
- return object[key];
- });
-}
-/**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
-function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
-}
+ if (typeof payload === 'undefined') {
+ return failure(new Error('payload is required'));
+ } else if (isObjectPayload) {
+ try {
+ validatePayload(payload);
+ }
+ catch (error) {
+ return failure(error);
+ }
+ if (!options.mutatePayload) {
+ payload = Object.assign({},payload);
+ }
+ } else {
+ const invalid_options = options_for_objects.filter(function (opt) {
+ return typeof options[opt] !== 'undefined';
+ });
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+ if (invalid_options.length > 0) {
+ return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));
+ }
+ }
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+ if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {
+ return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.'));
+ }
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+ if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {
+ return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.'));
+ }
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ try {
+ validateOptions(options);
+ }
+ catch (error) {
+ return failure(error);
+ }
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeKeys = overArg(Object.keys, Object),
- nativeMax = Math.max;
+ if (!options.allowInvalidAsymmetricKeyTypes) {
+ try {
+ validateAsymmetricKey(header.alg, secretOrPrivateKey);
+ } catch (error) {
+ return failure(error);
+ }
+ }
-/**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
-function arrayLikeKeys(value, inherited) {
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- // Safari 9 makes `arguments.length` enumerable in strict mode.
- var result = (isArray(value) || isArguments(value))
- ? baseTimes(value.length, String)
- : [];
+ const timestamp = payload.iat || Math.floor(Date.now() / 1000);
- var length = result.length,
- skipIndexes = !!length;
+ if (options.noTimestamp) {
+ delete payload.iat;
+ } else if (isObjectPayload) {
+ payload.iat = timestamp;
+ }
- for (var key in value) {
- if ((inherited || hasOwnProperty.call(value, key)) &&
- !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
- result.push(key);
+ if (typeof options.notBefore !== 'undefined') {
+ try {
+ payload.nbf = timespan(options.notBefore, timestamp);
+ }
+ catch (err) {
+ return failure(err);
+ }
+ if (typeof payload.nbf === 'undefined') {
+ return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
}
}
- return result;
-}
-/**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function baseKeys(object) {
- if (!isPrototype(object)) {
- return nativeKeys(object);
- }
- var result = [];
- for (var key in Object(object)) {
- if (hasOwnProperty.call(object, key) && key != 'constructor') {
- result.push(key);
+ if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {
+ try {
+ payload.exp = timespan(options.expiresIn, timestamp);
+ }
+ catch (err) {
+ return failure(err);
+ }
+ if (typeof payload.exp === 'undefined') {
+ return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
}
}
- return result;
-}
-
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
- length = length == null ? MAX_SAFE_INTEGER : length;
- return !!length &&
- (typeof value == 'number' || reIsUint.test(value)) &&
- (value > -1 && value % 1 == 0 && value < length);
-}
-/**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
-function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
+ Object.keys(options_to_payload).forEach(function (key) {
+ const claim = options_to_payload[key];
+ if (typeof options[key] !== 'undefined') {
+ if (typeof payload[claim] !== 'undefined') {
+ return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.'));
+ }
+ payload[claim] = options[key];
+ }
+ });
- return value === proto;
-}
+ const encoding = options.encoding || 'utf8';
-/**
- * Checks if `value` is in `collection`. If `collection` is a string, it's
- * checked for a substring of `value`, otherwise
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * is used for equality comparisons. If `fromIndex` is negative, it's used as
- * the offset from the end of `collection`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {boolean} Returns `true` if `value` is found, else `false`.
- * @example
- *
- * _.includes([1, 2, 3], 1);
- * // => true
- *
- * _.includes([1, 2, 3], 1, 2);
- * // => false
- *
- * _.includes({ 'a': 1, 'b': 2 }, 1);
- * // => true
- *
- * _.includes('abcd', 'bc');
- * // => true
- */
-function includes(collection, value, fromIndex, guard) {
- collection = isArrayLike(collection) ? collection : values(collection);
- fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
+ if (typeof callback === 'function') {
+ callback = callback && once(callback);
- var length = collection.length;
- if (fromIndex < 0) {
- fromIndex = nativeMax(length + fromIndex, 0);
+ jws.createSign({
+ header: header,
+ privateKey: secretOrPrivateKey,
+ payload: payload,
+ encoding: encoding
+ }).once('error', callback)
+ .once('done', function (signature) {
+ // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version
+ if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {
+ return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))
+ }
+ callback(null, signature);
+ });
+ } else {
+ let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});
+ // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version
+ if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {
+ throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)
+ }
+ return signature
}
- return isString(collection)
- ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
- : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-}
+};
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-function isArguments(value) {
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
- (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
-}
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
+/***/ }),
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
-}
+/***/ 2327:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
-}
+const JsonWebTokenError = __nccwpck_require__(405);
+const NotBeforeError = __nccwpck_require__(4383);
+const TokenExpiredError = __nccwpck_require__(6637);
+const decode = __nccwpck_require__(3359);
+const timespan = __nccwpck_require__(6098);
+const validateAsymmetricKey = __nccwpck_require__(7596);
+const PS_SUPPORTED = __nccwpck_require__(9085);
+const jws = __nccwpck_require__(4636);
+const {KeyObject, createSecretKey, createPublicKey} = __nccwpck_require__(6113);
+
+const PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];
+const EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];
+const RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];
+const HS_ALGS = ['HS256', 'HS384', 'HS512'];
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
+if (PS_SUPPORTED) {
+ PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');
+ RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');
}
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
+module.exports = function (jwtString, secretOrPublicKey, options, callback) {
+ if ((typeof options === 'function') && !callback) {
+ callback = options;
+ options = {};
+ }
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
+ if (!options) {
+ options = {};
+ }
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
+ //clone this object since we are going to mutate it.
+ options = Object.assign({}, options);
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
-}
+ let done;
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
-}
+ if (callback) {
+ done = callback;
+ } else {
+ done = function(err, data) {
+ if (err) throw err;
+ return data;
+ };
+ }
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
+ if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {
+ return done(new JsonWebTokenError('clockTimestamp must be a number'));
}
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
+
+ if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {
+ return done(new JsonWebTokenError('nonce must be a non-empty string'));
}
- return value === value ? value : 0;
-}
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
+ if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {
+ return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));
+ }
+
+ const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);
+
+ if (!jwtString){
+ return done(new JsonWebTokenError('jwt must be provided'));
+ }
+
+ if (typeof jwtString !== 'string') {
+ return done(new JsonWebTokenError('jwt must be a string'));
+ }
+
+ const parts = jwtString.split('.');
+
+ if (parts.length !== 3){
+ return done(new JsonWebTokenError('jwt malformed'));
+ }
- return result === result ? (remainder ? result - remainder : result) : 0;
-}
+ let decodedToken;
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
- if (typeof value == 'number') {
- return value;
+ try {
+ decodedToken = decode(jwtString, { complete: true });
+ } catch(err) {
+ return done(err);
}
- if (isSymbol(value)) {
- return NAN;
+
+ if (!decodedToken) {
+ return done(new JsonWebTokenError('invalid token'));
}
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
+
+ const header = decodedToken.header;
+ let getSecret;
+
+ if(typeof secretOrPublicKey === 'function') {
+ if(!callback) {
+ return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));
+ }
+
+ getSecret = secretOrPublicKey;
}
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
+ else {
+ getSecret = function(header, secretCallback) {
+ return secretCallback(null, secretOrPublicKey);
+ };
}
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
-}
-/**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
-function keys(object) {
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-}
+ return getSecret(header, function(err, secretOrPublicKey) {
+ if(err) {
+ return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));
+ }
-/**
- * Creates an array of the own enumerable string keyed property values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.values(new Foo);
- * // => [1, 2] (iteration order is not guaranteed)
- *
- * _.values('hi');
- * // => ['h', 'i']
- */
-function values(object) {
- return object ? baseValues(object, keys(object)) : [];
-}
+ const hasSignature = parts[2].trim() !== '';
-module.exports = includes;
+ if (!hasSignature && secretOrPublicKey){
+ return done(new JsonWebTokenError('jwt signature is required'));
+ }
+ if (hasSignature && !secretOrPublicKey) {
+ return done(new JsonWebTokenError('secret or public key must be provided'));
+ }
-/***/ }),
+ if (!hasSignature && !options.algorithms) {
+ return done(new JsonWebTokenError('please specify "none" in "algorithms" to verify unsigned tokens'));
+ }
-/***/ 6501:
-/***/ ((module) => {
+ if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {
+ try {
+ secretOrPublicKey = createPublicKey(secretOrPublicKey);
+ } catch (_) {
+ try {
+ secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);
+ } catch (_) {
+ return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))
+ }
+ }
+ }
-/**
- * lodash 3.0.3 (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation
- * Based on Underscore.js 1.8.3
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license
- */
+ if (!options.algorithms) {
+ if (secretOrPublicKey.type === 'secret') {
+ options.algorithms = HS_ALGS;
+ } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {
+ options.algorithms = RSA_KEY_ALGS
+ } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {
+ options.algorithms = EC_KEY_ALGS
+ } else {
+ options.algorithms = PUB_KEY_ALGS
+ }
+ }
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]';
+ if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {
+ return done(new JsonWebTokenError('invalid algorithm'));
+ }
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+ if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {
+ return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))
+ } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {
+ return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))
+ }
-/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+ if (!options.allowInvalidAsymmetricKeyTypes) {
+ try {
+ validateAsymmetricKey(header.alg, secretOrPublicKey);
+ } catch (e) {
+ return done(e);
+ }
+ }
-/**
- * Checks if `value` is classified as a boolean primitive or object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isBoolean(false);
- * // => true
- *
- * _.isBoolean(null);
- * // => false
- */
-function isBoolean(value) {
- return value === true || value === false ||
- (isObjectLike(value) && objectToString.call(value) == boolTag);
-}
+ let valid;
+
+ try {
+ valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);
+ } catch (e) {
+ return done(e);
+ }
+
+ if (!valid) {
+ return done(new JsonWebTokenError('invalid signature'));
+ }
+
+ const payload = decodedToken.payload;
+
+ if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {
+ if (typeof payload.nbf !== 'number') {
+ return done(new JsonWebTokenError('invalid nbf value'));
+ }
+ if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {
+ return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));
+ }
+ }
+
+ if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {
+ if (typeof payload.exp !== 'number') {
+ return done(new JsonWebTokenError('invalid exp value'));
+ }
+ if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {
+ return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));
+ }
+ }
+
+ if (options.audience) {
+ const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];
+ const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];
+
+ const match = target.some(function (targetAudience) {
+ return audiences.some(function (audience) {
+ return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;
+ });
+ });
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
+ if (!match) {
+ return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));
+ }
+ }
-module.exports = isBoolean;
+ if (options.issuer) {
+ const invalid_issuer =
+ (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||
+ (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);
+ if (invalid_issuer) {
+ return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));
+ }
+ }
-/***/ }),
+ if (options.subject) {
+ if (payload.sub !== options.subject) {
+ return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));
+ }
+ }
-/***/ 1441:
-/***/ ((module) => {
+ if (options.jwtid) {
+ if (payload.jti !== options.jwtid) {
+ return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));
+ }
+ }
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
+ if (options.nonce) {
+ if (payload.nonce !== options.nonce) {
+ return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));
+ }
+ }
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_INTEGER = 1.7976931348623157e+308,
- NAN = 0 / 0;
+ if (options.maxAge) {
+ if (typeof payload.iat !== 'number') {
+ return done(new JsonWebTokenError('iat required when maxAge is specified'));
+ }
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
+ const maxAgeTimestamp = timespan(options.maxAge, payload.iat);
+ if (typeof maxAgeTimestamp === 'undefined') {
+ return done(new JsonWebTokenError('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));
+ }
+ if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {
+ return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));
+ }
+ }
-/** Used to match leading and trailing whitespace. */
-var reTrim = /^\s+|\s+$/g;
+ if (options.complete === true) {
+ const signature = decodedToken.signature;
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+ return done(null, {
+ header: header,
+ payload: payload,
+ signature: signature
+ });
+ }
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
+ return done(null, payload);
+ });
+};
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
+/***/ }),
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+/***/ 6010:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+var bufferEqual = __nccwpck_require__(9239);
+var Buffer = (__nccwpck_require__(1867).Buffer);
+var crypto = __nccwpck_require__(6113);
+var formatEcdsa = __nccwpck_require__(1728);
+var util = __nccwpck_require__(3837);
-/**
- * Checks if `value` is an integer.
- *
- * **Note:** This method is based on
- * [`Number.isInteger`](https://mdn.io/Number/isInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
- * @example
- *
- * _.isInteger(3);
- * // => true
- *
- * _.isInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isInteger(Infinity);
- * // => false
- *
- * _.isInteger('3');
- * // => false
- */
-function isInteger(value) {
- return typeof value == 'number' && value == toInteger(value);
-}
+var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'
+var MSG_INVALID_SECRET = 'secret must be a string or buffer';
+var MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';
+var MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
+var supportsKeyObjects = typeof crypto.createPublicKey === 'function';
+if (supportsKeyObjects) {
+ MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';
+ MSG_INVALID_SECRET += 'or a KeyObject';
}
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
+function checkIsPublicKey(key) {
+ if (Buffer.isBuffer(key)) {
+ return;
+ }
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
-}
+ if (typeof key === 'string') {
+ return;
+ }
+
+ if (!supportsKeyObjects) {
+ throw typeError(MSG_INVALID_VERIFIER_KEY);
+ }
+
+ if (typeof key !== 'object') {
+ throw typeError(MSG_INVALID_VERIFIER_KEY);
+ }
+
+ if (typeof key.type !== 'string') {
+ throw typeError(MSG_INVALID_VERIFIER_KEY);
+ }
+
+ if (typeof key.asymmetricKeyType !== 'string') {
+ throw typeError(MSG_INVALID_VERIFIER_KEY);
+ }
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
+ if (typeof key.export !== 'function') {
+ throw typeError(MSG_INVALID_VERIFIER_KEY);
}
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
+};
+
+function checkIsPrivateKey(key) {
+ if (Buffer.isBuffer(key)) {
+ return;
}
- return value === value ? value : 0;
-}
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
+ if (typeof key === 'string') {
+ return;
+ }
- return result === result ? (remainder ? result - remainder : result) : 0;
-}
+ if (typeof key === 'object') {
+ return;
+ }
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
- if (typeof value == 'number') {
- return value;
+ throw typeError(MSG_INVALID_SIGNER_KEY);
+};
+
+function checkIsSecretKey(key) {
+ if (Buffer.isBuffer(key)) {
+ return;
}
- if (isSymbol(value)) {
- return NAN;
+
+ if (typeof key === 'string') {
+ return key;
}
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
+
+ if (!supportsKeyObjects) {
+ throw typeError(MSG_INVALID_SECRET);
}
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
+
+ if (typeof key !== 'object') {
+ throw typeError(MSG_INVALID_SECRET);
}
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
-}
-module.exports = isInteger;
+ if (key.type !== 'secret') {
+ throw typeError(MSG_INVALID_SECRET);
+ }
+ if (typeof key.export !== 'function') {
+ throw typeError(MSG_INVALID_SECRET);
+ }
+}
-/***/ }),
+function fromBase64(base64) {
+ return base64
+ .replace(/=/g, '')
+ .replace(/\+/g, '-')
+ .replace(/\//g, '_');
+}
-/***/ 298:
-/***/ ((module) => {
+function toBase64(base64url) {
+ base64url = base64url.toString();
-/**
- * lodash 3.0.3 (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation
- * Based on Underscore.js 1.8.3
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license
- */
+ var padding = 4 - base64url.length % 4;
+ if (padding !== 4) {
+ for (var i = 0; i < padding; ++i) {
+ base64url += '=';
+ }
+ }
-/** `Object#toString` result references. */
-var numberTag = '[object Number]';
+ return base64url
+ .replace(/\-/g, '+')
+ .replace(/_/g, '/');
+}
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+function typeError(template) {
+ var args = [].slice.call(arguments, 1);
+ var errMsg = util.format.bind(util, template).apply(null, args);
+ return new TypeError(errMsg);
+}
-/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+function bufferOrString(obj) {
+ return Buffer.isBuffer(obj) || typeof obj === 'string';
+}
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
+function normalizeInput(thing) {
+ if (!bufferOrString(thing))
+ thing = JSON.stringify(thing);
+ return thing;
}
-/**
- * Checks if `value` is classified as a `Number` primitive or object.
- *
- * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified
- * as numbers, use the `_.isFinite` method.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isNumber(3);
- * // => true
- *
- * _.isNumber(Number.MIN_VALUE);
- * // => true
- *
- * _.isNumber(Infinity);
- * // => true
- *
- * _.isNumber('3');
- * // => false
- */
-function isNumber(value) {
- return typeof value == 'number' ||
- (isObjectLike(value) && objectToString.call(value) == numberTag);
+function createHmacSigner(bits) {
+ return function sign(thing, secret) {
+ checkIsSecretKey(secret);
+ thing = normalizeInput(thing);
+ var hmac = crypto.createHmac('sha' + bits, secret);
+ var sig = (hmac.update(thing), hmac.digest('base64'))
+ return fromBase64(sig);
+ }
+}
+
+function createHmacVerifier(bits) {
+ return function verify(thing, signature, secret) {
+ var computedSig = createHmacSigner(bits)(thing, secret);
+ return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));
+ }
}
-module.exports = isNumber;
+function createKeySigner(bits) {
+ return function sign(thing, privateKey) {
+ checkIsPrivateKey(privateKey);
+ thing = normalizeInput(thing);
+ // Even though we are specifying "RSA" here, this works with ECDSA
+ // keys as well.
+ var signer = crypto.createSign('RSA-SHA' + bits);
+ var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));
+ return fromBase64(sig);
+ }
+}
+function createKeyVerifier(bits) {
+ return function verify(thing, signature, publicKey) {
+ checkIsPublicKey(publicKey);
+ thing = normalizeInput(thing);
+ signature = toBase64(signature);
+ var verifier = crypto.createVerify('RSA-SHA' + bits);
+ verifier.update(thing);
+ return verifier.verify(publicKey, signature, 'base64');
+ }
+}
-/***/ }),
+function createPSSKeySigner(bits) {
+ return function sign(thing, privateKey) {
+ checkIsPrivateKey(privateKey);
+ thing = normalizeInput(thing);
+ var signer = crypto.createSign('RSA-SHA' + bits);
+ var sig = (signer.update(thing), signer.sign({
+ key: privateKey,
+ padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
+ saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST
+ }, 'base64'));
+ return fromBase64(sig);
+ }
+}
-/***/ 5723:
-/***/ ((module) => {
+function createPSSKeyVerifier(bits) {
+ return function verify(thing, signature, publicKey) {
+ checkIsPublicKey(publicKey);
+ thing = normalizeInput(thing);
+ signature = toBase64(signature);
+ var verifier = crypto.createVerify('RSA-SHA' + bits);
+ verifier.update(thing);
+ return verifier.verify({
+ key: publicKey,
+ padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
+ saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST
+ }, signature, 'base64');
+ }
+}
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
+function createECDSASigner(bits) {
+ var inner = createKeySigner(bits);
+ return function sign() {
+ var signature = inner.apply(null, arguments);
+ signature = formatEcdsa.derToJose(signature, 'ES' + bits);
+ return signature;
+ };
+}
-/** `Object#toString` result references. */
-var objectTag = '[object Object]';
+function createECDSAVerifer(bits) {
+ var inner = createKeyVerifier(bits);
+ return function verify(thing, signature, publicKey) {
+ signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');
+ var result = inner(thing, signature, publicKey);
+ return result;
+ };
+}
-/**
- * Checks if `value` is a host object in IE < 9.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
- */
-function isHostObject(value) {
- // Many host objects are `Object` objects that can coerce to strings
- // despite having improperly defined `toString` methods.
- var result = false;
- if (value != null && typeof value.toString != 'function') {
- try {
- result = !!(value + '');
- } catch (e) {}
+function createNoneSigner() {
+ return function sign() {
+ return '';
}
- return result;
}
-/**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
-function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
+function createNoneVerifier() {
+ return function verify(thing, signature) {
+ return signature === '';
+ }
}
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
- objectProto = Object.prototype;
+module.exports = function jwa(algorithm) {
+ var signerFactories = {
+ hs: createHmacSigner,
+ rs: createKeySigner,
+ ps: createPSSKeySigner,
+ es: createECDSASigner,
+ none: createNoneSigner,
+ }
+ var verifierFactories = {
+ hs: createHmacVerifier,
+ rs: createKeyVerifier,
+ ps: createPSSKeyVerifier,
+ es: createECDSAVerifer,
+ none: createNoneVerifier,
+ }
+ var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);
+ if (!match)
+ throw typeError(MSG_INVALID_ALGORITHM, algorithm);
+ var algo = (match[1] || match[3]).toLowerCase();
+ var bits = match[2];
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
+ return {
+ sign: signerFactories[algo](bits),
+ verify: verifierFactories[algo](bits),
+ }
+};
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-/** Used to infer the `Object` constructor. */
-var objectCtorString = funcToString.call(Object);
+/***/ }),
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+/***/ 4636:
+/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-/** Built-in value references. */
-var getPrototype = overArg(Object.getPrototypeOf, Object);
+/*global exports*/
+var SignStream = __nccwpck_require__(3334);
+var VerifyStream = __nccwpck_require__(5522);
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
+var ALGORITHMS = [
+ 'HS256', 'HS384', 'HS512',
+ 'RS256', 'RS384', 'RS512',
+ 'PS256', 'PS384', 'PS512',
+ 'ES256', 'ES384', 'ES512'
+];
-/**
- * Checks if `value` is a plain object, that is, an object created by the
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
- *
- * @static
- * @memberOf _
- * @since 0.8.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * }
- *
- * _.isPlainObject(new Foo);
- * // => false
- *
- * _.isPlainObject([1, 2, 3]);
- * // => false
- *
- * _.isPlainObject({ 'x': 0, 'y': 0 });
- * // => true
- *
- * _.isPlainObject(Object.create(null));
- * // => true
- */
-function isPlainObject(value) {
- if (!isObjectLike(value) ||
- objectToString.call(value) != objectTag || isHostObject(value)) {
- return false;
+exports.ALGORITHMS = ALGORITHMS;
+exports.sign = SignStream.sign;
+exports.verify = VerifyStream.verify;
+exports.decode = VerifyStream.decode;
+exports.isValid = VerifyStream.isValid;
+exports.createSign = function createSign(opts) {
+ return new SignStream(opts);
+};
+exports.createVerify = function createVerify(opts) {
+ return new VerifyStream(opts);
+};
+
+
+/***/ }),
+
+/***/ 1868:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+
+/*global module, process*/
+var Buffer = (__nccwpck_require__(1867).Buffer);
+var Stream = __nccwpck_require__(2781);
+var util = __nccwpck_require__(3837);
+
+function DataStream(data) {
+ this.buffer = null;
+ this.writable = true;
+ this.readable = true;
+
+ // No input
+ if (!data) {
+ this.buffer = Buffer.alloc(0);
+ return this;
}
- var proto = getPrototype(value);
- if (proto === null) {
- return true;
+
+ // Stream
+ if (typeof data.pipe === 'function') {
+ this.buffer = Buffer.alloc(0);
+ data.pipe(this);
+ return this;
}
- var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
- return (typeof Ctor == 'function' &&
- Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);
-}
-module.exports = isPlainObject;
+ // Buffer or String
+ // or Object (assumedly a passworded key)
+ if (data.length || typeof data === 'object') {
+ this.buffer = data;
+ this.writable = false;
+ process.nextTick(function () {
+ this.emit('end', data);
+ this.readable = false;
+ this.emit('close');
+ }.bind(this));
+ return this;
+ }
+ throw new TypeError('Unexpected data type ('+ typeof data + ')');
+}
+util.inherits(DataStream, Stream);
-/***/ }),
+DataStream.prototype.write = function write(data) {
+ this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);
+ this.emit('data', data);
+};
-/***/ 5180:
-/***/ ((module) => {
+DataStream.prototype.end = function end(data) {
+ if (data)
+ this.write(data);
+ this.emit('end', data);
+ this.emit('close');
+ this.writable = false;
+ this.readable = false;
+};
-/**
- * lodash 4.0.1 (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation
- * Based on Underscore.js 1.8.3
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license
- */
+module.exports = DataStream;
-/** `Object#toString` result references. */
-var stringTag = '[object String]';
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+/***/ }),
-/**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+/***/ 3334:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @type Function
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
+/*global module*/
+var Buffer = (__nccwpck_require__(1867).Buffer);
+var DataStream = __nccwpck_require__(1868);
+var jwa = __nccwpck_require__(6010);
+var Stream = __nccwpck_require__(2781);
+var toString = __nccwpck_require__(5292);
+var util = __nccwpck_require__(3837);
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
+function base64url(string, encoding) {
+ return Buffer
+ .from(string, encoding)
+ .toString('base64')
+ .replace(/=/g, '')
+ .replace(/\+/g, '-')
+ .replace(/\//g, '_');
}
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
+function jwsSecuredInput(header, payload, encoding) {
+ encoding = encoding || 'utf8';
+ var encodedHeader = base64url(toString(header), 'binary');
+ var encodedPayload = base64url(toString(payload), encoding);
+ return util.format('%s.%s', encodedHeader, encodedPayload);
}
-module.exports = isString;
-
+function jwsSign(opts) {
+ var header = opts.header;
+ var payload = opts.payload;
+ var secretOrKey = opts.secret || opts.privateKey;
+ var encoding = opts.encoding;
+ var algo = jwa(header.alg);
+ var securedInput = jwsSecuredInput(header, payload, encoding);
+ var signature = algo.sign(securedInput, secretOrKey);
+ return util.format('%s.%s', securedInput, signature);
+}
-/***/ }),
+function SignStream(opts) {
+ var secret = opts.secret||opts.privateKey||opts.key;
+ var secretStream = new DataStream(secret);
+ this.readable = true;
+ this.header = opts.header;
+ this.encoding = opts.encoding;
+ this.secret = this.privateKey = this.key = secretStream;
+ this.payload = new DataStream(opts.payload);
+ this.secret.once('close', function () {
+ if (!this.payload.writable && this.readable)
+ this.sign();
+ }.bind(this));
-/***/ 4499:
-/***/ ((module) => {
+ this.payload.once('close', function () {
+ if (!this.secret.writable && this.readable)
+ this.sign();
+ }.bind(this));
+}
+util.inherits(SignStream, Stream);
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
+SignStream.prototype.sign = function sign() {
+ try {
+ var signature = jwsSign({
+ header: this.header,
+ payload: this.payload.buffer,
+ secret: this.secret.buffer,
+ encoding: this.encoding
+ });
+ this.emit('done', signature);
+ this.emit('data', signature);
+ this.emit('end');
+ this.readable = false;
+ return signature;
+ } catch (e) {
+ this.readable = false;
+ this.emit('error', e);
+ this.emit('close');
+ }
+};
-/** Used as the `TypeError` message for "Functions" methods. */
-var FUNC_ERROR_TEXT = 'Expected a function';
+SignStream.sign = jwsSign;
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_INTEGER = 1.7976931348623157e+308,
- NAN = 0 / 0;
+module.exports = SignStream;
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
-/** Used to match leading and trailing whitespace. */
-var reTrim = /^\s+|\s+$/g;
+/***/ }),
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+/***/ 5292:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
+/*global module*/
+var Buffer = (__nccwpck_require__(4300).Buffer);
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
+module.exports = function toString(obj) {
+ if (typeof obj === 'string')
+ return obj;
+ if (typeof obj === 'number' || Buffer.isBuffer(obj))
+ return obj.toString();
+ return JSON.stringify(obj);
+};
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
+/***/ }),
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
+/***/ 5522:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-/**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery(element).on('click', _.before(5, addContactToList));
- * // => Allows adding up to 4 contacts to the list.
- */
-function before(n, func) {
- var result;
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- n = toInteger(n);
- return function() {
- if (--n > 0) {
- result = func.apply(this, arguments);
- }
- if (n <= 1) {
- func = undefined;
- }
- return result;
- };
-}
+/*global module*/
+var Buffer = (__nccwpck_require__(1867).Buffer);
+var DataStream = __nccwpck_require__(1868);
+var jwa = __nccwpck_require__(6010);
+var Stream = __nccwpck_require__(2781);
+var toString = __nccwpck_require__(5292);
+var util = __nccwpck_require__(3837);
+var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;
-/**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first invocation. The `func` is
- * invoked with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // => `createApplication` is invoked once
- */
-function once(func) {
- return before(2, func);
+function isObject(thing) {
+ return Object.prototype.toString.call(thing) === '[object Object]';
}
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
+function safeJsonParse(thing) {
+ if (isObject(thing))
+ return thing;
+ try { return JSON.parse(thing); }
+ catch (e) { return undefined; }
}
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
+function headerFromJWS(jwsSig) {
+ var encodedHeader = jwsSig.split('.', 1)[0];
+ return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));
}
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
+function securedInputFromJWS(jwsSig) {
+ return jwsSig.split('.', 2).join('.');
}
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
- }
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
- }
- return value === value ? value : 0;
+function signatureFromJWS(jwsSig) {
+ return jwsSig.split('.')[2];
}
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
-
- return result === result ? (remainder ? result - remainder : result) : 0;
+function payloadFromJWS(jwsSig, encoding) {
+ encoding = encoding || 'utf8';
+ var payload = jwsSig.split('.')[1];
+ return Buffer.from(payload, 'base64').toString(encoding);
}
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
+function isValidJws(string) {
+ return JWS_REGEX.test(string) && !!headerFromJWS(string);
+}
+
+function jwsVerify(jwsSig, algorithm, secretOrKey) {
+ if (!algorithm) {
+ var err = new Error("Missing algorithm parameter for jws.verify");
+ err.code = "MISSING_ALGORITHM";
+ throw err;
}
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
+ jwsSig = toString(jwsSig);
+ var signature = signatureFromJWS(jwsSig);
+ var securedInput = securedInputFromJWS(jwsSig);
+ var algo = jwa(algorithm);
+ return algo.verify(securedInput, signature, secretOrKey);
}
-module.exports = once;
+function jwsDecode(jwsSig, opts) {
+ opts = opts || {};
+ jwsSig = toString(jwsSig);
+ if (!isValidJws(jwsSig))
+ return null;
-/***/ }),
+ var header = headerFromJWS(jwsSig);
-/***/ 7129:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ if (!header)
+ return null;
-"use strict";
+ var payload = payloadFromJWS(jwsSig);
+ if (header.typ === 'JWT' || opts.json)
+ payload = JSON.parse(payload, opts.encoding);
+ return {
+ header: header,
+ payload: payload,
+ signature: signatureFromJWS(jwsSig)
+ };
+}
-// A linked list to keep track of recently-used-ness
-const Yallist = __nccwpck_require__(665)
+function VerifyStream(opts) {
+ opts = opts || {};
+ var secretOrKey = opts.secret||opts.publicKey||opts.key;
+ var secretStream = new DataStream(secretOrKey);
+ this.readable = true;
+ this.algorithm = opts.algorithm;
+ this.encoding = opts.encoding;
+ this.secret = this.publicKey = this.key = secretStream;
+ this.signature = new DataStream(opts.signature);
+ this.secret.once('close', function () {
+ if (!this.signature.writable && this.readable)
+ this.verify();
+ }.bind(this));
-const MAX = Symbol('max')
-const LENGTH = Symbol('length')
-const LENGTH_CALCULATOR = Symbol('lengthCalculator')
-const ALLOW_STALE = Symbol('allowStale')
-const MAX_AGE = Symbol('maxAge')
-const DISPOSE = Symbol('dispose')
-const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
-const LRU_LIST = Symbol('lruList')
-const CACHE = Symbol('cache')
-const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
+ this.signature.once('close', function () {
+ if (!this.secret.writable && this.readable)
+ this.verify();
+ }.bind(this));
+}
+util.inherits(VerifyStream, Stream);
+VerifyStream.prototype.verify = function verify() {
+ try {
+ var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);
+ var obj = jwsDecode(this.signature.buffer, this.encoding);
+ this.emit('done', valid, obj);
+ this.emit('data', valid);
+ this.emit('end');
+ this.readable = false;
+ return valid;
+ } catch (e) {
+ this.readable = false;
+ this.emit('error', e);
+ this.emit('close');
+ }
+};
-const naiveLength = () => 1
+VerifyStream.decode = jwsDecode;
+VerifyStream.isValid = isValidJws;
+VerifyStream.verify = jwsVerify;
-// lruList is a yallist where the head is the youngest
-// item, and the tail is the oldest. the list contains the Hit
-// objects as the entries.
-// Each Hit object has a reference to its Yallist.Node. This
-// never changes.
-//
-// cache is a Map (or PseudoMap) that matches the keys to
-// the Yallist.Node object.
-class LRUCache {
- constructor (options) {
- if (typeof options === 'number')
- options = { max: options }
+module.exports = VerifyStream;
- if (!options)
- options = {}
- if (options.max && (typeof options.max !== 'number' || options.max < 0))
- throw new TypeError('max must be a non-negative number')
- // Kind of weird to have a default max of Infinity, but oh well.
- const max = this[MAX] = options.max || Infinity
+/***/ }),
- const lc = options.length || naiveLength
- this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
- this[ALLOW_STALE] = options.stale || false
- if (options.maxAge && typeof options.maxAge !== 'number')
- throw new TypeError('maxAge must be a number')
- this[MAX_AGE] = options.maxAge || 0
- this[DISPOSE] = options.dispose
- this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
- this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
- this.reset()
- }
+/***/ 7931:
+/***/ ((module) => {
- // resize the cache when the max changes.
- set max (mL) {
- if (typeof mL !== 'number' || mL < 0)
- throw new TypeError('max must be a non-negative number')
+/**
+ * lodash (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
- this[MAX] = mL || Infinity
- trim(this)
- }
- get max () {
- return this[MAX]
- }
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+ MAX_SAFE_INTEGER = 9007199254740991,
+ MAX_INTEGER = 1.7976931348623157e+308,
+ NAN = 0 / 0;
- set allowStale (allowStale) {
- this[ALLOW_STALE] = !!allowStale
- }
- get allowStale () {
- return this[ALLOW_STALE]
- }
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+ funcTag = '[object Function]',
+ genTag = '[object GeneratorFunction]',
+ stringTag = '[object String]',
+ symbolTag = '[object Symbol]';
- set maxAge (mA) {
- if (typeof mA !== 'number')
- throw new TypeError('maxAge must be a non-negative number')
+/** Used to match leading and trailing whitespace. */
+var reTrim = /^\s+|\s+$/g;
- this[MAX_AGE] = mA
- trim(this)
- }
- get maxAge () {
- return this[MAX_AGE]
- }
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
- // resize the cache when the lengthCalculator changes.
- set lengthCalculator (lC) {
- if (typeof lC !== 'function')
- lC = naiveLength
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
- if (lC !== this[LENGTH_CALCULATOR]) {
- this[LENGTH_CALCULATOR] = lC
- this[LENGTH] = 0
- this[LRU_LIST].forEach(hit => {
- hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
- this[LENGTH] += hit.length
- })
- }
- trim(this)
- }
- get lengthCalculator () { return this[LENGTH_CALCULATOR] }
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
- get length () { return this[LENGTH] }
- get itemCount () { return this[LRU_LIST].length }
+/** Used to detect unsigned integer values. */
+var reIsUint = /^(?:0|[1-9]\d*)$/;
- rforEach (fn, thisp) {
- thisp = thisp || this
- for (let walker = this[LRU_LIST].tail; walker !== null;) {
- const prev = walker.prev
- forEachStep(this, fn, walker, thisp)
- walker = prev
- }
- }
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
- forEach (fn, thisp) {
- thisp = thisp || this
- for (let walker = this[LRU_LIST].head; walker !== null;) {
- const next = walker.next
- forEachStep(this, fn, walker, thisp)
- walker = next
- }
+/**
+ * A specialized version of `_.map` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+function arrayMap(array, iteratee) {
+ var index = -1,
+ length = array ? array.length : 0,
+ result = Array(length);
+
+ while (++index < length) {
+ result[index] = iteratee(array[index], index, array);
}
+ return result;
+}
- keys () {
- return this[LRU_LIST].toArray().map(k => k.key)
+/**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseFindIndex(array, predicate, fromIndex, fromRight) {
+ var length = array.length,
+ index = fromIndex + (fromRight ? 1 : -1);
+
+ while ((fromRight ? index-- : ++index < length)) {
+ if (predicate(array[index], index, array)) {
+ return index;
+ }
}
+ return -1;
+}
- values () {
- return this[LRU_LIST].toArray().map(k => k.value)
+/**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseIndexOf(array, value, fromIndex) {
+ if (value !== value) {
+ return baseFindIndex(array, baseIsNaN, fromIndex);
}
+ var index = fromIndex - 1,
+ length = array.length;
- reset () {
- if (this[DISPOSE] &&
- this[LRU_LIST] &&
- this[LRU_LIST].length) {
- this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
+ while (++index < length) {
+ if (array[index] === value) {
+ return index;
}
-
- this[CACHE] = new Map() // hash of items by key
- this[LRU_LIST] = new Yallist() // list of items in order of use recency
- this[LENGTH] = 0 // length of items in the list
}
+ return -1;
+}
- dump () {
- return this[LRU_LIST].map(hit =>
- isStale(this, hit) ? false : {
- k: hit.key,
- v: hit.value,
- e: hit.now + (hit.maxAge || 0)
- }).toArray().filter(h => h)
- }
+/**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+function baseIsNaN(value) {
+ return value !== value;
+}
- dumpLru () {
- return this[LRU_LIST]
+/**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+function baseTimes(n, iteratee) {
+ var index = -1,
+ result = Array(n);
+
+ while (++index < n) {
+ result[index] = iteratee(index);
}
+ return result;
+}
- set (key, value, maxAge) {
- maxAge = maxAge || this[MAX_AGE]
+/**
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
+ * array of `object` property values corresponding to the property names
+ * of `props`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array} props The property names to get values for.
+ * @returns {Object} Returns the array of property values.
+ */
+function baseValues(object, props) {
+ return arrayMap(props, function(key) {
+ return object[key];
+ });
+}
- if (maxAge && typeof maxAge !== 'number')
- throw new TypeError('maxAge must be a number')
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+ return function(arg) {
+ return func(transform(arg));
+ };
+}
- const now = maxAge ? Date.now() : 0
- const len = this[LENGTH_CALCULATOR](value, key)
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
- if (this[CACHE].has(key)) {
- if (len > this[MAX]) {
- del(this, this[CACHE].get(key))
- return false
- }
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
- const node = this[CACHE].get(key)
- const item = node.value
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
- // dispose of the old one before overwriting
- // split out into 2 ifs for better coverage tracking
- if (this[DISPOSE]) {
- if (!this[NO_DISPOSE_ON_SET])
- this[DISPOSE](key, item.value)
- }
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
- item.now = now
- item.maxAge = maxAge
- item.value = value
- this[LENGTH] += len - item.length
- item.length = len
- this.get(key)
- trim(this)
- return true
- }
+/* Built-in method references for those with the same name as other `lodash` methods. */
+var nativeKeys = overArg(Object.keys, Object),
+ nativeMax = Math.max;
- const hit = new Entry(key, value, len, now, maxAge)
+/**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+function arrayLikeKeys(value, inherited) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ // Safari 9 makes `arguments.length` enumerable in strict mode.
+ var result = (isArray(value) || isArguments(value))
+ ? baseTimes(value.length, String)
+ : [];
- // oversized objects fall out of cache automatically.
- if (hit.length > this[MAX]) {
- if (this[DISPOSE])
- this[DISPOSE](key, value)
+ var length = result.length,
+ skipIndexes = !!length;
- return false
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) &&
+ !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+ result.push(key);
}
-
- this[LENGTH] += hit.length
- this[LRU_LIST].unshift(hit)
- this[CACHE].set(key, this[LRU_LIST].head)
- trim(this)
- return true
}
+ return result;
+}
- has (key) {
- if (!this[CACHE].has(key)) return false
- const hit = this[CACHE].get(key).value
- return !isStale(this, hit)
+/**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
}
-
- get (key) {
- return get(this, key, true)
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
+ result.push(key);
+ }
}
+ return result;
+}
- peek (key) {
- return get(this, key, false)
- }
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length &&
+ (typeof value == 'number' || reIsUint.test(value)) &&
+ (value > -1 && value % 1 == 0 && value < length);
+}
- pop () {
- const node = this[LRU_LIST].tail
- if (!node)
- return null
+/**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+function isPrototype(value) {
+ var Ctor = value && value.constructor,
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
- del(this, node)
- return node.value
- }
+ return value === proto;
+}
+
+/**
+ * Checks if `value` is in `collection`. If `collection` is a string, it's
+ * checked for a substring of `value`, otherwise
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * is used for equality comparisons. If `fromIndex` is negative, it's used as
+ * the offset from the end of `collection`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} [fromIndex=0] The index to search from.
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
+ * @returns {boolean} Returns `true` if `value` is found, else `false`.
+ * @example
+ *
+ * _.includes([1, 2, 3], 1);
+ * // => true
+ *
+ * _.includes([1, 2, 3], 1, 2);
+ * // => false
+ *
+ * _.includes({ 'a': 1, 'b': 2 }, 1);
+ * // => true
+ *
+ * _.includes('abcd', 'bc');
+ * // => true
+ */
+function includes(collection, value, fromIndex, guard) {
+ collection = isArrayLike(collection) ? collection : values(collection);
+ fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
- del (key) {
- del(this, this[CACHE].get(key))
+ var length = collection.length;
+ if (fromIndex < 0) {
+ fromIndex = nativeMax(length + fromIndex, 0);
}
+ return isString(collection)
+ ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
+ : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
+}
- load (arr) {
- // reset the cache
- this.reset()
+/**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ * else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+function isArguments(value) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
+ (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
+}
- const now = Date.now()
- // A previous serialized cache has the most recent items first
- for (let l = arr.length - 1; l >= 0; l--) {
- const hit = arr[l]
- const expiresAt = hit.e || 0
- if (expiresAt === 0)
- // the item was created without expiration in a non aged cache
- this.set(hit.k, hit.v)
- else {
- const maxAge = expiresAt - now
- // dont add already expired items
- if (maxAge > 0) {
- this.set(hit.k, hit.v, maxAge)
- }
- }
- }
- }
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
- prune () {
- this[CACHE].forEach((value, key) => get(this, key, false))
- }
+/**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
}
-const get = (self, key, doUse) => {
- const node = self[CACHE].get(key)
- if (node) {
- const hit = node.value
- if (isStale(self, hit)) {
- del(self, node)
- if (!self[ALLOW_STALE])
- return undefined
- } else {
- if (doUse) {
- if (self[UPDATE_AGE_ON_GET])
- node.value.now = Date.now()
- self[LRU_LIST].unshiftNode(node)
- }
- }
- return hit.value
- }
+/**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ * else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
}
-const isStale = (self, hit) => {
- if (!hit || (!hit.maxAge && !self[MAX_AGE]))
- return false
-
- const diff = Date.now() - hit.now
- return hit.maxAge ? diff > hit.maxAge
- : self[MAX_AGE] && (diff > self[MAX_AGE])
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in Safari 8-9 which returns 'object' for typed array and other constructors.
+ var tag = isObject(value) ? objectToString.call(value) : '';
+ return tag == funcTag || tag == genTag;
}
-const trim = self => {
- if (self[LENGTH] > self[MAX]) {
- for (let walker = self[LRU_LIST].tail;
- self[LENGTH] > self[MAX] && walker !== null;) {
- // We know that we're about to delete this one, and also
- // what the next least recently used key will be, so just
- // go ahead and set it now.
- const prev = walker.prev
- del(self, walker)
- walker = prev
- }
- }
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+function isLength(value) {
+ return typeof value == 'number' &&
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
-const del = (self, node) => {
- if (node) {
- const hit = node.value
- if (self[DISPOSE])
- self[DISPOSE](hit.key, hit.value)
-
- self[LENGTH] -= hit.length
- self[CACHE].delete(hit.key)
- self[LRU_LIST].removeNode(node)
- }
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
}
-class Entry {
- constructor (key, value, length, now, maxAge) {
- this.key = key
- this.value = value
- this.length = length
- this.now = now
- this.maxAge = maxAge || 0
- }
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
}
-const forEachStep = (self, fn, node, thisp) => {
- let hit = node.value
- if (isStale(self, hit)) {
- del(self, node)
- if (!self[ALLOW_STALE])
- hit = undefined
- }
- if (hit)
- fn.call(thisp, hit.value, hit.key, self)
+/**
+ * Checks if `value` is classified as a `String` primitive or object.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
+ * @example
+ *
+ * _.isString('abc');
+ * // => true
+ *
+ * _.isString(1);
+ * // => false
+ */
+function isString(value) {
+ return typeof value == 'string' ||
+ (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
}
-module.exports = LRUCache
-
-
-/***/ }),
-
-/***/ 9992:
-/***/ ((module) => {
-
/**
- * Helpers.
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
*/
-
-var s = 1000;
-var m = s * 60;
-var h = m * 60;
-var d = h * 24;
-var w = d * 7;
-var y = d * 365.25;
+function isSymbol(value) {
+ return typeof value == 'symbol' ||
+ (isObjectLike(value) && objectToString.call(value) == symbolTag);
+}
/**
- * Parse or format the given `val`.
+ * Converts `value` to a finite number.
*
- * Options:
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
*
- * - `long` verbose formatting [false]
+ * _.toFinite(3.2);
+ * // => 3.2
*
- * @param {String|Number} val
- * @param {Object} [options]
- * @throws {Error} throw an error if val is not a non-empty string or a number
- * @return {String|Number}
- * @api public
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
*/
-
-module.exports = function (val, options) {
- options = options || {};
- var type = typeof val;
- if (type === 'string' && val.length > 0) {
- return parse(val);
- } else if (type === 'number' && isFinite(val)) {
- return options.long ? fmtLong(val) : fmtShort(val);
+function toFinite(value) {
+ if (!value) {
+ return value === 0 ? value : 0;
}
- throw new Error(
- 'val is not a non-empty string or a valid number. val=' +
- JSON.stringify(val)
- );
-};
+ value = toNumber(value);
+ if (value === INFINITY || value === -INFINITY) {
+ var sign = (value < 0 ? -1 : 1);
+ return sign * MAX_INTEGER;
+ }
+ return value === value ? value : 0;
+}
/**
- * Parse the given `str` and return milliseconds.
+ * Converts `value` to an integer.
*
- * @param {String} str
- * @return {Number}
- * @api private
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
*/
+function toInteger(value) {
+ var result = toFinite(value),
+ remainder = result % 1;
-function parse(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
- str
- );
- if (!match) {
- return;
- }
- var n = parseFloat(match[1]);
- var type = (match[2] || 'ms').toLowerCase();
- switch (type) {
- case 'years':
- case 'year':
- case 'yrs':
- case 'yr':
- case 'y':
- return n * y;
- case 'weeks':
- case 'week':
- case 'w':
- return n * w;
- case 'days':
- case 'day':
- case 'd':
- return n * d;
- case 'hours':
- case 'hour':
- case 'hrs':
- case 'hr':
- case 'h':
- return n * h;
- case 'minutes':
- case 'minute':
- case 'mins':
- case 'min':
- case 'm':
- return n * m;
- case 'seconds':
- case 'second':
- case 'secs':
- case 'sec':
- case 's':
- return n * s;
- case 'milliseconds':
- case 'millisecond':
- case 'msecs':
- case 'msec':
- case 'ms':
- return n;
- default:
- return undefined;
- }
+ return result === result ? (remainder ? result - remainder : result) : 0;
}
/**
- * Short format for `ms`.
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
*
- * @param {Number} ms
- * @return {String}
- * @api private
+ * _.toNumber('3.2');
+ * // => 3.2
*/
-
-function fmtShort(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return Math.round(ms / d) + 'd';
+function toNumber(value) {
+ if (typeof value == 'number') {
+ return value;
}
- if (msAbs >= h) {
- return Math.round(ms / h) + 'h';
+ if (isSymbol(value)) {
+ return NAN;
}
- if (msAbs >= m) {
- return Math.round(ms / m) + 'm';
+ if (isObject(value)) {
+ var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+ value = isObject(other) ? (other + '') : other;
}
- if (msAbs >= s) {
- return Math.round(ms / s) + 's';
+ if (typeof value != 'string') {
+ return value === 0 ? value : +value;
}
- return ms + 'ms';
+ value = value.replace(reTrim, '');
+ var isBinary = reIsBinary.test(value);
+ return (isBinary || reIsOctal.test(value))
+ ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+ : (reIsBadHex.test(value) ? NAN : +value);
}
/**
- * Long format for `ms`.
+ * Creates an array of the own enumerable property names of `object`.
*
- * @param {Number} ms
- * @return {String}
- * @api private
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
*/
-
-function fmtLong(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return plural(ms, msAbs, d, 'day');
- }
- if (msAbs >= h) {
- return plural(ms, msAbs, h, 'hour');
- }
- if (msAbs >= m) {
- return plural(ms, msAbs, m, 'minute');
- }
- if (msAbs >= s) {
- return plural(ms, msAbs, s, 'second');
- }
- return ms + ' ms';
+function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
/**
- * Pluralization helper.
+ * Creates an array of the own enumerable string keyed property values of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property values.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.values(new Foo);
+ * // => [1, 2] (iteration order is not guaranteed)
+ *
+ * _.values('hi');
+ * // => ['h', 'i']
*/
-
-function plural(ms, msAbs, n, name) {
- var isPlural = msAbs >= n * 1.5;
- return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
+function values(object) {
+ return object ? baseValues(object, keys(object)) : [];
}
+module.exports = includes;
-/***/ }),
-/***/ 7467:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ }),
-"use strict";
+/***/ 6501:
+/***/ ((module) => {
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
-};
-var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+/**
+ * lodash 3.0.3 (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright 2012-2016 The Dojo Foundation
+ * Based on Underscore.js 1.8.3
+ * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license
+ */
-// pkg/dist-src/index.js
-var dist_src_exports = {};
-__export(dist_src_exports, {
- App: () => App,
- OAuthApp: () => OAuthApp,
- Octokit: () => Octokit,
- RequestError: () => import_request_error.RequestError,
- createNodeMiddleware: () => import_app2.createNodeMiddleware
-});
-module.exports = __toCommonJS(dist_src_exports);
+/** `Object#toString` result references. */
+var boolTag = '[object Boolean]';
-// pkg/dist-src/octokit.js
-var import_core = __nccwpck_require__(6762);
-var import_plugin_paginate_rest = __nccwpck_require__(4193);
-var import_plugin_paginate_graphql = __nccwpck_require__(5883);
-var import_plugin_rest_endpoint_methods = __nccwpck_require__(3044);
-var import_plugin_retry = __nccwpck_require__(6298);
-var import_plugin_throttling = __nccwpck_require__(9968);
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
-// pkg/dist-src/version.js
-var VERSION = "3.1.2";
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
-// pkg/dist-src/octokit.js
-var import_request_error = __nccwpck_require__(537);
-var Octokit = import_core.Octokit.plugin(
- import_plugin_rest_endpoint_methods.restEndpointMethods,
- import_plugin_paginate_rest.paginateRest,
- import_plugin_paginate_graphql.paginateGraphql,
- import_plugin_retry.retry,
- import_plugin_throttling.throttling
-).defaults({
- userAgent: `octokit.js/${VERSION}`,
- throttle: {
- onRateLimit,
- onSecondaryRateLimit
- }
-});
-function onRateLimit(retryAfter, options, octokit) {
- octokit.log.warn(
- `Request quota exhausted for request ${options.method} ${options.url}`
- );
- if (options.request.retryCount === 0) {
- octokit.log.info(`Retrying after ${retryAfter} seconds!`);
- return true;
- }
+/**
+ * Checks if `value` is classified as a boolean primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isBoolean(false);
+ * // => true
+ *
+ * _.isBoolean(null);
+ * // => false
+ */
+function isBoolean(value) {
+ return value === true || value === false ||
+ (isObjectLike(value) && objectToString.call(value) == boolTag);
}
-function onSecondaryRateLimit(retryAfter, options, octokit) {
- octokit.log.warn(
- `SecondaryRateLimit detected for request ${options.method} ${options.url}`
- );
- if (options.request.retryCount === 0) {
- octokit.log.info(`Retrying after ${retryAfter} seconds!`);
- return true;
- }
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
}
-// pkg/dist-src/app.js
-var import_app = __nccwpck_require__(4389);
-var import_oauth_app = __nccwpck_require__(3493);
-var import_app2 = __nccwpck_require__(4389);
-var App = import_app.App.defaults({ Octokit });
-var OAuthApp = import_oauth_app.OAuthApp.defaults({ Octokit });
-// Annotate the CommonJS export names for ESM import in node:
-0 && (0);
+module.exports = isBoolean;
/***/ }),
-/***/ 1223:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 1441:
+/***/ ((module) => {
-var wrappy = __nccwpck_require__(7461)
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
+/**
+ * lodash (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+ MAX_INTEGER = 1.7976931348623157e+308,
+ NAN = 0 / 0;
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
+/** `Object#toString` result references. */
+var symbolTag = '[object Symbol]';
-function once (fn) {
- var f = function () {
- if (f.called) return f.value
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- f.called = false
- return f
-}
+/** Used to match leading and trailing whitespace. */
+var reTrim = /^\s+|\s+$/g;
-function onceStrict (fn) {
- var f = function () {
- if (f.called)
- throw new Error(f.onceError)
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- var name = fn.name || 'Function wrapped with `once`'
- f.onceError = name + " shouldn't be called more than once"
- f.called = false
- return f
-}
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
-/***/ }),
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
-/***/ 1867:
-/***/ ((module, exports, __nccwpck_require__) => {
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
-/*! safe-buffer. MIT License. Feross Aboukhadijeh */
-/* eslint-disable node/no-deprecated-api */
-var buffer = __nccwpck_require__(4300)
-var Buffer = buffer.Buffer
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
-// alternative to using Object.keys for old browsers
-function copyProps (src, dst) {
- for (var key in src) {
- dst[key] = src[key]
- }
-}
-if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
- module.exports = buffer
-} else {
- // Copy properties from require('buffer')
- copyProps(buffer, exports)
- exports.Buffer = SafeBuffer
-}
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
-function SafeBuffer (arg, encodingOrOffset, length) {
- return Buffer(arg, encodingOrOffset, length)
+/**
+ * Checks if `value` is an integer.
+ *
+ * **Note:** This method is based on
+ * [`Number.isInteger`](https://mdn.io/Number/isInteger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
+ * @example
+ *
+ * _.isInteger(3);
+ * // => true
+ *
+ * _.isInteger(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isInteger(Infinity);
+ * // => false
+ *
+ * _.isInteger('3');
+ * // => false
+ */
+function isInteger(value) {
+ return typeof value == 'number' && value == toInteger(value);
}
-SafeBuffer.prototype = Object.create(Buffer.prototype)
-
-// Copy static methods from Buffer
-copyProps(Buffer, SafeBuffer)
-
-SafeBuffer.from = function (arg, encodingOrOffset, length) {
- if (typeof arg === 'number') {
- throw new TypeError('Argument must not be a number')
- }
- return Buffer(arg, encodingOrOffset, length)
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
}
-SafeBuffer.alloc = function (size, fill, encoding) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- var buf = Buffer(size)
- if (fill !== undefined) {
- if (typeof encoding === 'string') {
- buf.fill(fill, encoding)
- } else {
- buf.fill(fill)
- }
- } else {
- buf.fill(0)
- }
- return buf
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
}
-SafeBuffer.allocUnsafe = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
- }
- return Buffer(size)
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+ return typeof value == 'symbol' ||
+ (isObjectLike(value) && objectToString.call(value) == symbolTag);
}
-SafeBuffer.allocUnsafeSlow = function (size) {
- if (typeof size !== 'number') {
- throw new TypeError('Argument must be a number')
+/**
+ * Converts `value` to a finite number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
+ *
+ * _.toFinite(3.2);
+ * // => 3.2
+ *
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
+ */
+function toFinite(value) {
+ if (!value) {
+ return value === 0 ? value : 0;
}
- return buffer.SlowBuffer(size)
+ value = toNumber(value);
+ if (value === INFINITY || value === -INFINITY) {
+ var sign = (value < 0 ? -1 : 1);
+ return sign * MAX_INTEGER;
+ }
+ return value === value ? value : 0;
}
+/**
+ * Converts `value` to an integer.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
+ */
+function toInteger(value) {
+ var result = toFinite(value),
+ remainder = result % 1;
-/***/ }),
-
-/***/ 1532:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ return result === result ? (remainder ? result - remainder : result) : 0;
+}
-const ANY = Symbol('SemVer ANY')
-// hoisted class for cyclic dependency
-class Comparator {
- static get ANY () {
- return ANY
+/**
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
+ *
+ * _.toNumber('3.2');
+ * // => 3.2
+ */
+function toNumber(value) {
+ if (typeof value == 'number') {
+ return value;
}
-
- constructor (comp, options) {
- options = parseOptions(options)
-
- if (comp instanceof Comparator) {
- if (comp.loose === !!options.loose) {
- return comp
- } else {
- comp = comp.value
- }
- }
-
- comp = comp.trim().split(/\s+/).join(' ')
- debug('comparator', comp, options)
- this.options = options
- this.loose = !!options.loose
- this.parse(comp)
-
- if (this.semver === ANY) {
- this.value = ''
- } else {
- this.value = this.operator + this.semver.version
- }
-
- debug('comp', this)
+ if (isSymbol(value)) {
+ return NAN;
}
-
- parse (comp) {
- const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
- const m = comp.match(r)
-
- if (!m) {
- throw new TypeError(`Invalid comparator: ${comp}`)
- }
-
- this.operator = m[1] !== undefined ? m[1] : ''
- if (this.operator === '=') {
- this.operator = ''
- }
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2]) {
- this.semver = ANY
- } else {
- this.semver = new SemVer(m[2], this.options.loose)
- }
+ if (isObject(value)) {
+ var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+ value = isObject(other) ? (other + '') : other;
}
-
- toString () {
- return this.value
+ if (typeof value != 'string') {
+ return value === 0 ? value : +value;
}
+ value = value.replace(reTrim, '');
+ var isBinary = reIsBinary.test(value);
+ return (isBinary || reIsOctal.test(value))
+ ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+ : (reIsBadHex.test(value) ? NAN : +value);
+}
- test (version) {
- debug('Comparator.test', version, this.options.loose)
+module.exports = isInteger;
- if (this.semver === ANY || version === ANY) {
- return true
- }
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
- }
+/***/ }),
- return cmp(version, this.operator, this.semver, this.options)
- }
+/***/ 298:
+/***/ ((module) => {
- intersects (comp, options) {
- if (!(comp instanceof Comparator)) {
- throw new TypeError('a Comparator is required')
- }
+/**
+ * lodash 3.0.3 (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright 2012-2016 The Dojo Foundation
+ * Based on Underscore.js 1.8.3
+ * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license
+ */
- if (this.operator === '') {
- if (this.value === '') {
- return true
- }
- return new Range(comp.value, options).test(this.value)
- } else if (comp.operator === '') {
- if (comp.value === '') {
- return true
- }
- return new Range(this.value, options).test(comp.semver)
- }
+/** `Object#toString` result references. */
+var numberTag = '[object Number]';
- options = parseOptions(options)
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
- // Special cases where nothing can possibly be lower
- if (options.includePrerelease &&
- (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {
- return false
- }
- if (!options.includePrerelease &&
- (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {
- return false
- }
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
- // Same direction increasing (> or >=)
- if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {
- return true
- }
- // Same direction decreasing (< or <=)
- if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {
- return true
- }
- // same SemVer and both sides are inclusive (<= or >=)
- if (
- (this.semver.version === comp.semver.version) &&
- this.operator.includes('=') && comp.operator.includes('=')) {
- return true
- }
- // opposite directions less than
- if (cmp(this.semver, '<', comp.semver, options) &&
- this.operator.startsWith('>') && comp.operator.startsWith('<')) {
- return true
- }
- // opposite directions greater than
- if (cmp(this.semver, '>', comp.semver, options) &&
- this.operator.startsWith('<') && comp.operator.startsWith('>')) {
- return true
- }
- return false
- }
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
+
+/**
+ * Checks if `value` is classified as a `Number` primitive or object.
+ *
+ * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified
+ * as numbers, use the `_.isFinite` method.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isNumber(3);
+ * // => true
+ *
+ * _.isNumber(Number.MIN_VALUE);
+ * // => true
+ *
+ * _.isNumber(Infinity);
+ * // => true
+ *
+ * _.isNumber('3');
+ * // => false
+ */
+function isNumber(value) {
+ return typeof value == 'number' ||
+ (isObjectLike(value) && objectToString.call(value) == numberTag);
}
-module.exports = Comparator
-
-const parseOptions = __nccwpck_require__(785)
-const { safeRe: re, t } = __nccwpck_require__(9523)
-const cmp = __nccwpck_require__(5098)
-const debug = __nccwpck_require__(427)
-const SemVer = __nccwpck_require__(8088)
-const Range = __nccwpck_require__(9828)
+module.exports = isNumber;
/***/ }),
-/***/ 9828:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 5723:
+/***/ ((module) => {
-// hoisted class for cyclic dependency
-class Range {
- constructor (range, options) {
- options = parseOptions(options)
+/**
+ * lodash (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
- if (range instanceof Range) {
- if (
- range.loose === !!options.loose &&
- range.includePrerelease === !!options.includePrerelease
- ) {
- return range
- } else {
- return new Range(range.raw, options)
- }
- }
+/** `Object#toString` result references. */
+var objectTag = '[object Object]';
- if (range instanceof Comparator) {
- // just put it in the set and return
- this.raw = range.value
- this.set = [[range]]
- this.format()
- return this
- }
+/**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+function isHostObject(value) {
+ // Many host objects are `Object` objects that can coerce to strings
+ // despite having improperly defined `toString` methods.
+ var result = false;
+ if (value != null && typeof value.toString != 'function') {
+ try {
+ result = !!(value + '');
+ } catch (e) {}
+ }
+ return result;
+}
- this.options = options
- this.loose = !!options.loose
- this.includePrerelease = !!options.includePrerelease
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+ return function(arg) {
+ return func(transform(arg));
+ };
+}
- // First reduce all whitespace as much as possible so we do not have to rely
- // on potentially slow regexes like \s*. This is then stored and used for
- // future error messages as well.
- this.raw = range
- .trim()
- .split(/\s+/)
- .join(' ')
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+ objectProto = Object.prototype;
- // First, split on ||
- this.set = this.raw
- .split('||')
- // map the range to a 2d array of comparators
- .map(r => this.parseRange(r.trim()))
- // throw out any comparator lists that are empty
- // this generally means that it was not a valid range, which is allowed
- // in loose mode, but will still throw if the WHOLE range is invalid.
- .filter(c => c.length)
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
- if (!this.set.length) {
- throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
- }
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
- // if we have any that are not the null set, throw out null sets.
- if (this.set.length > 1) {
- // keep the first one, in case they're all null sets
- const first = this.set[0]
- this.set = this.set.filter(c => !isNullSet(c[0]))
- if (this.set.length === 0) {
- this.set = [first]
- } else if (this.set.length > 1) {
- // if we have any that are *, then the range is just *
- for (const c of this.set) {
- if (c.length === 1 && isAny(c[0])) {
- this.set = [c]
- break
- }
- }
- }
- }
+/** Used to infer the `Object` constructor. */
+var objectCtorString = funcToString.call(Object);
- this.format()
- }
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
- format () {
- this.range = this.set
- .map((comps) => comps.join(' ').trim())
- .join('||')
- .trim()
- return this.range
- }
+/** Built-in value references. */
+var getPrototype = overArg(Object.getPrototypeOf, Object);
- toString () {
- return this.range
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
+
+/**
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.8.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * }
+ *
+ * _.isPlainObject(new Foo);
+ * // => false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+ if (!isObjectLike(value) ||
+ objectToString.call(value) != objectTag || isHostObject(value)) {
+ return false;
+ }
+ var proto = getPrototype(value);
+ if (proto === null) {
+ return true;
}
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+ return (typeof Ctor == 'function' &&
+ Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);
+}
- parseRange (range) {
- // memoize range parsing for performance.
- // this is a very hot path, and fully deterministic.
- const memoOpts =
- (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
- (this.options.loose && FLAG_LOOSE)
- const memoKey = memoOpts + ':' + range
- const cached = cache.get(memoKey)
- if (cached) {
- return cached
- }
+module.exports = isPlainObject;
- const loose = this.options.loose
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
- range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
- debug('hyphen replace', range)
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
- debug('comparator trim', range)
+/***/ }),
+
+/***/ 5180:
+/***/ ((module) => {
+
+/**
+ * lodash 4.0.1 (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright 2012-2016 The Dojo Foundation
+ * Based on Underscore.js 1.8.3
+ * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license
+ */
+
+/** `Object#toString` result references. */
+var stringTag = '[object String]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
- debug('tilde trim', range)
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[t.CARETTRIM], caretTrimReplace)
- debug('caret trim', range)
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @type Function
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
- let rangeList = range
- .split(' ')
- .map(comp => parseComparator(comp, this.options))
- .join(' ')
- .split(/\s+/)
- // >=0.0.0 is equivalent to *
- .map(comp => replaceGTE0(comp, this.options))
+/**
+ * Checks if `value` is classified as a `String` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isString('abc');
+ * // => true
+ *
+ * _.isString(1);
+ * // => false
+ */
+function isString(value) {
+ return typeof value == 'string' ||
+ (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
+}
- if (loose) {
- // in loose mode, throw out any that are not valid comparators
- rangeList = rangeList.filter(comp => {
- debug('loose invalid filter', comp, this.options)
- return !!comp.match(re[t.COMPARATORLOOSE])
- })
- }
- debug('range list', rangeList)
+module.exports = isString;
- // if any comparators are the null set, then replace with JUST null set
- // if more than one comparator, remove any * comparators
- // also, don't include the same comparator more than once
- const rangeMap = new Map()
- const comparators = rangeList.map(comp => new Comparator(comp, this.options))
- for (const comp of comparators) {
- if (isNullSet(comp)) {
- return [comp]
- }
- rangeMap.set(comp.value, comp)
- }
- if (rangeMap.size > 1 && rangeMap.has('')) {
- rangeMap.delete('')
- }
- const result = [...rangeMap.values()]
- cache.set(memoKey, result)
- return result
- }
+/***/ }),
- intersects (range, options) {
- if (!(range instanceof Range)) {
- throw new TypeError('a Range is required')
- }
+/***/ 4499:
+/***/ ((module) => {
- return this.set.some((thisComparators) => {
- return (
- isSatisfiable(thisComparators, options) &&
- range.set.some((rangeComparators) => {
- return (
- isSatisfiable(rangeComparators, options) &&
- thisComparators.every((thisComparator) => {
- return rangeComparators.every((rangeComparator) => {
- return thisComparator.intersects(rangeComparator, options)
- })
- })
- )
- })
- )
- })
- }
+/**
+ * lodash (Custom Build)
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors
+ * Released under MIT license
+ * Based on Underscore.js 1.8.3
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
- // if ANY of the sets match ALL of its comparators, then pass
- test (version) {
- if (!version) {
- return false
- }
+/** Used as the `TypeError` message for "Functions" methods. */
+var FUNC_ERROR_TEXT = 'Expected a function';
- if (typeof version === 'string') {
- try {
- version = new SemVer(version, this.options)
- } catch (er) {
- return false
- }
- }
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+ MAX_INTEGER = 1.7976931348623157e+308,
+ NAN = 0 / 0;
- for (let i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version, this.options)) {
- return true
- }
- }
- return false
- }
-}
+/** `Object#toString` result references. */
+var symbolTag = '[object Symbol]';
-module.exports = Range
+/** Used to match leading and trailing whitespace. */
+var reTrim = /^\s+|\s+$/g;
-const LRU = __nccwpck_require__(7129)
-const cache = new LRU({ max: 1000 })
+/** Used to detect bad signed hexadecimal string values. */
+var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-const parseOptions = __nccwpck_require__(785)
-const Comparator = __nccwpck_require__(1532)
-const debug = __nccwpck_require__(427)
-const SemVer = __nccwpck_require__(8088)
-const {
- safeRe: re,
- t,
- comparatorTrimReplace,
- tildeTrimReplace,
- caretTrimReplace,
-} = __nccwpck_require__(9523)
-const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __nccwpck_require__(2293)
+/** Used to detect binary string values. */
+var reIsBinary = /^0b[01]+$/i;
-const isNullSet = c => c.value === '<0.0.0-0'
-const isAny = c => c.value === ''
+/** Used to detect octal string values. */
+var reIsOctal = /^0o[0-7]+$/i;
-// take a set of comparators and determine whether there
-// exists a version which can satisfy it
-const isSatisfiable = (comparators, options) => {
- let result = true
- const remainingComparators = comparators.slice()
- let testComparator = remainingComparators.pop()
+/** Built-in method references without a dependency on `root`. */
+var freeParseInt = parseInt;
- while (result && remainingComparators.length) {
- result = remainingComparators.every((otherComparator) => {
- return testComparator.intersects(otherComparator, options)
- })
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
- testComparator = remainingComparators.pop()
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/**
+ * Creates a function that invokes `func`, with the `this` binding and arguments
+ * of the created function, while it's called less than `n` times. Subsequent
+ * calls to the created function return the result of the last `func` invocation.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Function
+ * @param {number} n The number of calls at which `func` is no longer invoked.
+ * @param {Function} func The function to restrict.
+ * @returns {Function} Returns the new restricted function.
+ * @example
+ *
+ * jQuery(element).on('click', _.before(5, addContactToList));
+ * // => Allows adding up to 4 contacts to the list.
+ */
+function before(n, func) {
+ var result;
+ if (typeof func != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
}
+ n = toInteger(n);
+ return function() {
+ if (--n > 0) {
+ result = func.apply(this, arguments);
+ }
+ if (n <= 1) {
+ func = undefined;
+ }
+ return result;
+ };
+}
- return result
+/**
+ * Creates a function that is restricted to invoking `func` once. Repeat calls
+ * to the function return the value of the first invocation. The `func` is
+ * invoked with the `this` binding and arguments of the created function.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to restrict.
+ * @returns {Function} Returns the new restricted function.
+ * @example
+ *
+ * var initialize = _.once(createApplication);
+ * initialize();
+ * initialize();
+ * // => `createApplication` is invoked once
+ */
+function once(func) {
+ return before(2, func);
}
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-const parseComparator = (comp, options) => {
- debug('comp', comp, options)
- comp = replaceCarets(comp, options)
- debug('caret', comp)
- comp = replaceTildes(comp, options)
- debug('tildes', comp)
- comp = replaceXRanges(comp, options)
- debug('xrange', comp)
- comp = replaceStars(comp, options)
- debug('stars', comp)
- return comp
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
}
-const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
-// ~0.0.1 --> >=0.0.1 <0.1.0-0
-const replaceTildes = (comp, options) => {
- return comp
- .trim()
- .split(/\s+/)
- .map((c) => replaceTilde(c, options))
- .join(' ')
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+ return typeof value == 'symbol' ||
+ (isObjectLike(value) && objectToString.call(value) == symbolTag);
}
-const replaceTilde = (comp, options) => {
- const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
- return comp.replace(r, (_, M, m, p, pr) => {
- debug('tilde', comp, _, M, m, p, pr)
- let ret
+/**
+ * Converts `value` to a finite number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.12.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted number.
+ * @example
+ *
+ * _.toFinite(3.2);
+ * // => 3.2
+ *
+ * _.toFinite(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toFinite(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toFinite('3.2');
+ * // => 3.2
+ */
+function toFinite(value) {
+ if (!value) {
+ return value === 0 ? value : 0;
+ }
+ value = toNumber(value);
+ if (value === INFINITY || value === -INFINITY) {
+ var sign = (value < 0 ? -1 : 1);
+ return sign * MAX_INTEGER;
+ }
+ return value === value ? value : 0;
+}
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
- } else if (isX(p)) {
- // ~1.2 == >=1.2.0 <1.3.0-0
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
- } else if (pr) {
- debug('replaceTilde pr', pr)
- ret = `>=${M}.${m}.${p}-${pr
- } <${M}.${+m + 1}.0-0`
- } else {
- // ~1.2.3 == >=1.2.3 <1.3.0-0
- ret = `>=${M}.${m}.${p
- } <${M}.${+m + 1}.0-0`
- }
+/**
+ * Converts `value` to an integer.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {number} Returns the converted integer.
+ * @example
+ *
+ * _.toInteger(3.2);
+ * // => 3
+ *
+ * _.toInteger(Number.MIN_VALUE);
+ * // => 0
+ *
+ * _.toInteger(Infinity);
+ * // => 1.7976931348623157e+308
+ *
+ * _.toInteger('3.2');
+ * // => 3
+ */
+function toInteger(value) {
+ var result = toFinite(value),
+ remainder = result % 1;
- debug('tilde return', ret)
- return ret
- })
+ return result === result ? (remainder ? result - remainder : result) : 0;
}
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
-// ^1.2.3 --> >=1.2.3 <2.0.0-0
-// ^1.2.0 --> >=1.2.0 <2.0.0-0
-// ^0.0.1 --> >=0.0.1 <0.0.2-0
-// ^0.1.0 --> >=0.1.0 <0.2.0-0
-const replaceCarets = (comp, options) => {
- return comp
- .trim()
- .split(/\s+/)
- .map((c) => replaceCaret(c, options))
- .join(' ')
+/**
+ * Converts `value` to a number.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {number} Returns the number.
+ * @example
+ *
+ * _.toNumber(3.2);
+ * // => 3.2
+ *
+ * _.toNumber(Number.MIN_VALUE);
+ * // => 5e-324
+ *
+ * _.toNumber(Infinity);
+ * // => Infinity
+ *
+ * _.toNumber('3.2');
+ * // => 3.2
+ */
+function toNumber(value) {
+ if (typeof value == 'number') {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return NAN;
+ }
+ if (isObject(value)) {
+ var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
+ value = isObject(other) ? (other + '') : other;
+ }
+ if (typeof value != 'string') {
+ return value === 0 ? value : +value;
+ }
+ value = value.replace(reTrim, '');
+ var isBinary = reIsBinary.test(value);
+ return (isBinary || reIsOctal.test(value))
+ ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
+ : (reIsBadHex.test(value) ? NAN : +value);
}
-const replaceCaret = (comp, options) => {
- debug('caret', comp, options)
- const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
- const z = options.includePrerelease ? '-0' : ''
- return comp.replace(r, (_, M, m, p, pr) => {
- debug('caret', comp, _, M, m, p, pr)
- let ret
+module.exports = once;
- if (isX(M)) {
- ret = ''
- } else if (isX(m)) {
- ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
- } else if (isX(p)) {
- if (M === '0') {
- ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
- } else {
- ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
- }
- } else if (pr) {
- debug('replaceCaret pr', pr)
- if (M === '0') {
- if (m === '0') {
- ret = `>=${M}.${m}.${p}-${pr
- } <${M}.${m}.${+p + 1}-0`
- } else {
- ret = `>=${M}.${m}.${p}-${pr
- } <${M}.${+m + 1}.0-0`
- }
- } else {
- ret = `>=${M}.${m}.${p}-${pr
- } <${+M + 1}.0.0-0`
- }
- } else {
- debug('no pr')
- if (M === '0') {
- if (m === '0') {
- ret = `>=${M}.${m}.${p
- }${z} <${M}.${m}.${+p + 1}-0`
- } else {
- ret = `>=${M}.${m}.${p
- }${z} <${M}.${+m + 1}.0-0`
- }
- } else {
- ret = `>=${M}.${m}.${p
- } <${+M + 1}.0.0-0`
- }
- }
- debug('caret return', ret)
- return ret
- })
-}
+/***/ }),
-const replaceXRanges = (comp, options) => {
- debug('replaceXRanges', comp, options)
- return comp
- .split(/\s+/)
- .map((c) => replaceXRange(c, options))
- .join(' ')
-}
+/***/ 7129:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const replaceXRange = (comp, options) => {
- comp = comp.trim()
- const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
- return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
- debug('xRange', comp, ret, gtlt, M, m, p, pr)
- const xM = isX(M)
- const xm = xM || isX(m)
- const xp = xm || isX(p)
- const anyX = xp
+"use strict";
- if (gtlt === '=' && anyX) {
- gtlt = ''
- }
- // if we're including prereleases in the match, then we need
- // to fix this to -0, the lowest possible prerelease value
- pr = options.includePrerelease ? '-0' : ''
+// A linked list to keep track of recently-used-ness
+const Yallist = __nccwpck_require__(665)
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0-0'
- } else {
- // nothing is forbidden
- ret = '*'
- }
- } else if (gtlt && anyX) {
- // we know patch is an x, because we have any x at all.
- // replace X with 0
- if (xm) {
- m = 0
- }
- p = 0
+const MAX = Symbol('max')
+const LENGTH = Symbol('length')
+const LENGTH_CALCULATOR = Symbol('lengthCalculator')
+const ALLOW_STALE = Symbol('allowStale')
+const MAX_AGE = Symbol('maxAge')
+const DISPOSE = Symbol('dispose')
+const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
+const LRU_LIST = Symbol('lruList')
+const CACHE = Symbol('cache')
+const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- gtlt = '>='
- if (xm) {
- M = +M + 1
- m = 0
- p = 0
- } else {
- m = +m + 1
- p = 0
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm) {
- M = +M + 1
- } else {
- m = +m + 1
- }
- }
+const naiveLength = () => 1
- if (gtlt === '<') {
- pr = '-0'
- }
+// lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+class LRUCache {
+ constructor (options) {
+ if (typeof options === 'number')
+ options = { max: options }
- ret = `${gtlt + M}.${m}.${p}${pr}`
- } else if (xm) {
- ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
- } else if (xp) {
- ret = `>=${M}.${m}.0${pr
- } <${M}.${+m + 1}.0-0`
- }
+ if (!options)
+ options = {}
- debug('xRange return', ret)
+ if (options.max && (typeof options.max !== 'number' || options.max < 0))
+ throw new TypeError('max must be a non-negative number')
+ // Kind of weird to have a default max of Infinity, but oh well.
+ const max = this[MAX] = options.max || Infinity
- return ret
- })
-}
+ const lc = options.length || naiveLength
+ this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
+ this[ALLOW_STALE] = options.stale || false
+ if (options.maxAge && typeof options.maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
+ this[MAX_AGE] = options.maxAge || 0
+ this[DISPOSE] = options.dispose
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
+ this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
+ this.reset()
+ }
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-const replaceStars = (comp, options) => {
- debug('replaceStars', comp, options)
- // Looseness is ignored here. star is always as loose as it gets!
- return comp
- .trim()
- .replace(re[t.STAR], '')
-}
+ // resize the cache when the max changes.
+ set max (mL) {
+ if (typeof mL !== 'number' || mL < 0)
+ throw new TypeError('max must be a non-negative number')
-const replaceGTE0 = (comp, options) => {
- debug('replaceGTE0', comp, options)
- return comp
- .trim()
- .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
-}
+ this[MAX] = mL || Infinity
+ trim(this)
+ }
+ get max () {
+ return this[MAX]
+ }
-// This function is passed to string.replace(re[t.HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
-const hyphenReplace = incPr => ($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) => {
- if (isX(fM)) {
- from = ''
- } else if (isX(fm)) {
- from = `>=${fM}.0.0${incPr ? '-0' : ''}`
- } else if (isX(fp)) {
- from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
- } else if (fpr) {
- from = `>=${from}`
- } else {
- from = `>=${from}${incPr ? '-0' : ''}`
+ set allowStale (allowStale) {
+ this[ALLOW_STALE] = !!allowStale
+ }
+ get allowStale () {
+ return this[ALLOW_STALE]
}
- if (isX(tM)) {
- to = ''
- } else if (isX(tm)) {
- to = `<${+tM + 1}.0.0-0`
- } else if (isX(tp)) {
- to = `<${tM}.${+tm + 1}.0-0`
- } else if (tpr) {
- to = `<=${tM}.${tm}.${tp}-${tpr}`
- } else if (incPr) {
- to = `<${tM}.${tm}.${+tp + 1}-0`
- } else {
- to = `<=${to}`
+ set maxAge (mA) {
+ if (typeof mA !== 'number')
+ throw new TypeError('maxAge must be a non-negative number')
+
+ this[MAX_AGE] = mA
+ trim(this)
+ }
+ get maxAge () {
+ return this[MAX_AGE]
+ }
+
+ // resize the cache when the lengthCalculator changes.
+ set lengthCalculator (lC) {
+ if (typeof lC !== 'function')
+ lC = naiveLength
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC
+ this[LENGTH] = 0
+ this[LRU_LIST].forEach(hit => {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
+ this[LENGTH] += hit.length
+ })
+ }
+ trim(this)
}
+ get lengthCalculator () { return this[LENGTH_CALCULATOR] }
- return `${from} ${to}`.trim()
-}
+ get length () { return this[LENGTH] }
+ get itemCount () { return this[LRU_LIST].length }
-const testSet = (set, version, options) => {
- for (let i = 0; i < set.length; i++) {
- if (!set[i].test(version)) {
- return false
+ rforEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].tail; walker !== null;) {
+ const prev = walker.prev
+ forEachStep(this, fn, walker, thisp)
+ walker = prev
}
}
- if (version.prerelease.length && !options.includePrerelease) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (let i = 0; i < set.length; i++) {
- debug(set[i].semver)
- if (set[i].semver === Comparator.ANY) {
- continue
- }
+ forEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].head; walker !== null;) {
+ const next = walker.next
+ forEachStep(this, fn, walker, thisp)
+ walker = next
+ }
+ }
- if (set[i].semver.prerelease.length > 0) {
- const allowed = set[i].semver
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch) {
- return true
- }
- }
+ keys () {
+ return this[LRU_LIST].toArray().map(k => k.key)
+ }
+
+ values () {
+ return this[LRU_LIST].toArray().map(k => k.value)
+ }
+
+ reset () {
+ if (this[DISPOSE] &&
+ this[LRU_LIST] &&
+ this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
}
- // Version has a -pre, but it's not one of the ones we like.
- return false
+ this[CACHE] = new Map() // hash of items by key
+ this[LRU_LIST] = new Yallist() // list of items in order of use recency
+ this[LENGTH] = 0 // length of items in the list
}
- return true
-}
+ dump () {
+ return this[LRU_LIST].map(hit =>
+ isStale(this, hit) ? false : {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }).toArray().filter(h => h)
+ }
+ dumpLru () {
+ return this[LRU_LIST]
+ }
-/***/ }),
+ set (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE]
-/***/ 8088:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ if (maxAge && typeof maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
-const debug = __nccwpck_require__(427)
-const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293)
-const { safeRe: re, t } = __nccwpck_require__(9523)
+ const now = maxAge ? Date.now() : 0
+ const len = this[LENGTH_CALCULATOR](value, key)
-const parseOptions = __nccwpck_require__(785)
-const { compareIdentifiers } = __nccwpck_require__(2463)
-class SemVer {
- constructor (version, options) {
- options = parseOptions(options)
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key))
+ return false
+ }
- if (version instanceof SemVer) {
- if (version.loose === !!options.loose &&
- version.includePrerelease === !!options.includePrerelease) {
- return version
- } else {
- version = version.version
+ const node = this[CACHE].get(key)
+ const item = node.value
+
+ // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET])
+ this[DISPOSE](key, item.value)
}
- } else if (typeof version !== 'string') {
- throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
- }
- if (version.length > MAX_LENGTH) {
- throw new TypeError(
- `version is longer than ${MAX_LENGTH} characters`
- )
+ item.now = now
+ item.maxAge = maxAge
+ item.value = value
+ this[LENGTH] += len - item.length
+ item.length = len
+ this.get(key)
+ trim(this)
+ return true
}
- debug('SemVer', version, options)
- this.options = options
- this.loose = !!options.loose
- // this isn't actually relevant for versions, but keep it so that we
- // don't run into trouble passing this.options around.
- this.includePrerelease = !!options.includePrerelease
+ const hit = new Entry(key, value, len, now, maxAge)
- const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+ // oversized objects fall out of cache automatically.
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE])
+ this[DISPOSE](key, value)
- if (!m) {
- throw new TypeError(`Invalid Version: ${version}`)
+ return false
}
- this.raw = version
+ this[LENGTH] += hit.length
+ this[LRU_LIST].unshift(hit)
+ this[CACHE].set(key, this[LRU_LIST].head)
+ trim(this)
+ return true
+ }
- // these are actually numbers
- this.major = +m[1]
- this.minor = +m[2]
- this.patch = +m[3]
+ has (key) {
+ if (!this[CACHE].has(key)) return false
+ const hit = this[CACHE].get(key).value
+ return !isStale(this, hit)
+ }
- if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
- throw new TypeError('Invalid major version')
- }
+ get (key) {
+ return get(this, key, true)
+ }
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
- throw new TypeError('Invalid minor version')
- }
+ peek (key) {
+ return get(this, key, false)
+ }
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
- throw new TypeError('Invalid patch version')
+ pop () {
+ const node = this[LRU_LIST].tail
+ if (!node)
+ return null
+
+ del(this, node)
+ return node.value
+ }
+
+ del (key) {
+ del(this, this[CACHE].get(key))
+ }
+
+ load (arr) {
+ // reset the cache
+ this.reset()
+
+ const now = Date.now()
+ // A previous serialized cache has the most recent items first
+ for (let l = arr.length - 1; l >= 0; l--) {
+ const hit = arr[l]
+ const expiresAt = hit.e || 0
+ if (expiresAt === 0)
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v)
+ else {
+ const maxAge = expiresAt - now
+ // dont add already expired items
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge)
+ }
+ }
}
+ }
- // numberify any prerelease numeric ids
- if (!m[4]) {
- this.prerelease = []
+ prune () {
+ this[CACHE].forEach((value, key) => get(this, key, false))
+ }
+}
+
+const get = (self, key, doUse) => {
+ const node = self[CACHE].get(key)
+ if (node) {
+ const hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ return undefined
} else {
- this.prerelease = m[4].split('.').map((id) => {
- if (/^[0-9]+$/.test(id)) {
- const num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER) {
- return num
- }
- }
- return id
- })
+ if (doUse) {
+ if (self[UPDATE_AGE_ON_GET])
+ node.value.now = Date.now()
+ self[LRU_LIST].unshiftNode(node)
+ }
+ }
+ return hit.value
+ }
+}
+
+const isStale = (self, hit) => {
+ if (!hit || (!hit.maxAge && !self[MAX_AGE]))
+ return false
+
+ const diff = Date.now() - hit.now
+ return hit.maxAge ? diff > hit.maxAge
+ : self[MAX_AGE] && (diff > self[MAX_AGE])
+}
+
+const trim = self => {
+ if (self[LENGTH] > self[MAX]) {
+ for (let walker = self[LRU_LIST].tail;
+ self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ const prev = walker.prev
+ del(self, walker)
+ walker = prev
}
+ }
+}
- this.build = m[5] ? m[5].split('.') : []
- this.format()
+const del = (self, node) => {
+ if (node) {
+ const hit = node.value
+ if (self[DISPOSE])
+ self[DISPOSE](hit.key, hit.value)
+
+ self[LENGTH] -= hit.length
+ self[CACHE].delete(hit.key)
+ self[LRU_LIST].removeNode(node)
}
+}
- format () {
- this.version = `${this.major}.${this.minor}.${this.patch}`
- if (this.prerelease.length) {
- this.version += `-${this.prerelease.join('.')}`
- }
- return this.version
+class Entry {
+ constructor (key, value, length, now, maxAge) {
+ this.key = key
+ this.value = value
+ this.length = length
+ this.now = now
+ this.maxAge = maxAge || 0
}
+}
- toString () {
- return this.version
+const forEachStep = (self, fn, node, thisp) => {
+ let hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ hit = undefined
}
+ if (hit)
+ fn.call(thisp, hit.value, hit.key, self)
+}
- compare (other) {
- debug('SemVer.compare', this.version, this.options, other)
- if (!(other instanceof SemVer)) {
- if (typeof other === 'string' && other === this.version) {
- return 0
- }
- other = new SemVer(other, this.options)
- }
+module.exports = LRUCache
- if (other.version === this.version) {
- return 0
- }
- return this.compareMain(other) || this.comparePre(other)
- }
+/***/ }),
- compareMain (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+/***/ 900:
+/***/ ((module) => {
- return (
- compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch)
- )
- }
+/**
+ * Helpers.
+ */
- comparePre (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var w = d * 7;
+var y = d * 365.25;
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length) {
- return -1
- } else if (!this.prerelease.length && other.prerelease.length) {
- return 1
- } else if (!this.prerelease.length && !other.prerelease.length) {
- return 0
- }
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} [options]
+ * @throws {Error} throw an error if val is not a non-empty string or a number
+ * @return {String|Number}
+ * @api public
+ */
- let i = 0
- do {
- const a = this.prerelease[i]
- const b = other.prerelease[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
+module.exports = function (val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === 'string' && val.length > 0) {
+ return parse(val);
+ } else if (type === 'number' && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
}
+ throw new Error(
+ 'val is not a non-empty string or a valid number. val=' +
+ JSON.stringify(val)
+ );
+};
- compareBuild (other) {
- if (!(other instanceof SemVer)) {
- other = new SemVer(other, this.options)
- }
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
- let i = 0
- do {
- const a = this.build[i]
- const b = other.build[i]
- debug('prerelease compare', i, a, b)
- if (a === undefined && b === undefined) {
- return 0
- } else if (b === undefined) {
- return 1
- } else if (a === undefined) {
- return -1
- } else if (a === b) {
- continue
- } else {
- return compareIdentifiers(a, b)
- }
- } while (++i)
+function parse(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
+ }
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
+ str
+ );
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'weeks':
+ case 'week':
+ case 'w':
+ return n * w;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ default:
+ return undefined;
}
+}
- // preminor will bump the version up to the next minor release, and immediately
- // down to pre-release. premajor and prepatch work the same way.
- inc (release, identifier, identifierBase) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor = 0
- this.major++
- this.inc('pre', identifier, identifierBase)
- break
- case 'preminor':
- this.prerelease.length = 0
- this.patch = 0
- this.minor++
- this.inc('pre', identifier, identifierBase)
- break
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0
- this.inc('patch', identifier, identifierBase)
- this.inc('pre', identifier, identifierBase)
- break
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0) {
- this.inc('patch', identifier, identifierBase)
- }
- this.inc('pre', identifier, identifierBase)
- break
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (
- this.minor !== 0 ||
- this.patch !== 0 ||
- this.prerelease.length === 0
- ) {
- this.major++
- }
- this.minor = 0
- this.patch = 0
- this.prerelease = []
- break
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0) {
- this.minor++
- }
- this.patch = 0
- this.prerelease = []
- break
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0) {
- this.patch++
- }
- this.prerelease = []
- break
- // This probably shouldn't be used publicly.
- // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
- case 'pre': {
- const base = Number(identifierBase) ? 1 : 0
+function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + 'd';
+ }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + 'h';
+ }
+ if (msAbs >= m) {
+ return Math.round(ms / m) + 'm';
+ }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + 's';
+ }
+ return ms + 'ms';
+}
- if (!identifier && identifierBase === false) {
- throw new Error('invalid increment argument: identifier is empty')
- }
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
- if (this.prerelease.length === 0) {
- this.prerelease = [base]
- } else {
- let i = this.prerelease.length
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++
- i = -2
- }
- }
- if (i === -1) {
- // didn't increment anything
- if (identifier === this.prerelease.join('.') && identifierBase === false) {
- throw new Error('invalid increment argument: identifier already exists')
- }
- this.prerelease.push(base)
- }
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- let prerelease = [identifier, base]
- if (identifierBase === false) {
- prerelease = [identifier]
- }
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
- if (isNaN(this.prerelease[1])) {
- this.prerelease = prerelease
- }
- } else {
- this.prerelease = prerelease
- }
- }
- break
- }
- default:
- throw new Error(`invalid increment argument: ${release}`)
- }
- this.raw = this.format()
- if (this.build.length) {
- this.raw += `+${this.build.join('.')}`
- }
- return this
+function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural(ms, msAbs, d, 'day');
+ }
+ if (msAbs >= h) {
+ return plural(ms, msAbs, h, 'hour');
+ }
+ if (msAbs >= m) {
+ return plural(ms, msAbs, m, 'minute');
}
+ if (msAbs >= s) {
+ return plural(ms, msAbs, s, 'second');
+ }
+ return ms + ' ms';
}
-module.exports = SemVer
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, msAbs, n, name) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
+}
/***/ }),
-/***/ 8848:
+/***/ 7467:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const parse = __nccwpck_require__(5925)
-const clean = (version, options) => {
- const s = parse(version.trim().replace(/^[=v]+/, ''), options)
- return s ? s.version : null
-}
-module.exports = clean
+"use strict";
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
-/***/ }),
+// pkg/dist-src/index.js
+var dist_src_exports = {};
+__export(dist_src_exports, {
+ App: () => App,
+ OAuthApp: () => OAuthApp,
+ Octokit: () => Octokit,
+ RequestError: () => import_request_error.RequestError,
+ createNodeMiddleware: () => import_app2.createNodeMiddleware
+});
+module.exports = __toCommonJS(dist_src_exports);
-/***/ 5098:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// pkg/dist-src/octokit.js
+var import_core = __nccwpck_require__(6762);
+var import_plugin_paginate_rest = __nccwpck_require__(4193);
+var import_plugin_paginate_graphql = __nccwpck_require__(5883);
+var import_plugin_rest_endpoint_methods = __nccwpck_require__(3044);
+var import_plugin_retry = __nccwpck_require__(6298);
+var import_plugin_throttling = __nccwpck_require__(9968);
-const eq = __nccwpck_require__(1898)
-const neq = __nccwpck_require__(6017)
-const gt = __nccwpck_require__(4123)
-const gte = __nccwpck_require__(5522)
-const lt = __nccwpck_require__(194)
-const lte = __nccwpck_require__(7520)
+// pkg/dist-src/version.js
+var VERSION = "3.2.0";
-const cmp = (a, op, b, loose) => {
- switch (op) {
- case '===':
- if (typeof a === 'object') {
- a = a.version
- }
- if (typeof b === 'object') {
- b = b.version
- }
- return a === b
+// pkg/dist-src/octokit.js
+var import_request_error = __nccwpck_require__(537);
+var Octokit = import_core.Octokit.plugin(
+ import_plugin_rest_endpoint_methods.restEndpointMethods,
+ import_plugin_paginate_rest.paginateRest,
+ import_plugin_paginate_graphql.paginateGraphql,
+ import_plugin_retry.retry,
+ import_plugin_throttling.throttling
+).defaults({
+ userAgent: `octokit.js/${VERSION}`,
+ throttle: {
+ onRateLimit,
+ onSecondaryRateLimit
+ }
+});
+function onRateLimit(retryAfter, options, octokit) {
+ octokit.log.warn(
+ `Request quota exhausted for request ${options.method} ${options.url}`
+ );
+ if (options.request.retryCount === 0) {
+ octokit.log.info(`Retrying after ${retryAfter} seconds!`);
+ return true;
+ }
+}
+function onSecondaryRateLimit(retryAfter, options, octokit) {
+ octokit.log.warn(
+ `SecondaryRateLimit detected for request ${options.method} ${options.url}`
+ );
+ if (options.request.retryCount === 0) {
+ octokit.log.info(`Retrying after ${retryAfter} seconds!`);
+ return true;
+ }
+}
- case '!==':
- if (typeof a === 'object') {
- a = a.version
- }
- if (typeof b === 'object') {
- b = b.version
- }
- return a !== b
+// pkg/dist-src/app.js
+var import_app = __nccwpck_require__(4389);
+var import_oauth_app = __nccwpck_require__(3493);
+var import_app2 = __nccwpck_require__(4389);
+var App = import_app.App.defaults({ Octokit });
+var OAuthApp = import_oauth_app.OAuthApp.defaults({ Octokit });
+// Annotate the CommonJS export names for ESM import in node:
+0 && (0);
- case '':
- case '=':
- case '==':
- return eq(a, b, loose)
- case '!=':
- return neq(a, b, loose)
+/***/ }),
- case '>':
- return gt(a, b, loose)
+/***/ 1223:
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
- case '>=':
- return gte(a, b, loose)
+var wrappy = __nccwpck_require__(7461)
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function () {
+ return once(this)
+ },
+ configurable: true
+ })
- case '<':
- return lt(a, b, loose)
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function () {
+ return onceStrict(this)
+ },
+ configurable: true
+ })
+})
- case '<=':
- return lte(a, b, loose)
+function once (fn) {
+ var f = function () {
+ if (f.called) return f.value
+ f.called = true
+ return f.value = fn.apply(this, arguments)
+ }
+ f.called = false
+ return f
+}
- default:
- throw new TypeError(`Invalid operator: ${op}`)
+function onceStrict (fn) {
+ var f = function () {
+ if (f.called)
+ throw new Error(f.onceError)
+ f.called = true
+ return f.value = fn.apply(this, arguments)
}
+ var name = fn.name || 'Function wrapped with `once`'
+ f.onceError = name + " shouldn't be called more than once"
+ f.called = false
+ return f
}
-module.exports = cmp
/***/ }),
-/***/ 3466:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 1867:
+/***/ ((module, exports, __nccwpck_require__) => {
-const SemVer = __nccwpck_require__(8088)
-const parse = __nccwpck_require__(5925)
-const { safeRe: re, t } = __nccwpck_require__(9523)
+/*! safe-buffer. MIT License. Feross Aboukhadijeh */
+/* eslint-disable node/no-deprecated-api */
+var buffer = __nccwpck_require__(4300)
+var Buffer = buffer.Buffer
-const coerce = (version, options) => {
- if (version instanceof SemVer) {
- return version
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+ for (var key in src) {
+ dst[key] = src[key]
}
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+ module.exports = buffer
+} else {
+ // Copy properties from require('buffer')
+ copyProps(buffer, exports)
+ exports.Buffer = SafeBuffer
+}
- if (typeof version === 'number') {
- version = String(version)
- }
+function SafeBuffer (arg, encodingOrOffset, length) {
+ return Buffer(arg, encodingOrOffset, length)
+}
- if (typeof version !== 'string') {
- return null
- }
+SafeBuffer.prototype = Object.create(Buffer.prototype)
- options = options || {}
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
- let match = null
- if (!options.rtl) {
- match = version.match(re[t.COERCE])
- } else {
- // Find the right-most coercible string that does not share
- // a terminus with a more left-ward coercible string.
- // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
- //
- // Walk through the string checking with a /g regexp
- // Manually set the index so as to pick up overlapping matches.
- // Stop when we get a match that ends at the string end, since no
- // coercible string can be more right-ward without the same terminus.
- let next
- while ((next = re[t.COERCERTL].exec(version)) &&
- (!match || match.index + match[0].length !== version.length)
- ) {
- if (!match ||
- next.index + next[0].length !== match.index + match[0].length) {
- match = next
- }
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
- }
- // leave it in a clean state
- re[t.COERCERTL].lastIndex = -1
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+ if (typeof arg === 'number') {
+ throw new TypeError('Argument must not be a number')
}
+ return Buffer(arg, encodingOrOffset, length)
+}
- if (match === null) {
- return null
+SafeBuffer.alloc = function (size, fill, encoding) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
}
-
- return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
+ var buf = Buffer(size)
+ if (fill !== undefined) {
+ if (typeof encoding === 'string') {
+ buf.fill(fill, encoding)
+ } else {
+ buf.fill(fill)
+ }
+ } else {
+ buf.fill(0)
+ }
+ return buf
}
-module.exports = coerce
-
-/***/ }),
-
-/***/ 2156:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+SafeBuffer.allocUnsafe = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return Buffer(size)
+}
-const SemVer = __nccwpck_require__(8088)
-const compareBuild = (a, b, loose) => {
- const versionA = new SemVer(a, loose)
- const versionB = new SemVer(b, loose)
- return versionA.compare(versionB) || versionA.compareBuild(versionB)
+SafeBuffer.allocUnsafeSlow = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return buffer.SlowBuffer(size)
}
-module.exports = compareBuild
/***/ }),
-/***/ 2804:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 5911:
+/***/ ((module, exports) => {
-const compare = __nccwpck_require__(4309)
-const compareLoose = (a, b) => compare(a, b, true)
-module.exports = compareLoose
+exports = module.exports = SemVer
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
-/***/ }),
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
-/***/ 4309:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
-const SemVer = __nccwpck_require__(8088)
-const compare = (a, b, loose) =>
- new SemVer(a, loose).compare(new SemVer(b, loose))
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
-module.exports = compare
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+function tok (n) {
+ t[n] = R++
+}
-/***/ }),
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
-/***/ 4297:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
-const parse = __nccwpck_require__(5925)
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
-const diff = (version1, version2) => {
- const v1 = parse(version1, null, true)
- const v2 = parse(version2, null, true)
- const comparison = v1.compare(v2)
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
- if (comparison === 0) {
- return null
- }
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
- const v1Higher = comparison > 0
- const highVersion = v1Higher ? v1 : v2
- const lowVersion = v1Higher ? v2 : v1
- const highHasPre = !!highVersion.prerelease.length
- const lowHasPre = !!lowVersion.prerelease.length
+// ## Main Version
+// Three dot-separated numeric identifiers.
- if (lowHasPre && !highHasPre) {
- // Going from prerelease -> no prerelease requires some special casing
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')'
- // If the low version has only a major, then it will always be a major
- // Some examples:
- // 1.0.0-1 -> 1.0.0
- // 1.0.0-1 -> 1.1.1
- // 1.0.0-1 -> 2.0.0
- if (!lowVersion.patch && !lowVersion.minor) {
- return 'major'
- }
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
- // Otherwise it can be determined by checking the high version
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
- if (highVersion.patch) {
- // anything higher than a patch bump would result in the wrong version
- return 'patch'
- }
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
- if (highVersion.minor) {
- // anything higher than a minor bump would result in the wrong version
- return 'minor'
- }
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
- // bumping major/minor/patch all have same result
- return 'major'
- }
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
- // add the `pre` prefix if we are going to a prerelease version
- const prefix = highHasPre ? 'pre' : ''
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
- if (v1.major !== v2.major) {
- return prefix + 'major'
- }
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
- if (v1.minor !== v2.minor) {
- return prefix + 'minor'
- }
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
- if (v1.patch !== v2.patch) {
- return prefix + 'patch'
- }
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
- // high and low are preleases
- return 'prerelease'
-}
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+ '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
-module.exports = diff
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
-/***/ }),
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+ src[t.PRERELEASE] + '?' +
+ src[t.BUILD] + '?'
-/***/ 1898:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
-const compare = __nccwpck_require__(4309)
-const eq = (a, b, loose) => compare(a, b, loose) === 0
-module.exports = eq
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+ src[t.PRERELEASELOOSE] + '?' +
+ src[t.BUILD] + '?'
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
-/***/ }),
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
-/***/ 4123:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
-const compare = __nccwpck_require__(4309)
-const gt = (a, b, loose) => compare(a, b, loose) > 0
-module.exports = gt
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[t.PRERELEASE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
-/***/ }),
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
-/***/ 5522:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
-const compare = __nccwpck_require__(4309)
-const gte = (a, b, loose) => compare(a, b, loose) >= 0
-module.exports = gte
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
-/***/ }),
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
-/***/ 900:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
-const SemVer = __nccwpck_require__(8088)
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
-const inc = (version, release, options, identifier, identifierBase) => {
- if (typeof (options) === 'string') {
- identifierBase = identifier
- identifier = options
- options = undefined
- }
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
- try {
- return new SemVer(
- version instanceof SemVer ? version.version : version,
- options
- ).inc(release, identifier, identifierBase).version
- } catch (er) {
- return null
- }
-}
-module.exports = inc
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+ '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
-/***/ }),
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
-/***/ 194:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s*$'
-const compare = __nccwpck_require__(4309)
-const lt = (a, b, loose) => compare(a, b, loose) < 0
-module.exports = lt
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
-/***/ }),
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+ }
+}
-/***/ 7520:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-const compare = __nccwpck_require__(4309)
-const lte = (a, b, loose) => compare(a, b, loose) <= 0
-module.exports = lte
+ if (version instanceof SemVer) {
+ return version
+ }
+ if (typeof version !== 'string') {
+ return null
+ }
-/***/ }),
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
-/***/ 6688:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
-const SemVer = __nccwpck_require__(8088)
-const major = (a, loose) => new SemVer(a, loose).major
-module.exports = major
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
-/***/ }),
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
-/***/ 8447:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+exports.SemVer = SemVer
-const SemVer = __nccwpck_require__(8088)
-const minor = (a, loose) => new SemVer(a, loose).minor
-module.exports = minor
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
-/***/ }),
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
-/***/ 6017:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
-const compare = __nccwpck_require__(4309)
-const neq = (a, b, loose) => compare(a, b, loose) !== 0
-module.exports = neq
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
-/***/ }),
+ this.raw = version
-/***/ 5925:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
-const SemVer = __nccwpck_require__(8088)
-const parse = (version, options, throwErrors = false) => {
- if (version instanceof SemVer) {
- return version
- }
- try {
- return new SemVer(version, options)
- } catch (er) {
- if (!throwErrors) {
- return null
- }
- throw er
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
}
-}
-
-module.exports = parse
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
-/***/ }),
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
-/***/ 2866:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
-const SemVer = __nccwpck_require__(8088)
-const patch = (a, loose) => new SemVer(a, loose).patch
-module.exports = patch
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
-/***/ }),
+SemVer.prototype.toString = function () {
+ return this.version
+}
-/***/ 4016:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-const parse = __nccwpck_require__(5925)
-const prerelease = (version, options) => {
- const parsed = parse(version, options)
- return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+ return this.compareMain(other) || this.comparePre(other)
}
-module.exports = prerelease
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-/***/ }),
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
-/***/ 6417:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-const compare = __nccwpck_require__(4309)
-const rcompare = (a, b, loose) => compare(b, a, loose)
-module.exports = rcompare
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
-/***/ }),
+SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
-/***/ 8701:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ var i = 0
+ do {
+ var a = this.build[i]
+ var b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
-const compareBuild = __nccwpck_require__(2156)
-const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
-module.exports = rsort
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
-/***/ }),
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
-/***/ 6055:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
-const Range = __nccwpck_require__(9828)
-const satisfies = (version, range, options) => {
try {
- range = new Range(range, options)
+ return new SemVer(version, loose).inc(release, identifier).version
} catch (er) {
- return false
+ return null
}
- return range.test(version)
}
-module.exports = satisfies
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
-/***/ }),
+exports.compareIdentifiers = compareIdentifiers
-/***/ 1426:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
-const compareBuild = __nccwpck_require__(2156)
-const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
-module.exports = sort
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
-/***/ }),
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
-/***/ 9601:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
-const parse = __nccwpck_require__(5925)
-const valid = (version, options) => {
- const v = parse(version, options)
- return v ? v.version : null
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
}
-module.exports = valid
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
-/***/ }),
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
-/***/ 1383:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
-// just pre-load all the stuff that index.js lazily exports
-const internalRe = __nccwpck_require__(9523)
-const constants = __nccwpck_require__(2293)
-const SemVer = __nccwpck_require__(8088)
-const identifiers = __nccwpck_require__(2463)
-const parse = __nccwpck_require__(5925)
-const valid = __nccwpck_require__(9601)
-const clean = __nccwpck_require__(8848)
-const inc = __nccwpck_require__(900)
-const diff = __nccwpck_require__(4297)
-const major = __nccwpck_require__(6688)
-const minor = __nccwpck_require__(8447)
-const patch = __nccwpck_require__(2866)
-const prerelease = __nccwpck_require__(4016)
-const compare = __nccwpck_require__(4309)
-const rcompare = __nccwpck_require__(6417)
-const compareLoose = __nccwpck_require__(2804)
-const compareBuild = __nccwpck_require__(2156)
-const sort = __nccwpck_require__(1426)
-const rsort = __nccwpck_require__(8701)
-const gt = __nccwpck_require__(4123)
-const lt = __nccwpck_require__(194)
-const eq = __nccwpck_require__(1898)
-const neq = __nccwpck_require__(6017)
-const gte = __nccwpck_require__(5522)
-const lte = __nccwpck_require__(7520)
-const cmp = __nccwpck_require__(5098)
-const coerce = __nccwpck_require__(3466)
-const Comparator = __nccwpck_require__(1532)
-const Range = __nccwpck_require__(9828)
-const satisfies = __nccwpck_require__(6055)
-const toComparators = __nccwpck_require__(2706)
-const maxSatisfying = __nccwpck_require__(579)
-const minSatisfying = __nccwpck_require__(832)
-const minVersion = __nccwpck_require__(4179)
-const validRange = __nccwpck_require__(2098)
-const outside = __nccwpck_require__(420)
-const gtr = __nccwpck_require__(9380)
-const ltr = __nccwpck_require__(3323)
-const intersects = __nccwpck_require__(7008)
-const simplifyRange = __nccwpck_require__(5297)
-const subset = __nccwpck_require__(7863)
-module.exports = {
- parse,
- valid,
- clean,
- inc,
- diff,
- major,
- minor,
- patch,
- prerelease,
- compare,
- rcompare,
- compareLoose,
- compareBuild,
- sort,
- rsort,
- gt,
- lt,
- eq,
- neq,
- gte,
- lte,
- cmp,
- coerce,
- Comparator,
- Range,
- satisfies,
- toComparators,
- maxSatisfying,
- minSatisfying,
- minVersion,
- validRange,
- outside,
- gtr,
- ltr,
- intersects,
- simplifyRange,
- subset,
- SemVer,
- re: internalRe.re,
- src: internalRe.src,
- tokens: internalRe.t,
- SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
- RELEASE_TYPES: constants.RELEASE_TYPES,
- compareIdentifiers: identifiers.compareIdentifiers,
- rcompareIdentifiers: identifiers.rcompareIdentifiers,
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+ var versionA = new SemVer(a, loose)
+ var versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
}
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
-/***/ }),
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose)
+ })
+}
-/***/ 2293:
-/***/ ((module) => {
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose)
+ })
+}
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-const SEMVER_SPEC_VERSION = '2.0.0'
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
-const MAX_LENGTH = 256
-const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
-/* istanbul ignore next */ 9007199254740991
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
-// Max safe segment length for coercion.
-const MAX_SAFE_COMPONENT_LENGTH = 16
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
-// Max safe length for a build identifier. The max length minus 6 characters for
-// the shortest version with a build 0.0.0+BUILD.
-const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
-const RELEASE_TYPES = [
- 'major',
- 'premajor',
- 'minor',
- 'preminor',
- 'patch',
- 'prepatch',
- 'prerelease',
-]
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
-module.exports = {
- MAX_LENGTH,
- MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
- MAX_SAFE_INTEGER,
- RELEASE_TYPES,
- SEMVER_SPEC_VERSION,
- FLAG_INCLUDE_PRERELEASE: 0b001,
- FLAG_LOOSE: 0b010,
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
}
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
-/***/ }),
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
-/***/ 427:
-/***/ ((module) => {
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
-const debug = (
- typeof process === 'object' &&
- process.env &&
- process.env.NODE_DEBUG &&
- /\bsemver\b/i.test(process.env.NODE_DEBUG)
-) ? (...args) => console.error('SEMVER', ...args)
- : () => {}
+ case '!=':
+ return neq(a, b, loose)
-module.exports = debug
+ case '>':
+ return gt(a, b, loose)
+ case '>=':
+ return gte(a, b, loose)
-/***/ }),
+ case '<':
+ return lt(a, b, loose)
-/***/ 2463:
-/***/ ((module) => {
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-const numeric = /^[0-9]+$/
-const compareIdentifiers = (a, b) => {
- const anum = numeric.test(a)
- const bnum = numeric.test(b)
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
- if (anum && bnum) {
- a = +a
- b = +b
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
}
- return a === b ? 0
- : (anum && !bnum) ? -1
- : (bnum && !anum) ? 1
- : a < b ? -1
- : 1
-}
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
-const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
-module.exports = {
- compareIdentifiers,
- rcompareIdentifiers,
+ debug('comp', this)
}
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var m = comp.match(r)
-/***/ }),
-
-/***/ 785:
-/***/ ((module) => {
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
-// parse out just the options we care about
-const looseOption = Object.freeze({ loose: true })
-const emptyOpts = Object.freeze({ })
-const parseOptions = options => {
- if (!options) {
- return emptyOpts
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
}
- if (typeof options !== 'object') {
- return looseOption
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
}
+}
- return options
+Comparator.prototype.toString = function () {
+ return this.value
}
-module.exports = parseOptions
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
-/***/ }),
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
-/***/ 9523:
-/***/ ((module, exports, __nccwpck_require__) => {
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
-const {
- MAX_SAFE_COMPONENT_LENGTH,
- MAX_SAFE_BUILD_LENGTH,
- MAX_LENGTH,
-} = __nccwpck_require__(2293)
-const debug = __nccwpck_require__(427)
-exports = module.exports = {}
+ return cmp(version, this.operator, this.semver, this.options)
+}
-// The actual regexps go on exports.re
-const re = exports.re = []
-const safeRe = exports.safeRe = []
-const src = exports.src = []
-const t = exports.t = {}
-let R = 0
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
-const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-// Replace some greedy regex tokens to prevent regex dos issues. These regex are
-// used internally via the safeRe object since all inputs in this library get
-// normalized first to trim and collapse all extra whitespace. The original
-// regexes are exported for userland consumption and lower level usage. A
-// future breaking change could export the safer regex only with a note that
-// all input should have extra whitespace removed.
-const safeRegexReplacements = [
- ['\\s', 1],
- ['\\d', MAX_LENGTH],
- [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
-]
+ var rangeTmp
-const makeSafeRegex = (value) => {
- for (const [token, max] of safeRegexReplacements) {
- value = value
- .split(`${token}*`).join(`${token}{0,${max}}`)
- .split(`${token}+`).join(`${token}{1,${max}}`)
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
}
- return value
-}
-
-const createToken = (name, value, isGlobal) => {
- const safe = makeSafeRegex(value)
- const index = R++
- debug(name, index, value)
- t[name] = index
- src[index] = value
- re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
- safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
-}
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
-createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
-createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
-createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
-// ## Main Version
-// Three dot-separated numeric identifiers.
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
-createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
- `(${src[t.NUMERICIDENTIFIER]})\\.` +
- `(${src[t.NUMERICIDENTIFIER]})`)
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
-createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
- `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
- `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
+ // First, split based on boolean or ||
+ this.raw = range
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
+ }
-createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
-}|${src[t.NONNUMERICIDENTIFIER]})`)
+ this.format()
+}
-createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
-}|${src[t.NONNUMERICIDENTIFIER]})`)
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
+Range.prototype.toString = function () {
+ return this.range
+}
-createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
-}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ range = range.trim()
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, re[t.COMPARATORTRIM])
-createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
-}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
-createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
-createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
-}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
+ return set
+}
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
-createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
-}${src[t.PRERELEASE]}?${
- src[t.BUILD]}?`)
+ return this.set.some(function (thisComparators) {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some(function (rangeComparators) {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+}
-createToken('FULL', `^${src[t.FULLPLAIN]}$`)
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+ var result = true
+ var remainingComparators = comparators.slice()
+ var testComparator = remainingComparators.pop()
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
-}${src[t.PRERELEASELOOSE]}?${
- src[t.BUILD]}?`)
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options)
+ })
-createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
+ testComparator = remainingComparators.pop()
+ }
-createToken('GTLT', '((?:<|>)?=?)')
+ return result
+}
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
-createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
-createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
- `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
- `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
- `(?:${src[t.PRERELEASE]})?${
- src[t.BUILD]}?` +
- `)?)?`)
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
-createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
- `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
- `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
- `(?:${src[t.PRERELEASELOOSE]})?${
- src[t.BUILD]}?` +
- `)?)?`)
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
-createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
-createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
-// Coercion.
-// Extract anything that could conceivably be a part of a valid semver
-createToken('COERCE', `${'(^|[^\\d])' +
- '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
- `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
- `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
- `(?:$|[^\\d])`)
-createToken('COERCERTL', src[t.COERCE], true)
+function replaceTilde (comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-createToken('LONETILDE', '(?:~>?)')
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
-createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
-exports.tildeTrimReplace = '$1~'
+ debug('tilde return', ret)
+ return ret
+ })
+}
-createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
-createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-createToken('LONECARET', '(?:\\^)')
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
-createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
-exports.caretTrimReplace = '$1^'
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
-createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
-createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
+ debug('caret return', ret)
+ return ret
+ })
+}
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
-createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
-}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
-exports.comparatorTrimReplace = '$1$2$3'
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
- `\\s+-\\s+` +
- `(${src[t.XRANGEPLAIN]})` +
- `\\s*$`)
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
-createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
- `\\s+-\\s+` +
- `(${src[t.XRANGEPLAINLOOSE]})` +
- `\\s*$`)
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
-// Star ranges basically just allow anything at all.
-createToken('STAR', '(<|>)?=?\\s*\\*')
-// >=0.0.0 is like a star
-createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
-createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
-/***/ }),
+ ret = gtlt + M + '.' + m + '.' + p + pr
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0' + pr
+ }
-/***/ 9380:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ debug('xRange return', ret)
-// Determine if version is greater than all the versions possible in the range.
-const outside = __nccwpck_require__(420)
-const gtr = (version, range, options) => outside(version, range, '>', options)
-module.exports = gtr
+ return ret
+ })
+}
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(re[t.STAR], '')
+}
-/***/ }),
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
-/***/ 7008:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
-const Range = __nccwpck_require__(9828)
-const intersects = (r1, r2, options) => {
- r1 = new Range(r1, options)
- r2 = new Range(r2, options)
- return r1.intersects(r2, options)
+ return (from + ' ' + to).trim()
}
-module.exports = intersects
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
-/***/ }),
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
-/***/ 3323:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
-const outside = __nccwpck_require__(420)
-// Determine if version is less than all the versions possible in the range
-const ltr = (version, range, options) => outside(version, range, '<', options)
-module.exports = ltr
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
-/***/ }),
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
-/***/ 579:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
-const SemVer = __nccwpck_require__(8088)
-const Range = __nccwpck_require__(9828)
+ return true
+}
-const maxSatisfying = (versions, range, options) => {
- let max = null
- let maxSV = null
- let rangeObj = null
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
try {
- rangeObj = new Range(range, options)
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
} catch (er) {
return null
}
- versions.forEach((v) => {
+ versions.forEach(function (v) {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!max || maxSV.compare(v) === -1) {
@@ -24034,26 +24346,17 @@ const maxSatisfying = (versions, range, options) => {
})
return max
}
-module.exports = maxSatisfying
-
-
-/***/ }),
-
-/***/ 832:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-const SemVer = __nccwpck_require__(8088)
-const Range = __nccwpck_require__(9828)
-const minSatisfying = (versions, range, options) => {
- let min = null
- let minSV = null
- let rangeObj = null
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
try {
- rangeObj = new Range(range, options)
+ var rangeObj = new Range(range, options)
} catch (er) {
return null
}
- versions.forEach((v) => {
+ versions.forEach(function (v) {
if (rangeObj.test(v)) {
// satisfies(v, range, options)
if (!min || minSV.compare(v) === 1) {
@@ -24065,22 +24368,12 @@ const minSatisfying = (versions, range, options) => {
})
return min
}
-module.exports = minSatisfying
-
-
-/***/ }),
-
-/***/ 4179:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-const SemVer = __nccwpck_require__(8088)
-const Range = __nccwpck_require__(9828)
-const gt = __nccwpck_require__(4123)
-const minVersion = (range, loose) => {
+exports.minVersion = minVersion
+function minVersion (range, loose) {
range = new Range(range, loose)
- let minver = new SemVer('0.0.0')
+ var minver = new SemVer('0.0.0')
if (range.test(minver)) {
return minver
}
@@ -24091,13 +24384,12 @@ const minVersion = (range, loose) => {
}
minver = null
- for (let i = 0; i < range.set.length; ++i) {
- const comparators = range.set[i]
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
- let setMin = null
- comparators.forEach((comparator) => {
+ comparators.forEach(function (comparator) {
// Clone to avoid manipulating the comparator's semver object.
- const compver = new SemVer(comparator.semver.version)
+ var compver = new SemVer(comparator.semver.version)
switch (comparator.operator) {
case '>':
if (compver.prerelease.length === 0) {
@@ -24109,8 +24401,8 @@ const minVersion = (range, loose) => {
/* fallthrough */
case '':
case '>=':
- if (!setMin || gt(compver, setMin)) {
- setMin = compver
+ if (!minver || gt(minver, compver)) {
+ minver = compver
}
break
case '<':
@@ -24119,12 +24411,9 @@ const minVersion = (range, loose) => {
break
/* istanbul ignore next */
default:
- throw new Error(`Unexpected operation: ${comparator.operator}`)
+ throw new Error('Unexpected operation: ' + comparator.operator)
}
})
- if (setMin && (!minver || gt(minver, setMin))) {
- minver = setMin
- }
}
if (minver && range.test(minver)) {
@@ -24133,435 +24422,163 @@ const minVersion = (range, loose) => {
return null
}
-module.exports = minVersion
-
-
-/***/ }),
-
-/***/ 420:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-const SemVer = __nccwpck_require__(8088)
-const Comparator = __nccwpck_require__(1532)
-const { ANY } = Comparator
-const Range = __nccwpck_require__(9828)
-const satisfies = __nccwpck_require__(6055)
-const gt = __nccwpck_require__(4123)
-const lt = __nccwpck_require__(194)
-const lte = __nccwpck_require__(7520)
-const gte = __nccwpck_require__(5522)
-
-const outside = (version, range, hilo, options) => {
- version = new SemVer(version, options)
- range = new Range(range, options)
-
- let gtfn, ltefn, ltfn, comp, ecomp
- switch (hilo) {
- case '>':
- gtfn = gt
- ltefn = lte
- ltfn = lt
- comp = '>'
- ecomp = '>='
- break
- case '<':
- gtfn = lt
- ltefn = gte
- ltfn = gt
- comp = '<'
- ecomp = '<='
- break
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"')
- }
-
- // If it satisfies the range it is not outside
- if (satisfies(version, range, options)) {
- return false
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (let i = 0; i < range.set.length; ++i) {
- const comparators = range.set[i]
-
- let high = null
- let low = null
-
- comparators.forEach((comparator) => {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator
- low = low || comparator
- if (gtfn(comparator.semver, high.semver, options)) {
- high = comparator
- } else if (ltfn(comparator.semver, low.semver, options)) {
- low = comparator
- }
- })
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false
- }
- }
- return true
-}
-
-module.exports = outside
-
-
-/***/ }),
-
-/***/ 5297:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-// given a set of versions and a range, create a "simplified" range
-// that includes the same versions that the original range does
-// If the original range is shorter than the simplified one, return that.
-const satisfies = __nccwpck_require__(6055)
-const compare = __nccwpck_require__(4309)
-module.exports = (versions, range, options) => {
- const set = []
- let first = null
- let prev = null
- const v = versions.sort((a, b) => compare(a, b, options))
- for (const version of v) {
- const included = satisfies(version, range, options)
- if (included) {
- prev = version
- if (!first) {
- first = version
- }
- } else {
- if (prev) {
- set.push([first, prev])
- }
- prev = null
- first = null
- }
- }
- if (first) {
- set.push([first, null])
- }
-
- const ranges = []
- for (const [min, max] of set) {
- if (min === max) {
- ranges.push(min)
- } else if (!max && min === v[0]) {
- ranges.push('*')
- } else if (!max) {
- ranges.push(`>=${min}`)
- } else if (min === v[0]) {
- ranges.push(`<=${max}`)
- } else {
- ranges.push(`${min} - ${max}`)
- }
- }
- const simplified = ranges.join(' || ')
- const original = typeof range.raw === 'string' ? range.raw : String(range)
- return simplified.length < original.length ? simplified : range
-}
-
-
-/***/ }),
-
-/***/ 7863:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-const Range = __nccwpck_require__(9828)
-const Comparator = __nccwpck_require__(1532)
-const { ANY } = Comparator
-const satisfies = __nccwpck_require__(6055)
-const compare = __nccwpck_require__(4309)
-
-// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
-// - Every simple range `r1, r2, ...` is a null set, OR
-// - Every simple range `r1, r2, ...` which is not a null set is a subset of
-// some `R1, R2, ...`
-//
-// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
-// - If c is only the ANY comparator
-// - If C is only the ANY comparator, return true
-// - Else if in prerelease mode, return false
-// - else replace c with `[>=0.0.0]`
-// - If C is only the ANY comparator
-// - if in prerelease mode, return true
-// - else replace C with `[>=0.0.0]`
-// - Let EQ be the set of = comparators in c
-// - If EQ is more than one, return true (null set)
-// - Let GT be the highest > or >= comparator in c
-// - Let LT be the lowest < or <= comparator in c
-// - If GT and LT, and GT.semver > LT.semver, return true (null set)
-// - If any C is a = range, and GT or LT are set, return false
-// - If EQ
-// - If GT, and EQ does not satisfy GT, return true (null set)
-// - If LT, and EQ does not satisfy LT, return true (null set)
-// - If EQ satisfies every C, return true
-// - Else return false
-// - If GT
-// - If GT.semver is lower than any > or >= comp in C, return false
-// - If GT is >=, and GT.semver does not satisfy every C, return false
-// - If GT.semver has a prerelease, and not in prerelease mode
-// - If no C has a prerelease and the GT.semver tuple, return false
-// - If LT
-// - If LT.semver is greater than any < or <= comp in C, return false
-// - If LT is <=, and LT.semver does not satisfy every C, return false
-// - If GT.semver has a prerelease, and not in prerelease mode
-// - If no C has a prerelease and the LT.semver tuple, return false
-// - Else return true
-
-const subset = (sub, dom, options = {}) => {
- if (sub === dom) {
- return true
- }
-
- sub = new Range(sub, options)
- dom = new Range(dom, options)
- let sawNonNull = false
-
- OUTER: for (const simpleSub of sub.set) {
- for (const simpleDom of dom.set) {
- const isSub = simpleSubset(simpleSub, simpleDom, options)
- sawNonNull = sawNonNull || isSub !== null
- if (isSub) {
- continue OUTER
- }
- }
- // the null set is a subset of everything, but null simple ranges in
- // a complex range should be ignored. so if we saw a non-null range,
- // then we know this isn't a subset, but if EVERY simple range was null,
- // then it is a subset.
- if (sawNonNull) {
- return false
- }
- }
- return true
-}
-
-const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]
-const minimumVersion = [new Comparator('>=0.0.0')]
-
-const simpleSubset = (sub, dom, options) => {
- if (sub === dom) {
- return true
- }
-
- if (sub.length === 1 && sub[0].semver === ANY) {
- if (dom.length === 1 && dom[0].semver === ANY) {
- return true
- } else if (options.includePrerelease) {
- sub = minimumVersionWithPreRelease
- } else {
- sub = minimumVersion
- }
- }
-
- if (dom.length === 1 && dom[0].semver === ANY) {
- if (options.includePrerelease) {
- return true
- } else {
- dom = minimumVersion
- }
- }
-
- const eqSet = new Set()
- let gt, lt
- for (const c of sub) {
- if (c.operator === '>' || c.operator === '>=') {
- gt = higherGT(gt, c, options)
- } else if (c.operator === '<' || c.operator === '<=') {
- lt = lowerLT(lt, c, options)
- } else {
- eqSet.add(c.semver)
- }
- }
- if (eqSet.size > 1) {
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
return null
}
+}
- let gtltComp
- if (gt && lt) {
- gtltComp = compare(gt.semver, lt.semver, options)
- if (gtltComp > 0) {
- return null
- } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
- return null
- }
- }
-
- // will iterate one or zero times
- for (const eq of eqSet) {
- if (gt && !satisfies(eq, String(gt), options)) {
- return null
- }
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
- if (lt && !satisfies(eq, String(lt), options)) {
- return null
- }
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
- for (const c of dom) {
- if (!satisfies(eq, String(c), options)) {
- return false
- }
- }
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
- return true
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
}
- let higher, lower
- let hasDomLT, hasDomGT
- // if the subset has a prerelease, we need a comparator in the superset
- // with the same tuple and a prerelease, or it's not a subset
- let needDomLTPre = lt &&
- !options.includePrerelease &&
- lt.semver.prerelease.length ? lt.semver : false
- let needDomGTPre = gt &&
- !options.includePrerelease &&
- gt.semver.prerelease.length ? gt.semver : false
- // exception: <1.2.3-0 is the same as <1.2.3
- if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&
- lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
- needDomLTPre = false
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
}
- for (const c of dom) {
- hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
- hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
- if (gt) {
- if (needDomGTPre) {
- if (c.semver.prerelease && c.semver.prerelease.length &&
- c.semver.major === needDomGTPre.major &&
- c.semver.minor === needDomGTPre.minor &&
- c.semver.patch === needDomGTPre.patch) {
- needDomGTPre = false
- }
- }
- if (c.operator === '>' || c.operator === '>=') {
- higher = higherGT(gt, c, options)
- if (higher === c && higher !== gt) {
- return false
- }
- } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
- return false
- }
- }
- if (lt) {
- if (needDomLTPre) {
- if (c.semver.prerelease && c.semver.prerelease.length &&
- c.semver.major === needDomLTPre.major &&
- c.semver.minor === needDomLTPre.minor &&
- c.semver.patch === needDomLTPre.patch) {
- needDomLTPre = false
- }
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
}
- if (c.operator === '<' || c.operator === '<=') {
- lower = lowerLT(lt, c, options)
- if (lower === c && lower !== lt) {
- return false
- }
- } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
- return false
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
}
- }
- if (!c.operator && (lt || gt) && gtltComp !== 0) {
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
return false
}
- }
-
- // if there was a < or >, and nothing in the dom, then must be false
- // UNLESS it was limited by another range in the other direction.
- // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
- if (gt && hasDomLT && !lt && gtltComp !== 0) {
- return false
- }
-
- if (lt && hasDomGT && !gt && gtltComp !== 0) {
- return false
- }
- // we needed a prerelease range in a specific tuple, but didn't get one
- // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
- // because it includes prereleases in the 1.2.3 tuple
- if (needDomGTPre || needDomLTPre) {
- return false
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
}
-
return true
}
-// >=1.2.3 is lower than >1.2.3
-const higherGT = (a, b, options) => {
- if (!a) {
- return b
- }
- const comp = compare(a.semver, b.semver, options)
- return comp > 0 ? a
- : comp < 0 ? b
- : b.operator === '>' && a.operator === '>=' ? b
- : a
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
}
-// <=1.2.3 is higher than <1.2.3
-const lowerLT = (a, b, options) => {
- if (!a) {
- return b
- }
- const comp = compare(a.semver, b.semver, options)
- return comp < 0 ? a
- : comp > 0 ? b
- : b.operator === '<' && a.operator === '<=' ? b
- : a
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
}
-module.exports = subset
-
-
-/***/ }),
-
-/***/ 2706:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-const Range = __nccwpck_require__(9828)
-
-// Mostly just for testing and legacy API reasons
-const toComparators = (range, options) =>
- new Range(range, options).set
- .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
+exports.coerce = coerce
+function coerce (version, options) {
+ if (version instanceof SemVer) {
+ return version
+ }
-module.exports = toComparators
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+ if (typeof version !== 'string') {
+ return null
+ }
-/***/ }),
+ options = options || {}
-/***/ 2098:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+ var match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
-const Range = __nccwpck_require__(9828)
-const validRange = (range, options) => {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, options).range || '*'
- } catch (er) {
+ if (match === null) {
return null
}
+
+ return parse(match[2] +
+ '.' + (match[3] || '0') +
+ '.' + (match[4] || '0'), options)
}
-module.exports = validRange
/***/ }),
@@ -24913,7 +24930,7 @@ function getUserAgent() {
return navigator.userAgent;
}
- if (typeof process === "object" && "version" in process) {
+ if (typeof process === "object" && process.version !== undefined) {
return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
}
@@ -27760,8 +27777,8 @@ var io = __nccwpck_require__(7436);
var tool_cache = __nccwpck_require__(7784);
// EXTERNAL MODULE: ./node_modules/octokit/dist-node/index.js
var dist_node = __nccwpck_require__(7467);
-// EXTERNAL MODULE: ./node_modules/semver/index.js
-var semver = __nccwpck_require__(1383);
+// EXTERNAL MODULE: ./node_modules/semver/semver.js
+var semver = __nccwpck_require__(5911);
;// CONCATENATED MODULE: ./src/system.ts
const isWindowsPlatform = (platform) => platform.startsWith("win");
diff --git a/yarn.lock b/yarn.lock
index a86a5da..afaaa32 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -742,9 +742,9 @@
fastq "^1.6.0"
"@octokit/app@^14.0.2":
- version "14.0.2"
- resolved "https://registry.yarnpkg.com/@octokit/app/-/app-14.0.2.tgz#b47c52020221351fb58640f113eb38b2ad3998fe"
- integrity sha512-NCSCktSx+XmjuSUVn2dLfqQ9WIYePGP95SDJs4I9cn/0ZkeXcPkaoCLl64Us3dRKL2ozC7hArwze5Eu+/qt1tg==
+ version "14.1.0"
+ resolved "https://registry.yarnpkg.com/@octokit/app/-/app-14.1.0.tgz#2d491dc70746773b83f61edf5c56817dd7d3854b"
+ integrity sha512-g3uEsGOQCBl1+W1rgfwoRFUIR6PtvB2T1E4RpygeUU5LrLvlOqcxrt5lfykIeRpUPpupreGJUYl70fqMDXdTpw==
dependencies:
"@octokit/auth-app" "^6.0.0"
"@octokit/auth-unauthenticated" "^5.0.0"
@@ -755,9 +755,9 @@
"@octokit/webhooks" "^12.0.4"
"@octokit/auth-app@^6.0.0":
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-6.0.4.tgz#3c435c4c9ba9005405d889f4a5018df5e8ca93cf"
- integrity sha512-TPmJYgd05ok3nzHj7Y6we/V7Ez1wU3ztLFW3zo/afgYFtqYZg0W7zb6Kp5ag6E85r8nCE1JfS6YZoZusa14o9g==
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-6.1.0.tgz#08633046fc6318434cad265b2844ae3031a1a7ff"
+ integrity sha512-UlCxZAlNM1FKkRdSJjGo/Ly2rGKGeuW49sLFuii++A+Yylv+Dxgl/eCEBP46Cjr1Xuqpc4wTH0IDFXCztaiFuA==
dependencies:
"@octokit/auth-oauth-app" "^7.0.0"
"@octokit/auth-oauth-user" "^4.0.0"
@@ -949,19 +949,19 @@
resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-4.1.0.tgz#681a6c86c9b21d4ec9e29108fb053ae7512be033"
integrity sha512-zoQyKw8h9STNPqtm28UGOYFE7O6D4Il8VJwhAtMHFt2C4L0VQT1qGKLeefUOqHNs1mNRYSadVv7x0z8U2yyeWQ==
-"@octokit/webhooks-types@7.3.2":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-7.3.2.tgz#c4a5049b28a6d4b0c397f4db48a9112fef579ba0"
- integrity sha512-JWOoOgtWTFnTSAamPXXyjTY5/apttvNxF+vPBnwdSu5cj5snrd7FO0fyw4+wTXy8fHduq626JjhO+TwCyyA6vA==
+"@octokit/webhooks-types@7.4.0":
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-7.4.0.tgz#7ed15c75908683a34e0079c80f261fe568b87395"
+ integrity sha512-FE2V+QZ2UYlh+9wWd5BPLNXG+J/XUD/PPq0ovS+nCcGX4+3qVbi3jYOmCTW48hg9SBBLtInx9+o7fFt4H5iP0Q==
"@octokit/webhooks@^12.0.4":
- version "12.1.2"
- resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-12.1.2.tgz#df4c5623d608c11b3b2e6aaa2b531b5f27755357"
- integrity sha512-+nGS3ReCByF6m+nbNB59x7Aa3CNjCCGuBLFzfkiJP1O3uVKKuJbkP4uO4t46YqH26nlugmOhqjT7nx5D0VPtdA==
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-12.2.0.tgz#ea1ee2d9d9c5a4b7b53ff8bc64a9feb0dac94161"
+ integrity sha512-CyuLJ0/P7bKZ+kIYw+fnkeVdhUzNuDKgNSI7pU/m7Nod0T7kP+s4s2f0pNmG9HL8/RZN1S0ZWTDll3VTMrFLAw==
dependencies:
"@octokit/request-error" "^5.0.0"
"@octokit/webhooks-methods" "^4.1.0"
- "@octokit/webhooks-types" "7.3.2"
+ "@octokit/webhooks-types" "7.4.0"
aggregate-error "^3.1.0"
"@pkgjs/parseargs@^0.11.0":
@@ -989,9 +989,9 @@
"@sinonjs/commons" "^3.0.0"
"@types/aws-lambda@^8.10.83":
- version "8.10.109"
- resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.109.tgz#2f434cbfafe083529e365fe9c114787827a169a8"
- integrity sha512-/ME92FneNyXQzrAfcnQQlW1XkCZGPDlpi2ao1MJwecN+6SbeonKeggU8eybv1DfKli90FAVT1MlIZVXfwVuCyg==
+ version "8.10.136"
+ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.136.tgz#12a2af86b9123f4e4549992b27e1bf0dcf60d9f9"
+ integrity sha512-cmmgqxdVGhxYK9lZMYYXYRJk6twBo53ivtXjIUEFZxfxe4TkZTZBK3RRWrY2HjJcUIix0mdifn15yjOAat5lTA==
"@types/babel__core@^7.1.14":
version "7.1.20"
@@ -1027,9 +1027,9 @@
"@babel/types" "^7.3.0"
"@types/btoa-lite@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4"
- integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.2.tgz#82bb6aab00abf7cff3ca2825abe010c0cd536ae5"
+ integrity sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==
"@types/graceful-fs@^4.1.3":
version "4.1.5"
@@ -1093,9 +1093,9 @@
"@types/node" "*"
"@types/node@*":
- version "20.11.19"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195"
- integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==
+ version "20.12.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.3.tgz#d6658c2c7776c1cad93534bb45428195ed840c65"
+ integrity sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==
dependencies:
undici-types "~5.26.4"
@@ -3577,9 +3577,9 @@ object.values@^1.1.7:
es-abstract "^1.22.1"
octokit@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/octokit/-/octokit-3.1.2.tgz#e574e4f2f5f8712e10412ce81fb56a74c93d4cfa"
- integrity sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/octokit/-/octokit-3.2.0.tgz#2e75bb0a5f0511aa37ee20c2714206ed0d09e2bf"
+ integrity sha512-f25eJ/8ITwF2BdwymOjK9I5ll9Azt8UbfHE2u5ho0gVdgfpIZkUgMGbQjbvgOYGbtIAYxh7ghH3BUbZrYal1Gw==
dependencies:
"@octokit/app" "^14.0.2"
"@octokit/core" "^5.0.0"
@@ -3908,13 +3908,20 @@ semver@^7.3.7:
dependencies:
lru-cache "^6.0.0"
-semver@^7.5.3, semver@^7.5.4:
+semver@^7.5.3:
version "7.5.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"
+semver@^7.5.4:
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
set-function-length@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
@@ -4008,7 +4015,16 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -4053,7 +4069,14 @@ string.prototype.trimstart@^1.0.7:
define-properties "^1.2.0"
es-abstract "^1.22.1"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -4307,9 +4330,9 @@ universal-github-app-jwt@^1.1.2:
jsonwebtoken "^9.0.2"
universal-user-agent@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
- integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa"
+ integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==
update-browserslist-db@^1.0.9:
version "1.0.10"
@@ -4381,7 +4404,16 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==