feat(repo): run E2E tests on Windows (cmd)

This commit is contained in:
Tasos Bekos 2021-01-06 18:02:57 +02:00 committed by Victor Savkin
parent e22db55f15
commit 9abdb78a4a
27 changed files with 462 additions and 592 deletions

View File

@ -1,84 +1,52 @@
# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2.1
# Variables
var_1: &working_directory ~/repo
executors:
default:
working_directory: ~/repo
environment:
# install Cypress in Linux-like cache folder
CYPRESS_CACHE_FOLDER: '~/.cache/Cypress'
linux:
working_directory: *working_directory
docker:
- image: circleci/node:12-browsers
- image: cimg/node:12.20-browsers
windows:
working_directory: *working_directory
resource_class: windows.medium
machine:
image: windows-server-2019-vs2019:stable
shell: cmd.exe
commands:
install_rsync:
description: 'Install Rsync'
setup:
parameters:
os:
type: string
steps:
- run: sudo apt install rsync
yarn_install:
description: 'Install Dependencies'
steps:
- run: yarn install --frozen-lockfile --non-interactive
- run: ./node_modules/.bin/cypress verify
- checkout
- restore_cache:
name: Restore Yarn Package Cache
keys:
- nrwl-nx-yarn-packages-<< parameters.os >>-{{ checksum "yarn.lock" }}
- run:
name: Install dependencies
command: yarn install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
- save_cache:
key: nrwl-nx-node12-yarn-key-{{ checksum "yarn.lock" }}
name: Save Yarn Package Cache
# Windows needs its own cache key because binaries in node_modules are different.
key: nrwl-nx-yarn-packages-<< parameters.os >>-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- save_cache:
key: nrwl-nx-node12-cypress-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/Cypress
restore_cypress_cache:
description: 'Restore Cypress Cache'
steps:
- restore_cache:
keys:
- nrwl-nx-node12-cypress-{{ checksum "yarn.lock" }}
# fallback to using the latest cache if no exact match is found
- nrwl-nx-node12-cypress-
restore_yarn_cache:
description: 'Restore Cached Dependencies'
steps:
- restore_cache:
keys:
- nrwl-nx-node12-yarn-key-{{ checksum "yarn.lock" }}
# fallback to using the latest cache if no exact match is found
- nrwl-nx-node12-yarn-key-
setup:
description: 'Setup Executor'
steps:
- checkout
- install_rsync
- attach_workspace:
# Must be absolute path or relative path from working_directory
at: ..
jobs:
install:
executor: default
steps:
- checkout
- restore_yarn_cache
- restore_cypress_cache
- yarn_install
- persist_to_workspace:
# Must be an absolute path, or relative path from working_directory. This is a directory on the container which is
# taken to be the root directory of the workspace.
root: ..
# Must be relative path from root
paths:
- repo/node_modules
- .cache/Cypress
checks-and-unit-tests:
executor: default
parameters:
os:
type: string
default: 'linux'
executor: << parameters.os >>
steps:
- setup
- run:
name: Run Unit Tests
command: yarn test
- setup:
os: << parameters.os >>
- run:
name: Check Documentation
command: yarn documentation
@ -97,99 +65,47 @@ jobs:
- run:
name: Check Package dependencies
command: yarn depcheck
e2e-1:
executor: default
e2e:
parameters:
os:
type: string
packages:
type: string
cli:
type: string
default: ''
executor: << parameters.os >>
steps:
- setup
- setup:
os: << parameters.os >>
- run:
name: Tests Part 1
command: yarn e2e-ci 1
no_output_timeout: 30m
e2e-2:
executor: default
steps:
- setup
- run:
name: Tests Part 2
command: yarn e2e-ci 2
no_output_timeout: 30m
e2e-3:
executor: default
steps:
- setup
- run:
name: Tests Part 3
command: yarn e2e-ci 3
no_output_timeout: 30m
e2e-4:
executor: default
steps:
- setup
- run:
name: Tests Part 4
command: yarn e2e-ci 4
no_output_timeout: 30m
e2e-5:
executor: default
steps:
- setup
- run:
name: Tests Part 5
command: yarn e2e-ci 5
no_output_timeout: 30m
e2e-6:
executor: default
steps:
- setup
- run:
name: Tests Part 6
command: yarn e2e-ci 6
no_output_timeout: 30m
e2e-7:
executor: default
steps:
- setup
- run:
name: Tests Part 7
command: yarn e2e-ci 7
no_output_timeout: 30m
e2e-8:
executor: default
steps:
- setup
- run:
name: Tests Part 8
command: yarn e2e-ci 8
name: Run E2E tests - << parameters.packages >>
command: yarn e2e << parameters.packages >> affected
no_output_timeout: 30m
environment:
SELECTED_CLI: << parameters.cli >>
workflows:
version: 2.1
default_workflow:
build:
jobs:
- install
- checks-and-unit-tests:
requires:
- install
- e2e-1:
requires:
- install
- e2e-2:
requires:
- install
- e2e-3:
requires:
- install
- e2e-4:
requires:
- install
- e2e-5:
requires:
- install
- e2e-6:
requires:
- install
- e2e-7:
requires:
- install
- e2e-8:
requires:
- install
- checks-and-unit-tests
- e2e:
matrix:
parameters:
os: ['linux', 'windows']
packages:
[
'e2e-workspace',
'e2e-cli,e2e-nx-plugin,dep-graph-client-e2e',
'e2e-cypress,e2e-jest',
'e2e-react',
'e2e-next',
'e2e-node',
'e2e-web,e2e-linter,e2e-storybook',
]
- e2e:
matrix:
parameters:
os: ['linux', 'windows']
packages: ['e2e-angular']
cli: 'angular'

View File

