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 version: 2.1
# Variables
var_1: &working_directory ~/repo
executors: executors:
default: linux:
working_directory: ~/repo working_directory: *working_directory
environment:
# install Cypress in Linux-like cache folder
CYPRESS_CACHE_FOLDER: '~/.cache/Cypress'
docker: 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: commands:
install_rsync: setup:
description: 'Install Rsync' parameters:
os:
type: string
steps: steps:
- run: sudo apt install rsync - checkout
yarn_install: - restore_cache:
description: 'Install Dependencies' name: Restore Yarn Package Cache
steps: keys:
- run: yarn install --frozen-lockfile --non-interactive - nrwl-nx-yarn-packages-<< parameters.os >>-{{ checksum "yarn.lock" }}
- run: ./node_modules/.bin/cypress verify - run:
name: Install dependencies
command: yarn install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
- save_cache: - 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: paths:
- ~/.cache/yarn - ~/.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: 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: checks-and-unit-tests:
executor: default parameters:
os:
type: string
default: 'linux'
executor: << parameters.os >>
steps: steps:
- setup - setup:
- run: os: << parameters.os >>
name: Run Unit Tests
command: yarn test
- run: - run:
name: Check Documentation name: Check Documentation
command: yarn documentation command: yarn documentation
@ -97,99 +65,47 @@ jobs:
- run: - run:
name: Check Package dependencies name: Check Package dependencies
command: yarn depcheck command: yarn depcheck
e2e-1: e2e:
executor: default parameters:
os:
type: string
packages:
type: string
cli:
type: string
default: ''
executor: << parameters.os >>
steps: steps:
- setup - setup:
os: << parameters.os >>
- run: - run:
name: Tests Part 1 name: Run E2E tests - << parameters.packages >>
command: yarn e2e-ci 1 command: yarn e2e << parameters.packages >> affected
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
no_output_timeout: 30m no_output_timeout: 30m
environment:
SELECTED_CLI: << parameters.cli >>
workflows: workflows:
version: 2.1 build:
default_workflow:
jobs: jobs:
- install - checks-and-unit-tests
- checks-and-unit-tests: - e2e:
requires: matrix:
- install parameters:
- e2e-1: os: ['linux', 'windows']
requires: packages:
- install [
- e2e-2: 'e2e-workspace',
requires: 'e2e-cli,e2e-nx-plugin,dep-graph-client-e2e',
- install 'e2e-cypress,e2e-jest',
- e2e-3: 'e2e-react',
requires: 'e2e-next',
- install 'e2e-node',
- e2e-4: 'e2e-web,e2e-linter,e2e-storybook',
requires: ]
- install - e2e:
- e2e-5: matrix:
requires: parameters:
- install os: ['linux', 'windows']
- e2e-6: packages: ['e2e-angular']
requires: cli: 'angular'
- install
- e2e-7:
requires:
- install
- e2e-8:
requires:
- install

View File

