diff --git a/README.md b/README.md
index 41006a4b..ad40e785 100644
--- a/README.md
+++ b/README.md
@@ -48,6 +48,8 @@ The following are all _required_.
|---|---|---|
|`environment`|Set the environment for this release. E.g. "production" or "staging". Omit to skip adding deploy to release.|-|
|`finalize`|When false, omit marking the release as finalized and released.|`true`|
+|`ignore_missing`|When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count instead of failing the command.|`false`|
+|`ignore_empty`|When the flag is set, command will not fail and just exit silently if no new commits for a given release have been found.|`false`|
|`sourcemaps`|Space-separated list of paths to JavaScript sourcemaps. Omit to skip uploading sourcemaps.|-|
|`started_at`|Unix timestamp of the release start date. Omit for current time.|-|
|`version`|Identifier that uniquely identifies the releases. _Note: the `refs/tags/` prefix is automatically stripped when `version` is `github.ref`._|${{ github.sha }}|
@@ -55,6 +57,7 @@ The following are all _required_.
|`set_commits`|Specify whether to set commits for the release. Either "auto" or "skip".|"auto"|
|`projects`|Space-separated list of paths of projects. When omitted, falls back to the environment variable `SENTRY_PROJECT` to determine the project.|-|
|`url_prefix`|Adds a prefix to source map urls after stripping them.|-|
+|`strip_common_prefix`|Will remove a common prefix from uploaded filenames. Useful for removing a path that is build-machine-specific.|`false`|
### Examples
- Create a new Sentry release for the `production` environment and upload JavaScript source maps from the `./lib` directory.
diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts
index 40b966db..f573e80c 100644
--- a/__tests__/main.test.ts
+++ b/__tests__/main.test.ts
@@ -2,38 +2,52 @@ import {execSync} from 'child_process';
import * as path from 'path';
import * as process from 'process';
import {
- getShouldFinalize,
+ getBooleanOption,
getSourcemaps,
getStartedAt,
getVersion,
getSetCommitsOption,
getProjects,
getUrlPrefixOption,
-} from '../src/validate';
+} from '../src/options';
-describe('validate', () => {
+describe('options', () => {
beforeAll(() => {
process.env['MOCK'] = 'true';
});
- describe('getShouldFinalize', () => {
- const errorMessage = 'finalize is not a boolean';
+ describe('getBooleanOption', () => {
+ const option = 'finalize';
+ const defaultValue = true;
+ const errorMessage = `${option} is not a boolean`;
+
afterEach(() => {
delete process.env['INPUT_FINALIZE'];
});
- test('should throw an error when finalize is invalid', async () => {
+ test('should throw an error when option type is not a boolean', () => {
process.env['INPUT_FINALIZE'] = 'error';
- expect(() => getShouldFinalize()).toThrow(errorMessage);
+ expect(() => getBooleanOption(option, defaultValue)).toThrow(
+ errorMessage
+ );
});
- test('should return true when finalize is omitted', async () => {
- expect(getShouldFinalize()).toBe(true);
+ test('should return defaultValue if option is omitted', () => {
+ expect(getBooleanOption(option, defaultValue)).toBe(true);
});
- test('should return false when finalize is false', () => {
+ test('should return true when option is true or 1', () => {
+ process.env['INPUT_FINALIZE'] = 'true';
+ expect(getBooleanOption(option, defaultValue)).toBe(true);
+ process.env['INPUT_FINALIZE'] = '1';
+ expect(getBooleanOption(option, defaultValue)).toBe(true);
+ });
+
+ test('should return false when option is false or 0', () => {
process.env['INPUT_FINALIZE'] = 'false';
- expect(getShouldFinalize()).toBe(false);
+ expect(getBooleanOption(option, defaultValue)).toBe(false);
+ process.env['INPUT_FINALIZE'] = '0';
+ expect(getBooleanOption(option, defaultValue)).toBe(false);
});
});
@@ -121,6 +135,7 @@ describe('validate', () => {
expect(await getVersion()).toBe(`prefix-v1.0.0`);
});
});
+
describe('getSetCommitsOption', () => {
afterEach(() => {
delete process.env['INPUT_SET_COMMITS'];
@@ -143,6 +158,7 @@ describe('validate', () => {
expect(() => getSetCommitsOption()).toThrow(errorMessage);
});
});
+
describe('getProjects', () => {
afterEach(() => {
delete process.env['SENTRY_PROJECT'];
@@ -167,6 +183,7 @@ describe('validate', () => {
);
});
});
+
describe('getUrlPrefixOption', () => {
afterEach(() => {
delete process.env['URL_PREFIX'];
@@ -174,8 +191,8 @@ describe('validate', () => {
it('get url prefix', () => {
process.env['INPUT_URL_PREFIX'] = 'build';
expect(getUrlPrefixOption()).toEqual('build');
- })
- })
+ });
+ });
});
// shows how the runner will run a javascript action with env / stdout protocol
diff --git a/action.yml b/action.yml
index d3482ada..3333593d 100644
--- a/action.yml
+++ b/action.yml
@@ -11,6 +11,12 @@ inputs:
finalize:
description: 'When false, omit marking the release as finalized and released.'
default: true
+ ignore_missing:
+ description: 'When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count instead of failing the command.'
+ required: false
+ ignore_empty:
+ description: 'When the flag is set, command will not fail and just exit silently if no new commits for a given release have been found.'
+ required: false
started_at:
description: 'Unix timestamp of the release start date. Omit for current time.'
required: false
@@ -29,6 +35,9 @@ inputs:
url_prefix:
description: 'Adds a prefix to source map urls after stripping them.'
required: false
+ strip_common_prefix:
+ description: 'Will remove a common prefix from uploaded filenames. Useful for removing a path that is build-machine-specific.'
+ required: false
runs:
using: 'docker'
image: 'docker://sentryintegrations/sentry-github-action-release:latest'
diff --git a/package.json b/package.json
index c9e46988..435cc220 100644
--- a/package.json
+++ b/package.json
@@ -25,8 +25,7 @@
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.4",
- "@sentry/cli": "^1.59.0",
- "@sentry/types": "^5.17.0"
+ "@sentry/cli": "^1.67.2"
},
"devDependencies": {
"@types/jest": "^26.0.0",
diff --git a/src/cli.ts b/src/cli.ts
index 9a11e50c..e3831aea 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -1,4 +1,4 @@
-import SentryCli, {Releases} from '@sentry/cli';
+import SentryCli, {SentryCliReleases} from '@sentry/cli';
// @ts-ignore
import {version} from '../package.json';
@@ -7,8 +7,8 @@ import {version} from '../package.json';
*
* When the `MOCK` environment variable is set, stub out network calls.
*/
-let cli: Releases;
-export const getCLI = (): Releases => {
+let cli: SentryCliReleases;
+export const getCLI = (): SentryCliReleases => {
// Set the User-Agent string.
process.env['SENTRY_PIPELINE'] = `github-action-release/${version}`;
diff --git a/src/main.ts b/src/main.ts
index c7284030..55a1ff5a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,29 +1,39 @@
import * as core from '@actions/core';
import {getCLI} from './cli';
-import * as validate from './validate';
+import * as options from './options';
(async () => {
try {
const cli = getCLI();
- // Validate parameters first so we can fail early.
- validate.checkEnvironmentVariables();
- const environment = validate.getEnvironment();
- const sourcemaps = validate.getSourcemaps();
- const shouldFinalize = validate.getShouldFinalize();
- const deployStartedAtOption = validate.getStartedAt();
- const setCommitsOption = validate.getSetCommitsOption();
- const projects = validate.getProjects();
- const urlPrefix = validate.getUrlPrefixOption();
+ // Validate options first so we can fail early.
+ options.checkEnvironmentVariables();
- const version = await validate.getVersion();
+ const environment = options.getEnvironment();
+ const sourcemaps = options.getSourcemaps();
+ const shouldFinalize = options.getBooleanOption('finalize', true);
+ const ignoreMissing = options.getBooleanOption('ignore_missing', false);
+ const ignoreEmpty = options.getBooleanOption('ignore_empty', false);
+ const deployStartedAtOption = options.getStartedAt();
+ const setCommitsOption = options.getSetCommitsOption();
+ const projects = options.getProjects();
+ const urlPrefix = options.getUrlPrefixOption();
+ const stripCommonPrefix = options.getBooleanOption(
+ 'strip_common_prefix',
+ false
+ );
+ const version = await options.getVersion();
core.debug(`Version is ${version}`);
await cli.new(version, {projects});
if (setCommitsOption !== 'skip') {
core.debug(`Setting commits with option '${setCommitsOption}'`);
- await cli.setCommits(version, {auto: true});
+ await cli.setCommits(version, {
+ auto: true,
+ ignoreMissing,
+ ignoreEmpty,
+ });
}
if (sourcemaps.length) {
@@ -36,6 +46,7 @@ import * as validate from './validate';
include: sourcemaps,
projects: localProjects,
urlPrefix,
+ stripCommonPrefix,
};
return cli.uploadSourceMaps(version, sourceMapOptions);
})
diff --git a/src/validate.ts b/src/options.ts
similarity index 89%
rename from src/validate.ts
rename to src/options.ts
index c446b6ba..fd6ffec2 100644
--- a/src/validate.ts
+++ b/src/options.ts
@@ -9,7 +9,7 @@ import {getCLI} from './cli';
export const getVersion = async (): Promise => {
const versionOption: string = core.getInput('version');
const versionPrefixOption: string = core.getInput('version_prefix');
- let version = ''
+ let version = '';
if (versionOption) {
// If the users passes in `${{github.ref}}, then it will have an unwanted prefix.
version = versionOption.replace(/^(refs\/tags\/)/, '');
@@ -82,17 +82,22 @@ export const getSourcemaps = (): string[] => {
};
/**
- * Find out from input if we should finalize the release.
+ * Fetch boolean option from input. Throws error if option value is not a boolean.
+ * @param input string
+ * @param defaultValue boolean
* @returns boolean
*/
-export const getShouldFinalize = (): boolean => {
- const finalizeOption = core.getInput('finalize');
- if (!finalizeOption) {
- return true;
+export const getBooleanOption = (
+ input: string,
+ defaultValue: boolean
+): boolean => {
+ const option = core.getInput(input);
+ if (!option) {
+ return defaultValue;
}
- const finalize = finalizeOption.trim().toLowerCase();
- switch (finalize) {
+ const value = option.trim().toLowerCase();
+ switch (value) {
case 'true':
case '1':
return true;
@@ -102,7 +107,7 @@ export const getShouldFinalize = (): boolean => {
return false;
}
- throw Error('finalize is not a boolean');
+ throw Error(`${input} is not a boolean`);
};
export const getSetCommitsOption = (): 'auto' | 'skip' => {
@@ -159,4 +164,4 @@ export const getProjects = (): string[] => {
export const getUrlPrefixOption = (): string => {
return core.getInput('url_prefix');
-}
+};
diff --git a/src/sentry-cli.d.ts b/src/sentry-cli.d.ts
deleted file mode 100644
index 6c391663..00000000
--- a/src/sentry-cli.d.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-declare module '@sentry/cli' {
- export class Releases {
- constructor(configFile?: string, options?: {silent?: boolean});
- new(release: string, options?: {projects: string[]}): Promise;
- setCommits(
- release: string,
- options: {
- repo?: string;
- auto?: boolean;
- commit?: string;
- previousCommit?: string;
- }
- ): Promise;
- finalize(release: string): Promise;
- proposeVersion(): Promise;
- uploadSourceMaps(
- release: string,
- options: {
- include: string[];
- ignore?: string[];
- ignoreFile?: string;
- rewrite?: boolean;
- sourceMapReference?: boolean;
- stripPrefix?: string[];
- stripCommonPrefix?: boolean;
- validate?: boolean;
- urlPrefix?: string;
- urlSuffix?: string;
- ext?: string[];
- projects?: [string]; //only one project allowed (for now)
- }
- ): Promise;
- listDeploys(release: string): Promise;
- newDeploy(
- release: string,
- options: {
- env: string;
- started?: number;
- finished?: number;
- time?: number;
- name?: string;
- url?: string;
- }
- ): Promise;
- execute(args: string[], live: boolean): Promise;
- }
-
- export class SentryCli {
- constructor(options?: {configFile?: string; silent?: boolean});
- releases: Releases;
- }
-
- export default SentryCli;
-}
diff --git a/yarn.lock b/yarn.lock
index 89ff9a51..5910eb94 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -469,22 +469,18 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
-"@sentry/cli@^1.59.0":
- version "1.59.0"
- resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.59.0.tgz#8154c6426a105c6c8a2437db085837aff8e29834"
- integrity sha512-9nK4uVHW7HIbOwFZNvHRWFJcD+bqjW3kMWK2UUMqQWse0Lf3xM+2o+REGGkk0S69+E4elSiukVjUPTI5aijNlA==
+"@sentry/cli@^1.67.2":
+ version "1.67.2"
+ resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.67.2.tgz#dbb5631cb3637e10298f67915013592cb22f04ff"
+ integrity sha512-lPn0Sffbjg2UmCkHl2iw8pKlqpPhy85mW0za5kz3LEqC9JGUXHo9eSyyCkiRktlemMXKk+DeS/nyFy/LTRUG2Q==
dependencies:
https-proxy-agent "^5.0.0"
mkdirp "^0.5.5"
node-fetch "^2.6.0"
+ npmlog "^4.1.2"
progress "^2.0.3"
proxy-from-env "^1.1.0"
-"@sentry/types@^5.17.0":
- version "5.19.0"
- resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.19.0.tgz#30c6a05040b644d90337ef8b50d9d59c0872744d"
- integrity sha512-NlHLS9mwCEimKUA5vClAwVhXFLsqSF3VJEXU+K61fF6NZx8zfJi/HTrIBtoM4iNSAt9o4XLQatC1liIpBC06tg==
-
"@sinonjs/commons@^1.7.0":
version "1.8.0"
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d"
@@ -764,6 +760,16 @@ ansi-escapes@^4.2.1:
dependencies:
type-fest "^0.11.0"
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
ansi-regex@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
@@ -805,6 +811,19 @@ anymatch@^3.0.3:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+aproba@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -1132,6 +1151,11 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
collect-v8-coverage@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
@@ -1186,6 +1210,11 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
@@ -1203,7 +1232,7 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-core-util-is@1.0.2:
+core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
@@ -1339,6 +1368,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
detect-newline@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
@@ -1885,6 +1919,20 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
gensync@^1.0.0-beta.1:
version "1.0.0-beta.1"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
@@ -2000,6 +2048,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
has-value@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
@@ -2123,7 +2176,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2228,6 +2281,13 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -2320,7 +2380,7 @@ is-wsl@^2.1.1:
dependencies:
is-docker "^2.0.0"
-isarray@1.0.0, isarray@^1.0.0:
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -3198,6 +3258,21 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"
+npmlog@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
@@ -3208,6 +3283,11 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
object-copy@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
@@ -3501,6 +3581,11 @@ pretty-format@^26.1.0:
ansi-styles "^4.0.0"
react-is "^16.12.0"
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
progress@^2.0.0, progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -3583,6 +3668,19 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
+readable-stream@^2.0.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
@@ -3721,7 +3819,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-buffer@~5.1.1:
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -3775,7 +3873,7 @@ semver@^6.0.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-set-blocking@^2.0.0:
+set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -3993,6 +4091,23 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
string-width@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
@@ -4027,6 +4142,27 @@ string.prototype.trimstart@^1.0.1:
define-properties "^1.1.3"
es-abstract "^1.17.5"
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
strip-ansi@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
@@ -4332,6 +4468,11 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@@ -4444,6 +4585,13 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"