feat(repo): run E2E tests on Windows (cmd)
This commit is contained in:
parent
e22db55f15
commit
9abdb78a4a
@ -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'
|
||||
|
||||
@ -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`
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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')) {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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({
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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`)
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -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`);
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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
7
scripts/build-angular.js
Normal 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/');
|
||||
@ -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
3
scripts/chmod.js
Normal file
@ -0,0 +1,3 @@
|
||||
const shell = require('shelljs');
|
||||
|
||||
shell.chmod('+x', process.argv[2]);
|
||||
@ -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
|
||||
@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
export SELECTED_CLI=$SELECTED_CLI
|
||||
ts-node --project scripts/tsconfig.e2e.json ./scripts/e2e.ts "$@"
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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
73
scripts/package.ts
Normal 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);
|
||||
});
|
||||
}
|
||||
@ -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
308
yarn.lock
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user