@ -1,3 +1,4 @@
import * as path from 'path';
import {
checkFilesExist,
expectTestsPass,
@ -157,12 +158,14 @@ describe('Angular Package', () => {
const appLintStdOut = runCLI(`lint ${myapp}`, { silenceError: true });
expect(appLintStdOut).toContain(`apps/${myapp}/src/app/app.component.html`);
expect(appLintStdOut).toContain(
path.normalize(`apps/${myapp}/src/app/app.component.html`)
);
expect(appLintStdOut).toContain(
`1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box`
);
expect(appLintStdOut).toContain(
`apps/${myapp}/src/app/inline-template.component.ts`
path.normalize(`apps/${myapp}/src/app/inline-template.component.ts`)
);
expect(appLintStdOut).toContain(
`5:21 error The selector should be prefixed by one of the prefixes: 'proj' (https://angular.io/guide/styleguide#style-02-07) @angular-eslint/component-selector`
@ -189,13 +192,13 @@ describe('Angular Package', () => {
const libLintStdOut = runCLI(`lint ${mylib}`, { silenceError: true });
expect(libLintStdOut).toContain(
`libs/${mylib}/src/lib/some.component.html`
path.normalize(`libs/${mylib}/src/lib/some.component.html`)
);
expect(libLintStdOut).toContain(
`1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box`
);
expect(libLintStdOut).toContain(
`libs/${mylib}/src/lib/inline-template.component.ts`
path.normalize(`libs/${mylib}/src/lib/inline-template.component.ts`)
);
expect(libLintStdOut).toContain(
`5:21 error The selector should be prefixed by one of the prefixes: 'proj' (https://angular.io/guide/styleguide#style-02-07) @angular-eslint/component-selector`

View File

@ -1,3 +1,4 @@
import * as path from 'path';
import {
checkFilesExist,
newProject,
@ -108,7 +109,15 @@ describe('Linter', () => {
);
}, 1000000);
it('linting should generate a default cache file', () => {
describe('linting with --cache', () => {
function readCacheFile(cacheFile = '.eslintcache') {
const cacheInfo = readFile(cacheFile);
return process.platform === 'win32'
? cacheInfo.replace(/\\\\/g, '\\')
: cacheInfo;
}
it('should generate a default cache file', () => {
newProject();
const myapp = uniq('myapp');
@ -117,11 +126,13 @@ describe('Linter', () => {
expect(() => checkFilesExist(`.eslintcache`)).toThrow();
runCLI(`lint ${myapp} --cache`, { silenceError: true });
expect(() => checkFilesExist(`.eslintcache`)).not.toThrow();
const cacheInfo = readFile('.eslintcache');
expect(cacheInfo).toContain(`${myapp}/src/app/app.spec.tsx`);
const cacheInfo = readCacheFile();
expect(cacheInfo).toContain(
path.normalize(`${myapp}/src/app/app.spec.tsx`)
);
}, 1000000);
it('linting should let you specify a cache file location', () => {
it('should let you specify a cache file location', () => {
newProject();
const myapp = uniq('myapp');
@ -132,9 +143,12 @@ describe('Linter', () => {
silenceError: true,
});
expect(() => checkFilesExist(`my-cache`)).not.toThrow();
const cacheInfo = readFile('my-cache');
expect(cacheInfo).toContain(`${myapp}/src/app/app.spec.tsx`);
const cacheInfo = readCacheFile('my-cache');
expect(cacheInfo).toContain(
path.normalize(`${myapp}/src/app/app.spec.tsx`)
);
}, 1000000);
});
it('linting should generate an output file with a specific format', () => {
newProject();
@ -167,7 +181,7 @@ describe('Linter', () => {
const outputForApp: any = Object.values(
outputContents
).filter((result: any) =>
result.filePath.includes(`${myapp}/src/main.ts`)
result.filePath.includes(path.normalize(`${myapp}/src/main.ts`))
)[0];
expect(outputForApp.errorCount).toBe(1);
expect(outputForApp.messages[0].ruleId).toBe('no-console');

View File

@ -11,8 +11,9 @@ import {
} from '@nrwl/e2e/utils';
describe('Next.js Applications', () => {
beforeEach(() => newProject());
it('should be able to serve with a proxy configuration', async () => {
newProject();
const appName = uniq('app');
runCLI(`generate @nrwl/next:app ${appName}`);
@ -71,7 +72,6 @@ describe('Next.js Applications', () => {
}, 120000);
it('should be able to consume a react lib', async () => {
newProject();
const appName = uniq('app');
const libName = uniq('lib');
@ -108,7 +108,6 @@ describe('Next.js Applications', () => {
}, 120000);
it('should be able to dynamically load a lib', async () => {
newProject();
const appName = uniq('app');
const libName = uniq('lib');
@ -136,7 +135,6 @@ describe('Next.js Applications', () => {
}, 120000);
it('should compile when using a workspace and react lib written in TypeScript', async () => {
newProject();
const appName = uniq('app');
const tsLibName = uniq('tslib');
const tsxLibName = uniq('tsxlib');
@ -282,7 +280,6 @@ describe('Next.js Applications', () => {
}, 120000);
it('should support --js flag', async () => {
newProject();
const appName = uniq('app');
runCLI(`generate @nrwl/next:app ${appName} --no-interactive --js`);
@ -294,7 +291,7 @@ describe('Next.js Applications', () => {
checkLint: true,
checkE2E: true,
});
}, 120000);
}, 180000);
});
async function checkApp(

View File

@ -1,8 +1,7 @@
import { stripIndents } from '@angular-devkit/core/src/utils/literals';
import { execSync, fork, spawn } from 'child_process';
import { exec, execSync } from 'child_process';
import * as http from 'http';
import * as treeKill from 'tree-kill';
import * as ts from 'typescript';
import {
checkFilesDoNotExist,
checkFilesExist,
@ -84,34 +83,29 @@ describe('Node Applications', () => {
`dist/apps/${nodeapp}/main.js.map`
);
const server = fork(`./dist/apps/${nodeapp}/main.js`, [], {
const server = exec(`node ./dist/apps/${nodeapp}/main.js`, {
cwd: tmpProjPath(),
silent: true,
});
expect(server).toBeTruthy();
await new Promise((resolve) => {
server.stdout.once('data', async (data) => {
server.stdout.on('data', async (data) => {
expect(data.toString()).toContain('Listening at http://localhost:3333');
const result = await getData();
expect(result.message).toEqual(`Welcome to ${nodeapp}!`);
treeKill(server.pid, 'SIGTERM', (err) => {
expect(err).toBeFalsy();
resolve();
resolve(true);
});
});
});
const process = spawn(
'node',
['./node_modules/.bin/nx', 'serve', nodeapp],
{
const process = exec(`npm run nx serve ${nodeapp}`, {
cwd: tmpProjPath(),
}
);
});
let collectedOutput = '';
process.stdout.on('data', async (data: Buffer) => {
collectedOutput += data.toString();
if (!data.toString().includes('Listening at http://localhost:3333')) {
if (!collectedOutput.includes('Listening at http://localhost:3333')) {
return;
}
@ -146,9 +140,8 @@ describe('Node Applications', () => {
`dist/apps/${nestapp}/main.js.map`
);
const server = fork(`./dist/apps/${nestapp}/main.js`, [], {
const server = exec(`node ./dist/apps/${nestapp}/main.js`, {
cwd: tmpProjPath(),
silent: true,
});
expect(server).toBeTruthy();
@ -161,19 +154,15 @@ describe('Node Applications', () => {
expect(result.message).toEqual(`Welcome to ${nestapp}!`);
treeKill(server.pid, 'SIGTERM', (err) => {
expect(err).toBeFalsy();
resolve();
resolve(true);
});
}
});
});
const process = spawn(
'node',
['./node_modules/@nrwl/cli/bin/nx', 'serve', nestapp],
{
const process = exec(`npm run nx serve ${nestapp}`, {
cwd: tmpProjPath(),
}
);
});
process.stdout.on('data', async (data: Buffer) => {
if (!data.toString().includes('Listening at http://localhost:3333')) {

View File

@ -5,8 +5,12 @@ import {
renameSync,
statSync,
writeFileSync,
} from 'fs';
import { ensureDirSync, createFileSync } from 'fs-extra';
ensureDirSync,
createFileSync,
moveSync,
copySync,
removeSync,
} from 'fs-extra';
import * as path from 'path';
interface RunCmdOpts {
@ -90,9 +94,9 @@ export function runCreateWorkspace(
return create ? create.toString() : '';
}
export function yarnAdd(pkg: string, projName?: string) {
export function packageInstall(pkg: string, projName?: string) {
const cwd = projName ? `./tmp/${currentCli()}/${projName}` : tmpProjPath();
const install = execSync(`yarn add ${pkg}`, {
const install = execSync(`npm i ${pkg}`, {
cwd,
// ...{ stdio: ['pipe', 'pipe', 'pipe'] },
...{ stdio: [0, 1, 2] },
@ -126,11 +130,11 @@ export function newProject(): void {
`@nrwl/nx-plugin`,
`@nrwl/eslint-plugin-nx`,
];
yarnAdd(packages.join(` `), 'proj');
execSync(`mv ./tmp/${currentCli()}/proj ${tmpBackupProjPath()}`);
packageInstall(packages.join(` `), 'proj');
moveSync(`./tmp/${currentCli()}/proj`, `${tmpBackupProjPath()}`);
}
projName = uniq('proj');
execSync(`cp -a ${tmpBackupProjPath()} ${tmpProjPath()}`);
copySync(`${tmpBackupProjPath()}`, `${tmpProjPath()}`);
} catch (e) {
console.log(`Failed to set up project for e2e tests.`);
console.log(e.message);
@ -171,7 +175,7 @@ export function runCommandUntil(
command: string,
criteria: (output: string) => boolean
) {
const p = exec(`./node_modules/.bin/nx ${command}`, {
const p = exec(`npm run nx --scripts-prepend-node-path -- ${command}`, {
cwd: tmpProjPath(),
env: { ...process.env, FORCE_COLOR: 'false' },
});
@ -211,7 +215,10 @@ export function runCLIAsync(
env: process.env,
}
): Promise<{ stdout: string; stderr: string; combinedOutput: string }> {
return runCommandAsync(`./node_modules/.bin/nx ${command}`, opts);
return runCommandAsync(
`npm run nx --scripts-prepend-node-path -- ${command}`,
opts
);
}
export function runNgAdd(
@ -223,7 +230,7 @@ export function runNgAdd(
}
): string {
try {
yarnAdd('@nrwl/workspace');
packageInstall('@nrwl/workspace');
return execSync(
`./node_modules/.bin/ng g @nrwl/workspace:ng-add ${command}`,
{
@ -254,7 +261,7 @@ export function runCLI(
}
): string {
try {
let r = execSync(`./node_modules/.bin/nx ${command}`, {
let r = execSync(`npm run nx --scripts-prepend-node-path -- ${command}`, {
cwd: opts.cwd || tmpProjPath(),
env: opts.env as any,
}).toString();
@ -399,7 +406,7 @@ export function readFile(f: string) {
}
export function rmDist() {
execSync(`rm -rf ${tmpProjPath()}/dist`);
removeSync(`${tmpProjPath()}/dist`);
}
export function directoryExists(filePath: string): boolean {

View File

@ -6,14 +6,14 @@ import {
runCLIAsync,
runCreateWorkspace,
uniq,
yarnAdd,
packageInstall,
} from '@nrwl/e2e/utils';
describe('custom workspace layout', () => {
it('should work', async () => {
const proj = uniq('custom-layout-proj');
runCreateWorkspace(proj, { preset: 'oss' });
yarnAdd('@nrwl/react @nrwl/angular @nrwl/express');
packageInstall('@nrwl/react @nrwl/angular @nrwl/express');
const nxJson = readJson('nx.json');
expect(nxJson.workspaceLayout).toEqual({

View File

@ -21,10 +21,13 @@ describe('Run Commands', () => {
'SHARED_VAR=shared-nested-value\nNESTED_ONLY=nested-only-value'
);
const command = `echo "$SHARED_VAR $ROOT_ONLY $NESTED_ONLY"`;
const command =
process.platform === 'win32'
? `"echo %SHARED_VAR% %ROOT_ONLY% %NESTED_ONLY%"`
: `'echo "\\$SHARED_VAR \\$ROOT_ONLY \\$NESTED_ONLY"'`;
const envFile = `apps/${nodeapp}/.custom.env`;
runCLI(
`generate @nrwl/workspace:run-commands echoEnvVariables --command='${command}' --envFile='${envFile}' --project=${nodeapp}`
`generate @nrwl/workspace:run-commands echoEnvVariables --command=${command} --envFile=${envFile} --project=${nodeapp}`
);
const result = runCLI('echoEnvVariables');

View File

@ -1,9 +1,11 @@
import * as path from 'path';
import {
checkFilesExist,
exists,
newProject,
readFile,
readJson,
renameFile,
runCLI,
runCommand,
tmpProjPath,
@ -87,9 +89,9 @@ describe('lint', () => {
const appAfter = uniq('after');
runCLI(`generate @nrwl/angular:app ${appBefore}`);
runCommand(`mv apps/${appBefore} apps/${appAfter}`);
renameFile(`apps/${appBefore}`, `apps/${appAfter}`);
const stdout = runCommand('./node_modules/.bin/nx workspace-lint');
const stdout = runCommand('npm run nx workspace-lint');
expect(stdout).toContain(
`- Cannot find project '${appBefore}' in 'apps/${appBefore}'`
);
@ -157,32 +159,50 @@ describe('format', () => {
let stdout = runCommand(
`npm run -s format:check -- --files="libs/${mylib}/index.ts,package.json" --libs-and-apps`
);
expect(stdout).toContain(`libs/${mylib}/index.ts`);
expect(stdout).toContain(`libs/${mylib}/src/${mylib}.module.ts`);
expect(stdout).not.toContain(`README.md`); // It will be contained only in case of exception, that we fallback to all
expect(stdout).toContain(path.normalize(`libs/${mylib}/index.ts`));
expect(stdout).toContain(
path.normalize(`libs/${mylib}/src/${mylib}.module.ts`)
);
expect(stdout).not.toContain(path.normalize(`README.md`)); // It will be contained only in case of exception, that we fallback to all
stdout = runCommand(`npm run -s format:check -- --all`);
expect(stdout).toContain(`apps/${myapp}/src/main.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`);
expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.module.ts`)
);
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.component.ts`)
);
stdout = runCommand(`npm run -s format:check -- --projects=${myapp}`);
expect(stdout).toContain(`apps/${myapp}/src/main.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`);
expect(stdout).not.toContain(`libs/${mylib}/index.ts`);
expect(stdout).not.toContain(`libs/${mylib}/src/${mylib}.module.ts`);
expect(stdout).not.toContain(`README.md`);
expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.module.ts`)
);
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.component.ts`)
);
expect(stdout).not.toContain(path.normalize(`libs/${mylib}/index.ts`));
expect(stdout).not.toContain(
path.normalize(`libs/${mylib}/src/${mylib}.module.ts`)
);
expect(stdout).not.toContain(path.normalize(`README.md`));
stdout = runCommand(
`npm run -s format:check -- --projects=${myapp},${mylib}`
);
expect(stdout).toContain(`apps/${myapp}/src/main.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`);
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`);
expect(stdout).toContain(`libs/${mylib}/index.ts`);
expect(stdout).toContain(`libs/${mylib}/src/${mylib}.module.ts`);
expect(stdout).not.toContain(`README.md`);
expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.module.ts`)
);
expect(stdout).toContain(
path.normalize(`apps/${myapp}/src/app/app.component.ts`)
);
expect(stdout).toContain(path.normalize(`libs/${mylib}/index.ts`));
expect(stdout).toContain(
path.normalize(`libs/${mylib}/src/${mylib}.module.ts`)
);
expect(stdout).not.toContain(path.normalize(`README.md`));
stdout = runCommand(
`npm run -s format:check -- --projects=${myapp},${mylib} --all`
@ -197,13 +217,17 @@ describe('format', () => {
stdout = runCommand('npm run -s format:check -- --all');
expect(stdout).toContain(`apps/${myapp}/src/main.ts`);
expect(stdout).not.toContain(`apps/${myapp}/src/app/app.module.ts`);
expect(stdout).not.toContain(`apps/${myapp}/src/app/app.component.ts`);
expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).not.toContain(
path.normalize(`apps/${myapp}/src/app/app.module.ts`)
);
expect(stdout).not.toContain(
path.normalize(`apps/${myapp}/src/app/app.component.ts`)
);
runCommand('npm run format:write -- --all');
expect(runCommand('npm run -s format:check -- --all')).not.toContain(
`apps/${myapp}/src/main.ts`
path.normalize(`apps/${myapp}/src/main.ts`)
);
});
});

View File

@ -46,11 +46,9 @@ describe('run-one', () => {
// configuration has to be valid for the initiating project
expect(() => runCLI(`build ${myapp} -c=invalid`)).toThrow();
expect(
runCommand(
`cd apps/${myapp}-e2e/src && ../../../node_modules/.bin/nx lint`
)
).toContain(`nx run ${myapp}-e2e:lint`);
expect(runCommand(`cd apps/${myapp}-e2e/src && npx nx lint`)).toContain(
`nx run ${myapp}-e2e:lint`
);
// configuration doesn't have to exists for deps (here only the app has production)
const buildWithDeps = runCLI(`build ${myapp} --with-deps --prod`);

View File

@ -13,8 +13,9 @@
"check-imports": "node ./scripts/check-imports.js",
"check-versions": "ts-node -P ./scripts/tsconfig.scripts.json ./scripts/check-versions.ts",
"check-documentation-map": "ts-node -P ./scripts/tsconfig.scripts.json ./scripts/documentation/map-link-checker.ts",
"e2e": "./scripts/e2e.sh",
"e2e-ci": "./scripts/e2e-ci.sh",
"e2e-registry": "yarn verdaccio --config ./scripts/local-registry/config.yml --listen 4872",
"e2e-tests": "ts-node -P ./scripts/tsconfig.e2e.json ./scripts/e2e.ts",
"e2e": "run-p -r e2e-registry \"e2e-tests {@}\" --",
"format": "nx format",
"nx-release": "./scripts/nx-release.js",
"test": "nx run-many --target=test --all --parallel",
@ -247,7 +248,7 @@
"tslint": "6.1.3",
"typescript": "4.0.5",
"url-loader": "^3.0.0",
"verdaccio": "^4.4.2",
"verdaccio": "^4.10.0",
"webpack": "4.42.0",
"webpack-dev-middleware": "3.7.0",
"webpack-dev-server": "3.11.0",

View File

@ -1,7 +1,7 @@
import yargsParser = require('yargs-parser');
function calculateDefaultProjectName(cwd: string, root: string, wc: any) {
let relativeCwd = cwd.split(root)[1];
let relativeCwd = cwd.replace(/\\/g, '/').split(root.replace(/\\/g, '/'))[1];
if (relativeCwd) {
relativeCwd = relativeCwd.startsWith('/')
? relativeCwd.substring(1)

View File

@ -418,9 +418,15 @@ function createApp(tmpDir: string, name: string, parsedArgs: WorkspaceArgs) {
const command = `new ${name} ${args} --collection=@nrwl/workspace`;
console.log(command);
const nxWorkspaceRoot = process.cwd().replace(/\\/g, '/');
let nxWorkspaceRoot = process.cwd().replace(/\\/g, '/');
if (process.platform === 'win32') {
nxWorkspaceRoot = `\\"${nxWorkspaceRoot}\\"`;
} else {
nxWorkspaceRoot = `"${nxWorkspaceRoot}"`;
}
execSync(
`${pmc.exec} tao ${command}/collection.json --cli=${cli} --nxWorkspaceRoot="${nxWorkspaceRoot}"`,
`${pmc.exec} tao ${command}/collection.json --cli=${cli} --nxWorkspaceRoot=${nxWorkspaceRoot}`,
{
stdio: [0, 1, 2],
cwd: tmpDir,

View File

@ -12,7 +12,6 @@ import { mkdtempSync, statSync, copyFileSync, constants } from 'fs';
import { buildDevStandalone } from '@storybook/core/dist/server/build-dev';
import { NodeJsSyncHost } from '@angular-devkit/core/node';
import { getRoot } from '../../utils/root';
export interface StorybookConfig extends JsonObject {
@ -31,7 +30,7 @@ export interface StorybookBuilderOptions extends JsonObject {
ssl?: boolean;
sslCert?: string;
sslKey?: string;
staticDir?: number[];
staticDir?: string[];
watch?: boolean;
docsMode?: boolean;
}

View File

@ -128,7 +128,7 @@ export class Workspaces {
constructor(private root: string) {}
relativeCwd(cwd: string) {
let relativeCwd = cwd.split(this.root)[1];
let relativeCwd = cwd.replace(/\\/g, '/').split(this.root)[1];
if (relativeCwd) {
return relativeCwd.startsWith('/')
? relativeCwd.substring(1)

View File

@ -85,7 +85,7 @@ export function splitArgsIntoNxArgsAndOverrides(
mode === 'run-one' ? runOne : mode === 'run-many' ? runMany : runAffected;
const nxArgs: RawNxArgs = {};
const overrides = yargsParser(args._);
const overrides = yargsParser(args._ as string[]);
delete overrides._;
Object.entries(args).forEach(([key, value]) => {
@ -124,8 +124,8 @@ export function splitArgsIntoNxArgsAndOverrides(
!nxArgs.all &&
args._.length >= 2
) {
nxArgs.base = args._[0];
nxArgs.head = args._[1];
nxArgs.base = args._[0] as string;
nxArgs.head = args._[1] as string;
} else if (!nxArgs.base) {
const affectedConfig = getAffectedConfig();

View File

@ -16,7 +16,7 @@ describe('CLI dependency migration', () => {
);
});
it.only('should add @nrwl/cli to package.json', async () => {
it('should add @nrwl/cli to package.json', async () => {
const result = await runMigration('add-cli-dependency', {}, tree);
const packageJson = readJsonInTree(result, 'package.json');
expect(packageJson.devDependencies['@nrwl/cli']).toEqual(nxVersion);

7
scripts/build-angular.js Normal file
View File

@ -0,0 +1,7 @@
const childProcess = require('child_process');
const fs = require('fs-extra');
childProcess.execSync(`npx ng-packagr -p packages/angular/ng-package.json`);
fs.removeSync('packages/angular/dist/src');
fs.copySync('packages/angular/dist/', 'build/packages/angular/');
fs.removeSync('packages/angular/dist/');

View File

@ -1,18 +0,0 @@
#!/usr/bin/env bash
npx ng-packagr -p packages/angular/ng-package.json
rm -rf packages/angular/dist/src
cp -r packages/angular/dist/* build/packages/angular/
rm -rf packages/angular/dist
#TODO This is a temporary hack until we can publish named umds
sed -i.bak "s/define(\[/define('@nrwl\/angular',\[/" build/packages/angular/bundles/nrwl-angular.umd.js
sed -i.bak "s/define(\[/define('@nrwl\/angular',\[/" build/packages/angular/bundles/nrwl-angular.umd.min.js
rm -rf build/packages/angular/bundles/nrwl-angular.umd.js.bak
rm -rf build/packages/angular/bundles/nrwl-angular.umd.min.js.bak
sed -i.bak "s/define(\[/define('@nrwl\/angular\/testing',\[/" build/packages/angular/bundles/nrwl-angular-testing.umd.js
sed -i.bak "s/define(\[/define('@nrwl\/angular\/testing',\[/" build/packages/angular/bundles/nrwl-angular-testing.umd.min.js
rm -rf build/packages/angular/bundles/nrwl-angular-testing.umd.js.bak
rm -rf build/packages/angular/bundles/nrwl-angular-testing.umd.min.js.bak

3
scripts/chmod.js Normal file
View File

@ -0,0 +1,3 @@
const shell = require('shelljs');
shell.chmod('+x', process.argv[2]);

View File

@ -1,26 +0,0 @@
#!/usr/bin/env bash
if [ "$1" == "1" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-workspace affected
elif [ "$1" == "2" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-cli,e2e-nx-plugin,dep-graph-client-e2e affected
elif [ "$1" == "3" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-cypress,e2e-jest affected
elif [ "$1" == "4" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-react affected
elif [ "$1" == "5" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-next affected
elif [ "$1" == "6" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-node affected
elif [ "$1" == "7" ]; then
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-web,e2e-linter,e2e-storybook affected
elif [ "$1" == "8" ]; then
export SELECTED_CLI=angular
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts e2e-angular affected
fi

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
export SELECTED_CLI=$SELECTED_CLI
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts "$@"

View File

@ -1,11 +1,8 @@
const { execSync } = require('child_process');
import { execSync } from 'child_process';
import { readdirSync } from 'fs';
const { promisify } = require('util');
const { spawn, exec } = require('child_process');
import { ensureDirSync, removeSync } from 'fs-extra';
const kill = require('tree-kill');
const asyncExec = promisify(exec);
let localRegistryProcess;
import { build } from './package';
process.env.PUBLISHED_VERSION = `9999.0.2`;
process.env.npm_config_registry = `http://localhost:4872/`;
@ -16,50 +13,13 @@ export const getDirectories = (source) =>
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name);
async function spawnLocalRegistry() {
localRegistryProcess = spawn('npx', [
'verdaccio',
'--config',
'./scripts/local-registry/config.yml',
'--listen',
'4872',
]);
let collectedOutput = [];
let resolvedOrRejected = false;
setTimeout(() => {
if (!resolvedOrRejected) {
console.error(`Failed to start the npm registry`);
console.error(collectedOutput.join(''));
cleanUp(1);
}
}, 10000);
await new Promise((res, rej) => {
localRegistryProcess.stdout.on('data', (data) => {
collectedOutput.push(data.toString());
// wait for local-registry to come online
if (data.includes('http address')) {
resolvedOrRejected = true;
res();
}
});
localRegistryProcess.on('error', (err) => {
console.error(collectedOutput.join(''));
resolvedOrRejected = true;
rej(err);
});
});
}
async function updateVersion(packagePath) {
return exec(`npm version ${process.env.PUBLISHED_VERSION}`, {
function updateVersion(packagePath) {
return execSync(`npm version ${process.env.PUBLISHED_VERSION}`, {
cwd: packagePath,
});
}
async function publishPackage(packagePath) {
function publishPackage(packagePath) {
if (process.env.npm_config_registry.indexOf('http://localhost') === -1) {
throw Error(`
------------------
@ -68,22 +28,18 @@ async function publishPackage(packagePath) {
`);
}
try {
await asyncExec(`npm publish`, {
execSync(`npm publish`, {
cwd: packagePath,
env: process.env,
});
} catch (e) {}
}
export async function setup() {
// @ts-ignore
await spawnLocalRegistry();
await Promise.all(
getDirectories('./build/packages').map(async (pkg) => {
await updateVersion(`./build/packages/${pkg}`);
return await publishPackage(`./build/packages/${pkg}`);
})
);
export function setup() {
getDirectories('./build/packages').map((pkg) => {
updateVersion(`./build/packages/${pkg}`);
publishPackage(`./build/packages/${pkg}`);
});
}
async function runTest() {
@ -111,36 +67,31 @@ async function runTest() {
.join(',');
}
execSync(`./scripts/package.sh 9999.0.2 "~10.0.0" "3.9.3" "2.0.4"`, {
stdio: [0, 1, 2],
});
build(process.env.PUBLISHED_VERSION, '~10.0.0', '3.9.3', '2.1.2');
if (process.argv[5] != '--rerun') {
execSync(`rm -rf tmp`);
execSync(`mkdir -p tmp/angular`);
execSync(`mkdir -p tmp/nx`);
removeSync(`tmp`);
ensureDirSync(`tmp/angular`);
ensureDirSync(`tmp/nx`);
}
try {
await setup();
setup();
if (selectedProjects === '') {
console.log('No tests to run');
} else if (selectedProjects) {
execSync(
`node --max-old-space-size=4000 ./node_modules/.bin/nx run-many --target=e2e --projects=${selectedProjects} ${testNamePattern}`,
`yarn nx run-many --target=e2e --projects=${selectedProjects} ${testNamePattern}`,
{
stdio: [0, 1, 2],
env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' },
}
);
} else {
execSync(
`node --max-old-space-size=4000 ./node_modules/.bin/nx run-many --target=e2e --all`,
{
execSync(`yarn nx run-many --target=e2e --all`, {
stdio: [0, 1, 2],
env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' },
}
);
});
}
cleanUp(0);
} catch (e) {
@ -156,18 +107,12 @@ function cleanUp(code) {
kill(0);
}
} catch (e) {}
try {
if (localRegistryProcess) localRegistryProcess.kill(0);
} catch (e) {}
// try killing everything after in case something hasn't terminated
try {
if (!process.env.CI) {
kill(0, 'SIGKILL');
}
} catch (e) {}
try {
if (localRegistryProcess) localRegistryProcess.kill(0, 'SIGKILL');
} catch (e) {}
process.exit(code);
}

View File

@ -35,4 +35,4 @@ packages:
# log settings
logs:
- { type: stdout, format: pretty, level: http }
- { type: stdout, format: pretty, level: error }

73
scripts/package.ts Normal file
View File

@ -0,0 +1,73 @@
import { execSync } from 'child_process';
import { readFileSync, writeFileSync } from 'fs-extra';
export function build(
nxVersion,
ngCliVersion,
typescriptVersion,
prettierVersion
) {
try {
execSync('npx nx run-many --target=build --all --parallel', {
stdio: [0, 1, 2],
});
} catch {
console.log('Build failed');
process.exit(1);
}
const BUILD_DIR = 'build/packages';
const files = [
...[
'react',
'next',
'web',
'jest',
'node',
'express',
'nest',
'cypress',
'storybook',
'angular',
'workspace',
].map((f) => `${f}/src/utils/versions.js`),
...[
'react',
'next',
'web',
'jest',
'node',
'express',
'nest',
'cypress',
'storybook',
'angular',
'workspace',
'cli',
'linter',
'tao',
'devkit',
'eslint-plugin-nx',
'create-nx-workspace',
'create-nx-plugin',
'nx-plugin',
].map((f) => `${f}/package.json`),
'create-nx-workspace/bin/create-nx-workspace.js',
'create-nx-plugin/bin/create-nx-plugin.js',
].map((f) => `${BUILD_DIR}/${f}`);
files.forEach((f) => {
let content = readFileSync(f).toString();
content = content
.replace(
/exports.nxVersion = '\*'/g,
`exports.nxVersion = '${nxVersion}'`
)
.replace(/NX_VERSION/g, nxVersion)
.replace(/TYPESCRIPT_VERSION/g, typescriptVersion)
.replace(/PRETTIER_VERSION/g, prettierVersion);
writeFileSync(f, content);
});
}

View File

@ -137,7 +137,7 @@
"command": "nx build-base tao"
},
{
"command": "chmod +x build/packages/tao/index.js"
"command": "node ./scripts/chmod build/packages/tao/index.js"
},
{
"command": "node ./scripts/copy-readme.js tao"
@ -1421,7 +1421,7 @@
"command": "nx build-base create-nx-workspace"
},
{
"command": "chmod +x build/packages/create-nx-workspace/bin/create-nx-workspace.js"
"command": "node ./scripts/chmod build/packages/create-nx-workspace/bin/create-nx-workspace.js"
},
{
"command": "node ./scripts/copy-readme.js create-nx-workspace"
@ -1507,7 +1507,7 @@
"command": "nx build-base create-nx-plugin"
},
{
"command": "chmod +x build/packages/create-nx-plugin/bin/create-nx-plugin.js"
"command": "node ./scripts/chmod build/packages/create-nx-plugin/bin/create-nx-plugin.js"
},
{
"command": "node ./scripts/copy-readme.js create-nx-workspace"
@ -1593,7 +1593,7 @@
"command": "nx build-base cli"
},
{
"command": "chmod +x build/packages/cli/bin/nx.js"
"command": "node ./scripts/chmod build/packages/cli/bin/nx.js"
},
{
"command": "node ./scripts/copy-readme.js cli"
@ -1684,7 +1684,7 @@
"command": "nx build-base angular"
},
{
"command": "./scripts/build-angular.sh"
"command": "node ./scripts/build-angular"
},
{
"command": "node ./scripts/copy-readme.js angular"

308
yarn.lock
View File

@ -4823,57 +4823,52 @@
"@typescript-eslint/types" "4.3.0"
eslint-visitor-keys "^2.0.0"
"@verdaccio/commons-api@9.6.1", "@verdaccio/commons-api@^9.6.1":
version "9.6.1"
resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-9.6.1.tgz#f62d1e0d7e55f19c483989f718ed2df2bf55ae3a"
integrity sha512-wGwDOxWkWjOcxCpwUvAqY+v24I9BRTB5L8xcbE+drpF4gL5q/wN+yzBgxCtkBh/nchOALxRC93JrE3IgVTu3iA==
"@verdaccio/commons-api@9.7.1", "@verdaccio/commons-api@^9.7.1":
version "9.7.1"
resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-9.7.1.tgz#816f08eb6cb0dbe345f2546428c837be6804796d"
integrity sha512-s2uD3s325C0UsQ9uQTmf15dXFsGVo23IM6pSUTukCRuurCok89e/k1Adz2CaoXpEu1qpxQ6Sv0dcNpGl7Q7hwQ==
dependencies:
http-errors "1.7.3"
http-errors "1.8.0"
http-status-codes "1.4.0"
"@verdaccio/file-locking@^9.6.1", "@verdaccio/file-locking@^9.7.0":
version "9.7.0"
resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-9.7.0.tgz#87de85a46992662fda8ef700e0967f787db9d7cd"
integrity sha512-ytMAZtne0o8gBEmkKLHScA3NvvN9o+IGEhXQsa2G6ZsLKPKheE6bS4V8mD9h+C/qL1gHkaNdhIR4hd0SmabIxQ==
"@verdaccio/file-locking@^9.7.2":
version "9.7.2"
resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-9.7.2.tgz#953367a42554ef7019fb4206c6e3af5e2dc217db"
integrity sha512-y9yLk8+9wdQH1bDyeR7Cu80dKQMiiva9ddNbXllV6h0uxaqVOxDyyE0OWdyvUy0xdA4lUD/y0DxHOInDOhdKaw==
dependencies:
lockfile "1.0.4"
"@verdaccio/local-storage@9.7.0":
version "9.7.0"
resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.0.tgz#e79503c5334af8403c1222aa1d7e1ea2c377c75c"
integrity sha512-3h8lCLIAjTWhEJm3o4258KP9XTxrlfNHMWGzHr3e/8HzSTB7pbEDvx+h9CXlj1ErHvb2fQb2k7mqnWYs4DHq/A==
"@verdaccio/local-storage@9.7.4":
version "9.7.4"
resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.4.tgz#3ffaa41fc850758296c9f243d765372a2e5e4ea2"
integrity sha512-Wj0mJ6FTLGma+nDxpAWJkg7yY0WLh0sUm94juqY9eyWSqOWdv1QvduE9lvl0vh890/QbrlqzxPqxTxeZwsndTA==
dependencies:
"@verdaccio/commons-api" "^9.6.1"
"@verdaccio/file-locking" "^9.7.0"
"@verdaccio/streams" "^9.7.0"
"@verdaccio/commons-api" "^9.7.1"
"@verdaccio/file-locking" "^9.7.2"
"@verdaccio/streams" "^9.7.2"
async "3.2.0"
level "5.0.1"
lodash "4.17.15"
lodash "4.17.20"
mkdirp "0.5.5"
"@verdaccio/readme@9.7.0":
version "9.7.0"
resolved "https://registry.yarnpkg.com/@verdaccio/readme/-/readme-9.7.0.tgz#5e6df8a6a4ab730f8f515ee7feba08bd4e48b235"
integrity sha512-Q7dSqfIUR9EhLQ9dyYQMxY7SydgDYnlwMR6IXVek87Z38yxDi6v4r/hN+OEtndUCfcsvt/smBcw1DraXO2t0cQ==
"@verdaccio/readme@9.7.3":
version "9.7.3"
resolved "https://registry.yarnpkg.com/@verdaccio/readme/-/readme-9.7.3.tgz#0d6e407883600c42e51f262971e7da8d525886e6"
integrity sha512-86Zv46Qpcx0d0YRutFPhPH4OhGSljUJyhkxk3H/bCzzw8hGEvM1Du2y8kzfAS9qUsX8Qux97vfxxz6+RpBdU1w==
dependencies:
dompurify "2.0.8"
jsdom "15.2.1"
marked "0.7.0"
marked "1.1.1"
"@verdaccio/streams@9.6.1":
version "9.6.1"
resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.6.1.tgz#2ab565743c093d7a2f8834c62f37dfc36f2a4d5b"
integrity sha512-P4DFWvB9BNCDAh/sYPr59JW8N9uxAtlIx0Xa0vobxy+4cvvmP9lrMbeK4liH5yKJmwKmiEIZ6SxfTKR/MqbOpw==
"@verdaccio/streams@9.7.2", "@verdaccio/streams@^9.7.2":
version "9.7.2"
resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.7.2.tgz#cd5448470d725e221629adb84c74af7dfd8c9678"
integrity sha512-SoCG1btVFPxOcrs8w9wLJCfe8nfE6EaEXCXyRwGbh+Sr3NLEG0R8JOugGJbuSE+zIRuUs5JaUKjzSec+JKLvZw==
"@verdaccio/streams@^9.7.0":
version "9.7.0"
resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.7.0.tgz#21d35e1c60c5dee58e54878374d3d354f06ebcdb"
integrity sha512-h0GvmR1sjaH/H1MOBWJkmNSCuTI7cKYoyvWlP6S1gMEgfTnpwza9sW0F6RYttfYYzaDqyk6niVL6kDre2zVGEw==
"@verdaccio/ui-theme@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-1.11.0.tgz#78316f7983760c1ad7b6bc84a7c54730af802c75"
integrity sha512-ggXPyCueh8CtHFrpZsq7kP+pLxKPsiTuoCGmYNIquZ/p99A6eIAVLElqHFJfgGATsdVlFQKWG/AawCfxD5ymUw==
"@verdaccio/ui-theme@1.14.0":
version "1.14.0"
resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-1.14.0.tgz#22b397f399bf1dfcc8e471d1895c3f74bd340691"
integrity sha512-vTzZYnC+HpeeW6pGFBa51rwbqwjqYkgJE1DEF5fSK5V2QbHi+XPIPucm6hrnaZjMlSYbe+4DaMN1XOKLqOJlzg==
"@webassemblyjs/ast@1.8.5":
version "1.8.5"
@ -5505,16 +5500,6 @@ ajv@6.12.6, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^5.1.0:
version "5.5.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
dependencies:
co "^4.6.0"
fast-deep-equal "^1.0.0"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
version "6.12.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
@ -6045,7 +6030,7 @@ aws-sign2@~0.7.0:
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.6.0, aws4@^1.8.0:
aws4@^1.8.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
@ -7420,13 +7405,13 @@ bump-file@1.0.0:
detect-indent "5.0.0"
semver "5.4.1"
bunyan@1.8.13:
version "1.8.13"
resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.13.tgz#dde6bacd9ebccaedb110f1319f88db3f415ccfeb"
integrity sha512-4zO4iMxZeCpf+95ERsr83nwQr11o1KY2FLhX4wZ6kPXieIVYL3k9eX+N6vbHhFEK5h5O/qCQpfXt7N9VBAIvCA==
bunyan@1.8.14:
version "1.8.14"
resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.14.tgz#3d8c1afea7de158a5238c7cb8a66ab6b38dd45b4"
integrity sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==
optionalDependencies:
dtrace-provider "~0.8"
moment "^2.10.6"
moment "^2.19.3"
mv "~2"
safe-json-stringify "~1"
@ -8248,7 +8233,7 @@ colors@^1.1.0, colors@^1.1.2, colors@^1.4.0:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.5, combined-stream@~1.0.6:
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@ -9588,10 +9573,10 @@ dateformat@^3.0.0:
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
dayjs@1.8.28:
version "1.8.28"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.28.tgz#37aa6201df483d089645cb6c8f6cef6f0c4dbc07"
integrity sha512-ccnYgKC0/hPSGXxj7Ju6AV/BP4HUkXC2u15mikXT5mX9YorEaoi1bEKOmAqdkJHN4EEkmAf97SpH66Try5Mbeg==
dayjs@1.9.6:
version "1.9.6"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70"
integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw==
de-indent@^1.0.2:
version "1.0.2"
@ -10548,10 +10533,10 @@ env-paths@^2.2.0:
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
envinfo@7.5.1:
version "7.5.1"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236"
integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==
envinfo@7.7.3:
version "7.7.3"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc"
integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==
err-code@^1.0.0:
version "1.1.2"
@ -11202,7 +11187,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
extend@^3.0.0, extend@~3.0.1, extend@~3.0.2:
extend@^3.0.0, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@ -11255,11 +11240,6 @@ extsprintf@^1.2.0:
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
fast-deep-equal@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
@ -11684,7 +11664,7 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
form-data@~2.3.1, form-data@~2.3.2:
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
@ -12372,14 +12352,6 @@ har-schema@^2.0.0:
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
har-validator@~5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=
dependencies:
ajv "^5.1.0"
har-schema "^2.0.0"
har-validator@~5.1.0, har-validator@~5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
@ -12762,14 +12734,14 @@ http-errors@1.7.2:
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-errors@1.7.3, http-errors@~1.7.2:
version "1.7.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
http-errors@1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==
dependencies:
depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.1.1"
setprototypeof "1.2.0"
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
@ -12783,6 +12755,17 @@ http-errors@~1.6.2:
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-errors@~1.7.2:
version "1.7.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
dependencies:
depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.1.1"
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-parser-js@>=0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77"
@ -14556,15 +14539,7 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
js-yaml@3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.9.0:
js-yaml@3.14.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.9.0:
version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
@ -14671,11 +14646,6 @@ json-parse-even-better-errors@^2.3.0:
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.0.tgz#371873c5ffa44304a6ba12419bcfa95f404ae081"
integrity sha512-o3aP+RsWDJZayj1SbHNQAI8x0v3T3SKiGoZlNYfbUP1S3omJQ6i9CnqADqkSPaOAxwua4/1YWx5CM7oiChJt2Q==
json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
@ -14951,10 +14921,10 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"
kleur@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.0.1.tgz#3d4948534b666e2578f93b6fafb62108e64f05ef"
integrity sha512-Qs6SqCLm63rd0kNVh+wO4XsWLU6kgfwwaPYsLiClWf0Tewkzsa6MvB21bespb8cz+ANS+2t3So1ge3gintzhlw==
kleur@4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.3.tgz#8d262a56d79a137ee1b706e967c0b08a7fef4f4c"
integrity sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw==
kleur@^3.0.3:
version "3.0.3"
@ -15480,16 +15450,16 @@ lodash@4.17.15:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
lodash@4.17.20, lodash@^4.17.20:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.5.0:
version "4.17.19"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
lodash@^4.17.20:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
log-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
@ -15781,15 +15751,15 @@ markdown-to-jsx@^6.11.4:
prop-types "^15.6.2"
unquote "^1.1.0"
marked@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e"
integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==
marked@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.1.tgz#e5d61b69842210d5df57b05856e0c91572703e6a"
integrity sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==
marked@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355"
integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==
marked@1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.5.tgz#a44b31f2a0b8b5bfd610f00d55d1952d1ac1dfdb"
integrity sha512-2AlqgYnVPOc9WDyWu7S5DJaEZsfk6dNh/neatQ3IHUW4QLutM/VPSH9lG7bif+XjFWc9K9XR3QvR+fXuECmfdA==
material-colors@^1.2.1:
version "1.2.6"
@ -16298,12 +16268,7 @@ modify-values@^1.0.0:
resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
moment@^2.10.6:
version "2.27.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
moment@^2.27.0:
moment@^2.19.3, moment@^2.27.0:
version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
@ -17002,11 +16967,6 @@ nwsapi@^2.2.0:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
oauth-sign@~0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
@ -18846,7 +18806,7 @@ qs@^6.4.0, qs@^6.6.0:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
qs@~6.5.1, qs@~6.5.2:
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
@ -19775,32 +19735,6 @@ request-promise-native@^1.0.8:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
request@2.87.0:
version "2.87.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.6.0"
caseless "~0.12.0"
combined-stream "~1.0.5"
extend "~3.0.1"
forever-agent "~0.6.1"
form-data "~2.3.1"
har-validator "~5.0.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.17"
oauth-sign "~0.8.2"
performance-now "^2.1.0"
qs "~6.5.1"
safe-buffer "^5.1.1"
tough-cookie "~2.3.3"
tunnel-agent "^0.6.0"
uuid "^3.1.0"
request@2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
@ -19827,7 +19761,7 @@ request@2.88.0:
tunnel-agent "^0.6.0"
uuid "^3.3.2"
request@^2.83.0, request@^2.87.0, request@^2.88.0, request@^2.88.2:
request@2.88.2, request@^2.83.0, request@^2.87.0, request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@ -20678,6 +20612,11 @@ setprototypeof@1.1.1:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@ -22199,13 +22138,6 @@ tough-cookie@^3.0.1:
psl "^1.1.28"
punycode "^2.1.1"
tough-cookie@~2.3.3:
version "2.3.4"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==
dependencies:
punycode "^1.4.1"
tough-cookie@~2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
@ -22949,63 +22881,63 @@ vendors@^1.0.0:
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
verdaccio-audit@9.6.1:
version "9.6.1"
resolved "https://registry.yarnpkg.com/verdaccio-audit/-/verdaccio-audit-9.6.1.tgz#aa18ffeb23923df56399ef3f0d7aa20ffb10e03e"
integrity sha512-dyYeGhg+HfLFgTMJEV7usJ46xQix9SU566XIi278IlYFmBkFe6SsmiZUHKaL3pbq8K9ESQYNCyYkZW29QMpcIg==
verdaccio-audit@9.7.3:
version "9.7.3"
resolved "https://registry.yarnpkg.com/verdaccio-audit/-/verdaccio-audit-9.7.3.tgz#a31d0c63e9c050a9575431a82fbbc56a25a249e5"
integrity sha512-FDWafgDjvnTbJapQpd0c41FjrecR+iRHrnDi2gkAn4IJpiLCgXC6R5NdkXjDIekKEsou9PyQTsEdoHK7iDx+tQ==
dependencies:
express "4.17.1"
request "2.88.0"
request "2.88.2"
verdaccio-htpasswd@9.6.1:
version "9.6.1"
resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-9.6.1.tgz#7c4d881c1c45d517f840d7333f1ef18a3bc8f066"
integrity sha512-UVUm3lt0JNJk02rKd2VBqpfVDwDlRfGyTQLwBuZfdnD/qmGrTzqKcnXAsG6zwlPo64Js5ZTvGi1/QeAgG4GjxA==
verdaccio-htpasswd@9.7.2:
version "9.7.2"
resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-9.7.2.tgz#ba14a29b65658b3f4c7e2042c3fcf20e697401a6"
integrity sha512-c7ZEb7wuce0+4h92w4f1ySMhsIWFs/mlsFjjoqIlY5SBskmQI5RHC7HQglVgFjOMxrWoaaadJ5WGmFV+A/yxPQ==
dependencies:
"@verdaccio/file-locking" "^9.6.1"
"@verdaccio/file-locking" "^9.7.2"
apache-md5 "1.1.2"
bcryptjs "2.4.3"
http-errors "1.7.3"
http-errors "1.8.0"
unix-crypt-td-js "1.1.4"
verdaccio@^4.4.2:
version "4.7.2"
resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.7.2.tgz#501212aa710560e1ff2bc538604a6b29b1bcbd04"
integrity sha512-qaxYkUTbtJMmBlK+UCRxeFKOunlt43CTfMddSph87qjWi7xJqeAosN5hC58j9YFKkUjbH5VfWiT/AkheDAvApg==
verdaccio@^4.10.0:
version "4.10.0"
resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.10.0.tgz#ca48c4b7a5bb967f0e2b5d38bab599a39cd0aaf1"
integrity sha512-9nCIHM9rvgwasBJvo82MiEDzS2HGWolopID8/THU0vZfa1d6MDAiuakjwQ9Z2xDonpoOoDji6xpg2i6il+gEWQ==
dependencies:
"@verdaccio/commons-api" "9.6.1"
"@verdaccio/local-storage" "9.7.0"
"@verdaccio/readme" "9.7.0"
"@verdaccio/streams" "9.6.1"
"@verdaccio/ui-theme" "1.11.0"
"@verdaccio/commons-api" "9.7.1"
"@verdaccio/local-storage" "9.7.4"
"@verdaccio/readme" "9.7.3"
"@verdaccio/streams" "9.7.2"
"@verdaccio/ui-theme" "1.14.0"
JSONStream "1.3.5"
async "3.2.0"
body-parser "1.19.0"
bunyan "1.8.13"
bunyan "1.8.14"
commander "3.0.2"
compression "1.7.4"
cookies "0.8.0"
cors "2.8.5"
dayjs "1.8.28"
envinfo "7.5.1"
dayjs "1.9.6"
envinfo "7.7.3"
express "4.17.1"
handlebars "4.7.6"
http-errors "1.7.3"
js-yaml "3.13.1"
http-errors "1.8.0"
js-yaml "3.14.0"
jsonwebtoken "8.5.1"
kleur "4.0.1"
lodash "4.17.15"
kleur "4.1.3"
lodash "4.17.20"
lunr-mutable-indexes "2.3.2"
marked "0.8.2"
marked "1.2.5"
mime "2.4.6"
minimatch "3.0.4"
mkdirp "0.5.5"
mv "2.1.1"
pkginfo "0.4.1"
request "2.87.0"
request "2.88.0"
semver "6.3.0"
verdaccio-audit "9.6.1"
verdaccio-htpasswd "9.6.1"
verdaccio-audit "9.7.3"
verdaccio-htpasswd "9.7.2"
verror@1.10.0:
version "1.10.0"