@ -1,3 +1,4 @@
import * as path from 'path';
import { import {
checkFilesExist, checkFilesExist,
expectTestsPass, expectTestsPass,
@ -157,12 +158,14 @@ describe('Angular Package', () => {
const appLintStdOut = runCLI(`lint ${myapp}`, { silenceError: true }); 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( expect(appLintStdOut).toContain(
`1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box` `1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box`
); );
expect(appLintStdOut).toContain( expect(appLintStdOut).toContain(
`apps/${myapp}/src/app/inline-template.component.ts` path.normalize(`apps/${myapp}/src/app/inline-template.component.ts`)
); );
expect(appLintStdOut).toContain( 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` `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 }); const libLintStdOut = runCLI(`lint ${mylib}`, { silenceError: true });
expect(libLintStdOut).toContain( expect(libLintStdOut).toContain(
`libs/${mylib}/src/lib/some.component.html` path.normalize(`libs/${mylib}/src/lib/some.component.html`)
); );
expect(libLintStdOut).toContain( expect(libLintStdOut).toContain(
`1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box` `1:6 error Invalid binding syntax. Use [(expr)] instead @angular-eslint/template/banana-in-box`
); );
expect(libLintStdOut).toContain( expect(libLintStdOut).toContain(
`libs/${mylib}/src/lib/inline-template.component.ts` path.normalize(`libs/${mylib}/src/lib/inline-template.component.ts`)
); );
expect(libLintStdOut).toContain( 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` `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 { import {
checkFilesExist, checkFilesExist,
newProject, newProject,
@ -108,33 +109,46 @@ describe('Linter', () => {
); );
}, 1000000); }, 1000000);
it('linting should generate a default cache file', () => { describe('linting with --cache', () => {
newProject(); function readCacheFile(cacheFile = '.eslintcache') {
const myapp = uniq('myapp'); const cacheInfo = readFile(cacheFile);
return process.platform === 'win32'
? cacheInfo.replace(/\\\\/g, '\\')
: cacheInfo;
}
runCLI(`generate @nrwl/react:app ${myapp}`); it('should generate a default cache file', () => {
newProject();
const myapp = uniq('myapp');
expect(() => checkFilesExist(`.eslintcache`)).toThrow(); runCLI(`generate @nrwl/react:app ${myapp}`);
runCLI(`lint ${myapp} --cache`, { silenceError: true });
expect(() => checkFilesExist(`.eslintcache`)).not.toThrow();
const cacheInfo = readFile('.eslintcache');
expect(cacheInfo).toContain(`${myapp}/src/app/app.spec.tsx`);
}, 1000000);
it('linting should let you specify a cache file location', () => { expect(() => checkFilesExist(`.eslintcache`)).toThrow();
newProject(); runCLI(`lint ${myapp} --cache`, { silenceError: true });
const myapp = uniq('myapp'); expect(() => checkFilesExist(`.eslintcache`)).not.toThrow();
const cacheInfo = readCacheFile();
expect(cacheInfo).toContain(
path.normalize(`${myapp}/src/app/app.spec.tsx`)
);
}, 1000000);
runCLI(`generate @nrwl/react:app ${myapp}`); it('should let you specify a cache file location', () => {
newProject();
const myapp = uniq('myapp');
expect(() => checkFilesExist(`my-cache`)).toThrow(); runCLI(`generate @nrwl/react:app ${myapp}`);
runCLI(`lint ${myapp} --cache --cache-location="my-cache"`, {
silenceError: true, expect(() => checkFilesExist(`my-cache`)).toThrow();
}); runCLI(`lint ${myapp} --cache --cache-location="my-cache"`, {
expect(() => checkFilesExist(`my-cache`)).not.toThrow(); silenceError: true,
const cacheInfo = readFile('my-cache'); });
expect(cacheInfo).toContain(`${myapp}/src/app/app.spec.tsx`); expect(() => checkFilesExist(`my-cache`)).not.toThrow();
}, 1000000); 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', () => { it('linting should generate an output file with a specific format', () => {
newProject(); newProject();
@ -167,7 +181,7 @@ describe('Linter', () => {
const outputForApp: any = Object.values( const outputForApp: any = Object.values(
outputContents outputContents
).filter((result: any) => ).filter((result: any) =>
result.filePath.includes(`${myapp}/src/main.ts`) result.filePath.includes(path.normalize(`${myapp}/src/main.ts`))
)[0]; )[0];
expect(outputForApp.errorCount).toBe(1); expect(outputForApp.errorCount).toBe(1);
expect(outputForApp.messages[0].ruleId).toBe('no-console'); expect(outputForApp.messages[0].ruleId).toBe('no-console');

View File

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

View File

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

View File

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

View File

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

View File

@ -21,10 +21,13 @@ describe('Run Commands', () => {
'SHARED_VAR=shared-nested-value\nNESTED_ONLY=nested-only-value' '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`; const envFile = `apps/${nodeapp}/.custom.env`;
runCLI( 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'); const result = runCLI('echoEnvVariables');

View File

@ -1,9 +1,11 @@
import * as path from 'path';
import { import {
checkFilesExist, checkFilesExist,
exists, exists,
newProject, newProject,
readFile, readFile,
readJson, readJson,
renameFile,
runCLI, runCLI,
runCommand, runCommand,
tmpProjPath, tmpProjPath,
@ -87,9 +89,9 @@ describe('lint', () => {
const appAfter = uniq('after'); const appAfter = uniq('after');
runCLI(`generate @nrwl/angular:app ${appBefore}`); 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( expect(stdout).toContain(
`- Cannot find project '${appBefore}' in 'apps/${appBefore}'` `- Cannot find project '${appBefore}' in 'apps/${appBefore}'`
); );
@ -157,32 +159,50 @@ describe('format', () => {
let stdout = runCommand( let stdout = runCommand(
`npm run -s format:check -- --files="libs/${mylib}/index.ts,package.json" --libs-and-apps` `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(path.normalize(`libs/${mylib}/index.ts`));
expect(stdout).toContain(`libs/${mylib}/src/${mylib}.module.ts`); expect(stdout).toContain(
expect(stdout).not.toContain(`README.md`); // It will be contained only in case of exception, that we fallback to all 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`); stdout = runCommand(`npm run -s format:check -- --all`);
expect(stdout).toContain(`apps/${myapp}/src/main.ts`); expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`); expect(stdout).toContain(
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`); 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}`); stdout = runCommand(`npm run -s format:check -- --projects=${myapp}`);
expect(stdout).toContain(`apps/${myapp}/src/main.ts`); expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`); expect(stdout).toContain(
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`); path.normalize(`apps/${myapp}/src/app/app.module.ts`)
expect(stdout).not.toContain(`libs/${mylib}/index.ts`); );
expect(stdout).not.toContain(`libs/${mylib}/src/${mylib}.module.ts`); expect(stdout).toContain(
expect(stdout).not.toContain(`README.md`); 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( stdout = runCommand(
`npm run -s format:check -- --projects=${myapp},${mylib}` `npm run -s format:check -- --projects=${myapp},${mylib}`
); );
expect(stdout).toContain(`apps/${myapp}/src/main.ts`); expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).toContain(`apps/${myapp}/src/app/app.module.ts`); expect(stdout).toContain(
expect(stdout).toContain(`apps/${myapp}/src/app/app.component.ts`); path.normalize(`apps/${myapp}/src/app/app.module.ts`)
expect(stdout).toContain(`libs/${mylib}/index.ts`); );
expect(stdout).toContain(`libs/${mylib}/src/${mylib}.module.ts`); expect(stdout).toContain(
expect(stdout).not.toContain(`README.md`); 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( stdout = runCommand(
`npm run -s format:check -- --projects=${myapp},${mylib} --all` `npm run -s format:check -- --projects=${myapp},${mylib} --all`
@ -197,13 +217,17 @@ describe('format', () => {
stdout = runCommand('npm run -s format:check -- --all'); stdout = runCommand('npm run -s format:check -- --all');
expect(stdout).toContain(`apps/${myapp}/src/main.ts`); expect(stdout).toContain(path.normalize(`apps/${myapp}/src/main.ts`));
expect(stdout).not.toContain(`apps/${myapp}/src/app/app.module.ts`); expect(stdout).not.toContain(
expect(stdout).not.toContain(`apps/${myapp}/src/app/app.component.ts`); 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'); runCommand('npm run format:write -- --all');
expect(runCommand('npm run -s format:check -- --all')).not.toContain( 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 // configuration has to be valid for the initiating project
expect(() => runCLI(`build ${myapp} -c=invalid`)).toThrow(); expect(() => runCLI(`build ${myapp} -c=invalid`)).toThrow();
expect( expect(runCommand(`cd apps/${myapp}-e2e/src && npx nx lint`)).toContain(
runCommand( `nx run ${myapp}-e2e:lint`
`cd apps/${myapp}-e2e/src && ../../../node_modules/.bin/nx lint` );
)
).toContain(`nx run ${myapp}-e2e:lint`);
// configuration doesn't have to exists for deps (here only the app has production) // configuration doesn't have to exists for deps (here only the app has production)
const buildWithDeps = runCLI(`build ${myapp} --with-deps --prod`); const buildWithDeps = runCLI(`build ${myapp} --with-deps --prod`);

View File

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

View File

@ -1,7 +1,7 @@
import yargsParser = require('yargs-parser'); import yargsParser = require('yargs-parser');
function calculateDefaultProjectName(cwd: string, root: string, wc: any) { 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) { if (relativeCwd) {
relativeCwd = relativeCwd.startsWith('/') relativeCwd = relativeCwd.startsWith('/')
? relativeCwd.substring(1) ? 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`; const command = `new ${name} ${args} --collection=@nrwl/workspace`;
console.log(command); 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( 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], stdio: [0, 1, 2],
cwd: tmpDir, 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 { buildDevStandalone } from '@storybook/core/dist/server/build-dev';
import { NodeJsSyncHost } from '@angular-devkit/core/node';
import { getRoot } from '../../utils/root'; import { getRoot } from '../../utils/root';
export interface StorybookConfig extends JsonObject { export interface StorybookConfig extends JsonObject {
@ -31,7 +30,7 @@ export interface StorybookBuilderOptions extends JsonObject {
ssl?: boolean; ssl?: boolean;
sslCert?: string; sslCert?: string;
sslKey?: string; sslKey?: string;
staticDir?: number[]; staticDir?: string[];
watch?: boolean; watch?: boolean;
docsMode?: boolean; docsMode?: boolean;
} }

View File

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

View File

@ -85,7 +85,7 @@ export function splitArgsIntoNxArgsAndOverrides(
mode === 'run-one' ? runOne : mode === 'run-many' ? runMany : runAffected; mode === 'run-one' ? runOne : mode === 'run-many' ? runMany : runAffected;
const nxArgs: RawNxArgs = {}; const nxArgs: RawNxArgs = {};
const overrides = yargsParser(args._); const overrides = yargsParser(args._ as string[]);
delete overrides._; delete overrides._;
Object.entries(args).forEach(([key, value]) => { Object.entries(args).forEach(([key, value]) => {
@ -124,8 +124,8 @@ export function splitArgsIntoNxArgsAndOverrides(
!nxArgs.all && !nxArgs.all &&
args._.length >= 2 args._.length >= 2
) { ) {
nxArgs.base = args._[0]; nxArgs.base = args._[0] as string;
nxArgs.head = args._[1]; nxArgs.head = args._[1] as string;
} else if (!nxArgs.base) { } else if (!nxArgs.base) {
const affectedConfig = getAffectedConfig(); 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 result = await runMigration('add-cli-dependency', {}, tree);
const packageJson = readJsonInTree(result, 'package.json'); const packageJson = readJsonInTree(result, 'package.json');
expect(packageJson.devDependencies['@nrwl/cli']).toEqual(nxVersion); 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'; import { readdirSync } from 'fs';
const { promisify } = require('util'); import { ensureDirSync, removeSync } from 'fs-extra';
const { spawn, exec } = require('child_process');
const kill = require('tree-kill'); const kill = require('tree-kill');
import { build } from './package';
const asyncExec = promisify(exec);
let localRegistryProcess;
process.env.PUBLISHED_VERSION = `9999.0.2`; process.env.PUBLISHED_VERSION = `9999.0.2`;
process.env.npm_config_registry = `http://localhost:4872/`; process.env.npm_config_registry = `http://localhost:4872/`;
@ -16,50 +13,13 @@ export const getDirectories = (source) =>
.filter((dirent) => dirent.isDirectory()) .filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name); .map((dirent) => dirent.name);
async function spawnLocalRegistry() { function updateVersion(packagePath) {
localRegistryProcess = spawn('npx', [ return execSync(`npm version ${process.env.PUBLISHED_VERSION}`, {
'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}`, {
cwd: packagePath, cwd: packagePath,
}); });
} }
async function publishPackage(packagePath) { function publishPackage(packagePath) {
if (process.env.npm_config_registry.indexOf('http://localhost') === -1) { if (process.env.npm_config_registry.indexOf('http://localhost') === -1) {
throw Error(` throw Error(`
------------------ ------------------
@ -68,22 +28,18 @@ async function publishPackage(packagePath) {
`); `);
} }
try { try {
await asyncExec(`npm publish`, { execSync(`npm publish`, {
cwd: packagePath, cwd: packagePath,
env: process.env, env: process.env,
}); });
} catch (e) {} } catch (e) {}
} }
export async function setup() { export function setup() {
// @ts-ignore getDirectories('./build/packages').map((pkg) => {
await spawnLocalRegistry(); updateVersion(`./build/packages/${pkg}`);
await Promise.all( publishPackage(`./build/packages/${pkg}`);
getDirectories('./build/packages').map(async (pkg) => { });
await updateVersion(`./build/packages/${pkg}`);
return await publishPackage(`./build/packages/${pkg}`);
})
);
} }
async function runTest() { async function runTest() {
@ -111,36 +67,31 @@ async function runTest() {
.join(','); .join(',');
} }
execSync(`./scripts/package.sh 9999.0.2 "~10.0.0" "3.9.3" "2.0.4"`, { build(process.env.PUBLISHED_VERSION, '~10.0.0', '3.9.3', '2.1.2');
stdio: [0, 1, 2],
});
if (process.argv[5] != '--rerun') { if (process.argv[5] != '--rerun') {
execSync(`rm -rf tmp`); removeSync(`tmp`);
execSync(`mkdir -p tmp/angular`); ensureDirSync(`tmp/angular`);
execSync(`mkdir -p tmp/nx`); ensureDirSync(`tmp/nx`);
} }
try { try {
await setup(); setup();
if (selectedProjects === '') { if (selectedProjects === '') {
console.log('No tests to run'); console.log('No tests to run');
} else if (selectedProjects) { } else if (selectedProjects) {
execSync( 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], stdio: [0, 1, 2],
env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' }, env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' },
} }
); );
} else { } else {
execSync( execSync(`yarn nx run-many --target=e2e --all`, {
`node --max-old-space-size=4000 ./node_modules/.bin/nx run-many --target=e2e --all`, stdio: [0, 1, 2],
{ env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' },
stdio: [0, 1, 2], });
env: { ...process.env, NX_TERMINAL_CAPTURE_STDERR: 'true' },
}
);
} }
cleanUp(0); cleanUp(0);
} catch (e) { } catch (e) {
@ -156,18 +107,12 @@ function cleanUp(code) {
kill(0); kill(0);
} }
} catch (e) {} } catch (e) {}
try {
if (localRegistryProcess) localRegistryProcess.kill(0);
} catch (e) {}
// try killing everything after in case something hasn't terminated // try killing everything after in case something hasn't terminated
try { try {
if (!process.env.CI) { if (!process.env.CI) {
kill(0, 'SIGKILL'); kill(0, 'SIGKILL');
} }
} catch (e) {} } catch (e) {}
try {
if (localRegistryProcess) localRegistryProcess.kill(0, 'SIGKILL');
} catch (e) {}
process.exit(code); process.exit(code);
} }

View File

@ -35,4 +35,4 @@ packages:
# log settings # log settings
logs: 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": "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" "command": "node ./scripts/copy-readme.js tao"
@ -1421,7 +1421,7 @@
"command": "nx build-base create-nx-workspace" "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" "command": "node ./scripts/copy-readme.js create-nx-workspace"
@ -1507,7 +1507,7 @@
"command": "nx build-base create-nx-plugin" "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" "command": "node ./scripts/copy-readme.js create-nx-workspace"
@ -1593,7 +1593,7 @@
"command": "nx build-base cli" "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" "command": "node ./scripts/copy-readme.js cli"
@ -1684,7 +1684,7 @@
"command": "nx build-base angular" "command": "nx build-base angular"
}, },
{ {
"command": "./scripts/build-angular.sh" "command": "node ./scripts/build-angular"
}, },
{ {
"command": "node ./scripts/copy-readme.js angular" "command": "node ./scripts/copy-readme.js angular"

308
yarn.lock
View File

@ -4823,57 +4823,52 @@
"@typescript-eslint/types" "4.3.0" "@typescript-eslint/types" "4.3.0"
eslint-visitor-keys "^2.0.0" eslint-visitor-keys "^2.0.0"
"@verdaccio/commons-api@9.6.1", "@verdaccio/commons-api@^9.6.1": "@verdaccio/commons-api@9.7.1", "@verdaccio/commons-api@^9.7.1":
version "9.6.1" version "9.7.1"
resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-9.6.1.tgz#f62d1e0d7e55f19c483989f718ed2df2bf55ae3a" resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-9.7.1.tgz#816f08eb6cb0dbe345f2546428c837be6804796d"
integrity sha512-wGwDOxWkWjOcxCpwUvAqY+v24I9BRTB5L8xcbE+drpF4gL5q/wN+yzBgxCtkBh/nchOALxRC93JrE3IgVTu3iA== integrity sha512-s2uD3s325C0UsQ9uQTmf15dXFsGVo23IM6pSUTukCRuurCok89e/k1Adz2CaoXpEu1qpxQ6Sv0dcNpGl7Q7hwQ==
dependencies: dependencies:
http-errors "1.7.3" http-errors "1.8.0"
http-status-codes "1.4.0" http-status-codes "1.4.0"
"@verdaccio/file-locking@^9.6.1", "@verdaccio/file-locking@^9.7.0": "@verdaccio/file-locking@^9.7.2":
version "9.7.0" version "9.7.2"
resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-9.7.0.tgz#87de85a46992662fda8ef700e0967f787db9d7cd" resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-9.7.2.tgz#953367a42554ef7019fb4206c6e3af5e2dc217db"
integrity sha512-ytMAZtne0o8gBEmkKLHScA3NvvN9o+IGEhXQsa2G6ZsLKPKheE6bS4V8mD9h+C/qL1gHkaNdhIR4hd0SmabIxQ== integrity sha512-y9yLk8+9wdQH1bDyeR7Cu80dKQMiiva9ddNbXllV6h0uxaqVOxDyyE0OWdyvUy0xdA4lUD/y0DxHOInDOhdKaw==
dependencies: dependencies:
lockfile "1.0.4" lockfile "1.0.4"
"@verdaccio/local-storage@9.7.0": "@verdaccio/local-storage@9.7.4":
version "9.7.0" version "9.7.4"
resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.0.tgz#e79503c5334af8403c1222aa1d7e1ea2c377c75c" resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.4.tgz#3ffaa41fc850758296c9f243d765372a2e5e4ea2"
integrity sha512-3h8lCLIAjTWhEJm3o4258KP9XTxrlfNHMWGzHr3e/8HzSTB7pbEDvx+h9CXlj1ErHvb2fQb2k7mqnWYs4DHq/A== integrity sha512-Wj0mJ6FTLGma+nDxpAWJkg7yY0WLh0sUm94juqY9eyWSqOWdv1QvduE9lvl0vh890/QbrlqzxPqxTxeZwsndTA==
dependencies: dependencies:
"@verdaccio/commons-api" "^9.6.1" "@verdaccio/commons-api" "^9.7.1"
"@verdaccio/file-locking" "^9.7.0" "@verdaccio/file-locking" "^9.7.2"
"@verdaccio/streams" "^9.7.0" "@verdaccio/streams" "^9.7.2"
async "3.2.0" async "3.2.0"
level "5.0.1" level "5.0.1"
lodash "4.17.15" lodash "4.17.20"
mkdirp "0.5.5" mkdirp "0.5.5"
"@verdaccio/readme@9.7.0": "@verdaccio/readme@9.7.3":
version "9.7.0" version "9.7.3"
resolved "https://registry.yarnpkg.com/@verdaccio/readme/-/readme-9.7.0.tgz#5e6df8a6a4ab730f8f515ee7feba08bd4e48b235" resolved "https://registry.yarnpkg.com/@verdaccio/readme/-/readme-9.7.3.tgz#0d6e407883600c42e51f262971e7da8d525886e6"
integrity sha512-Q7dSqfIUR9EhLQ9dyYQMxY7SydgDYnlwMR6IXVek87Z38yxDi6v4r/hN+OEtndUCfcsvt/smBcw1DraXO2t0cQ== integrity sha512-86Zv46Qpcx0d0YRutFPhPH4OhGSljUJyhkxk3H/bCzzw8hGEvM1Du2y8kzfAS9qUsX8Qux97vfxxz6+RpBdU1w==
dependencies: dependencies:
dompurify "2.0.8" dompurify "2.0.8"
jsdom "15.2.1" jsdom "15.2.1"
marked "0.7.0" marked "1.1.1"
"@verdaccio/streams@9.6.1": "@verdaccio/streams@9.7.2", "@verdaccio/streams@^9.7.2":
version "9.6.1" version "9.7.2"
resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.6.1.tgz#2ab565743c093d7a2f8834c62f37dfc36f2a4d5b" resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.7.2.tgz#cd5448470d725e221629adb84c74af7dfd8c9678"
integrity sha512-P4DFWvB9BNCDAh/sYPr59JW8N9uxAtlIx0Xa0vobxy+4cvvmP9lrMbeK4liH5yKJmwKmiEIZ6SxfTKR/MqbOpw== integrity sha512-SoCG1btVFPxOcrs8w9wLJCfe8nfE6EaEXCXyRwGbh+Sr3NLEG0R8JOugGJbuSE+zIRuUs5JaUKjzSec+JKLvZw==
"@verdaccio/streams@^9.7.0": "@verdaccio/ui-theme@1.14.0":
version "9.7.0" version "1.14.0"
resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.7.0.tgz#21d35e1c60c5dee58e54878374d3d354f06ebcdb" resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-1.14.0.tgz#22b397f399bf1dfcc8e471d1895c3f74bd340691"
integrity sha512-h0GvmR1sjaH/H1MOBWJkmNSCuTI7cKYoyvWlP6S1gMEgfTnpwza9sW0F6RYttfYYzaDqyk6niVL6kDre2zVGEw== integrity sha512-vTzZYnC+HpeeW6pGFBa51rwbqwjqYkgJE1DEF5fSK5V2QbHi+XPIPucm6hrnaZjMlSYbe+4DaMN1XOKLqOJlzg==
"@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==
"@webassemblyjs/ast@1.8.5": "@webassemblyjs/ast@1.8.5":
version "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" json-schema-traverse "^0.4.1"
uri-js "^4.2.2" 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: ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
version "6.12.3" version "6.12.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" 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" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.6.0, aws4@^1.8.0: aws4@^1.8.0:
version "1.10.0" version "1.10.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
@ -7420,13 +7405,13 @@ bump-file@1.0.0:
detect-indent "5.0.0" detect-indent "5.0.0"
semver "5.4.1" semver "5.4.1"
bunyan@1.8.13: bunyan@1.8.14:
version "1.8.13" version "1.8.14"
resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.13.tgz#dde6bacd9ebccaedb110f1319f88db3f415ccfeb" resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.14.tgz#3d8c1afea7de158a5238c7cb8a66ab6b38dd45b4"
integrity sha512-4zO4iMxZeCpf+95ERsr83nwQr11o1KY2FLhX4wZ6kPXieIVYL3k9eX+N6vbHhFEK5h5O/qCQpfXt7N9VBAIvCA== integrity sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==
optionalDependencies: optionalDependencies:
dtrace-provider "~0.8" dtrace-provider "~0.8"
moment "^2.10.6" moment "^2.19.3"
mv "~2" mv "~2"
safe-json-stringify "~1" 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" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 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" version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 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" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
dayjs@1.8.28: dayjs@1.9.6:
version "1.8.28" version "1.9.6"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.28.tgz#37aa6201df483d089645cb6c8f6cef6f0c4dbc07" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70"
integrity sha512-ccnYgKC0/hPSGXxj7Ju6AV/BP4HUkXC2u15mikXT5mX9YorEaoi1bEKOmAqdkJHN4EEkmAf97SpH66Try5Mbeg== integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw==
de-indent@^1.0.2: de-indent@^1.0.2:
version "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" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
envinfo@7.5.1: envinfo@7.7.3:
version "7.5.1" version "7.7.3"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc"
integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==
err-code@^1.0.0: err-code@^1.0.0:
version "1.1.2" version "1.1.2"
@ -11202,7 +11187,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0" assign-symbols "^1.0.0"
is-extendable "^1.0.1" 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" version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 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" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 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: fast-deep-equal@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 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" combined-stream "^1.0.8"
mime-types "^2.1.12" mime-types "^2.1.12"
form-data@~2.3.1, form-data@~2.3.2: form-data@~2.3.2:
version "2.3.3" version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 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" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 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: har-validator@~5.1.0, har-validator@~5.1.3:
version "5.1.3" version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 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" statuses ">= 1.5.0 < 2"
toidentifier "1.0.0" toidentifier "1.0.0"
http-errors@1.7.3, http-errors@~1.7.2: http-errors@1.8.0:
version "1.7.3" version "1.8.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==
dependencies: dependencies:
depd "~1.1.2" depd "~1.1.2"
inherits "2.0.4" inherits "2.0.4"
setprototypeof "1.1.1" setprototypeof "1.2.0"
statuses ">= 1.5.0 < 2" statuses ">= 1.5.0 < 2"
toidentifier "1.0.0" toidentifier "1.0.0"
@ -12783,6 +12755,17 @@ http-errors@~1.6.2:
setprototypeof "1.1.0" setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2" 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: http-parser-js@>=0.5.1:
version "0.5.2" version "0.5.2"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" 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" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
js-yaml@3.13.1: js-yaml@3.14.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.9.0:
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:
version "3.14.0" version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 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" 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== 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: json-schema-traverse@^0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 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: optionalDependencies:
graceful-fs "^4.1.9" graceful-fs "^4.1.9"
kleur@4.0.1: kleur@4.1.3:
version "4.0.1" version "4.1.3"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.0.1.tgz#3d4948534b666e2578f93b6fafb62108e64f05ef" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.3.tgz#8d262a56d79a137ee1b706e967c0b08a7fef4f4c"
integrity sha512-Qs6SqCLm63rd0kNVh+wO4XsWLU6kgfwwaPYsLiClWf0Tewkzsa6MvB21bespb8cz+ANS+2t3So1ge3gintzhlw== integrity sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw==
kleur@^3.0.3: kleur@^3.0.3:
version "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" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 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: 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" version "4.17.19"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== 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: log-symbols@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" 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" prop-types "^15.6.2"
unquote "^1.1.0" unquote "^1.1.0"
marked@0.7.0: marked@1.1.1:
version "0.7.0" version "1.1.1"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.1.tgz#e5d61b69842210d5df57b05856e0c91572703e6a"
integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== integrity sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==
marked@0.8.2: marked@1.2.5:
version "0.8.2" version "1.2.5"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.5.tgz#a44b31f2a0b8b5bfd610f00d55d1952d1ac1dfdb"
integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw== integrity sha512-2AlqgYnVPOc9WDyWu7S5DJaEZsfk6dNh/neatQ3IHUW4QLutM/VPSH9lG7bif+XjFWc9K9XR3QvR+fXuECmfdA==
material-colors@^1.2.1: material-colors@^1.2.1:
version "1.2.6" 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" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
moment@^2.10.6: moment@^2.19.3, moment@^2.27.0:
version "2.27.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
moment@^2.27.0:
version "2.29.1" version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== 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" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 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: oauth-sign@~0.9.0:
version "0.9.0" version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 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" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
qs@~6.5.1, qs@~6.5.2: qs@~6.5.2:
version "6.5.2" version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
@ -19775,32 +19735,6 @@ request-promise-native@^1.0.8:
stealthy-require "^1.1.1" stealthy-require "^1.1.1"
tough-cookie "^2.3.3" 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: request@2.88.0:
version "2.88.0" version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 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" tunnel-agent "^0.6.0"
uuid "^3.3.2" 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" version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 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" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 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: sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11" version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 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" psl "^1.1.28"
punycode "^2.1.1" 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: tough-cookie@~2.4.3:
version "2.4.3" version "2.4.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 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" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
verdaccio-audit@9.6.1: verdaccio-audit@9.7.3:
version "9.6.1" version "9.7.3"
resolved "https://registry.yarnpkg.com/verdaccio-audit/-/verdaccio-audit-9.6.1.tgz#aa18ffeb23923df56399ef3f0d7aa20ffb10e03e" resolved "https://registry.yarnpkg.com/verdaccio-audit/-/verdaccio-audit-9.7.3.tgz#a31d0c63e9c050a9575431a82fbbc56a25a249e5"
integrity sha512-dyYeGhg+HfLFgTMJEV7usJ46xQix9SU566XIi278IlYFmBkFe6SsmiZUHKaL3pbq8K9ESQYNCyYkZW29QMpcIg== integrity sha512-FDWafgDjvnTbJapQpd0c41FjrecR+iRHrnDi2gkAn4IJpiLCgXC6R5NdkXjDIekKEsou9PyQTsEdoHK7iDx+tQ==
dependencies: dependencies:
express "4.17.1" express "4.17.1"
request "2.88.0" request "2.88.2"
verdaccio-htpasswd@9.6.1: verdaccio-htpasswd@9.7.2:
version "9.6.1" version "9.7.2"
resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-9.6.1.tgz#7c4d881c1c45d517f840d7333f1ef18a3bc8f066" resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-9.7.2.tgz#ba14a29b65658b3f4c7e2042c3fcf20e697401a6"
integrity sha512-UVUm3lt0JNJk02rKd2VBqpfVDwDlRfGyTQLwBuZfdnD/qmGrTzqKcnXAsG6zwlPo64Js5ZTvGi1/QeAgG4GjxA== integrity sha512-c7ZEb7wuce0+4h92w4f1ySMhsIWFs/mlsFjjoqIlY5SBskmQI5RHC7HQglVgFjOMxrWoaaadJ5WGmFV+A/yxPQ==
dependencies: dependencies:
"@verdaccio/file-locking" "^9.6.1" "@verdaccio/file-locking" "^9.7.2"
apache-md5 "1.1.2" apache-md5 "1.1.2"
bcryptjs "2.4.3" bcryptjs "2.4.3"
http-errors "1.7.3" http-errors "1.8.0"
unix-crypt-td-js "1.1.4" unix-crypt-td-js "1.1.4"
verdaccio@^4.4.2: verdaccio@^4.10.0:
version "4.7.2" version "4.10.0"
resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.7.2.tgz#501212aa710560e1ff2bc538604a6b29b1bcbd04" resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.10.0.tgz#ca48c4b7a5bb967f0e2b5d38bab599a39cd0aaf1"
integrity sha512-qaxYkUTbtJMmBlK+UCRxeFKOunlt43CTfMddSph87qjWi7xJqeAosN5hC58j9YFKkUjbH5VfWiT/AkheDAvApg== integrity sha512-9nCIHM9rvgwasBJvo82MiEDzS2HGWolopID8/THU0vZfa1d6MDAiuakjwQ9Z2xDonpoOoDji6xpg2i6il+gEWQ==
dependencies: dependencies:
"@verdaccio/commons-api" "9.6.1" "@verdaccio/commons-api" "9.7.1"
"@verdaccio/local-storage" "9.7.0" "@verdaccio/local-storage" "9.7.4"
"@verdaccio/readme" "9.7.0" "@verdaccio/readme" "9.7.3"
"@verdaccio/streams" "9.6.1" "@verdaccio/streams" "9.7.2"
"@verdaccio/ui-theme" "1.11.0" "@verdaccio/ui-theme" "1.14.0"
JSONStream "1.3.5" JSONStream "1.3.5"
async "3.2.0" async "3.2.0"
body-parser "1.19.0" body-parser "1.19.0"
bunyan "1.8.13" bunyan "1.8.14"
commander "3.0.2" commander "3.0.2"
compression "1.7.4" compression "1.7.4"
cookies "0.8.0" cookies "0.8.0"
cors "2.8.5" cors "2.8.5"
dayjs "1.8.28" dayjs "1.9.6"
envinfo "7.5.1" envinfo "7.7.3"
express "4.17.1" express "4.17.1"
handlebars "4.7.6" handlebars "4.7.6"
http-errors "1.7.3" http-errors "1.8.0"
js-yaml "3.13.1" js-yaml "3.14.0"
jsonwebtoken "8.5.1" jsonwebtoken "8.5.1"
kleur "4.0.1" kleur "4.1.3"
lodash "4.17.15" lodash "4.17.20"
lunr-mutable-indexes "2.3.2" lunr-mutable-indexes "2.3.2"
marked "0.8.2" marked "1.2.5"
mime "2.4.6" mime "2.4.6"
minimatch "3.0.4" minimatch "3.0.4"
mkdirp "0.5.5" mkdirp "0.5.5"
mv "2.1.1" mv "2.1.1"
pkginfo "0.4.1" pkginfo "0.4.1"
request "2.87.0" request "2.88.0"
semver "6.3.0" semver "6.3.0"
verdaccio-audit "9.6.1" verdaccio-audit "9.7.3"
verdaccio-htpasswd "9.6.1" verdaccio-htpasswd "9.7.2"
verror@1.10.0: verror@1.10.0:
version "1.10.0" version "1.10.0"