diff --git a/.eslintrc.js b/.eslintrc.js index be70098..7a2afac 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,6 @@ module.exports = { parser: '@typescript-eslint/parser', // Specifies the ESLint parser + ignorePatterns: ['lib'], parserOptions: { ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1d8190f..0b640be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: - name: Semantic Release id: semantic - uses: cycjimmy/semantic-release-action@v2 + uses: cycjimmy/semantic-release-action@v3 with: branches: | [ diff --git a/.gitignore b/.gitignore index 3478f36..52b51d3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules -/lib yarn-error.log .env .vscode/ diff --git a/CHANGELOG.md b/CHANGELOG.md index fb5afc3..b93a162 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ +## [1.7.8-alpha.3](https://github.com/sweetgreen/sg-node-logger/compare/v1.7.8-alpha.2...v1.7.8-alpha.3) (2023-01-13) + + +### Bug Fixes + +* **security-updates:** resolves existing security vulnerabilities ([6e45bee](https://github.com/sweetgreen/sg-node-logger/commit/6e45bee228b1ee09024dbe24a7e644d7df08529e)) + +## [1.7.8-alpha.2](https://github.com/sweetgreen/sg-node-logger/compare/v1.7.8-alpha.1...v1.7.8-alpha.2) (2023-01-13) + + +### Bug Fixes + +* **merge-main:** Merge branch 'main' into alpha ([5f515a7](https://github.com/sweetgreen/sg-node-logger/commit/5f515a74cdf155918a96049797e7ae05791d4d07)) + +## [1.7.8-alpha.1](https://github.com/sweetgreen/sg-node-logger/compare/v1.7.7...v1.7.8-alpha.1) (2023-01-13) + + +### Bug Fixes + +* **no-op:** testing alpha release ([f1dadc5](https://github.com/sweetgreen/sg-node-logger/commit/f1dadc5228621fa5714f7d54f2d33feaa4169bf5)) +* **release-pipe:** Update to semantic-release-action@v3 ([20eddcd](https://github.com/sweetgreen/sg-node-logger/commit/20eddcd10aa3008abe34d7e8bc23b9009b5f7836)) + +## [1.7.7](https://github.com/sweetgreen/sg-node-logger/compare/v1.7.6...v1.7.7) (2022-12-15) + + +### Bug Fixes + +* **deploy-process:** adds husky hooks to package.json ([334f3a2](https://github.com/sweetgreen/sg-node-logger/commit/334f3a2ea38f33586187eba93ac6c67d58834817)) +* **deploy-process:** reverts changes to configs.ts ([eae0c5e](https://github.com/sweetgreen/sg-node-logger/commit/eae0c5e4eb94ca956b87ead86106c46bbe97f43c)) +* **deploy-process:** testing readding husky precommit hook ([6553b8a](https://github.com/sweetgreen/sg-node-logger/commit/6553b8a69d9461dc299017c2db41e83e7ec1d466)) +* **deploy-process:** testing removal of husky precommit hook for github actions ([ceedf9f](https://github.com/sweetgreen/sg-node-logger/commit/ceedf9f7c0d09841f30d6f0cdf08eaa4863500a1)) +* **deploy-process:** updates yarn.lock ([56acbf2](https://github.com/sweetgreen/sg-node-logger/commit/56acbf2f3cf67bd81627ebed6daa72e7dfa77c81)) +* **transport-cleanup:** cleanup unused refs and code from transports.ts ([81f33c1](https://github.com/sweetgreen/sg-node-logger/commit/81f33c151800d4069904f39b7e1534aeb3833adb)) +* **vulnerabilities:** no-op to trigger an alpha build ([62603e1](https://github.com/sweetgreen/sg-node-logger/commit/62603e11dc3cb0041ac6446a6d2f2657ce303c17)) + ## [1.7.7-alpha.3](https://github.com/sweetgreen/sg-node-logger/compare/v1.7.7-alpha.2...v1.7.7-alpha.3) (2022-12-15) diff --git a/lib/configs.d.ts b/lib/configs.d.ts new file mode 100644 index 0000000..a1b7c34 --- /dev/null +++ b/lib/configs.d.ts @@ -0,0 +1,13 @@ +import { EnvironmentConfig } from './types'; +/** + * Predefined configuration using simple consoles in all environments + */ +export declare function simpleConsoleConfig(): EnvironmentConfig[]; +/** + * Predefined configuration using colorized consoles in all environments + */ +export declare function colorizedConsoleConfig(): EnvironmentConfig[]; +/** + * Predefined configuration using raw JSON consoles in all environments + */ +export declare function rawJSONConsoleConfig(): EnvironmentConfig[]; diff --git a/lib/configs.js b/lib/configs.js new file mode 100644 index 0000000..8b1a49e --- /dev/null +++ b/lib/configs.js @@ -0,0 +1,94 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.rawJSONConsoleConfig = exports.colorizedConsoleConfig = exports.simpleConsoleConfig = void 0; +var types_1 = require("./types"); +/** + * Predefined configuration using simple consoles in all environments + */ +function simpleConsoleConfig() { + return [ + { + nodeEnvironmentName: types_1.Environment.All, + transports: { + simpleConsole: [ + { + minimumLogLevel: types_1.LogLevel.Info, + }, + ], + }, + }, + ]; +} +exports.simpleConsoleConfig = simpleConsoleConfig; +/** + * Predefined configuration using colorized consoles in all environments + */ +function colorizedConsoleConfig() { + return [ + { + nodeEnvironmentName: types_1.Environment.All, + transports: { + colorizedConsole: [ + { + minimumLogLevel: types_1.LogLevel.Info, + }, + ], + }, + }, + ]; +} +exports.colorizedConsoleConfig = colorizedConsoleConfig; +// /** +// * Simple predefined configuration +// * +// * Setup: +// * - Production: AwsCloudWatch - Info +// * - PreProduction: ColorizedConsole - Info +// */ +// export function simplePredefinedConfig(): EnvironmentConfig[] { +// return [ +// { +// nodeEnvironmentName: Environment.Production, +// transports: [ +// { +// type: Transport.AwsCloudWatch, +// minimumLogLevel: LogLevel.Info, +// awsRegion: '', +// logGroupName: '', +// applicationName: '', +// accessKeyId: '', +// secretAccessKey: '', +// uploadRateInMilliseconds: 1000, +// retentionInDays: 180, +// } as AwsCloudwatchTransportConfig, +// ], +// }, +// { +// nodeEnvironmentName: Environment.Development, +// transports: [ +// { +// minimumLogLevel: LogLevel.Info, +// } as ColorizedConsoleConfig, +// ], +// }, +// ]; +// } +/** + * Predefined configuration using raw JSON consoles in all environments + */ +function rawJSONConsoleConfig() { + return [ + { + nodeEnvironmentName: types_1.Environment.All, + transports: { + rawJSONConsole: [ + { + minimumLogLevel: types_1.LogLevel.Info, + }, + ], + }, + }, + ]; +} +exports.rawJSONConsoleConfig = rawJSONConsoleConfig; +//# sourceMappingURL=configs.js.map \ No newline at end of file diff --git a/lib/configs.js.map b/lib/configs.js.map new file mode 100644 index 0000000..69243d3 --- /dev/null +++ b/lib/configs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configs.js","sourceRoot":"","sources":["../src/configs.ts"],"names":[],"mappings":";;;AACA,iCAMiB;AAEjB;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO;QACL;YACE,mBAAmB,EAAE,mBAAW,CAAC,GAAG;YACpC,UAAU,EAAE;gBACV,aAAa,EAAE;oBACb;wBACE,eAAe,EAAE,gBAAQ,CAAC,IAAI;qBACC;iBAClC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAbD,kDAaC;AAED;;GAEG;AACH,SAAgB,sBAAsB;IACpC,OAAO;QACL;YACE,mBAAmB,EAAE,mBAAW,CAAC,GAAG;YACpC,UAAU,EAAE;gBACV,gBAAgB,EAAE;oBAChB;wBACE,eAAe,EAAE,gBAAQ,CAAC,IAAI;qBACI;iBACrC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAbD,wDAaC;AAED,MAAM;AACN,qCAAqC;AACrC,KAAK;AACL,YAAY;AACZ,wCAAwC;AACxC,8CAA8C;AAC9C,MAAM;AACN,kEAAkE;AAClE,aAAa;AACb,QAAQ;AACR,qDAAqD;AACrD,sBAAsB;AACtB,YAAY;AACZ,2CAA2C;AAC3C,4CAA4C;AAC5C,2BAA2B;AAC3B,8BAA8B;AAC9B,iCAAiC;AACjC,6BAA6B;AAC7B,iCAAiC;AACjC,4CAA4C;AAC5C,kCAAkC;AAClC,6CAA6C;AAC7C,WAAW;AACX,SAAS;AACT,QAAQ;AACR,sDAAsD;AACtD,sBAAsB;AACtB,YAAY;AACZ,4CAA4C;AAC5C,uCAAuC;AACvC,WAAW;AACX,SAAS;AACT,OAAO;AACP,IAAI;AAEJ;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL;YACE,mBAAmB,EAAE,mBAAW,CAAC,GAAG;YACpC,UAAU,EAAE;gBACV,cAAc,EAAE;oBACd;wBACE,eAAe,EAAE,gBAAQ,CAAC,IAAI;qBACE;iBACnC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAbD,oDAaC"} \ No newline at end of file diff --git a/lib/errors.d.ts b/lib/errors.d.ts new file mode 100644 index 0000000..7c705d2 --- /dev/null +++ b/lib/errors.d.ts @@ -0,0 +1,15 @@ +export declare class LoggerError extends Error { + constructor(message?: string); +} +export declare class TransportLoggerError extends LoggerError { + constructor(message?: string); +} +export declare class ConfigurationLoggerError extends LoggerError { + constructor(message?: string); +} +export declare class EnvironmentVariableLoggerError extends LoggerError { + constructor(message?: string); +} +export declare class ParameterLoggerError extends LoggerError { + constructor(message?: string); +} diff --git a/lib/errors.js b/lib/errors.js new file mode 100644 index 0000000..2a967a8 --- /dev/null +++ b/lib/errors.js @@ -0,0 +1,59 @@ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ParameterLoggerError = exports.EnvironmentVariableLoggerError = exports.ConfigurationLoggerError = exports.TransportLoggerError = exports.LoggerError = void 0; +var LoggerError = /** @class */ (function (_super) { + __extends(LoggerError, _super); + function LoggerError(message) { + return _super.call(this, message) || this; + } + return LoggerError; +}(Error)); +exports.LoggerError = LoggerError; +var TransportLoggerError = /** @class */ (function (_super) { + __extends(TransportLoggerError, _super); + function TransportLoggerError(message) { + return _super.call(this, message) || this; + } + return TransportLoggerError; +}(LoggerError)); +exports.TransportLoggerError = TransportLoggerError; +var ConfigurationLoggerError = /** @class */ (function (_super) { + __extends(ConfigurationLoggerError, _super); + function ConfigurationLoggerError(message) { + return _super.call(this, message) || this; + } + return ConfigurationLoggerError; +}(LoggerError)); +exports.ConfigurationLoggerError = ConfigurationLoggerError; +var EnvironmentVariableLoggerError = /** @class */ (function (_super) { + __extends(EnvironmentVariableLoggerError, _super); + function EnvironmentVariableLoggerError(message) { + return _super.call(this, message) || this; + } + return EnvironmentVariableLoggerError; +}(LoggerError)); +exports.EnvironmentVariableLoggerError = EnvironmentVariableLoggerError; +var ParameterLoggerError = /** @class */ (function (_super) { + __extends(ParameterLoggerError, _super); + function ParameterLoggerError(message) { + return _super.call(this, message) || this; + } + return ParameterLoggerError; +}(LoggerError)); +exports.ParameterLoggerError = ParameterLoggerError; +//# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/lib/errors.js.map b/lib/errors.js.map new file mode 100644 index 0000000..303a17b --- /dev/null +++ b/lib/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAAiC,+BAAK;IACpC,qBAAY,OAAgB;eAC1B,kBAAM,OAAO,CAAC;IAChB,CAAC;IACH,kBAAC;AAAD,CAAC,AAJD,CAAiC,KAAK,GAIrC;AAJY,kCAAW;AAMxB;IAA0C,wCAAW;IACnD,8BAAY,OAAgB;eAC1B,kBAAM,OAAO,CAAC;IAChB,CAAC;IACH,2BAAC;AAAD,CAAC,AAJD,CAA0C,WAAW,GAIpD;AAJY,oDAAoB;AAMjC;IAA8C,4CAAW;IACvD,kCAAY,OAAgB;eAC1B,kBAAM,OAAO,CAAC;IAChB,CAAC;IACH,+BAAC;AAAD,CAAC,AAJD,CAA8C,WAAW,GAIxD;AAJY,4DAAwB;AAMrC;IAAoD,kDAAW;IAC7D,wCAAY,OAAgB;eAC1B,kBAAM,OAAO,CAAC;IAChB,CAAC;IACH,qCAAC;AAAD,CAAC,AAJD,CAAoD,WAAW,GAI9D;AAJY,wEAA8B;AAM3C;IAA0C,wCAAW;IACnD,8BAAY,OAAgB;eAC1B,kBAAM,OAAO,CAAC;IAChB,CAAC;IACH,2BAAC;AAAD,CAAC,AAJD,CAA0C,WAAW,GAIpD;AAJY,oDAAoB"} \ No newline at end of file diff --git a/lib/helpers.d.ts b/lib/helpers.d.ts new file mode 100644 index 0000000..550a456 --- /dev/null +++ b/lib/helpers.d.ts @@ -0,0 +1,11 @@ +import winston from 'winston'; +import { EnvironmentConfig } from './types'; +export declare function newLogger(appName: string, transports: winston.transport[]): winston.Logger; +/** + * Converts transport configurations to concrete transports. + * + * @param appName the application name + * @param environmentConfigs the options to convert + * @param enableValidation validates NODE_ENV and configurations - ENABLE when using custom config + */ +export declare function getTransports(appName: string, environmentConfigs: EnvironmentConfig[], enableValidation?: boolean): winston.transport[]; diff --git a/lib/helpers.js b/lib/helpers.js new file mode 100644 index 0000000..3833f3f --- /dev/null +++ b/lib/helpers.js @@ -0,0 +1,120 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTransports = exports.newLogger = void 0; +var winston_1 = __importDefault(require("winston")); +var types_1 = require("./types"); +var transports_1 = require("./transports"); +var errors_1 = require("./errors"); +function newLogger(appName, transports) { + var staticLogMetadata = { + environment: process.env.NODE_ENV, + appName: appName, + }; + return winston_1.default.createLogger({ + silent: false, + format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.json()), + defaultMeta: staticLogMetadata, + transports: transports, + }); +} +exports.newLogger = newLogger; +/** + * Converts transport configurations to concrete transports. + * + * @param appName the application name + * @param environmentConfigs the options to convert + * @param enableValidation validates NODE_ENV and configurations - ENABLE when using custom config + */ +function getTransports(appName, environmentConfigs, enableValidation) { + var _a; + if (enableValidation === void 0) { enableValidation = false; } + var environmentConfigList; + if (enableValidation) { + // Custom Config + var nodeEnv_1 = (_a = process.env.NODE_ENV) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase(); + validate(environmentConfigs, nodeEnv_1); + environmentConfigList = environmentConfigs.filter(function (env) { return env.nodeEnvironmentName.trim().toLowerCase() === nodeEnv_1; }); + } + else { + // Out of the box config + var nodeEnv_2 = types_1.Environment.All; + environmentConfigList = environmentConfigs.filter(function (env) { return env.nodeEnvironmentName.trim().toLowerCase() === nodeEnv_2; }); + } + var environmentTransports = environmentConfigList[0].transports; + var transports = []; + // TODO: DRY - create single function to handle all transports + // OPTION: use classes/OOP - each class should know how to handle itself + // Simple Console Transport + if (environmentTransports.simpleConsole && + environmentTransports.simpleConsole.length > 0) { + environmentTransports.simpleConsole.forEach(function (transport) { + transports.push((0, transports_1.simpleConsoleTransport)(transport.minimumLogLevel)); + }); + } + // Colorized Console Transport + if (environmentTransports.colorizedConsole && + environmentTransports.colorizedConsole.length > 0) { + environmentTransports.colorizedConsole.forEach(function (transport) { + transports.push((0, transports_1.colorizedConsoleTransport)(transport.minimumLogLevel)); + }); + } + // AWS CloudWatch + if (environmentTransports.awsCloudWatch && + environmentTransports.awsCloudWatch.length > 0) { + environmentTransports.awsCloudWatch.forEach(function (transport) { + transports.push((0, transports_1.awsCloudWatchTransport)({ + minimumLogLevel: transport.minimumLogLevel, + awsRegion: transport.awsRegion, + logGroupName: transport.logGroupName, + applicationName: appName, + accessKeyId: transport.accessKeyId, + secretAccessKey: transport.secretAccessKey, + uploadRateInMilliseconds: transport.uploadRateInMilliseconds, + retentionInDays: transport.retentionInDays, + })); + }); + } + if (environmentTransports.rawJSONConsole && + environmentTransports.rawJSONConsole.length > 0) { + environmentTransports.rawJSONConsole.forEach(function (transport) { + transports.push((0, transports_1.rawJSONConsoleTransport)(transport.minimumLogLevel)); + }); + } + return transports; +} +exports.getTransports = getTransports; +/** + * Validates the NODE_ENV and configuration ONLY when custom configuration is present. + * + * @param environmentConfigs the logger configuration + * @param environmentName the current environment name + */ +function validate(environmentConfigs, environmentName) { + if (!environmentName) { + throw new errors_1.EnvironmentVariableLoggerError('NODE_ENV variable must be set'); + } + // Find the config for the current environment + var environments = environmentConfigs.filter(function (env) { return env.nodeEnvironmentName.trim().toLowerCase() === environmentName; }); + if (environments.length === 0) { + throw new errors_1.ConfigurationLoggerError("There is no configuration for the '".concat(environmentName, "' environment.")); + } + if (environments.length > 1) { + throw new errors_1.ConfigurationLoggerError("There are multiple configurations for the '".concat(environmentName, "' environment.")); + } + var environmentTransports = environments[0].transports; + // At least one transport must be configured + if ((!environmentTransports.rawJSONConsole || + environmentTransports.rawJSONConsole.length === 0) && + (!environmentTransports.simpleConsole || + environmentTransports.simpleConsole.length === 0) && + (!environmentTransports.colorizedConsole || + environmentTransports.colorizedConsole.length === 0) && + (!environmentTransports.awsCloudWatch || + environmentTransports.awsCloudWatch.length === 0)) { + throw new errors_1.ConfigurationLoggerError("At least one transport must be configured for the '".concat(environmentName, "' environment.")); + } +} +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/lib/helpers.js.map b/lib/helpers.js.map new file mode 100644 index 0000000..a2fb715 --- /dev/null +++ b/lib/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..cc0f357 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,14 @@ +import { AwsCloudWatchTransportConfig, SimpleConsoleTransportConfig, ColorizedConsoleTransportConfig, RawJSONConsoleTransportConfig, LoggerOptions, LogLevel } from './types'; +import { simpleConsoleConfig, colorizedConsoleConfig, rawJSONConsoleConfig } from './configs'; +/** + * Initializes the logger. Uses default configuration if none is passed. + * + * @param options logger options/config + */ +declare function initLogger(appName: string, options?: LoggerOptions): void; +declare function logDebug(message: string, customData?: any, tags?: string[]): void; +declare function logVerbose(message: string, customData?: any, tags?: string[]): void; +declare function logInfo(message: string, customData?: any, tags?: string[]): void; +declare function logWarn(message: string, customData?: any, tags?: string[]): void; +declare function logError(message: string, error?: Error, customData?: any, tags?: string[]): void; +export { initLogger, LogLevel, LoggerOptions, SimpleConsoleTransportConfig, ColorizedConsoleTransportConfig, AwsCloudWatchTransportConfig, RawJSONConsoleTransportConfig, colorizedConsoleConfig, simpleConsoleConfig, rawJSONConsoleConfig, logDebug, logVerbose, logInfo, logWarn, logError, }; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..57c4f21 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,114 @@ +"use strict"; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logError = exports.logWarn = exports.logInfo = exports.logVerbose = exports.logDebug = exports.rawJSONConsoleConfig = exports.simpleConsoleConfig = exports.colorizedConsoleConfig = exports.LogLevel = exports.initLogger = void 0; +// NOTE: Special case to allow 'any' in the helper functions ONLY. +// We want to support the passing of any shape for custom data. +/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */ +var dotenv_1 = __importDefault(require("dotenv")); +var types_1 = require("./types"); +Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return types_1.LogLevel; } }); +var helpers_1 = require("./helpers"); +var configs_1 = require("./configs"); +Object.defineProperty(exports, "simpleConsoleConfig", { enumerable: true, get: function () { return configs_1.simpleConsoleConfig; } }); +Object.defineProperty(exports, "colorizedConsoleConfig", { enumerable: true, get: function () { return configs_1.colorizedConsoleConfig; } }); +Object.defineProperty(exports, "rawJSONConsoleConfig", { enumerable: true, get: function () { return configs_1.rawJSONConsoleConfig; } }); +var errors_1 = require("./errors"); +// Init dotenv +dotenv_1.default.config(); +var logger; +/** + * Initializes the logger. Uses default configuration if none is passed. + * + * @param options logger options/config + */ +function initLogger(appName, options) { + var transports = (options === null || options === void 0 ? void 0 : options.environments) + ? (0, helpers_1.getTransports)(appName, options.environments, true) + : (0, helpers_1.getTransports)(appName, (0, configs_1.rawJSONConsoleConfig)()); + logger = (0, helpers_1.newLogger)(appName, transports); +} +exports.initLogger = initLogger; +/** + * Base log function + * + * Note: it's highly recommended to use the helper functions: + * logDebug, logVerbose, logInfo, logWarn, and logError + * + * @param log log object + */ +function log(log) { + // TODO: set DynamicLogMetadata + // const metadata: DynamicLogMetadata = { + // utcTimestamp: new Date().toISOString(), + // sessionId: 'uuid', + // correlationId: 'uuid', + // }; + var logLevel = log.logLevel, message = log.message, otherFields = __rest(log, ["logLevel", "message"]); + var level = types_1.LogLevel[logLevel].toLowerCase(); + if (!logger) { + throw new errors_1.LoggerError("Ensure the logger has been initialized by calling initLogger() at the app's entry point."); + } + logger.log(level, message, otherFields); +} +function logDebug(message, customData, tags) { + log({ + logLevel: types_1.LogLevel.Debug, + message: message, + tags: tags, + data: customData, + }); +} +exports.logDebug = logDebug; +function logVerbose(message, customData, tags) { + log({ + logLevel: types_1.LogLevel.Verbose, + message: message, + tags: tags, + data: customData, + }); +} +exports.logVerbose = logVerbose; +function logInfo(message, customData, tags) { + log({ + logLevel: types_1.LogLevel.Info, + message: message, + tags: tags, + data: customData, + }); +} +exports.logInfo = logInfo; +function logWarn(message, customData, tags) { + log({ + logLevel: types_1.LogLevel.Warn, + message: message, + tags: tags, + data: customData, + }); +} +exports.logWarn = logWarn; +function logError(message, error, customData, tags) { + log({ + logLevel: types_1.LogLevel.Error, + message: message, + tags: tags, + data: customData, + errorMessage: error === null || error === void 0 ? void 0 : error.message, + errorStack: error === null || error === void 0 ? void 0 : error.stack, + }); +} +exports.logError = logError; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..f25ff1a --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/transports.d.ts b/lib/transports.d.ts new file mode 100644 index 0000000..4704536 --- /dev/null +++ b/lib/transports.d.ts @@ -0,0 +1,48 @@ +import { ConsoleTransportInstance } from 'winston/lib/winston/transports'; +import WinstonCloudWatch from 'winston-cloudwatch'; +import { LogLevel } from './types'; +/** + * Basic console stdout + * + * @example info: testing info {"data":{},"timestamp":"2020-11-21T06:24:06.048Z"} + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +export declare function simpleConsoleTransport(minimumLogLevel?: LogLevel): ConsoleTransportInstance; +/** + * Colored console stdout + * + * @example [SGLOG] 2020-11-20 10:26:22.866 info : testing info + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +export declare function colorizedConsoleTransport(minimumLogLevel?: LogLevel): ConsoleTransportInstance; +export interface AwsCloudWatchTransportOptions { + minimumLogLevel?: LogLevel; + awsRegion: string; + logGroupName: string; + applicationName?: string; + accessKeyId?: string; + secretAccessKey?: string; + uploadRateInMilliseconds?: number; + retentionInDays?: number; +} +/** + * Sends logs to AWS CloudWatch + * + * @param options + * + * @throws InvalidParameterError + */ +export declare function awsCloudWatchTransport({ minimumLogLevel, awsRegion, logGroupName, applicationName, accessKeyId, secretAccessKey, uploadRateInMilliseconds, retentionInDays, }: AwsCloudWatchTransportOptions): WinstonCloudWatch; +/** + * Raw JSON console stdout + * + * @example info: testing info {"environment":"development","appName":"sg-node-logger","data":{"a":"jfkkjflsd","b":137843},"level":"info","message":"testing info","timestamp":"2020-12-11T19:57:17.120Z"} + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +export declare function rawJSONConsoleTransport(minimumLogLevel?: LogLevel): ConsoleTransportInstance; diff --git a/lib/transports.js b/lib/transports.js new file mode 100644 index 0000000..b81433a --- /dev/null +++ b/lib/transports.js @@ -0,0 +1,148 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.rawJSONConsoleTransport = exports.awsCloudWatchTransport = exports.colorizedConsoleTransport = exports.simpleConsoleTransport = void 0; +var winston_1 = __importDefault(require("winston")); +var aws_sdk_1 = __importDefault(require("aws-sdk")); +var winston_cloudwatch_1 = __importDefault(require("winston-cloudwatch")); +var types_1 = require("./types"); +var errors_1 = require("./errors"); +var client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs"); +/** + * Basic console stdout + * + * @example info: testing info {"data":{},"timestamp":"2020-11-21T06:24:06.048Z"} + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +function simpleConsoleTransport(minimumLogLevel) { + if (minimumLogLevel === void 0) { minimumLogLevel = types_1.LogLevel.Info; } + return new winston_1.default.transports.Console({ + level: types_1.LogLevel[minimumLogLevel].toLowerCase(), + format: winston_1.default.format.simple(), + }); +} +exports.simpleConsoleTransport = simpleConsoleTransport; +/** + * Colored console stdout + * + * @example [SGLOG] 2020-11-20 10:26:22.866 info : testing info + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +function colorizedConsoleTransport(minimumLogLevel) { + if (minimumLogLevel === void 0) { minimumLogLevel = types_1.LogLevel.Info; } + var formatting = winston_1.default.format.combine(winston_1.default.format.colorize({ + all: true, + }), winston_1.default.format.label({ + label: '[SGLOG]', + }), winston_1.default.format.timestamp({ + format: 'YYYY-MM-DD hh:mm:ss.SSS', + }), winston_1.default.format.printf(function (info) { + return "".concat(info.label, " ").concat(info.timestamp, " ").concat(info.level, " : ").concat(info.message, " ").concat(info.data || info.tags || info.errorMessage || info.errorStack + ? JSON.stringify({ + data: info.data, + tags: info.tags, + errorMessage: info.errorMessage, + errorStack: info.errorStack, + }) + : ''); + })); + return new winston_1.default.transports.Console({ + level: types_1.LogLevel[minimumLogLevel].toLowerCase(), + format: winston_1.default.format.combine(winston_1.default.format.colorize(), formatting), + }); +} +exports.colorizedConsoleTransport = colorizedConsoleTransport; +/** + * Sends logs to AWS CloudWatch + * + * @param options + * + * @throws InvalidParameterError + */ +function awsCloudWatchTransport(_a) { + var _b = _a.minimumLogLevel, minimumLogLevel = _b === void 0 ? types_1.LogLevel.Info : _b, awsRegion = _a.awsRegion, logGroupName = _a.logGroupName, applicationName = _a.applicationName, accessKeyId = _a.accessKeyId, secretAccessKey = _a.secretAccessKey, _c = _a.uploadRateInMilliseconds, uploadRateInMilliseconds = _c === void 0 ? 10000 : _c, _d = _a.retentionInDays, retentionInDays = _d === void 0 ? 180 : _d; + var transportName = 'AwsCloudWatch'; + var maxUploadRateInMs = 60000; + var minUploadRateInMis = 200; + var maxRetentionInDays = 180; + var minRetentionInDays = 1; + var cloudWatchLogsClientConfig; + if (!awsRegion) { + throw new errors_1.ParameterLoggerError("[".concat(transportName, "] 'AwsRegion' is a required input.")); + } + if (accessKeyId && !secretAccessKey) { + throw new errors_1.ParameterLoggerError("[".concat(transportName, "] AWS 'AccessKeyId' is present, however, \n 'SecretAccessKey' is missing. Ensure both inputs are supplied \n when custom configuring the logger.")); + } + else if (!accessKeyId && secretAccessKey) { + throw new errors_1.ParameterLoggerError("[".concat(transportName, "] AWS 'SecretAccessKey' is present, however, \n 'AccessKeyId' is missing. Ensure both inputs are supplied when \n custom configuring the logger.")); + } + else if (accessKeyId && secretAccessKey) { + aws_sdk_1.default.config.update({ + region: awsRegion, + credentials: { + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + }, + }); + cloudWatchLogsClientConfig = { + region: awsRegion, + credentials: { + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + }, + }; + } + else { + aws_sdk_1.default.config.update({ + region: awsRegion, + }); + cloudWatchLogsClientConfig = { + region: awsRegion, + }; + } + if (uploadRateInMilliseconds < minUploadRateInMis || + uploadRateInMilliseconds > maxUploadRateInMs) { + throw new errors_1.ParameterLoggerError("[".concat(transportName, "] The 'UploadRateInMilliseconds' (").concat(uploadRateInMilliseconds, ") \n parameter must be between ").concat(minUploadRateInMis, " ms and ").concat(maxUploadRateInMs, " ms.")); + } + if (retentionInDays < minRetentionInDays || + retentionInDays > maxRetentionInDays) { + throw new errors_1.ParameterLoggerError("[".concat(transportName, "] The 'RetentionInDays' (").concat(retentionInDays, ") parameter \n must be between ").concat(minRetentionInDays, " days and ").concat(maxRetentionInDays, " days.")); + } + return new winston_cloudwatch_1.default({ + cloudWatchLogs: new client_cloudwatch_logs_1.CloudWatchLogs(cloudWatchLogsClientConfig), + level: types_1.LogLevel[minimumLogLevel].toLowerCase(), + logGroupName: logGroupName, + // NOTE: setting 'logStreamName' to a function will split logs across multiple streams. + // A rotation can be created using multiple criteria (i.e. date, hour, etc.) + logStreamName: function () { + var _a = new Date().toISOString().split('T'), logDate = _a[0], logTime = _a[1]; + return "".concat(applicationName, ".").concat(logDate); + }, + jsonMessage: true, + uploadRate: uploadRateInMilliseconds, + retentionInDays: retentionInDays, + }); +} +exports.awsCloudWatchTransport = awsCloudWatchTransport; +/** + * Raw JSON console stdout + * + * @example info: testing info {"environment":"development","appName":"sg-node-logger","data":{"a":"jfkkjflsd","b":137843},"level":"info","message":"testing info","timestamp":"2020-12-11T19:57:17.120Z"} + * + * @param minimumLogLevel all logs with this severity and above + * will be enabled; default is Info + */ +function rawJSONConsoleTransport(minimumLogLevel) { + if (minimumLogLevel === void 0) { minimumLogLevel = types_1.LogLevel.Info; } + return new winston_1.default.transports.Console({ + level: types_1.LogLevel[minimumLogLevel].toLowerCase(), + }); +} +exports.rawJSONConsoleTransport = rawJSONConsoleTransport; +//# sourceMappingURL=transports.js.map \ No newline at end of file diff --git a/lib/transports.js.map b/lib/transports.js.map new file mode 100644 index 0000000..d0d76f8 --- /dev/null +++ b/lib/transports.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types.d.ts b/lib/types.d.ts new file mode 100644 index 0000000..e2c7896 --- /dev/null +++ b/lib/types.d.ts @@ -0,0 +1,94 @@ +export declare type Option = T | undefined; +/** + * Default environments and meant to be used internally in this module. + */ +export declare enum Environment { + All = "all" +} +/** + * List of log levels + * + * The log levels are used to determine at which level to start logging. + * For example, if using Info as the minimum log level, every level above and + * including Info will be logged. In other words, Info, Warn and Error logs + * are enabled. + * + * NOTE: this enum goes hand in hand with winston log levels found here + * https://www.npmjs.com/package/winston#logging-levels. If changing, make + * sure the values (string and int) match. + * Do not change the enum unless the side effects are clearly understood. + */ +export declare enum LogLevel { + Error = 0, + Warn = 1, + Info = 2, + Verbose = 4, + Debug = 5 +} +export interface LoggerOptions { + environments?: EnvironmentConfig[]; +} +export interface EnvironmentConfig { + nodeEnvironmentName: string; + transports: TransportConfig; +} +export interface TransportConfig { + simpleConsole?: SimpleConsoleTransportConfig[]; + colorizedConsole?: ColorizedConsoleTransportConfig[]; + awsCloudWatch?: AwsCloudWatchTransportConfig[]; + rawJSONConsole?: RawJSONConsoleTransportConfig[]; +} +export interface TransportConfigBase { + minimumLogLevel?: LogLevel; +} +export interface SimpleConsoleTransportConfig extends TransportConfigBase { +} +export interface ColorizedConsoleTransportConfig extends TransportConfigBase { +} +export interface AwsCloudWatchTransportConfig extends TransportConfigBase { + awsRegion: string; + logGroupName: string; + accessKeyId?: string; + secretAccessKey?: string; + uploadRateInMilliseconds?: number; + retentionInDays?: number; +} +export interface RawJSONConsoleTransportConfig extends TransportConfigBase { +} +/** + * User defined log entry` + */ +export interface LogEntry { + logLevel: LogLevel; + message: string; + tags?: string[]; + /** Any custom data - WARNING: DO NOT LOG PII */ + data?: any; + errorMessage?: string; + errorStack?: string; +} +/** + * Log metadata that is set dynamically for each log + */ +export interface DynamicLogMetadata { + utcTimestamp?: string; + sessionId?: string; + correlationId?: string; + requestId?: string; +} +/** + * Log metadata that is set once on application start up + */ +export interface StaticLogMetadata { + appName?: string; + appVersion?: string; + environment?: string; + hostname?: string; + ipaddress?: string; + os?: string; + osVersion?: string; + osBuildNumber?: string; +} +/** Shape of the full log */ +export interface SgLog extends LogEntry, DynamicLogMetadata, StaticLogMetadata { +} diff --git a/lib/types.js b/lib/types.js new file mode 100644 index 0000000..b1d424d --- /dev/null +++ b/lib/types.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogLevel = exports.Environment = void 0; +// +// ENUM +// +/** + * Default environments and meant to be used internally in this module. + */ +var Environment; +(function (Environment) { + Environment["All"] = "all"; +})(Environment = exports.Environment || (exports.Environment = {})); +/** + * List of log levels + * + * The log levels are used to determine at which level to start logging. + * For example, if using Info as the minimum log level, every level above and + * including Info will be logged. In other words, Info, Warn and Error logs + * are enabled. + * + * NOTE: this enum goes hand in hand with winston log levels found here + * https://www.npmjs.com/package/winston#logging-levels. If changing, make + * sure the values (string and int) match. + * Do not change the enum unless the side effects are clearly understood. + */ +var LogLevel; +(function (LogLevel) { + LogLevel[LogLevel["Error"] = 0] = "Error"; + LogLevel[LogLevel["Warn"] = 1] = "Warn"; + LogLevel[LogLevel["Info"] = 2] = "Info"; + LogLevel[LogLevel["Verbose"] = 4] = "Verbose"; + LogLevel[LogLevel["Debug"] = 5] = "Debug"; +})(LogLevel = exports.LogLevel || (exports.LogLevel = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/types.js.map b/lib/types.js.map new file mode 100644 index 0000000..ff173fb --- /dev/null +++ b/lib/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,EAAE;AACF,OAAO;AACP,EAAE;AAEF;;GAEG;AACH,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,0BAAW,CAAA;AACb,CAAC,EAFW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAEtB;AAED;;;;;;;;;;;;GAYG;AACH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,6CAAW,CAAA;IACX,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB"} \ No newline at end of file diff --git a/package.json b/package.json index d289e82..1163b14 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publishConfig": { "registry": "https://npm.pkg.github.com/sweetgreen" }, - "version": "1.7.7-alpha.3", + "version": "1.7.8-alpha.3", "main": "lib/index.js", "types": "lib/index.d.ts", "description": "SG node logger", diff --git a/yarn.lock b/yarn.lock index 4cf4b1e..4a4763e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -744,6 +744,36 @@ resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@gitbeaker/core@^21.7.0": + version "21.7.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-21.7.0.tgz#fcf7a12915d39f416e3f316d0a447a814179b8e5" + integrity sha512-cw72rE7tA27wc6JJe1WqeAj9v/6w0S7XJcEji+bRNjTlUfE1zgfW0Gf1mbGUi7F37SOABGCosQLfg9Qe63aIqA== + dependencies: + "@gitbeaker/requester-utils" "^21.7.0" + form-data "^3.0.0" + li "^1.3.0" + xcase "^2.0.1" + +"@gitbeaker/node@^21.3.0": + version "21.7.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/node/-/node-21.7.0.tgz#2c19613f44ee497a8808c555abec614ebd2dfcad" + integrity sha512-OdM3VcTKYYqboOsnbiPcO0XimXXpYK4gTjARBZ6BWc+1LQXKmqo+OH6oUbyxOoaFu9hHECafIt3WZU3NM4sZTg== + dependencies: + "@gitbeaker/core" "^21.7.0" + "@gitbeaker/requester-utils" "^21.7.0" + form-data "^3.0.0" + got "^11.1.4" + xcase "^2.0.1" + +"@gitbeaker/requester-utils@^21.7.0": + version "21.7.0" + resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-21.7.0.tgz#e9a9cfaf268d2a99eb7bbdc930943240a5f88878" + integrity sha512-eLTaVXlBnh8Qimj6QuMMA06mu/mLcJm3dy8nqhhn/Vm/D25sPrvpGwmbfFyvzj6QujPqtHvFfsCHtyZddL01qA== + dependencies: + form-data "^3.0.0" + query-string "^6.12.1" + xcase "^2.0.1" + "@humanwhocodes/config-array@^0.10.4": version "0.10.4" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz" @@ -985,7 +1015,7 @@ "@octokit/auth-token@^2.4.4": version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" @@ -999,7 +1029,7 @@ "@octokit/core@^3.5.1": version "3.6.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== dependencies: "@octokit/auth-token" "^2.4.4" @@ -1043,7 +1073,7 @@ "@octokit/graphql@^4.5.8": version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" @@ -1081,7 +1111,7 @@ "@octokit/plugin-paginate-rest@^2.16.8": version "2.21.3" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== dependencies: "@octokit/types" "^6.40.0" @@ -1095,12 +1125,12 @@ "@octokit/plugin-request-log@^1.0.4": version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^5.12.0": version "5.16.2" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== dependencies: "@octokit/types" "^6.39.0" @@ -1158,7 +1188,7 @@ "@octokit/rest@^16.43.0 || ^17.11.0 || ^18.12.0", "@octokit/rest@^18.12.0": version "18.12.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: "@octokit/core" "^3.5.1" @@ -1303,6 +1333,18 @@ lodash "^4.17.4" read-pkg-up "^7.0.0" +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" @@ -1333,6 +1375,16 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/dotenv@^8.2.0": version "8.2.0" resolved "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz" @@ -1340,16 +1392,33 @@ dependencies: dotenv "*" +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/node@*": + version "18.11.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== + "@types/node@^14.0.0": version "14.18.29" resolved "https://registry.npmjs.org/@types/node/-/node-14.18.29.tgz" @@ -1370,6 +1439,13 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" @@ -1476,13 +1552,6 @@ abbrev@1, abbrev@^1.0.0, abbrev@~1.1.1: resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" @@ -1498,13 +1567,6 @@ acorn@^8.4.1, acorn@^8.7.0, acorn@^8.8.0: resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -1575,7 +1637,7 @@ ansi-regex@^6.0.1: ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" @@ -1664,7 +1726,7 @@ astral-regex@^2.0.0: async-retry@1.2.3: version "1.2.3" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== dependencies: retry "0.12.0" @@ -1676,7 +1738,7 @@ async@^3.1.0, async@^3.2.3: asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: @@ -1716,9 +1778,9 @@ base64-js@^1.0.2, base64-js@^1.3.1: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== bin-links@^3.0.3: version "3.0.3" @@ -1773,14 +1835,14 @@ brace-expansion@^2.0.1: braces@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" buffer-equal-constant-time@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer@4.9.2: @@ -1836,6 +1898,24 @@ cacache@^16.0.0, cacache@^16.1.0, cacache@^16.1.3: tar "^6.1.11" unique-filename "^2.0.0" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + cachedir@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz" @@ -1979,6 +2059,13 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" @@ -2007,7 +2094,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.0.0, color-name@~1.1.4: @@ -2043,7 +2130,7 @@ colorette@^2.0.16, colorette@^2.0.17: colors@1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== colorspace@1.1.x: @@ -2062,16 +2149,16 @@ columnify@^1.6.0: strip-ansi "^6.0.1" wcwidth "^1.0.0" -combined-stream@^1.0.6: +combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^2.18.0: version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^9.3.0: @@ -2171,9 +2258,9 @@ conventional-commits-parser@^3.2.3: through2 "^4.0.0" core-js@^3.8.2: - version "3.25.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.25.1.tgz" - integrity sha512-sr0FY4lnO1hkQ4gLDr24K0DGnweGO1QwSj5BpfQjpSJPdqWalja4cTps29Y/PJVG/P7FYlPDkH3hO+Tr0CvDgQ== + version "3.27.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.1.tgz#23cc909b315a6bb4e418bf40a52758af2103ba46" + integrity sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww== core-util-is@~1.0.0: version "1.0.3" @@ -2235,10 +2322,11 @@ cz-conventional-changelog@3.3.0, cz-conventional-changelog@^3.3.0: "@commitlint/load" ">6.1.1" danger@^11.1.2: - version "11.1.2" - resolved "https://registry.npmjs.org/danger/-/danger-11.1.2.tgz" - integrity sha512-tlAyADE7BRHbnoAA7BB7RzcO/ZLvXMpnWms7dBT/Tm4ntxdbrTT6wCPO1qFcd5Jc9LfM0Iez3hKUSINtnPLH+g== + version "11.2.1" + resolved "https://registry.yarnpkg.com/danger/-/danger-11.2.1.tgz#0ac1f098926bfb8cbbdee32d5a0b286298d33e61" + integrity sha512-X2meihnBuCg6TRFzahf+Mi5uFIJSJzigrSiySawgvnsdyEB87vz9bNFf+vlgXjIYtWq5OceFqzstTadhoCHJhA== dependencies: + "@gitbeaker/node" "^21.3.0" "@octokit/rest" "^18.12.0" async-retry "1.2.3" chalk "^2.3.0" @@ -2247,13 +2335,12 @@ danger@^11.1.2: debug "^4.1.1" fast-json-patch "^3.0.0-1" get-stdin "^6.0.0" - gitlab "^10.0.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" hyperlinker "^1.0.0" json5 "^2.1.0" jsonpointer "^5.0.0" - jsonwebtoken "^8.4.0" + jsonwebtoken "^9.0.0" lodash.find "^4.6.0" lodash.includes "^4.3.0" lodash.isobject "^3.0.2" @@ -2287,13 +2374,6 @@ dateformat@^3.0.0: resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -2301,13 +2381,6 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, d dependencies: ms "2.1.2" -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" @@ -2327,9 +2400,16 @@ decamelize@^1.1.0: integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" dedent@0.7.0: version "0.7.0" @@ -2353,6 +2433,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" @@ -2387,7 +2472,7 @@ del@^6.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: @@ -2407,7 +2492,7 @@ depd@^1.1.2: deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== detect-file@^1.0.0: @@ -2478,7 +2563,7 @@ eastasianwidth@^0.2.0: ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" @@ -2505,6 +2590,13 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + entities@2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" @@ -2574,18 +2666,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -2593,7 +2673,7 @@ escalade@^3.1.1: escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: @@ -2746,11 +2826,6 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - events@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" @@ -2795,7 +2870,7 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" @@ -2832,7 +2907,7 @@ fast-glob@^3.2.9: fast-json-patch@^3.0.0-1: version "3.1.1" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== fast-json-stable-stringify@^2.0.0: @@ -2900,14 +2975,14 @@ file-uri-to-path@2: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" filter-obj@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== find-node-modules@^2.1.2: @@ -2988,13 +3063,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -form-data@^2.5.0: - version "2.5.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" from2@^2.3.0: @@ -3012,7 +3087,7 @@ fromentries@^1.3.2: fs-exists-sync@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== fs-extra@9.1.0, fs-extra@^9.0.0: @@ -3118,9 +3193,16 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@ get-stdin@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" @@ -3148,7 +3230,7 @@ get-uri@3: git-config-path@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" integrity sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg== dependencies: extend-shallow "^2.0.1" @@ -3167,19 +3249,6 @@ git-log-parser@^1.2.0: through2 "~2.0.0" traverse "~0.6.6" -gitlab@^10.0.1: - version "10.2.1" - resolved "https://registry.npmjs.org/gitlab/-/gitlab-10.2.1.tgz" - integrity sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg== - dependencies: - form-data "^2.5.0" - humps "^2.0.1" - ky "^0.12.0" - ky-universal "^0.3.0" - li "^1.3.0" - query-string "^6.8.2" - universal-url "^2.0.0" - glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" @@ -3263,6 +3332,23 @@ globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +got@^11.1.4: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.10" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" @@ -3297,12 +3383,12 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: @@ -3341,14 +3427,9 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hasurl@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz" - integrity sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ== - homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.3" - resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" @@ -3377,7 +3458,7 @@ hosted-git-info@^5.0.0, hosted-git-info@^5.1.0: dependencies: lru-cache "^7.5.1" -http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== @@ -3393,14 +3474,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" @@ -3419,7 +3492,15 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@5, https-proxy-agent@^5.0.0: +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -3427,14 +3508,6 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" @@ -3452,11 +3525,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -humps@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz" - integrity sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g== - husky@^8.0.0: version "8.0.1" resolved "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" @@ -3464,7 +3532,7 @@ husky@^8.0.0: hyperlinker@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: @@ -3681,7 +3749,7 @@ is-date-object@^1.0.1: is-extendable@^0.1.0: version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extglob@^2.1.1: @@ -3737,7 +3805,7 @@ is-number-object@^1.0.4: is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^2.0.0: @@ -3762,7 +3830,7 @@ is-plain-obj@^1.1.0: is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-regex@^1.1.4: @@ -3897,6 +3965,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" @@ -3933,9 +4006,9 @@ json-stringify-safe@^5.0.1: integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^4.0.0: version "4.0.0" @@ -3960,24 +4033,18 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jsonwebtoken@^8.4.0: - version "8.5.1" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== dependencies: jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" + lodash "^4.17.21" ms "^2.1.1" - semver "^5.6.0" + semver "^7.3.8" just-diff-apply@^5.2.0: version "5.4.1" @@ -3991,7 +4058,7 @@ just-diff@^5.0.1: jwa@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== dependencies: buffer-equal-constant-time "1.0.1" @@ -4000,12 +4067,19 @@ jwa@^1.4.1: jws@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== dependencies: jwa "^1.4.1" safe-buffer "^5.0.1" +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" @@ -4016,19 +4090,6 @@ kuler@^2.0.0: resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -ky-universal@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz" - integrity sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A== - dependencies: - abort-controller "^3.0.0" - node-fetch "^2.6.0" - -ky@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/ky/-/ky-0.12.0.tgz" - integrity sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ== - levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -4047,7 +4108,7 @@ levn@~0.3.0: li@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/li/-/li-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b" integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw== libnpmaccess@^6.0.4: @@ -4255,19 +4316,14 @@ lodash.escaperegexp@^4.1.2: lodash.find@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg== lodash.includes@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz" @@ -4278,39 +4334,29 @@ lodash.iserror@^3.1.1: resolved "https://registry.npmjs.org/lodash.iserror/-/lodash.iserror-3.1.1.tgz" integrity sha512-eT/VeNns9hS7vAj1NKW/rRX6b+C3UX3/IAAqEE7aC4Oo2C0iD82NaP5IS4bSlQsammTii4qBJ8G1zd1LTL8hCw== -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - lodash.isobject@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.keys@^4.0.8: version "4.2.0" - resolved "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" integrity sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ== lodash.map@^4.5.1: @@ -4320,12 +4366,12 @@ lodash.map@^4.5.1: lodash.mapvalues@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: @@ -4333,16 +4379,6 @@ lodash.merge@^4.6.2: resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - lodash.uniqby@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" @@ -4387,6 +4423,11 @@ longest@^2.0.1: resolved "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz" integrity sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -4462,7 +4503,7 @@ marked@^4.0.10: memfs-or-file-map-to-github-branch@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.1.tgz#fdb9a85408262316a9bd5567409bf89be7d72f96" integrity sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ== dependencies: "@octokit/rest" "^16.43.0 || ^17.11.0 || ^18.12.0" @@ -4509,12 +4550,12 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" @@ -4534,6 +4575,16 @@ mimic-fn@^4.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" @@ -4562,11 +4613,16 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.6, minimist@^1.2.0, minimist@^1.2.5: +minimist@1.2.6, minimist@^1.2.5: version "1.2.6" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" @@ -4648,19 +4704,14 @@ modify-values@^1.0.0: resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8, mute-stream@~0.0.4: @@ -4695,7 +4746,7 @@ netmask@^2.0.2: node-cleanup@^2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== node-emoji@^1.11.0: @@ -4705,10 +4756,10 @@ node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.0, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== +node-fetch@^2.6.7: + version "2.6.8" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" + integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== dependencies: whatwg-url "^5.0.0" @@ -4777,7 +4828,7 @@ normalize-path@^3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^6.0.0: +normalize-url@^6.0.0, normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== @@ -4997,9 +5048,9 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -once@^1.3.0, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -5076,9 +5127,14 @@ os-tmpdir@~1.0.2: override-require@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/override-require/-/override-require-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df" integrity sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" @@ -5170,7 +5226,7 @@ p-try@^1.0.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pac-proxy-agent@^5.0.0: @@ -5242,12 +5298,12 @@ parse-conflict-json@^2.0.1, parse-conflict-json@^2.0.2: parse-diff@^0.7.0: version "0.7.1" - resolved "https://registry.npmjs.org/parse-diff/-/parse-diff-0.7.1.tgz" + resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.7.1.tgz#9b7a2451c3725baf2c87c831ba192d40ee2237d4" integrity sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg== parse-git-config@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/parse-git-config/-/parse-git-config-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A== dependencies: expand-tilde "^2.0.2" @@ -5256,7 +5312,7 @@ parse-git-config@^2.0.3: parse-github-url@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== parse-json@^4.0.0: @@ -5279,14 +5335,14 @@ parse-json@^5.0.0: parse-link-header@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-2.0.0.tgz#949353e284f8aa01f2ac857a98f692b57733f6b7" integrity sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw== dependencies: xtend "~4.0.1" parse-passwd@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== path-exists@^3.0.0: @@ -5326,7 +5382,7 @@ path-type@^4.0.0: picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.6.0: @@ -5341,7 +5397,7 @@ pify@^3.0.0: pinpoint@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874" integrity sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg== pkg-conf@^2.1.0: @@ -5384,7 +5440,7 @@ prettier@^2.1.2: prettyjson@^1.2.1: version "1.2.5" - resolved "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz" + resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.5.tgz#ef3cfffcc70505c032abc59785884b4027031835" integrity sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw== dependencies: colors "1.4.0" @@ -5449,15 +5505,23 @@ proxy-from-env@^1.0.0: resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.2.0.tgz#2092cc57cd2582c38e4e7e8bb869dc8d3148bc74" + integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw== q@^1.5.1: version "1.5.1" @@ -5469,9 +5533,9 @@ qrcode-terminal@^0.12.0: resolved "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== -query-string@^6.8.2: +query-string@^6.12.1: version "6.14.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== dependencies: decode-uri-component "^0.2.0" @@ -5494,6 +5558,11 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + raw-body@^2.2.0: version "2.5.1" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" @@ -5607,7 +5676,7 @@ readdir-scoped-modules@^1.1.0: readline-sync@^1.4.9: version "1.4.10" - resolved "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== redent@^3.0.0: @@ -5626,9 +5695,9 @@ redeyed@~2.1.0: esprima "~4.0.0" regenerator-runtime@^0.13.9: - version "0.13.9" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regexp.prototype.flags@^1.4.3: version "1.4.3" @@ -5658,9 +5727,14 @@ require-directory@^2.1.1: require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" @@ -5695,6 +5769,13 @@ resolve@^1.10.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -5825,7 +5906,7 @@ semver-regex@^3.1.2: resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz" integrity sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA== -"semver@2 || 3 || 4 || 5", semver@^5.6.0: +"semver@2 || 3 || 4 || 5": version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5842,6 +5923,13 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semve dependencies: lru-cache "^6.0.0" +semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" @@ -5994,7 +6082,7 @@ spdx-license-ids@^3.0.0: split-on-first@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== split2@^3.0.0: @@ -6045,7 +6133,7 @@ stream-combiner2@~1.1.1: strict-uri-encode@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== string-argv@^0.3.1: @@ -6161,7 +6249,7 @@ strip-json-comments@~2.0.1: supports-color@^5.0.0, supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" @@ -6175,7 +6263,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: supports-hyperlinks@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== dependencies: has-flag "^2.0.0" @@ -6271,7 +6359,7 @@ tmp@^0.0.33: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" @@ -6281,16 +6369,9 @@ toidentifier@1.0.1: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== traverse@~0.6.6: @@ -6439,17 +6520,9 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universal-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz" - integrity sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg== - dependencies: - hasurl "^1.0.0" - whatwg-url "^7.0.0" - universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: @@ -6556,31 +6629,17 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" @@ -6695,7 +6754,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: @@ -6706,6 +6765,11 @@ write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" +xcase@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9" + integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw== + xml2js@0.4.19: version "0.4.19" resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz" @@ -6726,7 +6790,7 @@ xregexp@2.0.0: xtend@~4.0.1: version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^5.0.5: