diff --git a/.circleci/config.yml b/.circleci/config.yml index 4735d8ef69..33cf1dc306 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -114,7 +114,7 @@ jobs: - setup - run: name: Tests Part 3 - command: yarn e2e-ci 3 + command: NX_VERBOSE_LOGGING=true yarn e2e-ci 3 no_output_timeout: 30m e2e-4: executor: default diff --git a/.prettierignore b/.prettierignore index 9d291e1369..83c42e7885 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,6 +5,7 @@ node_modules /package.json packages/workspace/src/schematics/**/files/**/*.json packages/workspace/src/core/dep-graph/vendor.js +packages/angular/src/schematics/**/files/**/*.json packages/web/src/schematics/**/files/**/*.json packages/node/src/schematics/**/files/**/*.json packages/express/src/schematics/**/files/**/*.json diff --git a/docs/angular/api-nest/schematics/library.md b/docs/angular/api-nest/schematics/library.md index a53e74fd97..924847ac7e 100644 --- a/docs/angular/api-nest/schematics/library.md +++ b/docs/angular/api-nest/schematics/library.md @@ -106,7 +106,7 @@ Default: `false` Type: `boolean` -Do not update tsconfig.json for development experience. +Do not update tsconfig.base.json for development experience. ### tags diff --git a/docs/angular/api-node/schematics/library.md b/docs/angular/api-node/schematics/library.md index c824013d47..9d77a1864e 100644 --- a/docs/angular/api-node/schematics/library.md +++ b/docs/angular/api-node/schematics/library.md @@ -82,7 +82,7 @@ Default: `false` Type: `boolean` -Do not update tsconfig.json for development experience. +Do not update tsconfig.base.json for development experience. ### tags diff --git a/docs/react/api-nest/schematics/library.md b/docs/react/api-nest/schematics/library.md index 9a8fc901ae..5aa7dc9b70 100644 --- a/docs/react/api-nest/schematics/library.md +++ b/docs/react/api-nest/schematics/library.md @@ -106,7 +106,7 @@ Default: `false` Type: `boolean` -Do not update tsconfig.json for development experience. +Do not update tsconfig.base.json for development experience. ### tags diff --git a/docs/react/api-node/schematics/library.md b/docs/react/api-node/schematics/library.md index 872347d46c..c6e7f085f7 100644 --- a/docs/react/api-node/schematics/library.md +++ b/docs/react/api-node/schematics/library.md @@ -82,7 +82,7 @@ Default: `false` Type: `boolean` -Do not update tsconfig.json for development experience. +Do not update tsconfig.base.json for development experience. ### tags diff --git a/e2e/angular/src/angular-package.test.ts b/e2e/angular/src/angular-package.test.ts index 187676b0ad..bccdaa203a 100644 --- a/e2e/angular/src/angular-package.test.ts +++ b/e2e/angular/src/angular-package.test.ts @@ -71,7 +71,7 @@ forEachCli('angular', (cli) => { `export * from './public_api';` ); - updateFile(`tsconfig.json`, (s) => { + updateFile(`tsconfig.base.json`, (s) => { return s.replace( `"@proj/${childLib}": ["libs/${childLib}/src/index.ts"],`, `"@proj/${childLib}": ["libs/${childLib}/src/index.ts"], @@ -139,13 +139,13 @@ forEachCli('angular', (cli) => { const jsonFile = readJson(`dist/libs/${parentLib}/package.json`); expect(jsonFile.dependencies).toEqual({ - tslib: '^1.10.0', + tslib: '^2.0.0', [`@proj/${childLib}`]: '0.0.1', [`@proj/${childLib2}`]: '0.0.1', }); expect(jsonFile.peerDependencies).toEqual({ - '@angular/common': '^9.1.0', - '@angular/core': '^9.1.0', + '@angular/common': '^10.0.2', + '@angular/core': '^10.0.2', }); }); }); diff --git a/e2e/angular/src/angular.test.ts b/e2e/angular/src/angular.test.ts index b048e41c0b..15460a1b63 100644 --- a/e2e/angular/src/angular.test.ts +++ b/e2e/angular/src/angular.test.ts @@ -50,27 +50,18 @@ forEachCli(() => { ); runCLI(`build my-dir-${myapp} --prod --output-hashing none`); - checkFilesExist( - `dist/apps/my-dir/${myapp}/main-es2015.js`, - `dist/apps/my-dir/${myapp}/main-es5.js` - ); + checkFilesExist(`dist/apps/my-dir/${myapp}/main.js`); // This is a loose requirement because there are a lot of // influences external from this project that affect this. const es2015BundleSize = getSize( - tmpProjPath(`dist/apps/my-dir/${myapp}/main-es2015.js`) + tmpProjPath(`dist/apps/my-dir/${myapp}/main.js`) ); console.log( `The current es2015 bundle size is ${es2015BundleSize / 1000} KB` ); expect(es2015BundleSize).toBeLessThanOrEqual(125000); - const es5BundleSize = getSize( - tmpProjPath(`dist/apps/my-dir/${myapp}/main-es5.js`) - ); - console.log(`The current es5 bundle size is ${es5BundleSize / 1000} KB`); - expect(es5BundleSize).toBeLessThanOrEqual(150000); - // running tests for the app expectTestsPass(await runCLIAsync(`test my-dir-${myapp} --no-watch`)); diff --git a/e2e/angular/src/angularjs.test.ts b/e2e/angular/src/angularjs.test.ts new file mode 100644 index 0000000000..8b50702e8e --- /dev/null +++ b/e2e/angular/src/angularjs.test.ts @@ -0,0 +1,83 @@ +import { + ensureProject, + runCLI, + uniq, + updateFile, + forEachCli, + patchKarmaToWorkOnWSL, + runCommand, +} from '@nrwl/e2e/utils'; + +forEachCli('angular', () => { + // TODO: This test is super flaky, investigate and re-enable. + describe('AngularJS Schematics', () => { + beforeEach(() => { + ensureProject(); + }); + + describe('DowngradeModule', () => { + it('should generate a downgradeModule setup', async () => { + const myapp = uniq('myapp'); + runCLI(`generate @nrwl/angular:app ${myapp} --unit-test-runner=karma`); + patchKarmaToWorkOnWSL(); + + updateFile( + `apps/${myapp}/src/legacy.js`, + `window.angular.module('legacy', []);` + ); + + runCLI( + `generate @nrwl/angular:downgrade-module legacy --angularJsImport=./legacy --project=${myapp}` + ); + + runCommand('yarn postinstall'); + + runCLI(`build ${myapp}`); + expect(runCLI(`test ${myapp} --no-watch`)).toContain('3 SUCCESS'); + }, 1000000); + }); + + describe('UpgradeModule', () => { + it('should generate an UpgradeModule setup', async () => { + const myapp = uniq('myapp'); + runCLI(`generate @nrwl/angular:app ${myapp} --unit-test-runner=karma`); + patchKarmaToWorkOnWSL(); + + updateFile( + `apps/${myapp}/src/legacy.js`, + ` + const angular = window.angular.module('legacy', []); + angular.component('proj-root-legacy', { + template: 'Expected Value' + }); + ` + ); + + updateFile( + `apps/${myapp}/src/app/app.component.html`, + ` + EXPECTED [] + ` + ); + + updateFile(`apps/${myapp}/src/app/app.component.spec.ts`, ``); + + runCLI( + 'generate @nrwl/angular:upgrade-module legacy --angularJsImport=./legacy ' + + `--angularJsCmpSelector=proj-root-legacy --project=${myapp}` + ); + + runCommand('yarn postinstall'); + + runCLI(`build ${myapp}`); + expect(runCLI(`test ${myapp} --no-watch`)).toContain('1 SUCCESS'); + }, 1000000); + }); + }); +}); + +forEachCli('nx', () => { + describe('DowngradeModule', () => { + it('not supported', async () => {}, 1000000); + }); +}); diff --git a/e2e/angular/src/downgrade-module.test.ts b/e2e/angular/src/downgrade-module.test.ts deleted file mode 100644 index 33af9eb858..0000000000 --- a/e2e/angular/src/downgrade-module.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - ensureProject, - runCLI, - uniq, - updateFile, - forEachCli, - supportUi, - patchKarmaToWorkOnWSL, -} from '@nrwl/e2e/utils'; - -forEachCli('angular', () => { - describe('DowngradeModule', () => { - it('should generate a downgradeModule setup', async () => { - ensureProject(); - - const myapp = uniq('myapp'); - runCLI(`generate @nrwl/angular:app ${myapp} --unit-test-runner=karma`); - patchKarmaToWorkOnWSL(); - - updateFile( - `apps/${myapp}/src/legacy.js`, - `window.angular.module('legacy', []);` - ); - - runCLI( - `generate @nrwl/angular:downgrade-module legacy --angularJsImport=./legacy --project=${myapp}` - ); - - runCLI(`build ${myapp}`); - expect(runCLI(`test ${myapp} --no-watch`)).toContain('3 SUCCESS'); - }, 1000000); - }); -}); - -forEachCli('nx', () => { - describe('DowngradeModule', () => { - it('not supported', async () => {}, 1000000); - }); -}); diff --git a/e2e/angular/src/karma.test.ts b/e2e/angular/src/karma.test.ts index 181f470ace..755d1f856d 100644 --- a/e2e/angular/src/karma.test.ts +++ b/e2e/angular/src/karma.test.ts @@ -8,7 +8,8 @@ import { } from '@nrwl/e2e/utils'; forEachCli(() => { - describe('Karma', () => { + // TODO: This test is super flaky, investigate and re-enable. + xdescribe('Karma', () => { it('should be able to generate a testable library using karma', async (done) => { ensureProject(); @@ -32,24 +33,14 @@ forEachCli(() => { const karmaResult = await runCLIAsync(`test ${mylib}`); expect(karmaResult.stdout).toContain('3 SUCCESS'); - done(); - }, 45000); - - it('should be able to generate a testable application using karma', async (done) => { - ensureProject(); - const myapp = uniq('myapp'); - runCLI( - `generate @nrwl/angular:app ${myapp} --unit-test-runner karma --no-interactive` - ); - patchKarmaToWorkOnWSL(); - await Promise.all([ runCLIAsync(`generate @nrwl/angular:service test --project ${myapp}`), runCLIAsync(`generate @nrwl/angular:component test --project ${myapp}`), ]); - const karmaResult = await runCLIAsync(`test ${myapp}`); - expect(karmaResult.stdout).toContain('5 SUCCESS'); + const karmaResult2 = await runCLIAsync(`test ${myapp}`); + expect(karmaResult2.stdout).toContain('5 SUCCESS'); + done(); - }, 30000); + }, 60000); }); }); diff --git a/e2e/angular/src/ng-add.test.ts b/e2e/angular/src/ng-add.test.ts index a387bb9fe0..e5e682c1cd 100644 --- a/e2e/angular/src/ng-add.test.ts +++ b/e2e/angular/src/ng-add.test.ts @@ -28,7 +28,7 @@ forEachCli('angular', () => { ).not.toBeDefined(); // update tsconfig.json - const tsconfigJson = readJson('tsconfig.json'); + const tsconfigJson = readJson('tsconfig.base.json'); tsconfigJson.compilerOptions.paths = { a: ['b'] }; updateFile('tsconfig.json', JSON.stringify(tsconfigJson, null, 2)); @@ -103,7 +103,7 @@ forEachCli('angular', () => { 'angular.json': '*', 'package.json': '*', 'tslint.json': '*', - 'tsconfig.json': '*', + 'tsconfig.base.json': '*', 'nx.json': '*', }, projects: { diff --git a/e2e/angular/src/ngrx.test.ts b/e2e/angular/src/ngrx.test.ts index 57be4b12c3..72a27f0ead 100644 --- a/e2e/angular/src/ngrx.test.ts +++ b/e2e/angular/src/ngrx.test.ts @@ -33,12 +33,7 @@ forEachCli(() => { `generate @nrwl/angular:ngrx flights --module=libs/${mylib}/src/lib/${mylib}.module.ts --facade --syntax=classes` ); - expect(runCLI(`build ${myapp}`)).toContain( - 'chunk {main} main-es2015.js,' - ); - expect(runCLI(`build ${myapp}`)).toContain( - 'ES5 bundle generation complete' - ); + expect(runCLI(`build ${myapp}`)).toContain('chunk {main} main.js,'); expectTestsPass(await runCLIAsync(`test ${myapp} --no-watch`)); expectTestsPass(await runCLIAsync(`test ${mylib} --no-watch`)); }, 1000000); @@ -70,12 +65,7 @@ forEachCli(() => { `generate @nrwl/angular:ngrx flights --module=libs/${mylib}/src/lib/${mylib}.module.ts ${flags}` ); - expect(runCLI(`build ${myapp}`)).toContain( - 'chunk {main} main-es2015.js,' - ); - expect(runCLI(`build ${myapp}`)).toContain( - 'ES5 bundle generation complete' - ); + expect(runCLI(`build ${myapp}`)).toContain('chunk {main} main.js,'); expectTestsPass(await runCLIAsync(`test ${myapp} --no-watch`)); expectTestsPass(await runCLIAsync(`test ${mylib} --no-watch`)); }, 1000000); diff --git a/e2e/angular/src/upgrade-module.test.ts b/e2e/angular/src/upgrade-module.test.ts deleted file mode 100644 index 961c751d17..0000000000 --- a/e2e/angular/src/upgrade-module.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { - ensureProject, - runCLI, - uniq, - updateFile, - forEachCli, - supportUi, - patchKarmaToWorkOnWSL, -} from '@nrwl/e2e/utils'; - -forEachCli('angular', () => { - describe('Upgrade', () => { - it('should generate an UpgradeModule setup', async () => { - ensureProject(); - const myapp = uniq('myapp'); - runCLI(`generate @nrwl/angular:app ${myapp} --unit-test-runner=karma`); - patchKarmaToWorkOnWSL(); - - updateFile( - `apps/${myapp}/src/legacy.js`, - ` - const angular = window.angular.module('legacy', []); - angular.component('proj-root-legacy', { - template: 'Expected Value' - }); - ` - ); - - updateFile( - `apps/${myapp}/src/app/app.component.html`, - ` - EXPECTED [] - ` - ); - - updateFile(`apps/${myapp}/src/app/app.component.spec.ts`, ``); - - runCLI( - 'generate @nrwl/angular:upgrade-module legacy --angularJsImport=./legacy ' + - `--angularJsCmpSelector=proj-root-legacy --project=${myapp}` - ); - - runCLI(`build ${myapp}`); - expect(runCLI(`test ${myapp} --no-watch`)).toContain('1 SUCCESS'); - }, 1000000); - }); -}); - -forEachCli('nx', () => { - describe('Upgrade', () => { - it('not supported', async () => {}, 1000000); - }); -}); diff --git a/e2e/node/src/node.test.ts b/e2e/node/src/node.test.ts index 499058e30f..cc0267ef22 100644 --- a/e2e/node/src/node.test.ts +++ b/e2e/node/src/node.test.ts @@ -455,7 +455,7 @@ forEachCli((currentCLIName) => { ); // we are setting paths to {} to make sure built libs are read from dist - updateFile('tsconfig.json', (c) => { + updateFile('tsconfig.base.json', (c) => { const json = JSON.parse(c); json.compilerOptions.paths = {}; return JSON.stringify(json, null, 2); diff --git a/e2e/react/src/react-package.test.ts b/e2e/react/src/react-package.test.ts index b07548902f..cff874d69d 100644 --- a/e2e/react/src/react-package.test.ts +++ b/e2e/react/src/react-package.test.ts @@ -67,7 +67,7 @@ forEachCli('nx', (cli) => { ); // we are setting paths to {} to make sure built libs are read from dist - updateFile('tsconfig.json', (c) => { + updateFile('tsconfig.base.json', (c) => { const json = JSON.parse(c); json.compilerOptions.paths = {}; return JSON.stringify(json, null, 2); diff --git a/e2e/utils/index.ts b/e2e/utils/index.ts index 669d0fa4f0..7edc85627a 100644 --- a/e2e/utils/index.ts +++ b/e2e/utils/index.ts @@ -93,10 +93,10 @@ export function runCreateWorkspace( ) { let command = `npx create-nx-workspace@${process.env.PUBLISHED_VERSION} ${name} --cli=${cli} --preset=${preset} --no-nxCloud --no-interactive`; if (appName) { - command += ` --appName ${appName}`; + command += ` --appName=${appName}`; } if (style) { - command += ` --style ${style}`; + command += ` --style=${style}`; } if (base) { diff --git a/e2e/workspace/src/workspace-aux-commands.test.ts b/e2e/workspace/src/workspace-aux-commands.test.ts index a69503f8c0..7b7010984b 100644 --- a/e2e/workspace/src/workspace-aux-commands.test.ts +++ b/e2e/workspace/src/workspace-aux-commands.test.ts @@ -43,7 +43,7 @@ forEachCli((cli) => { ]; updateFile('tslint.json', JSON.stringify(tslint, null, 2)); - const tsConfig = readJson('tsconfig.json'); + const tsConfig = readJson('tsconfig.base.json'); /** * apps do not add themselves to the tsconfig file. @@ -57,7 +57,7 @@ forEachCli((cli) => { tsConfig.compilerOptions.paths[`@secondScope/${lazylib}`] = tsConfig.compilerOptions.paths[`@proj/${lazylib}`]; delete tsConfig.compilerOptions.paths[`@proj/${lazylib}`]; - updateFile('tsconfig.json', JSON.stringify(tsConfig, null, 2)); + updateFile('tsconfig.base.json', JSON.stringify(tsConfig, null, 2)); updateFile( `apps/${myapp}/src/main.ts`, @@ -103,7 +103,7 @@ forEachCli((cli) => { expect(stdout).toContain( 'The following file(s) do not belong to any projects:' ); - expect(stdout).toContain(`- apps/${appAfter}/browserslist`); + expect(stdout).toContain(`- apps/${appAfter}/jest.config.js`); expect(stdout).toContain( `- apps/${appAfter}/src/app/app.component.css` ); @@ -225,7 +225,7 @@ forEachCli((cli) => { expect(exists(`libs/dir/${workspace}/src/index.ts`)).toEqual(false); expect(dryRunOutput).toContain(`UPDATE ${workspaceConfigName()}`); expect(dryRunOutput).toContain('UPDATE nx.json'); - expect(dryRunOutput).not.toContain('UPDATE tsconfig.json'); + expect(dryRunOutput).not.toContain('UPDATE tsconfig.base.json'); const output = runCommand( `npm run workspace-schematic ${custom} ${workspace} -- --no-interactive --directory=dir` @@ -407,7 +407,7 @@ forEachCli((cli) => { // just check the output expect(moveOutput).toContain(`DELETE apps/${app1}`); - expect(moveOutput).toContain(`CREATE apps/${newPath}/browserslist`); + expect(moveOutput).toContain(`CREATE apps/${newPath}/.browserslistrc`); expect(moveOutput).toContain(`CREATE apps/${newPath}/jest.config.js`); expect(moveOutput).toContain( `CREATE apps/${newPath}/tsconfig.app.json` @@ -599,8 +599,6 @@ forEachCli((cli) => { const tsConfigPath = `${newPath}/tsconfig.json`; expect(moveOutput).toContain(`CREATE ${tsConfigPath}`); checkFilesExist(tsConfigPath); - const tsConfig = readJson(tsConfigPath); - expect(tsConfig.extends).toEqual('../../../../tsconfig.json'); const tsConfigLibPath = `${newPath}/tsconfig.lib.json`; expect(moveOutput).toContain(`CREATE ${tsConfigLibPath}`); @@ -636,8 +634,8 @@ forEachCli((cli) => { `shared-${lib1}-data-access`, ]); - expect(moveOutput).toContain('UPDATE tsconfig.json'); - const rootTsConfig = readJson('tsconfig.json'); + expect(moveOutput).toContain('UPDATE tsconfig.base.json'); + const rootTsConfig = readJson('tsconfig.base.json'); expect( rootTsConfig.compilerOptions.paths[`@proj/${lib1}/data-access`] ).toBeUndefined(); diff --git a/e2e/workspace/src/workspace.test.ts b/e2e/workspace/src/workspace.test.ts index b1157bfbbf..06fc3fb259 100644 --- a/e2e/workspace/src/workspace.test.ts +++ b/e2e/workspace/src/workspace.test.ts @@ -244,7 +244,7 @@ forEachCli((cliName) => { expect(affectedApps).not.toContain(`${myapp}-e2e`); const implicitlyAffectedApps = runCommand( - 'npm run affected:apps -- --files="tsconfig.json"' + 'npm run affected:apps -- --files="tsconfig.base.json"' ); expect(implicitlyAffectedApps).toContain(myapp); expect(implicitlyAffectedApps).toContain(myapp2); diff --git a/package.json b/package.json index ee84d7e060..b8a24c97bb 100644 --- a/package.json +++ b/package.json @@ -22,24 +22,24 @@ "submit-plugin": "node ./scripts/submit-plugin.js" }, "devDependencies": { - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/build-angular": "~0.901.0", - "@angular-devkit/build-ng-packagr": "~0.901.0", - "@angular-devkit/build-optimizer": "~0.901.0", - "@angular-devkit/build-webpack": "~0.901.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", - "@angular/cli": "9.1.0", - "@angular/common": "^9.1.0", - "@angular/compiler": "^9.1.0", - "@angular/compiler-cli": "^9.1.0", - "@angular/core": "^9.1.0", - "@angular/forms": "^9.1.0", - "@angular/platform-browser": "^9.1.0", - "@angular/platform-browser-dynamic": "^9.1.0", - "@angular/router": "^9.1.0", - "@angular/service-worker": "^9.1.0", - "@angular/upgrade": "^9.1.0", + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/build-angular": "~0.1000.0", + "@angular-devkit/build-ng-packagr": "~0.1000.0", + "@angular-devkit/build-optimizer": "~0.1000.0", + "@angular-devkit/build-webpack": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", + "@angular/cli": "~10.0.0", + "@angular/common": "^10.0.0", + "@angular/compiler": "^10.0.0", + "@angular/compiler-cli": "^10.0.0", + "@angular/core": "^10.0.0", + "@angular/forms": "^10.0.0", + "@angular/platform-browser": "^10.0.0", + "@angular/platform-browser-dynamic": "^10.0.0", + "@angular/router": "^10.0.0", + "@angular/service-worker": "^10.0.0", + "@angular/upgrade": "^10.0.0", "@babel/core": "7.9.6", "@babel/plugin-proposal-class-properties": "7.8.3", "@babel/plugin-proposal-decorators": "7.8.3", @@ -61,7 +61,7 @@ "@ngrx/schematics": "9.1.0", "@ngrx/store": "9.1.0", "@ngrx/store-devtools": "9.1.0", - "@ngtools/webpack": "~9.1.0", + "@ngtools/webpack": "~10.0.0", "@nrwl/eslint-plugin-nx": "9.4.4", "@nrwl/jest": "9.4.4", "@nrwl/node": "9.4.4", @@ -71,7 +71,7 @@ "@rollup/plugin-commonjs": "11.0.2", "@rollup/plugin-image": "2.0.4", "@rollup/plugin-node-resolve": "7.1.1", - "@schematics/angular": "~9.1.0", + "@schematics/angular": "~10.0.0", "@storybook/addon-knobs": "5.3.9", "@storybook/angular": "5.3.9", "@storybook/core": "5.3.9", @@ -198,7 +198,7 @@ "rollup-plugin-peer-deps-external": "2.2.2", "rollup-plugin-postcss": "2.1.1", "rollup-plugin-typescript2": "0.26.0", - "rxjs": "6.5.4", + "rxjs": "6.5.5", "sass": "1.26.3", "sass-loader": "8.0.2", "semver": "6.3.0", @@ -224,7 +224,7 @@ "tsickle": "^0.38.1", "tslib": "^1.9.3", "tslint": "6.0.0", - "typescript": "~3.8.3", + "typescript": "~3.9.3", "url-loader": "^3.0.0", "verdaccio": "^4.4.2", "webpack": "4.42.0", diff --git a/packages/angular/migrations.json b/packages/angular/migrations.json index b5e65a2444..67f204ce0e 100644 --- a/packages/angular/migrations.json +++ b/packages/angular/migrations.json @@ -25,6 +25,22 @@ "version": "9.0.0-beta.1", "description": "Upgrades Angular and Angular CLI to 9.0.0", "factory": "./src/migrations/update-9-0-0/update-9-0-0" + }, + "update-10-0-0": { + "version": "10.0.0-beta.1", + "description": "Upgrades Angular and Angular CLI to 10.0.0", + "factory": "./src/migrations/update-10-0-0/update-10-0-0" + } + }, + "packageJsonUpdates": { + "10.0.0": { + "version": "10.0.0-beta.0", + "packages": { + "rxjs": { + "version": "~6.5.5", + "alwaysAddToPackageJson": false + } + } } } } diff --git a/packages/angular/package.json b/packages/angular/package.json index d870772dba..45dad079e4 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -38,8 +38,8 @@ "dependencies": { "@nrwl/cypress": "*", "@nrwl/jest": "*", - "@angular-devkit/schematics": "~9.1.0", - "@schematics/angular": "~9.1.0", + "@angular-devkit/schematics": "~10.0.0", + "@schematics/angular": "~10.0.0", "jasmine-marbles": "~0.6.0" } } diff --git a/packages/angular/src/migrations/update-10-0-0/update-10-0-0.ts b/packages/angular/src/migrations/update-10-0-0/update-10-0-0.ts new file mode 100644 index 0000000000..2d3cc98920 --- /dev/null +++ b/packages/angular/src/migrations/update-10-0-0/update-10-0-0.ts @@ -0,0 +1,19 @@ +import { chain } from '@angular-devkit/schematics'; +import { + addUpdateTask, + formatFiles, + updatePackagesInPackageJson, +} from '@nrwl/workspace'; +import { join } from 'path'; + +export default function () { + return chain([ + addUpdateTask('@angular/core', '10.0.0'), + addUpdateTask('@angular/cli', '10.0.0'), + updatePackagesInPackageJson( + join(__dirname, '../../../migrations.json'), + '10.0.0' + ), + formatFiles(), + ]); +} diff --git a/packages/angular/src/schematics/application/application.spec.ts b/packages/angular/src/schematics/application/application.spec.ts index 0305a42c31..8391de6821 100644 --- a/packages/angular/src/schematics/application/application.spec.ts +++ b/packages/angular/src/schematics/application/application.spec.ts @@ -65,8 +65,12 @@ describe('app', () => { ).toContain('class AppModule'); const tsconfig = readJsonInTree(tree, 'apps/my-app/tsconfig.json'); - expect(tsconfig.extends).toEqual('../../tsconfig.json'); - expect(tsconfig.compilerOptions.types).toContain('jest'); + expect(tsconfig.references).toContainEqual({ + path: './tsconfig.app.json', + }); + expect(tsconfig.references).toContainEqual({ + path: './tsconfig.spec.json', + }); const tsconfigApp = JSON.parse( stripJsonComments(getFileContent(tree, 'apps/my-app/tsconfig.app.json')) @@ -229,26 +233,11 @@ describe('app', () => { // Make sure these have properties [ - { - path: 'apps/my-dir/my-app/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-app/tsconfig.app.json', lookupFn: (json) => json.compilerOptions.outDir, expectedValue: '../../../dist/out-tsc', }, - { - path: 'apps/my-dir/my-app-e2e/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, - // { - // path: 'apps/my-dir/my-app-e2e/tsconfig.e2e.json', - // lookupFn: json => json.compilerOptions.outDir, - // expectedValue: '../../../dist/out-tsc/apps/my-dir/my-app-e2e' - // }, { path: 'apps/my-dir/my-app/tslint.json', lookupFn: (json) => json.extends, diff --git a/packages/angular/src/schematics/application/application.ts b/packages/angular/src/schematics/application/application.ts index 1206a039ed..85ead5d1c1 100644 --- a/packages/angular/src/schematics/application/application.ts +++ b/packages/angular/src/schematics/application/application.ts @@ -696,6 +696,12 @@ export default function (schema: Schema): Rule { addLintFiles(options.appProjectRoot, options.linter, { onlyGlobal: true, }), + // TODO: Remove this after Angular 10.1.0 + updateJsonInTree('tsconfig.json', () => ({ + files: [], + include: [], + references: [], + })), externalSchematic('@schematics/angular', 'application', { name: options.name, inlineStyle: options.inlineStyle, @@ -709,6 +715,10 @@ export default function (schema: Schema): Rule { skipInstall: true, skipPackageJson: false, }), + // TODO: Remove this after Angular 10.1.0 + (host) => { + host.delete('tsconfig.json'); + }, addSchematicFiles(appProjectRoot, options), options.e2eTestRunner === 'protractor' ? move(e2eProjectRoot, options.e2eProjectRoot) diff --git a/packages/angular/src/schematics/application/files/tsconfig.json b/packages/angular/src/schematics/application/files/tsconfig.json index 779cb43592..795ebf01cb 100644 --- a/packages/angular/src/schematics/application/files/tsconfig.json +++ b/packages/angular/src/schematics/application/files/tsconfig.json @@ -1,6 +1,10 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [] - } + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] } diff --git a/packages/angular/src/schematics/karma-project/karma-project.spec.ts b/packages/angular/src/schematics/karma-project/karma-project.spec.ts index f25ce9c1a1..f72c6fd4a0 100644 --- a/packages/angular/src/schematics/karma-project/karma-project.spec.ts +++ b/packages/angular/src/schematics/karma-project/karma-project.spec.ts @@ -76,8 +76,9 @@ module.exports = function(config) { appTree ); const tsConfig = readJsonInTree(resultTree, 'libs/lib1/tsconfig.json'); - expect(tsConfig.compilerOptions.types).toContain('jasmine'); - expect(tsConfig.compilerOptions.types).not.toContain('node'); + expect(tsConfig.references).toContainEqual({ + path: './tsconfig.spec.json', + }); }); describe('library', () => { diff --git a/packages/angular/src/schematics/karma-project/karma-project.ts b/packages/angular/src/schematics/karma-project/karma-project.ts index 29d7e52925..4c060a68c4 100644 --- a/packages/angular/src/schematics/karma-project/karma-project.ts +++ b/packages/angular/src/schematics/karma-project/karma-project.ts @@ -51,12 +51,12 @@ function updateTsConfig(options: KarmaProjectSchema): Rule { (json) => { return { ...json, - compilerOptions: { - ...json.compilerOptions, - types: Array.from( - new Set([...(json.compilerOptions.types || []), 'jasmine']) - ), - }, + references: [ + ...(json.references || []), + { + path: './tsconfig.spec.json', + }, + ], }; } ); diff --git a/packages/angular/src/schematics/library/files/lib/tsconfig.json b/packages/angular/src/schematics/library/files/lib/tsconfig.json index af7fb82ae3..d4a0841f5b 100644 --- a/packages/angular/src/schematics/library/files/lib/tsconfig.json +++ b/packages/angular/src/schematics/library/files/lib/tsconfig.json @@ -1,7 +1,14 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [] - }, - "include": ["**/*.ts"] + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }<% if (publishable) { %>, + { + "path": "./tsconfig.lib.prod.json" + } + <% } %> + ] } diff --git a/packages/angular/src/schematics/library/lib/update-tsconfig.ts b/packages/angular/src/schematics/library/lib/update-tsconfig.ts index 01b4687de2..2f1f166d1a 100644 --- a/packages/angular/src/schematics/library/lib/update-tsconfig.ts +++ b/packages/angular/src/schematics/library/lib/update-tsconfig.ts @@ -12,7 +12,7 @@ export function updateTsConfig(options: NormalizedSchema): Rule { return chain([ (host: Tree, context: SchematicContext) => { const nxJson = readJsonInTree(host, 'nx.json'); - return updateJsonInTree('tsconfig.json', (json) => { + return updateJsonInTree('tsconfig.base.json', (json) => { const c = json.compilerOptions; c.paths = c.paths || {}; delete c.paths[options.name]; diff --git a/packages/angular/src/schematics/library/library.spec.ts b/packages/angular/src/schematics/library/library.spec.ts index 71499a9427..1d44216b82 100644 --- a/packages/angular/src/schematics/library/library.spec.ts +++ b/packages/angular/src/schematics/library/library.spec.ts @@ -143,7 +143,7 @@ describe('lib', () => { it('should update root tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); @@ -153,11 +153,17 @@ describe('lib', () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); const tsconfigJson = readJsonInTree(tree, 'libs/my-lib/tsconfig.json'); expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], - }, - include: ['**/*.ts'], + extends: '../../tsconfig.base.json', + files: [], + include: [], + references: [ + { + path: './tsconfig.lib.json', + }, + { + path: './tsconfig.spec.json', + }, + ], }); }); @@ -461,7 +467,7 @@ describe('lib', () => { { name: 'myLib', directory: 'myDir' }, appTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -471,17 +477,20 @@ describe('lib', () => { }); it('should update tsconfig.json (no existing path mappings)', async () => { - const updatedTree: any = updateJsonInTree('tsconfig.json', (json) => { - json.compilerOptions.paths = undefined; - return json; - })(appTree, null); + const updatedTree: any = updateJsonInTree( + 'tsconfig.base.json', + (json) => { + json.compilerOptions.paths = undefined; + return json; + } + )(appTree, null); const tree = await runSchematic( 'lib', { name: 'myLib', directory: 'myDir' }, updatedTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -502,11 +511,17 @@ describe('lib', () => { 'libs/my-dir/my-lib/tsconfig.json' ); expect(tsconfigJson).toEqual({ - extends: '../../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], - }, - include: ['**/*.ts'], + extends: '../../../tsconfig.base.json', + files: [], + include: [], + references: [ + { + path: './tsconfig.lib.json', + }, + { + path: './tsconfig.spec.json', + }, + ], }); }); }); diff --git a/packages/angular/src/schematics/library/library.ts b/packages/angular/src/schematics/library/library.ts index 26bf005e5e..73311b8aad 100644 --- a/packages/angular/src/schematics/library/library.ts +++ b/packages/angular/src/schematics/library/library.ts @@ -7,7 +7,12 @@ import { schematic, Tree, } from '@angular-devkit/schematics'; -import { addLintFiles, formatFiles, Linter } from '@nrwl/workspace'; +import { + addLintFiles, + formatFiles, + Linter, + updateJsonInTree, +} from '@nrwl/workspace'; import { addUnitTestRunner } from '../init/init'; import { addModule } from './lib/add-module'; import { normalizeOptions } from './lib/normalize-options'; @@ -26,6 +31,12 @@ export default function (schema: Schema): Rule { return chain([ addLintFiles(options.projectRoot, Linter.TsLint, { onlyGlobal: true }), addUnitTestRunner(options), + // TODO: Remove this after Angular 10.1.0 + updateJsonInTree('tsconfig.json', () => ({ + files: [], + include: [], + references: [], + })), externalSchematic('@schematics/angular', 'library', { name: options.name, prefix: options.prefix, @@ -34,6 +45,10 @@ export default function (schema: Schema): Rule { skipPackageJson: !options.publishable, skipTsConfig: true, }), + // TODO: Remove this after Angular 10.1.0 + (host) => { + host.delete('tsconfig.json'); + }, move(options.name, options.projectRoot), updateProject(options), diff --git a/packages/angular/src/utils/versions.ts b/packages/angular/src/utils/versions.ts index 69f10e089f..14ecaefc2f 100644 --- a/packages/angular/src/utils/versions.ts +++ b/packages/angular/src/utils/versions.ts @@ -1,7 +1,7 @@ export const nxVersion = '*'; -export const angularVersion = '^9.1.0'; -export const angularDevkitVersion = '0.901.0'; +export const angularVersion = '^10.0.0'; +export const angularDevkitVersion = '~0.1000.0'; export const angularJsVersion = '1.7.9'; export const ngrxVersion = '9.1.0'; -export const rxjsVersion = '~6.5.4'; +export const rxjsVersion = '~6.5.5'; export const jestPresetAngularVersion = '8.1.2'; diff --git a/packages/bazel/package.json b/packages/bazel/package.json index 3ddd0daa08..16983db4af 100644 --- a/packages/bazel/package.json +++ b/packages/bazel/package.json @@ -44,8 +44,8 @@ ] }, "dependencies": { - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", "@nrwl/cli": "*" }, "peerDependencies": { diff --git a/packages/bazel/src/schematics/sync/sync.spec.ts b/packages/bazel/src/schematics/sync/sync.spec.ts index 8a82c667d9..9088ef507f 100644 --- a/packages/bazel/src/schematics/sync/sync.spec.ts +++ b/packages/bazel/src/schematics/sync/sync.spec.ts @@ -87,7 +87,7 @@ describe('@nrwl/bazel:sync', () => { "workspace.json", "package.json", "nx.json", - "tsconfig.json", + "tsconfig.base.json", "tslint.json", ], diff --git a/packages/cypress/package.json b/packages/cypress/package.json index 4e02df0114..1ab153076f 100644 --- a/packages/cypress/package.json +++ b/packages/cypress/package.json @@ -36,8 +36,8 @@ "cypress": ">= 3 < 5" }, "dependencies": { - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/core": "~9.1.0", + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", "@cypress/webpack-preprocessor": "~4.1.2", "tree-kill": "1.2.2", "ts-loader": "^5.3.1", diff --git a/packages/cypress/src/builders/cypress/cypress.impl.spec.ts b/packages/cypress/src/builders/cypress/cypress.impl.spec.ts index 2ca12922b2..1312afc2ea 100644 --- a/packages/cypress/src/builders/cypress/cypress.impl.spec.ts +++ b/packages/cypress/src/builders/cypress/cypress.impl.spec.ts @@ -1,8 +1,10 @@ -import * as devkitArchitect from '@angular-devkit/architect'; +jest.mock('@angular-devkit/architect'); +let devkitArchitect = require('@angular-devkit/architect'); import { Architect } from '@angular-devkit/architect'; import { TestingArchitectHost } from '@angular-devkit/architect/testing'; import { schema } from '@angular-devkit/core'; -import * as fsUtility from '@nrwl/workspace'; +jest.mock('@nrwl/workspace'); +let fsUtility = require('@nrwl/workspace'); import { MockBuilderContext } from '@nrwl/workspace/testing'; import * as child_process from 'child_process'; import { EventEmitter } from 'events'; @@ -81,109 +83,118 @@ describe('Cypress builder', () => { }); it('should call `Cypress.run` if headless mode is `true`', async (done) => { - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - run.result.then(async () => { - await run.stop(); - expect(cypressRun).toHaveBeenCalledWith( - jasmine.objectContaining({ - config: { baseUrl: 'http://localhost:4200' }, - project: path.dirname(cypressBuilderOptions.cypressConfig), - }) - ); - expect(cypressOpen).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner(cypressBuilderOptions, mockedBuilderContext) + .toPromise() + .then(() => { + expect(cypressRun).toHaveBeenCalledWith( + jasmine.objectContaining({ + config: { baseUrl: 'http://localhost:4200' }, + project: path.dirname(cypressBuilderOptions.cypressConfig), + }) + ); + expect(cypressOpen).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should call `Cypress.open` if headless mode is `false`', async (done) => { - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - headless: false, - watch: true, - }); - run.result.then(async () => { - await run.stop(); - expect(cypressOpen).toHaveBeenCalledWith( - jasmine.objectContaining({ - config: { baseUrl: 'http://localhost:4200' }, - project: path.dirname(cypressBuilderOptions.cypressConfig), - }) - ); - expect(cypressRun).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner( + { + ...cypressBuilderOptions, + headless: false, + watch: true, + }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect(cypressOpen).toHaveBeenCalledWith( + jasmine.objectContaining({ + config: { baseUrl: 'http://localhost:4200' }, + project: path.dirname(cypressBuilderOptions.cypressConfig), + }) + ); + expect(cypressRun).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should call `Cypress.run` with provided baseUrl', async (done) => { - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - devServerTarget: undefined, - baseUrl: 'http://my-distant-host.com', - }); - run.result.then(async () => { - await run.stop(); - expect(cypressRun).toHaveBeenCalledWith( - jasmine.objectContaining({ - config: { - baseUrl: 'http://my-distant-host.com', - }, - project: path.dirname(cypressBuilderOptions.cypressConfig), - }) - ); - done(); - expect(cypressOpen).not.toHaveBeenCalled(); - }); + cypressBuilderRunner( + { + ...cypressBuilderOptions, + devServerTarget: undefined, + baseUrl: 'http://my-distant-host.com', + }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect(cypressRun).toHaveBeenCalledWith( + jasmine.objectContaining({ + config: { + baseUrl: 'http://my-distant-host.com', + }, + project: path.dirname(cypressBuilderOptions.cypressConfig), + }) + ); + done(); + expect(cypressOpen).not.toHaveBeenCalled(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should call `Cypress.run` with provided browser', async (done) => { - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - browser: 'chrome', - }); - run.result.then(async () => { - await run.stop(); - expect(cypressRun).toHaveBeenCalledWith( - jasmine.objectContaining({ - browser: 'chrome', - project: path.dirname(cypressBuilderOptions.cypressConfig), - }) - ); - expect(cypressOpen).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner( + { + ...cypressBuilderOptions, + browser: 'chrome', + }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect(cypressRun).toHaveBeenCalledWith( + jasmine.objectContaining({ + browser: 'chrome', + project: path.dirname(cypressBuilderOptions.cypressConfig), + }) + ); + expect(cypressOpen).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should call `Cypress.run` without baseUrl nor dev server target value', async (done) => { - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - cypressConfig: 'apps/my-app-e2e/cypress.json', - tsConfig: 'apps/my-app-e2e/tsconfig.json', - devServerTarget: undefined, - headless: true, - exit: true, - parallel: false, - record: false, - baseUrl: undefined, - watch: false, - }); - run.result.then(async () => { - await run.stop(); - expect(cypressRun).toHaveBeenCalledWith( - jasmine.objectContaining({ - project: path.dirname(cypressBuilderOptions.cypressConfig), - }) - ); - expect(cypressOpen).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner( + { + cypressConfig: 'apps/my-app-e2e/cypress.json', + tsConfig: 'apps/my-app-e2e/tsconfig.json', + devServerTarget: undefined, + headless: true, + exit: true, + parallel: false, + record: false, + baseUrl: undefined, + watch: false, + }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect(cypressRun).toHaveBeenCalledWith( + jasmine.objectContaining({ + project: path.dirname(cypressBuilderOptions.cypressConfig), + }) + ); + expect(cypressOpen).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); @@ -196,15 +207,12 @@ describe('Cypress builder', () => { success: false, }) ); - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - run.result.then(async (res) => { - await run.stop(); - expect(res.success).toBe(false); - done(); - }); + cypressBuilderRunner(cypressBuilderOptions, mockedBuilderContext) + .toPromise() + .then((res) => { + expect(res.success).toBe(false); + done(); + }); }); it('should call `Cypress.run` with provided cypressConfig as project and configFile', async (done) => { @@ -213,18 +221,18 @@ describe('Cypress builder', () => { cypressConfig: 'some/project/my-cypress.json', }; - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', cfg); - run.result.then(async () => { - await run.stop(); - expect(cypressRun).toHaveBeenCalledWith( - jasmine.objectContaining({ - project: path.dirname(cfg.cypressConfig), - configFile: path.basename(cfg.cypressConfig), - }) - ); - expect(cypressOpen).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner(cfg, mockedBuilderContext) + .toPromise() + .then(() => { + expect(cypressRun).toHaveBeenCalledWith( + jasmine.objectContaining({ + project: path.dirname(cfg.cypressConfig), + configFile: path.basename(cfg.cypressConfig), + }) + ); + expect(cypressOpen).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); @@ -269,13 +277,10 @@ describe('Cypress builder', () => { }); it('should call `fork.child_process` with the tsc command', async () => { - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - fakeEventEmitter.emit('exit', 0); - await run.result; - await run.stop(); + cypressBuilderRunner( + cypressBuilderOptions, + mockedBuilderContext + ).subscribe(); expect(fork).toHaveBeenCalledWith( '/root/node_modules/typescript/bin/tsc', ['-p', '/root/apps/my-app-e2e/tsconfig.json'], @@ -284,36 +289,30 @@ describe('Cypress builder', () => { }); it('should copy fixtures folder to out-dir', async (done) => { - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - run.result.then(async () => { - await run.stop(); - expect( - fsExtras.copySync - ).toHaveBeenCalledWith( - '/root/apps/my-app-e2e/src/fixtures', - '/root/dist/out-tsc/apps/my-app-e2e/src/fixtures', - { overwrite: true } - ); - done(); - }); + cypressBuilderRunner(cypressBuilderOptions, mockedBuilderContext) + .toPromise() + .then(() => { + expect( + fsExtras.copySync + ).toHaveBeenCalledWith( + '/root/apps/my-app-e2e/src/fixtures', + '/root/dist/out-tsc/apps/my-app-e2e/src/fixtures', + { overwrite: true } + ); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should not copy fixtures folder if they are not defined in the cypress config', async (done) => { delete cypressConfig.fixturesFolder; - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - run.result.then(async () => { - await run.stop(); - expect(fsExtras.copySync).not.toHaveBeenCalled(); - done(); - }); + cypressBuilderRunner(cypressBuilderOptions, mockedBuilderContext) + .toPromise() + .then(() => { + expect(fsExtras.copySync).not.toHaveBeenCalled(); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); @@ -321,21 +320,21 @@ describe('Cypress builder', () => { it('should copy regex files to out-dir', async (done) => { const regex: string = '^.+\\.feature$'; - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - copyFiles: regex, - }); - run.result.then(async () => { - await run.stop(); - expect( - fsExtras.copySync - ).toHaveBeenCalledWith( - '/root/apps/my-app-e2e/src/integration', - '/root/dist/out-tsc/apps/my-app-e2e/src/integration', - { filter: jasmine.any(Function) } - ); - done(); - }); + cypressBuilderRunner( + { ...cypressBuilderOptions, copyFiles: regex }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect( + fsExtras.copySync + ).toHaveBeenCalledWith( + '/root/apps/my-app-e2e/src/integration', + '/root/dist/out-tsc/apps/my-app-e2e/src/integration', + { filter: jasmine.any(Function) } + ); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); @@ -343,21 +342,21 @@ describe('Cypress builder', () => { it('should not copy regex files if the regex is not defined', async (done) => { const regex: string = undefined; - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - copyFiles: regex, - }); - run.result.then(async () => { - await run.stop(); - expect( - fsExtras.copySync - ).not.toHaveBeenCalledWith( - '/root/apps/my-app-e2e/src/integration', - '/root/dist/out-tsc/apps/my-app-e2e/src/integration', - { filter: jasmine.any(Function) } - ); - done(); - }); + cypressBuilderRunner( + { ...cypressBuilderOptions, copyFiles: regex }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + expect( + fsExtras.copySync + ).not.toHaveBeenCalledWith( + '/root/apps/my-app-e2e/src/integration', + '/root/dist/out-tsc/apps/my-app-e2e/src/integration', + { filter: jasmine.any(Function) } + ); + done(); + }); fakeEventEmitter.emit('exit', 0); // Passing tsc command }); @@ -367,33 +366,29 @@ describe('Cypress builder', () => { const regex: string = '^.+\\.feature$'; - const run = await architect.scheduleBuilder('@nrwl/cypress:cypress', { - ...cypressBuilderOptions, - copyFiles: regex, - }); - run.result - .then(async () => { - await run.stop(); - fail(); - }) - .catch(async () => { - await run.stop(); - done(); - }); + try { + cypressBuilderRunner( + { ...cypressBuilderOptions, copyFiles: regex }, + mockedBuilderContext + ) + .toPromise() + .then(() => { + fail(); + }); + } catch (e) { + done(); + } fakeEventEmitter.emit('exit', 0); // Passing tsc command }); it('should fail early if integration files fail to compile', async (done) => { - const run = await architect.scheduleBuilder( - '@nrwl/cypress:cypress', - cypressBuilderOptions - ); - run.result.then(async (res) => { - await run.stop(); - expect(res.success).toBe(false); - done(); - }); + cypressBuilderRunner(cypressBuilderOptions, mockedBuilderContext) + .toPromise() + .then((res) => { + expect(res.success).toBe(false); + done(); + }); fakeEventEmitter.emit('exit', 1); // Passing tsc command }); diff --git a/packages/cypress/src/schematics/cypress-project/files/tsconfig.e2e.json b/packages/cypress/src/schematics/cypress-project/files/tsconfig.e2e.json index dd29cb01e0..62ba2f0c2d 100644 --- a/packages/cypress/src/schematics/cypress-project/files/tsconfig.e2e.json +++ b/packages/cypress/src/schematics/cypress-project/files/tsconfig.e2e.json @@ -3,7 +3,8 @@ "compilerOptions": { "sourceMap": false, "outDir": "<%= offsetFromRoot %>dist/out-tsc", - "allowJs": true + "allowJs": true, + "types": ["cypress", "node"] }, "include": ["src/**/*.ts", "src/**/*.js"] } diff --git a/packages/cypress/src/schematics/cypress-project/files/tsconfig.json b/packages/cypress/src/schematics/cypress-project/files/tsconfig.json index 0132ac8a18..c31c52e04c 100644 --- a/packages/cypress/src/schematics/cypress-project/files/tsconfig.json +++ b/packages/cypress/src/schematics/cypress-project/files/tsconfig.json @@ -1,7 +1,10 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": ["cypress", "node"] - }, - "include": ["**/*.ts", "**/*.js"] + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.e2e.json" + } + ] } diff --git a/packages/eslint-plugin-nx/tests/rules/enforce-module-boundaries.spec.ts b/packages/eslint-plugin-nx/tests/rules/enforce-module-boundaries.spec.ts index f84be100b4..785472f768 100644 --- a/packages/eslint-plugin-nx/tests/rules/enforce-module-boundaries.spec.ts +++ b/packages/eslint-plugin-nx/tests/rules/enforce-module-boundaries.spec.ts @@ -68,7 +68,7 @@ const fileSys = { './libs/domain2/src/index.ts': '', './libs/buildableLib/src/main.ts': '', './libs/nonBuildableLib/src/main.ts': '', - './tsconfig.json': JSON.stringify(tsconfig), + './tsconfig.base.json': JSON.stringify(tsconfig), }; describe('Enforce Module Boundaries', () => { diff --git a/packages/express/package.json b/packages/express/package.json index b9af123ec1..55d7a1edf2 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -34,6 +34,6 @@ "dependencies": { "@nrwl/node": "*", "@nrwl/jest": "*", - "@angular-devkit/schematics": "~9.1.0" + "@angular-devkit/schematics": "~10.0.0" } } diff --git a/packages/express/src/schematics/application/application.spec.ts b/packages/express/src/schematics/application/application.spec.ts index 4b1bcea98b..240e752922 100644 --- a/packages/express/src/schematics/application/application.spec.ts +++ b/packages/express/src/schematics/application/application.spec.ts @@ -18,10 +18,20 @@ describe('app', () => { ); }); + it('should add types to the tsconfig.app.json', async () => { + const tree = await runSchematic('app', { name: 'myNodeApp' }, appTree); + const tsconfig = readJsonInTree(tree, 'apps/my-node-app/tsconfig.app.json'); + expect(tsconfig.compilerOptions.types).toContain('express'); + }); + it('should update tsconfig', async () => { const tree = await runSchematic('app', { name: 'myNodeApp' }, appTree); const tsconfig = readJsonInTree(tree, 'apps/my-node-app/tsconfig.json'); - expect(tsconfig.extends).toEqual('../../tsconfig.json'); - expect(tsconfig.compilerOptions.types).toContain('express'); + expect(tsconfig.references).toContainEqual({ + path: './tsconfig.app.json', + }); + expect(tsconfig.references).toContainEqual({ + path: './tsconfig.spec.json', + }); }); }); diff --git a/packages/express/src/schematics/application/application.ts b/packages/express/src/schematics/application/application.ts index 709b87fb7f..39a0469f52 100644 --- a/packages/express/src/schematics/application/application.ts +++ b/packages/express/src/schematics/application/application.ts @@ -17,7 +17,7 @@ interface NormalizedSchema extends Schema { } function addTypes(options: NormalizedSchema): Rule { - const tsConfigPath = join(options.appProjectRoot, 'tsconfig.json'); + const tsConfigPath = join(options.appProjectRoot, 'tsconfig.app.json'); return updateJsonInTree(tsConfigPath, (json) => { json.compilerOptions.types = [...json.compilerOptions.types, 'express']; return json; diff --git a/packages/express/src/utils/testing.ts b/packages/express/src/utils/testing.ts index 6bb0ef6963..2d09523774 100644 --- a/packages/express/src/utils/testing.ts +++ b/packages/express/src/utils/testing.ts @@ -7,6 +7,11 @@ const testRunner = new SchematicTestRunner( join(__dirname, '../../collection.json') ); +testRunner.registerCollection( + '@nrwl/jest', + join(__dirname, '../../../jest/collection.json') +); + testRunner.registerCollection( '@nrwl/node', join(__dirname, '../../../node/collection.json') diff --git a/packages/jest/package.json b/packages/jest/package.json index 7616fcde0d..be1006a0a0 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -35,8 +35,8 @@ "@nrwl/workspace": "*" }, "dependencies": { - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0" + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0" } } diff --git a/packages/jest/src/schematics/jest-project/jest-project.spec.ts b/packages/jest/src/schematics/jest-project/jest-project.spec.ts index ca19762263..db01adc70a 100644 --- a/packages/jest/src/schematics/jest-project/jest-project.spec.ts +++ b/packages/jest/src/schematics/jest-project/jest-project.spec.ts @@ -29,9 +29,9 @@ describe('jestProject', () => { appTree = await callRule( updateJsonInTree('libs/lib1/tsconfig.json', (json) => { return { - compilerOptions: { - types: [], - }, + files: [], + include: [], + references: [], }; }), appTree @@ -98,7 +98,7 @@ describe('jestProject', () => { `); }); - it('should update the local tsconfig.json', async () => { + it('should add a reference to solution tsconfig.json', async () => { const resultTree = await runSchematic( 'jest-project', { @@ -107,8 +107,9 @@ describe('jestProject', () => { appTree ); const tsConfig = readJsonInTree(resultTree, 'libs/lib1/tsconfig.json'); - expect(tsConfig.compilerOptions.types).toContain('jest'); - expect(tsConfig.compilerOptions.types).toContain('node'); + expect(tsConfig.references).toContainEqual({ + path: './tsconfig.spec.json', + }); }); it('should create a tsconfig.spec.json', async () => { diff --git a/packages/jest/src/schematics/jest-project/lib/update-tsconfig.ts b/packages/jest/src/schematics/jest-project/lib/update-tsconfig.ts index feb308917c..c5cfaf0159 100644 --- a/packages/jest/src/schematics/jest-project/lib/update-tsconfig.ts +++ b/packages/jest/src/schematics/jest-project/lib/update-tsconfig.ts @@ -17,15 +17,12 @@ export function updateTsConfig(options: JestProjectSchema): Rule { return updateJsonInTree( join(projectConfig.root, 'tsconfig.json'), (json) => { - return { - ...json, - compilerOptions: { - ...json.compilerOptions, - types: Array.from( - new Set([...(json.compilerOptions.types || []), 'node', 'jest']) - ), - }, - }; + if (json.references) { + json.references.push({ + path: './tsconfig.spec.json', + }); + } + return json; } ); }; diff --git a/packages/linter/package.json b/packages/linter/package.json index d9c7a255b4..05cee36985 100644 --- a/packages/linter/package.json +++ b/packages/linter/package.json @@ -27,6 +27,6 @@ "@nrwl/workspace": "*" }, "dependencies": { - "@angular-devkit/architect": "~0.901.0" + "@angular-devkit/architect": "~0.1000.0" } } diff --git a/packages/nest/migrations.json b/packages/nest/migrations.json index 040c2c9cc0..26bb42797a 100644 --- a/packages/nest/migrations.json +++ b/packages/nest/migrations.json @@ -65,7 +65,7 @@ "alwaysAddToPackageJson": false }, "rxjs": { - "version": "^6.5.4", + "version": "~6.5.5", "alwaysAddToPackageJson": true } } diff --git a/packages/nest/package.json b/packages/nest/package.json index 67703241b0..a957f846d1 100644 --- a/packages/nest/package.json +++ b/packages/nest/package.json @@ -34,7 +34,7 @@ "dependencies": { "@nrwl/node": "*", "@nrwl/jest": "*", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/schematics": "~10.0.0", "@nestjs/schematics": "^6.3.0" } } diff --git a/packages/nest/src/schematics/application/application.spec.ts b/packages/nest/src/schematics/application/application.spec.ts index 2a61bcdd13..0f7d9d223a 100644 --- a/packages/nest/src/schematics/application/application.spec.ts +++ b/packages/nest/src/schematics/application/application.spec.ts @@ -21,7 +21,7 @@ describe('app', () => { it('should have es2015 as the tsconfig target', async () => { const tree = await runSchematic('app', { name: 'myNodeApp' }, appTree); - const tsconfig = readJsonInTree(tree, 'apps/my-node-app/tsconfig.json'); + const tsconfig = readJsonInTree(tree, 'apps/my-node-app/tsconfig.app.json'); expect(tsconfig.compilerOptions.target).toBe('es2015'); }); }); diff --git a/packages/nest/src/schematics/application/application.ts b/packages/nest/src/schematics/application/application.ts index 33379cd24a..cdd6cd91b5 100644 --- a/packages/nest/src/schematics/application/application.ts +++ b/packages/nest/src/schematics/application/application.ts @@ -75,7 +75,7 @@ export default function (schema: Schema): Rule { addMainFile(options), addAppFiles(options), updateJsonInTree( - join(options.appProjectRoot, 'tsconfig.json'), + join(options.appProjectRoot, 'tsconfig.app.json'), (json) => { json.compilerOptions.emitDecoratorMetadata = true; json.compilerOptions.target = 'es2015'; diff --git a/packages/nest/src/schematics/library/library.spec.ts b/packages/nest/src/schematics/library/library.spec.ts index 1bdf9c419c..3daf7ddaea 100644 --- a/packages/nest/src/schematics/library/library.spec.ts +++ b/packages/nest/src/schematics/library/library.spec.ts @@ -158,7 +158,7 @@ describe('lib', () => { it('should update root tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); @@ -167,14 +167,21 @@ describe('lib', () => { it('should create a local tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); const tsconfigJson = readJsonInTree(tree, 'libs/my-lib/tsconfig.json'); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], - target: 'es6', - }, - include: ['**/*.ts'], - }); + expect(tsconfigJson).toMatchInlineSnapshot(` + Object { + "extends": "../../tsconfig.base.json", + "files": Array [], + "include": Array [], + "references": Array [ + Object { + "path": "./tsconfig.lib.json", + }, + Object { + "path": "./tsconfig.spec.json", + }, + ], + } + `); }); it('should extend the local tsconfig.json with tsconfig.spec.json', async () => { @@ -283,7 +290,7 @@ describe('lib', () => { { name: 'myLib', directory: 'myDir' }, appTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -303,14 +310,21 @@ describe('lib', () => { tree, 'libs/my-dir/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], - target: 'es6', - }, - include: ['**/*.ts'], - }); + expect(tsconfigJson).toMatchInlineSnapshot(` + Object { + "extends": "../../../tsconfig.base.json", + "files": Array [], + "include": Array [], + "references": Array [ + Object { + "path": "./tsconfig.lib.json", + }, + Object { + "path": "./tsconfig.spec.json", + }, + ], + } + `); }); }); @@ -330,14 +344,18 @@ describe('lib', () => { resultTree, 'libs/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node'], - target: 'es6', - }, - include: ['**/*.ts'], - }); + expect(tsconfigJson).toMatchInlineSnapshot(` + Object { + "extends": "../../tsconfig.base.json", + "files": Array [], + "include": Array [], + "references": Array [ + Object { + "path": "./tsconfig.lib.json", + }, + ], + } + `); expect( workspaceJson.projects['my-lib'].architect.lint.options.tsConfig ).toEqual(['libs/my-lib/tsconfig.lib.json']); @@ -362,7 +380,7 @@ describe('lib', () => { }); describe('compiler options target', () => { - it('should set target to es6 in tsconfig.json by default', async () => { + it('should set target to es6 in tsconfig.lib.json by default', async () => { const tree = await runSchematic( 'lib', { name: 'myLib', directory: 'myDir' }, @@ -371,12 +389,12 @@ describe('lib', () => { const tsconfigJson = readJsonInTree( tree, - 'libs/my-dir/my-lib/tsconfig.json' + 'libs/my-dir/my-lib/tsconfig.lib.json' ); expect(tsconfigJson.compilerOptions.target).toEqual('es6'); }); - it('should set target to es2020 in tsconfig.json', async () => { + it('should set target to es2020 in tsconfig.lib.json', async () => { const tree = await runSchematic( 'lib', { name: 'myLib', directory: 'myDir', target: 'es2020' }, @@ -385,7 +403,7 @@ describe('lib', () => { const tsconfigJson = readJsonInTree( tree, - 'libs/my-dir/my-lib/tsconfig.json' + 'libs/my-dir/my-lib/tsconfig.lib.json' ); expect(tsconfigJson.compilerOptions.target).toEqual('es2020'); }); diff --git a/packages/nest/src/schematics/library/library.ts b/packages/nest/src/schematics/library/library.ts index 6c8b587a0e..9ef47afc4c 100644 --- a/packages/nest/src/schematics/library/library.ts +++ b/packages/nest/src/schematics/library/library.ts @@ -164,10 +164,13 @@ function createFiles(options: NormalizedSchema): Rule { function updateTsConfig(options: NormalizedSchema): Rule { return (host: Tree, context: SchematicContext) => { const projectConfig = getProjectConfig(host, options.name); - return updateJsonInTree(`${projectConfig.root}/tsconfig.json`, (json) => { - json.compilerOptions.target = options.target; - return json; - }); + return updateJsonInTree( + `${projectConfig.root}/tsconfig.lib.json`, + (json) => { + json.compilerOptions.target = options.target; + return json; + } + ); }; } diff --git a/packages/nest/src/schematics/library/schema.json b/packages/nest/src/schematics/library/schema.json index 2f140e5404..fe4fb359e9 100644 --- a/packages/nest/src/schematics/library/schema.json +++ b/packages/nest/src/schematics/library/schema.json @@ -49,7 +49,7 @@ "skipTsConfig": { "type": "boolean", "default": false, - "description": "Do not update tsconfig.json for development experience." + "description": "Do not update tsconfig.base.json for development experience." }, "publishable": { "type": "boolean", diff --git a/packages/nest/src/utils/testing.ts b/packages/nest/src/utils/testing.ts index b13f2f91c5..180712d392 100644 --- a/packages/nest/src/utils/testing.ts +++ b/packages/nest/src/utils/testing.ts @@ -7,6 +7,11 @@ const testRunner = new SchematicTestRunner( join(__dirname, '../../collection.json') ); +testRunner.registerCollection( + '@nrwl/jest', + join(__dirname, '../../../jest/collection.json') +); + testRunner.registerCollection( '@nrwl/node', join(__dirname, '../../../node/collection.json') diff --git a/packages/nest/src/utils/versions.ts b/packages/nest/src/utils/versions.ts index b332e51230..903209ba6d 100644 --- a/packages/nest/src/utils/versions.ts +++ b/packages/nest/src/utils/versions.ts @@ -3,6 +3,6 @@ export const nxVersion = '*'; export const nestJsVersion = '^7.0.0'; export const nestJsSchematicsVersion = '^7.0.0'; -export const rxjsVersion = '^6.5.4'; +export const rxjsVersion = '~6.5.5'; export const reflectMetadataVersion = '^0.1.13'; diff --git a/packages/next/package.json b/packages/next/package.json index 2d576b3931..1469d4064c 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -35,7 +35,7 @@ "dependencies": { "@nrwl/react": "*", "@nrwl/web": "*", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/schematics": "~10.0.0", "@svgr/webpack": "^4.3.3", "url-loader": "^2.2.0" } diff --git a/packages/next/src/schematics/application/files/tsconfig.json__tmpl__ b/packages/next/src/schematics/application/files/tsconfig.json__tmpl__ index d851df9d60..c6e438c868 100644 --- a/packages/next/src/schematics/application/files/tsconfig.json__tmpl__ +++ b/packages/next/src/schematics/application/files/tsconfig.json__tmpl__ @@ -1,5 +1,5 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", + "extends": "<%= offsetFromRoot %>tsconfig.base.json", "compilerOptions": { "jsx": "preserve", "allowJs": true, diff --git a/packages/node/package.json b/packages/node/package.json index 4fb12e13ab..2da64ade07 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -34,10 +34,10 @@ "dependencies": { "@nrwl/jest": "*", "@nrwl/linter": "*", - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", - "@angular-devkit/build-webpack": "~0.901.0", + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", + "@angular-devkit/build-webpack": "~0.1000.0", "circular-dependency-plugin": "5.2.0", "copy-webpack-plugin": "5.1.1", "fork-ts-checker-webpack-plugin": "^3.1.1", diff --git a/packages/node/src/builders/execute/execute.impl.spec.ts b/packages/node/src/builders/execute/execute.impl.spec.ts index 943527c3c8..f551784ccf 100644 --- a/packages/node/src/builders/execute/execute.impl.spec.ts +++ b/packages/node/src/builders/execute/execute.impl.spec.ts @@ -4,7 +4,6 @@ import { nodeExecuteBuilderHandler, } from './execute.impl'; import { of, from } from 'rxjs'; -import * as devkitArchitect from '@angular-devkit/architect'; import { MockBuilderContext } from '@nrwl/workspace/testing'; @@ -18,7 +17,6 @@ let treeKill = require('tree-kill'); describe('NodeExecuteBuilder', () => { let testOptions: NodeExecuteBuilderOptions; let context: MockBuilderContext; - let scheduleTargetAndForget: jasmine.Spy; beforeEach(async () => { fork.mockReturnValue({ @@ -45,24 +43,27 @@ describe('NodeExecuteBuilder', () => { host: 'localhost', watch: true, }; - scheduleTargetAndForget = spyOn( - devkitArchitect, - 'scheduleTargetAndForget' - ).and.returnValue(of({ success: true, outfile: 'outfile.js' })); }); it('should build the application and start the built file', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler(testOptions, context).toPromise(); - expect(scheduleTargetAndForget).toHaveBeenCalledWith( - context, + expect(context.scheduleTarget).toHaveBeenCalledWith( { project: 'nodeapp', target: 'build', }, { watch: true, - } + }, + undefined ); expect(fork).toHaveBeenCalledWith('outfile.js', [], { execArgv: [ @@ -78,6 +79,13 @@ describe('NodeExecuteBuilder', () => { describe('--inspect', () => { describe('inspect', () => { it('should inspect the process', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -97,6 +105,13 @@ describe('NodeExecuteBuilder', () => { describe('inspect-brk', () => { it('should inspect and break at beginning of execution', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -118,6 +133,13 @@ describe('NodeExecuteBuilder', () => { describe('--host', () => { describe('0.0.0.0', () => { it('should inspect the process on host 0.0.0.0', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -139,6 +161,13 @@ describe('NodeExecuteBuilder', () => { describe('--port', () => { describe('1234', () => { it('should inspect the process on port 1234', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -159,6 +188,13 @@ describe('NodeExecuteBuilder', () => { describe('--runtimeArgs', () => { it('should add runtime args to the node process', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -183,11 +219,14 @@ describe('NodeExecuteBuilder', () => { callback(new Error('Error Message')); }); const loggerError = spyOn(context.logger, 'error'); - scheduleTargetAndForget = scheduleTargetAndForget.and.returnValue( - from([ - { success: true, outfile: 'outfile.js' }, - { success: true, outfile: 'outfile.js' }, - ]) + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: from([ + { success: true, outfile: 'outfile.js' }, + { success: true, outfile: 'outfile.js' }, + ]), + stop: () => Promise.resolve(), + }) ); nodeExecuteBuilderHandler(testOptions, context).subscribe({ complete: () => { @@ -202,17 +241,27 @@ describe('NodeExecuteBuilder', () => { callback([new Error('error'), '', 'Error Message']); }); const loggerError = spyOn(context.logger, 'error'); - scheduleTargetAndForget = scheduleTargetAndForget.and.returnValue( - from([ - { success: true, outfile: 'outfile.js' }, - { success: true, outfile: 'outfile.js' }, - ]) + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: from([ + { success: true, outfile: 'outfile.js' }, + { success: true, outfile: 'outfile.js' }, + ]), + stop: () => Promise.resolve(), + }) ); await nodeExecuteBuilderHandler(testOptions, context).toPromise(); expect(loggerError.calls.argsFor(1)).toEqual(['Error Message']); }); it('should build the application and start the built file with options', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + await nodeExecuteBuilderHandler( { ...testOptions, @@ -227,6 +276,13 @@ describe('NodeExecuteBuilder', () => { }); it('should warn users who try to use it in production', async () => { + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true, outfile: 'outfile.js' }), + stop: () => Promise.resolve(), + }) + ); + spyOn(context, 'validateOptions').and.returnValue( Promise.resolve({ optimization: true, @@ -239,8 +295,11 @@ describe('NodeExecuteBuilder', () => { describe('waitUntilTasks', () => { it('should run the tasks before starting the build', async () => { - scheduleTargetAndForget = scheduleTargetAndForget.and.returnValue( - of({ success: true }) + spyOn(context, 'scheduleTarget').and.returnValue( + of({ + output: of({ success: true }), + stop: () => Promise.resolve(), + }) ); await nodeExecuteBuilderHandler( { @@ -250,20 +309,31 @@ describe('NodeExecuteBuilder', () => { context ).toPromise(); - expect(scheduleTargetAndForget).toHaveBeenCalledTimes(3); - expect(scheduleTargetAndForget).toHaveBeenCalledWith(context, { - project: 'project1', - target: 'target1', - }); - expect(scheduleTargetAndForget).toHaveBeenCalledWith(context, { - project: 'project2', - target: 'target2', - }); + expect(context.scheduleTarget).toHaveBeenCalledTimes(3); + expect(context.scheduleTarget).toHaveBeenCalledWith( + { + project: 'project1', + target: 'target1', + }, + undefined, + undefined + ); + expect(context.scheduleTarget).toHaveBeenCalledWith( + { + project: 'project2', + target: 'target2', + }, + undefined, + undefined + ); }); it('should not run the build if any of the tasks fail', async () => { - scheduleTargetAndForget = scheduleTargetAndForget.and.callFake((target) => - of({ success: target.target === 'project1' }) + spyOn(context, 'scheduleTarget').and.callFake((target) => + of({ + output: of({ success: target.target === 'project1' }), + stop: () => Promise.resolve(), + }) ); const loggerError = spyOn(context.logger, 'error'); diff --git a/packages/node/src/builders/package/package.impl.spec.ts b/packages/node/src/builders/package/package.impl.spec.ts index 2e3d2af43b..82af4ac723 100644 --- a/packages/node/src/builders/package/package.impl.spec.ts +++ b/packages/node/src/builders/package/package.impl.spec.ts @@ -2,7 +2,8 @@ import { EventEmitter } from 'events'; import { join } from 'path'; import { getMockContext } from '../../utils/testing'; import { MockBuilderContext } from '@nrwl/workspace/testing'; -import * as projectGraphUtils from '@nrwl/workspace/src/core/project-graph'; +jest.mock('@nrwl/workspace/src/core/project-graph'); +let projectGraph = require('@nrwl/workspace/src/core/project-graph'); import { ProjectGraph, ProjectType, @@ -25,7 +26,7 @@ let { fork } = require('child_process'); jest.mock('tree-kill'); let treeKill = require('tree-kill'); -describe('NodeCompileBuilder', () => { +describe('NodePackageBuilder', () => { let testOptions: NodePackageBuilderOptions; let context: MockBuilderContext; let fakeEventEmitter: EventEmitter; @@ -75,7 +76,7 @@ describe('NodeCompileBuilder', () => { describe('Without library dependencies', () => { beforeEach(() => { // mock createProjectGraph without deps - spyOn(projectGraphUtils, 'createProjectGraph').and.callFake(() => { + spyOn(projectGraph, 'createProjectGraph').and.callFake(() => { return { nodes: {}, dependencies: {}, @@ -223,7 +224,7 @@ describe('NodeCompileBuilder', () => { describe('building with dependencies', () => { beforeEach(() => { - spyOn(projectGraphUtils, 'createProjectGraph').and.callFake(() => { + spyOn(projectGraph, 'createProjectGraph').and.callFake(() => { return { nodes: { nodelib: { diff --git a/packages/node/src/schematics/application/application.spec.ts b/packages/node/src/schematics/application/application.spec.ts index 784e51c44b..6bf7e92680 100644 --- a/packages/node/src/schematics/application/application.spec.ts +++ b/packages/node/src/schematics/application/application.spec.ts @@ -85,10 +85,23 @@ describe('app', () => { expect(tree.exists(`apps/my-node-app/jest.config.js`)).toBeTruthy(); expect(tree.exists('apps/my-node-app/src/main.ts')).toBeTruthy(); - const tsconfig = readJsonInTree(tree, 'apps/my-node-app/tsconfig.json'); - expect(tsconfig.extends).toEqual('../../tsconfig.json'); - expect(tsconfig.compilerOptions.types).toContain('node'); - expect(tsconfig.compilerOptions.types).toContain('jest'); + expect(tree.readContent('apps/my-node-app/tsconfig.json')) + .toMatchInlineSnapshot(` + "{ + \\"extends\\": \\"../../tsconfig.base.json\\", + \\"files\\": [], + \\"include\\": [], + \\"references\\": [ + { + \\"path\\": \\"./tsconfig.app.json\\" + }, + { + \\"path\\": \\"./tsconfig.spec.json\\" + } + ] + } + " + `); const tsconfigApp = JSON.parse( stripJsonComments( @@ -172,11 +185,6 @@ describe('app', () => { // Make sure these have properties [ - { - path: 'apps/my-dir/my-node-app/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-node-app/tsconfig.app.json', lookupFn: (json) => json.compilerOptions.outDir, diff --git a/packages/node/src/schematics/application/files/app/tsconfig.json b/packages/node/src/schematics/application/files/app/tsconfig.json index d2b54b3e79..a6db50db59 100644 --- a/packages/node/src/schematics/application/files/app/tsconfig.json +++ b/packages/node/src/schematics/application/files/app/tsconfig.json @@ -1,7 +1,10 @@ { - "extends": "<%= offset %>tsconfig.json", - "compilerOptions": { - "types": ["node"] - }, - "include": ["**/*.ts"] + "extends": "<%= offset %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] } diff --git a/packages/node/src/schematics/library/files/lib/tsconfig.json b/packages/node/src/schematics/library/files/lib/tsconfig.json deleted file mode 100644 index ca8fd1d35b..0000000000 --- a/packages/node/src/schematics/library/files/lib/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [ - "node" - ] - }, - "include": ["**/*.ts"] -} diff --git a/packages/node/src/schematics/library/files/lib/tsconfig.lib.json b/packages/node/src/schematics/library/files/lib/tsconfig.lib.json index 2bdb5ad71a..2d91be2b4f 100644 --- a/packages/node/src/schematics/library/files/lib/tsconfig.lib.json +++ b/packages/node/src/schematics/library/files/lib/tsconfig.lib.json @@ -5,9 +5,7 @@ "outDir": "<%= offsetFromRoot %>dist/out-tsc", "declaration": true, "rootDir": "./src", - "types": [ - "node" - ] + "types": ["node"] }, "exclude": ["**/*.spec.ts"], "include": ["**/*.ts"] diff --git a/packages/node/src/schematics/library/library.spec.ts b/packages/node/src/schematics/library/library.spec.ts index 24d370ce14..de5bcec5aa 100644 --- a/packages/node/src/schematics/library/library.spec.ts +++ b/packages/node/src/schematics/library/library.spec.ts @@ -2,7 +2,6 @@ import { Tree } from '@angular-devkit/schematics'; import { NxJson, readJsonInTree } from '@nrwl/workspace'; import { createEmptyWorkspace } from '@nrwl/workspace/testing'; import { runSchematic } from '../../utils/testing'; -import { expectTestsPass } from 'e2e/utils'; describe('lib', () => { let appTree: Tree; @@ -52,9 +51,9 @@ describe('lib', () => { }); }); - it('should update root tsconfig.json', async () => { + it('should update root tsconfig.base.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); @@ -63,13 +62,15 @@ describe('lib', () => { it('should create a local tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); const tsconfigJson = readJsonInTree(tree, 'libs/my-lib/tsconfig.json'); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], + expect(tsconfigJson.extends).toEqual('../../tsconfig.base.json'); + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - include: ['**/*.ts'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); it('should extend the local tsconfig.json with tsconfig.spec.json', async () => { @@ -87,6 +88,7 @@ describe('lib', () => { tree, 'libs/my-lib/tsconfig.lib.json' ); + expect(tsconfigJson.compilerOptions.types).toContain('node'); expect(tsconfigJson.extends).toEqual('./tsconfig.json'); }); @@ -174,7 +176,7 @@ describe('lib', () => { { name: 'myLib', directory: 'myDir' }, appTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -194,13 +196,15 @@ describe('lib', () => { tree, 'libs/my-dir/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], + expect(tsconfigJson.extends).toEqual('../../../tsconfig.base.json'); + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - include: ['**/*.ts'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); }); @@ -220,13 +224,12 @@ describe('lib', () => { resultTree, 'libs/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node'], + expect(tsconfigJson.extends).toEqual('../../tsconfig.base.json'); + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - include: ['**/*.ts'], - }); + ]); expect( workspaceJson.projects['my-lib'].architect.lint.options.tsConfig ).toEqual(['libs/my-lib/tsconfig.lib.json']); diff --git a/packages/node/src/schematics/library/library.ts b/packages/node/src/schematics/library/library.ts index 1a1393f9c8..14c069cf33 100644 --- a/packages/node/src/schematics/library/library.ts +++ b/packages/node/src/schematics/library/library.ts @@ -16,11 +16,9 @@ import { } from '@angular-devkit/schematics'; import { formatFiles, - getProjectConfig, names, offsetFromRoot, toFileName, - updateJsonInTree, updateWorkspaceInTree, getNpmScope, } from '@nrwl/workspace'; @@ -43,7 +41,6 @@ export default function (schema: NormalizedSchema): Rule { return chain([ externalSchematic('@nrwl/workspace', 'lib', schema), createFiles(options), - updateTsConfig(options), addProject(options), formatFiles(options), ]); @@ -99,20 +96,6 @@ function createFiles(options: NormalizedSchema): Rule { ); } -function updateTsConfig(options: NormalizedSchema): Rule { - if (options.unitTestRunner === 'none') { - return noop(); - } - - return (host: Tree, context: SchematicContext) => { - const projectConfig = getProjectConfig(host, options.name); - return updateJsonInTree(`${projectConfig.root}/tsconfig.json`, (json) => { - json.compilerOptions.types.push('jest'); - return json; - }); - }; -} - function addProject(options: NormalizedSchema): Rule { if (!options.publishable) { return noop(); diff --git a/packages/node/src/schematics/library/schema.json b/packages/node/src/schematics/library/schema.json index 32ecbea194..dc6126cab9 100644 --- a/packages/node/src/schematics/library/schema.json +++ b/packages/node/src/schematics/library/schema.json @@ -49,7 +49,7 @@ "skipTsConfig": { "type": "boolean", "default": false, - "description": "Do not update tsconfig.json for development experience." + "description": "Do not update tsconfig.base.json for development experience." }, "publishable": { "type": "boolean", diff --git a/packages/node/src/utils/testing.ts b/packages/node/src/utils/testing.ts index 029b960eec..4cca1ad9c3 100644 --- a/packages/node/src/utils/testing.ts +++ b/packages/node/src/utils/testing.ts @@ -14,13 +14,13 @@ const testRunner = new SchematicTestRunner( ); testRunner.registerCollection( - '@nrwl/workspace', - join(__dirname, '../../../workspace/collection.json') + '@nrwl/jest', + join(__dirname, '../../../jest/collection.json') ); testRunner.registerCollection( - '@nrwl/jest', - join(__dirname, '../../../jest/collection.json') + '@nrwl/workspace', + join(__dirname, '../../../workspace/collection.json') ); export function runSchematic(schematicName: string, options: any, tree: Tree) { diff --git a/packages/nx-plugin/package.json b/packages/nx-plugin/package.json index 8a4ec81098..e8a4310691 100644 --- a/packages/nx-plugin/package.json +++ b/packages/nx-plugin/package.json @@ -31,9 +31,9 @@ "dependencies": { "@nrwl/node": "*", "@nrwl/linter": "*", - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", "fs-extra": "7.0.1", "tmp": "0.0.33", "yargs-parser": "10.0.0", diff --git a/packages/nx-plugin/src/builders/e2e/e2e.impl.spec.ts b/packages/nx-plugin/src/builders/e2e/e2e.impl.spec.ts deleted file mode 100644 index 3e93016983..0000000000 --- a/packages/nx-plugin/src/builders/e2e/e2e.impl.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { NxPluginE2EBuilderOptions, runNxPluginE2EBuilder } from './e2e.impl'; -import { MockBuilderContext } from '@nrwl/workspace/testing'; -import { getMockContext } from '../../utils/testing'; -import * as devkitArchitect from '@angular-devkit/architect'; -import { of } from 'rxjs'; - -describe('NxPluginE2EBuilder', () => { - let testOptions: NxPluginE2EBuilderOptions; - let context: MockBuilderContext; - let scheduleTargetAndForgetSpy: jest.SpyInstance; - let contextBuilderSpy: jest.SpyInstance; - beforeEach(async () => { - context = await getMockContext(); - context.addTarget( - { project: 'plugin-e2e', target: 'build' }, - '@nrwl/nx-plugin:e2e' - ); - testOptions = { - jestConfig: 'apps/plugin-e2e/jest.config.js', - tsSpecConfig: 'apps/plugin-e2e/tsconfig.spec.js', - target: 'plugin:build', - }; - - scheduleTargetAndForgetSpy = jest - .spyOn(devkitArchitect, 'scheduleTargetAndForget') - .mockImplementation((context, options) => { - debugger; - return of({ success: true }); - }); - - contextBuilderSpy = jest - .spyOn(context, 'scheduleBuilder') - .mockImplementation((name, overrides) => { - return new Promise((res, rej) => { - res({ - result: of({ success: true }).toPromise(), - id: 1, - info: { - builderName: 'builder', - description: '', - optionSchema: {}, - }, - output: of({ success: true }), - progress: of({} as any), - stop: jest.fn(), - }); - }); - }); - }); - - it('should build the plugin and run the test', async () => { - await runNxPluginE2EBuilder(testOptions, context).toPromise(); - expect(scheduleTargetAndForgetSpy).toHaveBeenCalledWith(context, { - project: 'plugin', - target: 'build', - }); - expect(contextBuilderSpy).toHaveBeenCalledWith('@nrwl/jest:jest', { - tsConfig: testOptions.tsSpecConfig, - jestConfig: testOptions.jestConfig, - watch: false, - }); - }); -}); diff --git a/packages/nx-plugin/src/schematics/e2e-project/files/tsconfig.json__tmpl__ b/packages/nx-plugin/src/schematics/e2e-project/files/tsconfig.json__tmpl__ index ca8fd1d35b..c31c52e04c 100644 --- a/packages/nx-plugin/src/schematics/e2e-project/files/tsconfig.json__tmpl__ +++ b/packages/nx-plugin/src/schematics/e2e-project/files/tsconfig.json__tmpl__ @@ -1,9 +1,10 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [ - "node" - ] - }, - "include": ["**/*.ts"] + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.e2e.json" + } + ] } diff --git a/packages/nx-plugin/src/schematics/plugin/plugin.spec.ts b/packages/nx-plugin/src/schematics/plugin/plugin.spec.ts index 100508384e..ec7004687d 100644 --- a/packages/nx-plugin/src/schematics/plugin/plugin.spec.ts +++ b/packages/nx-plugin/src/schematics/plugin/plugin.spec.ts @@ -113,76 +113,15 @@ describe('NxPlugin plugin', () => { ).toBeTruthy(); }); - it('should call the @nrwl/node:lib schematic', async () => { - const externalSchematicSpy = jest.spyOn(ngSchematics, 'externalSchematic'); - await runSchematic('plugin', { name: 'myPlugin' }, appTree); - expect(externalSchematicSpy).toBeCalledWith( - '@nrwl/node', - 'lib', - expect.objectContaining({ - publishable: true, - }) - ); - }); - - it('should call the @nrwl/nx-plugin:e2e schematic', async () => { - const schematicSpy = jest.spyOn(ngSchematics, 'schematic'); - const tree = await runSchematic('plugin', { name: 'myPlugin' }, appTree); - expect(schematicSpy).toBeCalledWith( - 'e2e-project', - expect.objectContaining({ - pluginName: 'my-plugin', - pluginOutputPath: `dist/libs/my-plugin`, - npmPackageName: '@proj/my-plugin', - }) - ); - }); - - it('should call the @nrwl/nx-plugin:schematic schematic', async () => { - const schematicSpy = jest.spyOn(ngSchematics, 'schematic'); - const tree = await runSchematic('plugin', { name: 'myPlugin' }, appTree); - expect(schematicSpy).toBeCalledWith( - 'schematic', - expect.objectContaining({ - project: 'my-plugin', - name: `my-plugin`, - }) - ); - }); - - it('should call the @nrwl/nx-plugin:builder schematic', async () => { - const schematicSpy = jest.spyOn(ngSchematics, 'schematic'); - const tree = await runSchematic('plugin', { name: 'myPlugin' }, appTree); - expect(schematicSpy).toBeCalledWith( - 'builder', - expect.objectContaining({ - project: 'my-plugin', - name: `build`, - }) - ); - }); - describe('--unitTestRunner', () => { describe('none', () => { it('should not generate test files', async () => { - const externalSchematicSpy = jest.spyOn( - ngSchematics, - 'externalSchematic' - ); const tree = await runSchematic( 'plugin', { name: 'myPlugin', unitTestRunner: 'none' }, appTree ); - expect(externalSchematicSpy).toBeCalledWith( - '@nrwl/node', - 'lib', - expect.objectContaining({ - unitTestRunner: 'none', - }) - ); - expect( tree.exists('libs/my-plugin/src/schematics/my-plugin/schematic.ts') ).toBeTruthy(); diff --git a/packages/react/package.json b/packages/react/package.json index ade3baedf0..a1515ac122 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -36,7 +36,7 @@ "@nrwl/cypress": "*", "@nrwl/jest": "*", "@nrwl/web": "*", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/schematics": "~10.0.0", "@svgr/webpack": "^5.2.0", "confusing-browser-globals": "^1.0.9", "eslint-plugin-import": "^2.20.1", diff --git a/packages/react/src/migrations/update-8-10-0/update-8-10-0.spec.ts b/packages/react/src/migrations/update-8-10-0/update-8-10-0.spec.ts index 1a5edcfb0f..d8df2feb95 100644 --- a/packages/react/src/migrations/update-8-10-0/update-8-10-0.spec.ts +++ b/packages/react/src/migrations/update-8-10-0/update-8-10-0.spec.ts @@ -1,9 +1,10 @@ import { Tree } from '@angular-devkit/schematics'; import { SchematicTestRunner } from '@angular-devkit/schematics/testing'; -import { readJsonInTree } from '@nrwl/workspace'; +import { readJsonInTree, updateJsonInTree } from '@nrwl/workspace'; import * as path from 'path'; import { createEmptyWorkspace } from '@nrwl/workspace/testing'; import { join } from 'path'; +import { callRule } from '../../../src/utils/testing'; describe('Update 8-10-0', () => { let tree: Tree; @@ -59,6 +60,11 @@ describe('Update 8-10-0', () => { path.join(__dirname, '../../../collection.json') ); + reactRunner.registerCollection( + '@nrwl/jest', + join(__dirname, '../../../../jest/collection.json') + ); + reactRunner.registerCollection( '@nrwl/cypress', join(__dirname, '../../../../cypress/collection.json') @@ -74,6 +80,14 @@ describe('Update 8-10-0', () => { ) .toPromise(); + tree = await callRule( + updateJsonInTree(`nested/nested-app/tsconfig.json`, (json) => { + json.files = []; + return json; + }), + tree + ); + tree = await schematicRunner .runSchematicAsync('update-8.10.0', {}, tree) .toPromise(); diff --git a/packages/react/src/migrations/update-8-10-1/fix-react-tsconfig-8-10-1.spec.ts b/packages/react/src/migrations/update-8-10-1/fix-react-tsconfig-8-10-1.spec.ts index 2e67c2123e..65aea05949 100644 --- a/packages/react/src/migrations/update-8-10-1/fix-react-tsconfig-8-10-1.spec.ts +++ b/packages/react/src/migrations/update-8-10-1/fix-react-tsconfig-8-10-1.spec.ts @@ -28,6 +28,11 @@ describe('Update 8-10-0', () => { path.join(__dirname, '../../../collection.json') ); + reactRunner.registerCollection( + '@nrwl/jest', + join(__dirname, '../../../../jest/collection.json') + ); + reactRunner.registerCollection( '@nrwl/cypress', join(__dirname, '../../../../cypress/collection.json') diff --git a/packages/react/src/schematics/application/application.spec.ts b/packages/react/src/schematics/application/application.spec.ts index b555955385..be4583247a 100644 --- a/packages/react/src/schematics/application/application.spec.ts +++ b/packages/react/src/schematics/application/application.spec.ts @@ -55,8 +55,14 @@ describe('app', () => { expect(jestConfig).toContain('@nrwl/react/plugins/jest'); const tsconfig = readJsonInTree(tree, 'apps/my-app/tsconfig.json'); - expect(tsconfig.extends).toEqual('../../tsconfig.json'); - expect(tsconfig.compilerOptions.types).toContain('jest'); + expect(tsconfig.references).toEqual([ + { + path: './tsconfig.app.json', + }, + { + path: './tsconfig.spec.json', + }, + ]); const tsconfigApp = JSON.parse( stripJsonComments(tree.readContent('apps/my-app/tsconfig.app.json')) @@ -138,21 +144,11 @@ describe('app', () => { // Make sure these have properties [ - { - path: 'apps/my-dir/my-app/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-app/tsconfig.app.json', lookupFn: (json) => json.compilerOptions.outDir, expectedValue: '../../../dist/out-tsc', }, - { - path: 'apps/my-dir/my-app-e2e/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-app-e2e/tsconfig.e2e.json', lookupFn: (json) => json.compilerOptions.outDir, diff --git a/packages/react/src/schematics/application/files/app/tsconfig.app.json b/packages/react/src/schematics/application/files/app/tsconfig.app.json index 566fcd105d..4597c87425 100644 --- a/packages/react/src/schematics/application/files/app/tsconfig.app.json +++ b/packages/react/src/schematics/application/files/app/tsconfig.app.json @@ -4,6 +4,11 @@ "outDir": "<%= offsetFromRoot %>dist/out-tsc", "types": ["node"] }, + "files": [ + <% if (style === 'styled-jsx') { %>"<%= offsetFromRoot %>node_modules/@nrwl/react/typings/styled-jsx.d.ts",<% } %> + "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/cssmodule.d.ts", + "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/image.d.ts" + ], "exclude": ["**/*.spec.ts", "**/*.spec.tsx"], "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] } diff --git a/packages/react/src/schematics/application/files/app/tsconfig.json__tmpl__ b/packages/react/src/schematics/application/files/app/tsconfig.json__tmpl__ index 9c35dc67ae..15affb4f35 100644 --- a/packages/react/src/schematics/application/files/app/tsconfig.json__tmpl__ +++ b/packages/react/src/schematics/application/files/app/tsconfig.json__tmpl__ @@ -1,16 +1,16 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", + "extends": "<%= offsetFromRoot %>tsconfig.base.json", "compilerOptions": { "jsx": "react", "allowJs": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "types": [] + "allowSyntheticDefaultImports": true }, - "files": [ - <% if (style === 'styled-jsx') { %>"<%= offsetFromRoot %>node_modules/@nrwl/react/typings/styled-jsx.d.ts",<% } %> - "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/cssmodule.d.ts", - "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/image.d.ts" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] } diff --git a/packages/react/src/schematics/application/lib/update-jest-config.ts b/packages/react/src/schematics/application/lib/update-jest-config.ts index d664bdcb32..6636e3ad5a 100644 --- a/packages/react/src/schematics/application/lib/update-jest-config.ts +++ b/packages/react/src/schematics/application/lib/update-jest-config.ts @@ -1,14 +1,33 @@ -import { noop, Rule } from '@angular-devkit/schematics'; +import { chain, noop, Rule } from '@angular-devkit/schematics'; import { updateJestConfigContent } from '@nrwl/react/src/utils/jest-utils'; import { NormalizedSchema } from '../schema'; +import { offsetFromRoot, updateJsonInTree } from '@nrwl/workspace'; export function updateJestConfig(options: NormalizedSchema): Rule { return options.unitTestRunner === 'none' ? noop() - : (host) => { - const configPath = `${options.appProjectRoot}/jest.config.js`; - const originalContent = host.read(configPath).toString(); - const content = updateJestConfigContent(originalContent); - host.overwrite(configPath, content); - }; + : chain([ + updateJsonInTree( + `${options.appProjectRoot}/tsconfig.spec.json`, + (json) => { + const offset = offsetFromRoot(options.appProjectRoot); + json.files = [ + `${offset}node_modules/@nrwl/react/typings/cssmodule.d.ts`, + `${offset}node_modules/@nrwl/react/typings/image.d.ts`, + ]; + if (options.style === 'styled-jsx') { + json.files.unshift( + `${offset}node_modules/@nrwl/react/typings/styled-jsx.d.ts` + ); + } + return json; + } + ), + (host) => { + const configPath = `${options.appProjectRoot}/jest.config.js`; + const originalContent = host.read(configPath).toString(); + const content = updateJestConfigContent(originalContent); + host.overwrite(configPath, content); + }, + ]); } diff --git a/packages/react/src/schematics/library/files/lib/tsconfig.json__tmpl__ b/packages/react/src/schematics/library/files/lib/tsconfig.json__tmpl__ index 3ec44ec6df..82cd653430 100644 --- a/packages/react/src/schematics/library/files/lib/tsconfig.json__tmpl__ +++ b/packages/react/src/schematics/library/files/lib/tsconfig.json__tmpl__ @@ -1,16 +1,16 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", + "extends": "<%= offsetFromRoot %>tsconfig.base.json", "compilerOptions": { "jsx": "react", "allowJs": true, "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "types": [] + "allowSyntheticDefaultImports": true }, - "files": [ - <% if (style === 'styled-jsx') { %>"<%= offsetFromRoot %>node_modules/@nrwl/react/typings/styled-jsx.d.ts",<% } %> - "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/cssmodule.d.ts", - "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/image.d.ts" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/react/src/schematics/library/files/lib/tsconfig.lib.json b/packages/react/src/schematics/library/files/lib/tsconfig.lib.json index 566fcd105d..7957a7db8e 100644 --- a/packages/react/src/schematics/library/files/lib/tsconfig.lib.json +++ b/packages/react/src/schematics/library/files/lib/tsconfig.lib.json @@ -4,6 +4,11 @@ "outDir": "<%= offsetFromRoot %>dist/out-tsc", "types": ["node"] }, + "files": [<% if (style === 'styled-jsx') { %> + "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/styled-jsx.d.ts",<% } %> + "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/cssmodule.d.ts", + "<%= offsetFromRoot %>node_modules/@nrwl/react/typings/image.d.ts" + ], "exclude": ["**/*.spec.ts", "**/*.spec.tsx"], "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] } diff --git a/packages/react/src/schematics/library/library.spec.ts b/packages/react/src/schematics/library/library.spec.ts index 6a914f8f0e..c6b5e5c397 100644 --- a/packages/react/src/schematics/library/library.spec.ts +++ b/packages/react/src/schematics/library/library.spec.ts @@ -56,22 +56,25 @@ describe('lib', () => { }); }); - it('should update root tsconfig.json', async () => { + it('should update tsconfig.base.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); }); - it('should update root tsconfig.json (no existing path mappings)', async () => { - const updatedTree: any = updateJsonInTree('tsconfig.json', (json) => { - json.compilerOptions.paths = undefined; - return json; - })(appTree, null); + it('should update root tsconfig.base.json (no existing path mappings)', async () => { + const updatedTree: any = updateJsonInTree( + 'tsconfig.base.json', + (json) => { + json.compilerOptions.paths = undefined; + return json; + } + )(appTree, null); const tree = await runSchematic('lib', { name: 'myLib' }, updatedTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); @@ -80,21 +83,14 @@ describe('lib', () => { it('should create a local tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); const tsconfigJson = readJsonInTree(tree, 'libs/my-lib/tsconfig.json'); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - allowJs: true, - jsx: 'react', - allowSyntheticDefaultImports: true, - esModuleInterop: true, - types: ['node', 'jest'], + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - files: [ - '../../node_modules/@nrwl/react/typings/cssmodule.d.ts', - '../../node_modules/@nrwl/react/typings/image.d.ts', - ], - include: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); it('should extend the local tsconfig.json with tsconfig.spec.json', async () => { @@ -206,13 +202,13 @@ describe('lib', () => { }); }); - it('should update tsconfig.json', async () => { + it('should update tsconfig.base.json', async () => { const tree = await runSchematic( 'lib', { name: 'myLib', directory: 'myDir' }, appTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -232,21 +228,14 @@ describe('lib', () => { tree, 'libs/my-dir/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../../tsconfig.json', - compilerOptions: { - allowJs: true, - jsx: 'react', - allowSyntheticDefaultImports: true, - esModuleInterop: true, - types: ['node', 'jest'], + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - files: [ - '../../../node_modules/@nrwl/react/typings/cssmodule.d.ts', - '../../../node_modules/@nrwl/react/typings/image.d.ts', - ], - include: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); }); diff --git a/packages/react/src/schematics/library/library.ts b/packages/react/src/schematics/library/library.ts index 81d5d62428..b04308e483 100644 --- a/packages/react/src/schematics/library/library.ts +++ b/packages/react/src/schematics/library/library.ts @@ -175,7 +175,7 @@ function updateTsConfig(options: NormalizedSchema): Rule { return chain([ (host: Tree, context: SchematicContext) => { const nxJson = readJsonInTree(host, 'nx.json'); - return updateJsonInTree('tsconfig.json', (json) => { + return updateJsonInTree('tsconfig.base.json', (json) => { const c = json.compilerOptions; c.paths = c.paths || {}; delete c.paths[options.name]; diff --git a/packages/react/src/schematics/redux/redux.ts b/packages/react/src/schematics/redux/redux.ts index b76e567a40..b61ef2184a 100644 --- a/packages/react/src/schematics/redux/redux.ts +++ b/packages/react/src/schematics/redux/redux.ts @@ -168,7 +168,7 @@ async function normalizeOptions( const workspace = await getWorkspace(host); const projectType = workspace.projects.get(options.project).extensions .projectType as string; - const tsConfigJson = readJsonInTree(host, 'tsconfig.json'); + const tsConfigJson = readJsonInTree(host, 'tsconfig.base.json'); const tsPaths: { [module: string]: string[] } = tsConfigJson.compilerOptions ? tsConfigJson.compilerOptions.paths || {} : {}; diff --git a/packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json b/packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json index 78db4cb7ea..f28fc7525e 100644 --- a/packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json +++ b/packages/storybook/src/schematics/configuration/lib-files/.storybook/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "<%= offsetFromRoot %>../tsconfig.base.json", "compilerOptions": { "emitDecoratorMetadata": true }, diff --git a/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json b/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json index c76ab8e216..30118db96b 100644 --- a/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json +++ b/packages/storybook/src/schematics/configuration/root-files/.storybook/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "exclude": ["../**/test.ts", "../**/*.spec.ts"], "include": ["../**/*"] } diff --git a/packages/storybook/src/schematics/init/init.spec.ts b/packages/storybook/src/schematics/init/init.spec.ts index 5ecf912a95..93e41e9f2a 100644 --- a/packages/storybook/src/schematics/init/init.spec.ts +++ b/packages/storybook/src/schematics/init/init.spec.ts @@ -55,7 +55,6 @@ describe('init', () => { }); it('should add react related dependencies when using React as uiFramework', async () => { - console.log('test'); const existing = 'existing'; const existingVersion = '1.0.0'; await callRule( diff --git a/packages/storybook/src/utils/testing.ts b/packages/storybook/src/utils/testing.ts index efd0f285f0..012455f9aa 100644 --- a/packages/storybook/src/utils/testing.ts +++ b/packages/storybook/src/utils/testing.ts @@ -23,6 +23,11 @@ testRunner.registerCollection( join(__dirname, '../../../angular/collection.json') ); +testRunner.registerCollection( + '@nrwl/jest', + join(__dirname, '../../../jest/collection.json') +); + testRunner.registerCollection( '@nrwl/cypress', join(__dirname, '../../../cypress/collection.json') diff --git a/packages/tao/package.json b/packages/tao/package.json index 5eec19ae03..e629e064a0 100644 --- a/packages/tao/package.json +++ b/packages/tao/package.json @@ -29,9 +29,9 @@ }, "homepage": "https://nx.dev", "dependencies": { - "@angular-devkit/schematics": "~9.1.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/architect": "~0.901.0", + "@angular-devkit/schematics": "~10.0.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/architect": "~0.1000.0", "inquirer": "^6.3.1", "minimist": "^1.2.0", "strip-json-comments": "2.0.1", diff --git a/packages/tao/src/commands/migrate.ts b/packages/tao/src/commands/migrate.ts index 2ab2e802a1..3f16269e2a 100644 --- a/packages/tao/src/commands/migrate.ts +++ b/packages/tao/src/commands/migrate.ts @@ -3,7 +3,7 @@ import { NodeJsSyncHost } from '@angular-devkit/core/node'; import { TaskExecutor } from '@angular-devkit/schematics'; import { BaseWorkflow } from '@angular-devkit/schematics/src/workflow'; import { BuiltinTaskExecutor } from '@angular-devkit/schematics/tasks/node'; -import { NodePackageName } from '@angular-devkit/schematics/tasks/node-package/options'; +import { NodePackageName } from '@angular-devkit/schematics/tasks/package-manager/options'; import { NodeModulesEngineHost } from '@angular-devkit/schematics/tools'; import { execSync } from 'child_process'; import { readFileSync, writeFileSync } from 'fs'; diff --git a/packages/web/package.json b/packages/web/package.json index 3f8b156ed3..20f6deace3 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -34,11 +34,11 @@ "@nrwl/cypress": "*", "@nrwl/jest": "*", "@nrwl/linter": "*", - "@angular-devkit/architect": "~0.901.0", - "@angular-devkit/build-optimizer": "~0.901.0", - "@angular-devkit/build-webpack": "~0.901.0", - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/architect": "~0.1000.0", + "@angular-devkit/build-optimizer": "~0.1000.0", + "@angular-devkit/build-webpack": "~0.1000.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", "@babel/core": "7.9.6", "@babel/preset-env": "7.9.6", "@babel/plugin-proposal-class-properties": "7.8.3", @@ -111,7 +111,7 @@ "webpack-dev-middleware": "3.7.0", "webpack-merge": "4.2.1", "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.1.0-rc.6", + "webpack-subresource-integrity": "1.1.0-rc.5", "worker-plugin": "3.2.0", "webpack-dev-server": "3.9.0", "webpack-node-externals": "1.7.2" diff --git a/packages/web/src/builders/build/build.impl.ts b/packages/web/src/builders/build/build.impl.ts index e9cc18cdb2..2242769f52 100644 --- a/packages/web/src/builders/build/build.impl.ts +++ b/packages/web/src/builders/build/build.impl.ts @@ -83,7 +83,7 @@ export function run(options: WebBuildBuilderOptions, context: BuilderContext) { ); } - return from(getSourceRoot(context, host)) + return from(getSourceRoot(context)) .pipe( map((sourceRoot) => { options = normalizeWebBuildOptions( diff --git a/packages/web/src/builders/dev-server/dev-server.impl.ts b/packages/web/src/builders/dev-server/dev-server.impl.ts index 0911060cb3..4cccf40264 100644 --- a/packages/web/src/builders/dev-server/dev-server.impl.ts +++ b/packages/web/src/builders/dev-server/dev-server.impl.ts @@ -20,7 +20,6 @@ import { runWebpackDevServer, DevServerBuildOutput, } from '@angular-devkit/build-webpack'; -import { NodeJsSyncHost } from '@angular-devkit/core/node'; export interface WebDevServerOptions extends JsonObject { host: string; @@ -45,10 +44,9 @@ function run( serveOptions: WebDevServerOptions, context: BuilderContext ): Observable { - const host = new NodeJsSyncHost(); return forkJoin( getBuildOptions(serveOptions, context), - from(getSourceRoot(context, host)) + from(getSourceRoot(context)) ).pipe( map(([buildOptions, sourceRoot]) => { buildOptions = normalizeWebBuildOptions( diff --git a/packages/web/src/builders/package/package.impl.spec.ts b/packages/web/src/builders/package/package.impl.spec.ts index ba1c9822e1..8b630bbb16 100644 --- a/packages/web/src/builders/package/package.impl.spec.ts +++ b/packages/web/src/builders/package/package.impl.spec.ts @@ -12,6 +12,8 @@ import { getMockContext } from '../../utils/testing'; import { PackageBuilderOptions } from '../../utils/types'; import * as projectGraphUtils from '@nrwl/workspace/src/core/project-graph'; import { ProjectGraph } from '@nrwl/workspace/src/core/project-graph'; +import { createRollupOptions } from './package.impl'; +import { normalizePackageOptions } from '@nrwl/web/src/utils/normalize'; jest.mock('tsconfig-paths-webpack-plugin'); @@ -31,75 +33,31 @@ describe('WebPackagebuilder', () => { tsConfig: 'libs/ui/tsconfig.json', watch: false, }; - spyOn(workspaces, 'readWorkspace').and.returnValue({ - workspace: { - projects: { - get: () => ({ - sourceRoot: join(__dirname, '../../..'), - }), - }, - }, - }); - spyOn(f, 'readJsonFile').and.returnValue({ - name: 'example', - }); - writeJsonFile = spyOn(f, 'writeJsonFile'); - - spyOn(projectGraphUtils, 'createProjectGraph').and.callFake(() => { - return { - nodes: {}, - dependencies: {}, - } as ProjectGraph; - }); }); - describe('run', () => { - it('should call runRollup with esm and umd', async () => { - runRollup = spyOn(rr, 'runRollup').and.callFake(() => { - return of({ - success: true, - }); - }); - spyOn(context.logger, 'info'); - - const result = await impl.run(testOptions, context).toPromise(); - - expect(runRollup).toHaveBeenCalled(); - expect( - runRollup.calls.allArgs()[0][0].output.map((o) => o.format) - ).toEqual(expect.arrayContaining(['esm', 'umd'])); - expect(result.success).toBe(true); - expect(context.logger.info).toHaveBeenCalledWith('Bundle complete.'); - }); - - it('should return failure when rollup fails', async () => { - runRollup = spyOn(rr, 'runRollup').and.callFake(() => throwError('Oops')); - spyOn(context.logger, 'error'); - - const result = await impl.run(testOptions, context).toPromise(); - - expect(result.success).toBe(false); - expect(f.writeJsonFile).not.toHaveBeenCalled(); - expect(context.logger.error).toHaveBeenCalledWith('Bundle failed.'); - }); - - it('updates package.json', async () => { - runRollup = spyOn(rr, 'runRollup').and.callFake(() => { - return of({ - success: true, - }); - }); - await impl.run(testOptions, context).toPromise(); - - expect(f.writeJsonFile).toHaveBeenCalled(); - - const content = writeJsonFile.calls.allArgs()[0][1]; - expect(content).toMatchObject({ - name: 'example', - main: './example.umd.js', - module: './example.esm.js', - typings: './index.d.ts', - }); + describe('createRollupOptions', () => { + it('should', () => { + const result: any = createRollupOptions( + normalizePackageOptions(testOptions, '/root', '/root/src'), + [], + context, + { name: 'example' }, + '/root/src' + ); + expect(result.output).toEqual([ + { + file: '/root/dist/ui/example.umd.js', + format: 'umd', + globals: {}, + name: 'Example', + }, + { + file: '/root/dist/ui/example.esm.js', + format: 'esm', + globals: {}, + name: 'Example', + }, + ]); }); }); }); diff --git a/packages/web/src/builders/package/package.impl.ts b/packages/web/src/builders/package/package.impl.ts index 099eb3d054..e0bc78bea7 100644 --- a/packages/web/src/builders/package/package.impl.ts +++ b/packages/web/src/builders/package/package.impl.ts @@ -15,7 +15,6 @@ import * as postcss from 'rollup-plugin-postcss'; import * as filesize from 'rollup-plugin-filesize'; import * as localResolve from 'rollup-plugin-local-resolve'; import { toClassName } from '@nrwl/workspace/src/utils/name-utils'; -import { NodeJsSyncHost } from '@angular-devkit/core/node'; import { BuildResult } from '@angular-devkit/build-webpack'; import { readJsonFile, @@ -66,14 +65,13 @@ export function run( rawOptions: PackageBuilderOptions, context: BuilderContext ): Observable { - const host = new NodeJsSyncHost(); const projGraph = createProjectGraph(); const { target, dependencies } = calculateProjectDependencies( projGraph, context ); - return from(getSourceRoot(context, host)).pipe( + return from(getSourceRoot(context)).pipe( switchMap((sourceRoot) => { if (!checkDependentProjectsHaveBeenBuilt(context, dependencies)) { return of({ success: false }); @@ -153,7 +151,7 @@ export function run( // ----------------------------------------------------------------------------- -function createRollupOptions( +export function createRollupOptions( options: NormalizedBundleBuilderOptions, dependencies: DependentBuildableProjectNode[], context: BuilderContext, diff --git a/packages/web/src/schematics/application/application.spec.ts b/packages/web/src/schematics/application/application.spec.ts index 70a9b4c5de..d17e118d84 100644 --- a/packages/web/src/schematics/application/application.spec.ts +++ b/packages/web/src/schematics/application/application.spec.ts @@ -52,8 +52,14 @@ describe('app', () => { expect(tree.exists('apps/my-app/src/app/app.element.css')).toBeTruthy(); const tsconfig = readJsonInTree(tree, 'apps/my-app/tsconfig.json'); - expect(tsconfig.extends).toEqual('../../tsconfig.json'); - expect(tsconfig.compilerOptions.types).toContain('jest'); + expect(tsconfig.references).toEqual([ + { + path: './tsconfig.app.json', + }, + { + path: './tsconfig.spec.json', + }, + ]); const tsconfigApp = JSON.parse( stripJsonComments(tree.readContent('apps/my-app/tsconfig.app.json')) @@ -135,21 +141,11 @@ describe('app', () => { // Make sure these have properties [ - { - path: 'apps/my-dir/my-app/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-app/tsconfig.app.json', lookupFn: (json) => json.compilerOptions.outDir, expectedValue: '../../../dist/out-tsc', }, - { - path: 'apps/my-dir/my-app-e2e/tsconfig.json', - lookupFn: (json) => json.extends, - expectedValue: '../../../tsconfig.json', - }, { path: 'apps/my-dir/my-app-e2e/tsconfig.e2e.json', lookupFn: (json) => json.compilerOptions.outDir, diff --git a/packages/web/src/schematics/application/files/app/tsconfig.json b/packages/web/src/schematics/application/files/app/tsconfig.json index af7fb82ae3..795ebf01cb 100644 --- a/packages/web/src/schematics/application/files/app/tsconfig.json +++ b/packages/web/src/schematics/application/files/app/tsconfig.json @@ -1,7 +1,10 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [] - }, - "include": ["**/*.ts"] + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + } + ] } diff --git a/packages/web/src/utils/source-root.ts b/packages/web/src/utils/source-root.ts index 564cd409b5..ecb390e107 100644 --- a/packages/web/src/utils/source-root.ts +++ b/packages/web/src/utils/source-root.ts @@ -1,15 +1,9 @@ import { BuilderContext } from '@angular-devkit/architect'; -import { workspaces } from '@angular-devkit/core'; -import { Host } from '@angular-devkit/core/src/virtual-fs/host'; -export async function getSourceRoot(context: BuilderContext, host: Host<{}>) { - const workspaceHost = workspaces.createWorkspaceHost(host); - const { workspace } = await workspaces.readWorkspace( - context.workspaceRoot, - workspaceHost - ); - if (workspace.projects.get(context.target.project).sourceRoot) { - return workspace.projects.get(context.target.project).sourceRoot; +export async function getSourceRoot(context: BuilderContext): Promise { + const projectMeta = await context.getProjectMetadata(context.target.project); + if (projectMeta.sourceRoot) { + return projectMeta.sourceRoot as string; } else { context.reportStatus('Error'); const message = `${context.target.project} does not have a sourceRoot. Please define one.`; diff --git a/packages/workspace/migrations.json b/packages/workspace/migrations.json index 720cf32ab1..f2bc0ba312 100644 --- a/packages/workspace/migrations.json +++ b/packages/workspace/migrations.json @@ -94,6 +94,11 @@ "version": "10.0.0-beta.0", "description": "Add default branch to nx.json", "factory": "./src/migrations/update-10-0-0/update-10-0-0" + }, + "solution-tsconfigs": { + "version": "10.0.0-beta.0", + "description": "Migrate tsconfigs to solution style tsconfigs", + "factory": "./src/migrations/update-10-0-0/solution-tsconfigs" } }, "packageJsonUpdates": { @@ -598,5 +603,102 @@ } } } + }, + "10.0.0": { + "version": "10.0.0-beta.1", + "packages": { + "@angular/cli": { + "version": "~10.0.0", + "alwaysAddToPackageJson": false + }, + "typescript": { + "version": "~3.9.3", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/architect": { + "version": "~0.1000.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/build-angular": { + "version": "~0.1000.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/build-ng-packagr": { + "version": "~0.1000.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/build-webpack": { + "version": "~0.1000.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/build-optimizer": { + "version": "~0.1000.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/core": { + "version": "~10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular-devkit/schematics": { + "version": "~10.0.0", + "alwaysAddToPackageJson": false + }, + "@schematics/angular": { + "version": "~10.0.0", + "alwaysAddToPackageJson": false + }, + "rxjs": { + "version": "~6.5.4", + "alwaysAddToPackageJson": false + }, + "@angular/core": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/common": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/forms": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/compiler": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/compiler-cli": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/platform-browser": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/platform-browser-dynamic": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/router": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/upgrade": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/language-service": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/animations": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + }, + "@angular/service-worker": { + "version": "^10.0.0", + "alwaysAddToPackageJson": false + } + } } } diff --git a/packages/workspace/package.json b/packages/workspace/package.json index 77f0b86640..9c3f750b1c 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -50,8 +50,8 @@ "prettier": "^2.0.4" }, "dependencies": { - "@angular-devkit/core": "~9.1.0", - "@angular-devkit/schematics": "~9.1.0", + "@angular-devkit/core": "~10.0.0", + "@angular-devkit/schematics": "~10.0.0", "cosmiconfig": "4.0.0", "fs-extra": "6.0.0", "dotenv": "8.2.0", diff --git a/packages/workspace/src/core/affected-project-graph/affected-project-graph.spec.ts b/packages/workspace/src/core/affected-project-graph/affected-project-graph.spec.ts index 7e22e3d382..f9a1b6a45e 100644 --- a/packages/workspace/src/core/affected-project-graph/affected-project-graph.spec.ts +++ b/packages/workspace/src/core/affected-project-graph/affected-project-graph.spec.ts @@ -111,7 +111,7 @@ describe('project graph', () => { './package.json': JSON.stringify(packageJson), './nx.json': JSON.stringify(nxJson), './workspace.json': JSON.stringify(workspaceJson), - './tsconfig.json': JSON.stringify(tsConfigJson), + './tsconfig.base.json': JSON.stringify(tsConfigJson), }; files = Object.keys(filesJson).map((f) => ({ file: f, diff --git a/packages/workspace/src/core/file-utils.ts b/packages/workspace/src/core/file-utils.ts index 0504b54fae..7f29bc9f3f 100644 --- a/packages/workspace/src/core/file-utils.ts +++ b/packages/workspace/src/core/file-utils.ts @@ -194,7 +194,7 @@ export function readNxJson(): NxJson { // TODO: Make this list extensible export function rootWorkspaceFileNames(): string[] { - return [`package.json`, workspaceFileName(), `nx.json`, `tsconfig.json`]; + return [`package.json`, workspaceFileName(), `nx.json`, `tsconfig.base.json`]; } export function readWorkspaceFiles(): FileData[] { diff --git a/packages/workspace/src/core/project-graph/build-dependencies/explicit-project-dependencies.spec.ts b/packages/workspace/src/core/project-graph/build-dependencies/explicit-project-dependencies.spec.ts index 10553c0b40..500e09a2c5 100644 --- a/packages/workspace/src/core/project-graph/build-dependencies/explicit-project-dependencies.spec.ts +++ b/packages/workspace/src/core/project-graph/build-dependencies/explicit-project-dependencies.spec.ts @@ -70,7 +70,7 @@ describe('explicit project dependencies', () => { }`, './workspace.json': JSON.stringify(workspaceJson), './nx.json': JSON.stringify(nxJson), - './tsconfig.json': JSON.stringify(tsConfig), + './tsconfig.base.json': JSON.stringify(tsConfig), './libs/proj/index.ts': `import {a} from '@proj/my-second-proj'; import('@proj/project-3'); const a = { loadChildren: '@proj/proj4ab#a' }; diff --git a/packages/workspace/src/core/project-graph/project-graph.spec.ts b/packages/workspace/src/core/project-graph/project-graph.spec.ts index 5753cdfacc..4d1c2edd5e 100644 --- a/packages/workspace/src/core/project-graph/project-graph.spec.ts +++ b/packages/workspace/src/core/project-graph/project-graph.spec.ts @@ -122,7 +122,7 @@ describe('project graph', () => { './package.json': JSON.stringify(packageJson), './nx.json': JSON.stringify(nxJson), './workspace.json': JSON.stringify(workspaceJson), - './tsconfig.json': JSON.stringify(tsConfigJson), + './tsconfig.base.json': JSON.stringify(tsConfigJson), }; vol.reset(); vol.fromJSON(filesJson, '/root'); diff --git a/packages/workspace/src/core/project-graph/project-graph.ts b/packages/workspace/src/core/project-graph/project-graph.ts index 272ff1ac9b..09c3131dc7 100644 --- a/packages/workspace/src/core/project-graph/project-graph.ts +++ b/packages/workspace/src/core/project-graph/project-graph.ts @@ -161,7 +161,7 @@ function rootWorkspaceFileData(workspaceFiles: FileData[]): FileData[] { 'workspace.json', 'angular.json', `nx.json`, - `tsconfig.json`, + `tsconfig.base.json`, ].reduce((acc: FileData[], curr: string) => { const fileData = workspaceFiles.find((x) => x.file === curr); if (fileData) { diff --git a/packages/workspace/src/core/target-project-locator.spec.ts b/packages/workspace/src/core/target-project-locator.spec.ts index 560dd7cfbd..c97d3af3cf 100644 --- a/packages/workspace/src/core/target-project-locator.spec.ts +++ b/packages/workspace/src/core/target-project-locator.spec.ts @@ -44,7 +44,7 @@ describe('findTargetProjectWithImport', () => { fsJson = { './workspace.json': JSON.stringify(workspaceJson), './nx.json': JSON.stringify(nxJson), - './tsconfig.json': JSON.stringify(tsConfig), + './tsconfig.base.json': JSON.stringify(tsConfig), './libs/proj/index.ts': `import {a} from '@proj/my-second-proj'; import('@proj/project-3'); const a = { loadChildren: '@proj/proj4ab#a' }; diff --git a/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.spec.ts b/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.spec.ts new file mode 100644 index 0000000000..ba0d33353f --- /dev/null +++ b/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.spec.ts @@ -0,0 +1,71 @@ +import { Tree } from '@angular-devkit/schematics'; +import { callRule, runMigration } from '../../utils/testing'; +import { readJsonInTree, updateJsonInTree } from '@nrwl/workspace'; + +describe('Solution Tsconfigs Migration', () => { + let tree: Tree; + + beforeEach(async () => { + tree = Tree.empty(); + tree = await callRule( + updateJsonInTree('tsconfig.json', () => ({ + compilerOptions: { + target: 'es2015', + }, + })), + tree + ); + tree = await callRule( + updateJsonInTree('apps/app1/tsconfig.json', () => ({ + extends: '../../tsconfig.json', + compilerOptions: { + module: 'commonjs', + }, + })), + tree + ); + tree = await callRule( + updateJsonInTree('apps/app1/tsconfig.spec.json', () => ({ + extends: './tsconfig.json', + compilerOptions: { + module: 'esnext', + }, + })), + tree + ); + }); + + it('should rename tsconfig.json', async () => { + const result = await runMigration('solution-tsconfigs', {}, tree); + expect(result.exists('tsconfig.base.json')).toEqual(true); + expect(result.exists('tsconfig.json')).toEqual(false); + }); + + it('should update tsconfig.base.json', async () => { + const result = await runMigration('solution-tsconfigs', {}, tree); + const json = readJsonInTree(result, 'tsconfig.base.json'); + expect(json).toEqual({ + compilerOptions: { + target: 'es2015', + }, + }); + }); + + it('should extend tsconfig.base.json in tsconfigs that extended tsconfig.json', async () => { + const result = await runMigration('solution-tsconfigs', {}, tree); + const json = readJsonInTree(result, 'apps/app1/tsconfig.json'); + expect(json).toEqual({ + extends: '../../tsconfig.base.json', + compilerOptions: { + module: 'commonjs', + }, + files: [], + include: [], + references: [ + { + path: './tsconfig.spec.json', + }, + ], + }); + }); +}); diff --git a/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.ts b/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.ts new file mode 100644 index 0000000000..77a7112d54 --- /dev/null +++ b/packages/workspace/src/migrations/update-10-0-0/solution-tsconfigs.ts @@ -0,0 +1,144 @@ +import { basename, dirname, join, normalize, Path } from '@angular-devkit/core'; +import { + callRule, + chain, + Rule, + SchematicContext, + Tree, +} from '@angular-devkit/schematics'; +import { formatFiles, readJsonInTree, updateJsonInTree } from '@nrwl/workspace'; +import ignore from 'ignore'; +import { relative } from 'path'; + +function renameRootTsconfig(host: Tree) { + if (!host.exists('tsconfig.json')) { + throw new Error('Root tsconfig.json does not exist'); + } + + host.rename('tsconfig.json', 'tsconfig.base.json'); +} + +function visitNotIgnoredFiles( + visitor: (file: Path, host: Tree, context: SchematicContext) => void | Rule, + dir: Path = normalize('') +): Rule { + return (host, context) => { + let ig; + if (host.exists('.gitignore')) { + ig = ignore(); + ig.add(host.read('.gitignore').toString()); + } + function visit(_dir: Path) { + if (_dir && ig?.ignores(_dir)) { + return; + } + const dirEntry = host.getDir(_dir); + dirEntry.subfiles.forEach((file) => { + if (ig?.ignores(join(_dir, file))) { + return; + } + const maybeRule = visitor(join(_dir, file), host, context); + if (maybeRule) { + callRule(maybeRule, host, context).subscribe(); + } + }); + + dirEntry.subdirs.forEach((subdir) => { + visit(join(_dir, subdir)); + }); + } + + visit(dir); + }; +} + +function moveIncludesToProjectTsconfig( + file: string, + extendedTsconfigPath: Path, + extendedTsconfig: any +) { + return updateJsonInTree(file, (json) => { + json.files = + json.files || + extendedTsconfig.files?.map((p: string) => + relative(file, join(extendedTsconfigPath, p)) + ); + json.include = + json.include || + extendedTsconfig.include?.map((p: string) => + relative(file, join(extendedTsconfigPath, p)) + ); + return json; + }); +} + +function convertToSolutionTsconfig(tsconfigPath: Path): Rule { + return updateJsonInTree(tsconfigPath, (json) => { + json.files = []; + json.include = []; + return json; + }); +} + +function addReference( + extendedTsconfigPath: string & { __PRIVATE_DEVKIT_PATH: void }, + file: Path +): Rule { + return updateJsonInTree(extendedTsconfigPath, (json, context) => { + json.references = json.references || []; + const relativePath = + (relative(dirname(extendedTsconfigPath), file).startsWith('../') + ? '' + : './') + relative(dirname(extendedTsconfigPath), file); + context.logger.info(`Referencing ${file} in ${extendedTsconfigPath}`); + json.references.push({ + path: relativePath, + }); + return json; + }); +} + +function updateExtend(file: Path): Rule { + return updateJsonInTree(file, (json) => { + json.extends = json.extends.replace(/tsconfig.json$/, 'tsconfig.base.json'); + return json; + }); +} + +export default function (schema: any): Rule { + return chain([ + renameRootTsconfig, + visitNotIgnoredFiles((file, host, context) => { + if (!file.endsWith('.json')) { + return; + } + + try { + const json = readJsonInTree(host, file); + if (!json.extends) { + return; + } + const extendedTsconfigPath = join(dirname(file), json.extends); + if (extendedTsconfigPath === normalize('tsconfig.json')) { + return updateExtend(file); + } else if (basename(json.extends) === 'tsconfig.json') { + const extendedTsconfig = readJsonInTree(host, extendedTsconfigPath); + return chain([ + moveIncludesToProjectTsconfig( + file, + extendedTsconfigPath, + extendedTsconfig + ), + convertToSolutionTsconfig(extendedTsconfigPath), + addReference(extendedTsconfigPath, file), + ]); + } else { + return; + } + } catch (e) { + context.logger.warn(`Could not update ${file}: Invalid JSON`); + } + }), + formatFiles(), + ]); +} diff --git a/packages/workspace/src/schematics/init/files/tools/tsconfig.tools.json b/packages/workspace/src/schematics/init/files/tools/tsconfig.tools.json index 82bd1f098d..5f6f15d74e 100644 --- a/packages/workspace/src/schematics/init/files/tools/tsconfig.tools.json +++ b/packages/workspace/src/schematics/init/files/tools/tsconfig.tools.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../dist/out-tsc/tools", "rootDir": ".", diff --git a/packages/workspace/src/schematics/init/init.spec.ts b/packages/workspace/src/schematics/init/init.spec.ts index 7e90a47869..5b41fd5aa3 100644 --- a/packages/workspace/src/schematics/init/init.spec.ts +++ b/packages/workspace/src/schematics/init/init.spec.ts @@ -124,7 +124,7 @@ describe('workspace', () => { '/tsconfig.spec.json', '{"extends": "../tsconfig.json", "compilerOptions": {}}' ); - appTree.create('/tsconfig.json', '{"compilerOptions": {}}'); + appTree.create('/tsconfig.base.json', '{"compilerOptions": {}}'); appTree.create('/tslint.json', '{"rules": {}}'); appTree.create('/e2e/protractor.conf.js', '// content'); appTree.create('/src/app/app.module.ts', '// content'); @@ -177,7 +177,7 @@ describe('workspace', () => { '/src/tsconfig.spec.json', '{"extends": "../tsconfig.json", "compilerOptions": {}}' ); - appTree.create('/tsconfig.json', '{"compilerOptions": {}}'); + appTree.create('/tsconfig.base.json', '{"compilerOptions": {}}'); appTree.create('/tslint.json', '{"rules": {}}'); appTree.create('/e2e/protractor.conf.js', '// content'); appTree.create('/src/app/app.module.ts', '// content'); @@ -216,7 +216,7 @@ describe('workspace', () => { '/tsconfig.spec.json', '{"extends": "../tsconfig.json", "compilerOptions": {}}' ); - appTree.create('/tsconfig.json', '{"compilerOptions": {}}'); + appTree.create('/tsconfig.base.json', '{"compilerOptions": {}}'); appTree.create('/tslint.json', '{"rules": {}}'); appTree.create('/e2e/protractor.conf.js', '// content'); appTree.create('/src/app/app.module.ts', '// content'); diff --git a/packages/workspace/src/schematics/init/init.ts b/packages/workspace/src/schematics/init/init.ts index bee5de28fc..bf0bb41d2e 100755 --- a/packages/workspace/src/schematics/init/init.ts +++ b/packages/workspace/src/schematics/init/init.ts @@ -229,7 +229,7 @@ function updateAngularCLIJson(options: Schema): Rule { } function updateTsConfig(options: Schema): Rule { - return updateJsonInTree('tsconfig.json', (tsConfigJson) => + return updateJsonInTree('tsconfig.base.json', (tsConfigJson) => setUpCompilerOptions(tsConfigJson, options.npmScope, '') ); } @@ -244,14 +244,14 @@ function updateTsConfigsJson(options: Schema) { return chain([ updateJsonInTree(app.architect.build.options.tsConfig, (json) => { - json.extends = `${offset}tsconfig.json`; + json.extends = `${offset}tsconfig.base.json`; json.compilerOptions.outDir = `${offset}dist/out-tsc`; return json; }), app.architect.test ? updateJsonInTree(app.architect.test.options.tsConfig, (json) => { - json.extends = `${offset}tsconfig.json`; + json.extends = `${offset}tsconfig.base.json`; json.compilerOptions.outDir = `${offset}dist/out-tsc`; return json; }) @@ -268,7 +268,9 @@ function updateTsConfigsJson(options: Schema) { ? updateJsonInTree( e2eProject.architect.lint.options.tsConfig, (json) => { - json.extends = `${offsetFromRoot(e2eProject.root)}tsconfig.json`; + json.extends = `${offsetFromRoot( + e2eProject.root + )}tsconfig.base.json`; json.compilerOptions = { ...json.compilerOptions, outDir: `${offsetFromRoot(e2eProject.root)}dist/out-tsc`, @@ -472,7 +474,7 @@ function createAdditionalFiles(options: Schema): Rule { implicitDependencies: { 'angular.json': '*', 'package.json': '*', - 'tsconfig.json': '*', + 'tsconfig.base.json': '*', 'tslint.json': '*', 'nx.json': '*', }, @@ -579,7 +581,7 @@ const createNxJson = (host: Tree) => { implicitDependencies: { 'angular.json': '*', 'package.json': '*', - 'tsconfig.json': '*', + 'tsconfig.base.json': '*', 'tslint.json': '*', 'nx.json': '*', }, diff --git a/packages/workspace/src/schematics/library/files/lib/tsconfig.json b/packages/workspace/src/schematics/library/files/lib/tsconfig.json index af7fb82ae3..9b3cf74e56 100644 --- a/packages/workspace/src/schematics/library/files/lib/tsconfig.json +++ b/packages/workspace/src/schematics/library/files/lib/tsconfig.json @@ -1,7 +1,10 @@ { - "extends": "<%= offsetFromRoot %>tsconfig.json", - "compilerOptions": { - "types": [] - }, - "include": ["**/*.ts"] + "extends": "<%= offsetFromRoot %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/workspace/src/schematics/library/library.spec.ts b/packages/workspace/src/schematics/library/library.spec.ts index 017d0aa9a2..d0d71ecabf 100644 --- a/packages/workspace/src/schematics/library/library.spec.ts +++ b/packages/workspace/src/schematics/library/library.spec.ts @@ -47,20 +47,23 @@ describe('lib', () => { it('should update root tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); }); it('should update root tsconfig.json (no existing path mappings)', async () => { - const updatedTree: any = updateJsonInTree('tsconfig.json', (json) => { - json.compilerOptions.paths = undefined; - return json; - })(appTree, null); + const updatedTree: any = updateJsonInTree( + 'tsconfig.base.json', + (json) => { + json.compilerOptions.paths = undefined; + return json; + } + )(appTree, null); const tree = await runSchematic('lib', { name: 'myLib' }, updatedTree); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsconfigJson.compilerOptions.paths['@proj/my-lib']).toEqual([ 'libs/my-lib/src/index.ts', ]); @@ -69,13 +72,14 @@ describe('lib', () => { it('should create a local tsconfig.json', async () => { const tree = await runSchematic('lib', { name: 'myLib' }, appTree); const tsconfigJson = readJsonInTree(tree, 'libs/my-lib/tsconfig.json'); - expect(tsconfigJson).toEqual({ - extends: '../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - include: ['**/*.ts'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); it('should extend the local tsconfig.json with tsconfig.spec.json', async () => { @@ -187,7 +191,7 @@ describe('lib', () => { { name: 'myLib', directory: 'myDir' }, appTree ); - const tsconfigJson = readJsonInTree(tree, '/tsconfig.json'); + const tsconfigJson = readJsonInTree(tree, '/tsconfig.base.json'); expect( tsconfigJson.compilerOptions.paths['@proj/my-dir/my-lib'] ).toEqual(['libs/my-dir/my-lib/src/index.ts']); @@ -207,13 +211,14 @@ describe('lib', () => { tree, 'libs/my-dir/my-lib/tsconfig.json' ); - expect(tsconfigJson).toEqual({ - extends: '../../../tsconfig.json', - compilerOptions: { - types: ['node', 'jest'], + expect(tsconfigJson.references).toEqual([ + { + path: './tsconfig.lib.json', }, - include: ['**/*.ts'], - }); + { + path: './tsconfig.spec.json', + }, + ]); }); it('should create a local tslint.json', async () => { diff --git a/packages/workspace/src/schematics/library/library.ts b/packages/workspace/src/schematics/library/library.ts index 4f13784ea5..8041b169da 100644 --- a/packages/workspace/src/schematics/library/library.ts +++ b/packages/workspace/src/schematics/library/library.ts @@ -55,7 +55,7 @@ function updateTsConfig(options: NormalizedSchema): Rule { return chain([ (host: Tree, context: SchematicContext) => { const nxJson = readJsonInTree(host, 'nx.json'); - return updateJsonInTree('tsconfig.json', (json) => { + return updateJsonInTree('tsconfig.base.json', (json) => { const c = json.compilerOptions; c.paths = c.paths || {}; delete c.paths[options.name]; diff --git a/packages/workspace/src/schematics/move/lib/update-imports.spec.ts b/packages/workspace/src/schematics/move/lib/update-imports.spec.ts index 60bdb67a6e..ea3d9bade5 100644 --- a/packages/workspace/src/schematics/move/lib/update-imports.spec.ts +++ b/packages/workspace/src/schematics/move/lib/update-imports.spec.ts @@ -48,14 +48,14 @@ describe('updateImports Rule', () => { it('should update project ref in the tsconfig file', async () => { tree = await runSchematic('lib', { name: 'my-source' }, tree); - let tsConfig = readJsonInTree(tree, '/tsconfig.json'); + let tsConfig = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsConfig.compilerOptions.paths).toEqual({ '@proj/my-source': ['libs/my-source/src/index.ts'], }); tree = (await callRule(updateImports(schema), tree)) as UnitTestTree; - tsConfig = readJsonInTree(tree, '/tsconfig.json'); + tsConfig = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsConfig.compilerOptions.paths).toEqual({ '@proj/my-destination': ['libs/my-destination/src/index.ts'], }); diff --git a/packages/workspace/src/schematics/move/lib/update-imports.ts b/packages/workspace/src/schematics/move/lib/update-imports.ts index 461f8a9f10..b09b56af51 100644 --- a/packages/workspace/src/schematics/move/lib/update-imports.ts +++ b/packages/workspace/src/schematics/move/lib/update-imports.ts @@ -61,7 +61,7 @@ export function updateImports(schema: Schema) { to: schema.destination, }; - const tsConfigPath = 'tsconfig.json'; + const tsConfigPath = 'tsconfig.base.json'; if (tree.exists(tsConfigPath)) { let contents = JSON.parse(tree.read(tsConfigPath).toString('utf-8')); const path = contents.compilerOptions.paths[ diff --git a/packages/workspace/src/schematics/remove/lib/update-tsconfig.spec.ts b/packages/workspace/src/schematics/remove/lib/update-tsconfig.spec.ts index a96916293a..1c8b85fae1 100644 --- a/packages/workspace/src/schematics/remove/lib/update-tsconfig.spec.ts +++ b/packages/workspace/src/schematics/remove/lib/update-tsconfig.spec.ts @@ -24,14 +24,14 @@ describe('updateTsconfig Rule', () => { it('should delete project ref from the tsconfig', async () => { tree = await runSchematic('lib', { name: 'my-lib' }, tree); - let tsConfig = readJsonInTree(tree, '/tsconfig.json'); + let tsConfig = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsConfig.compilerOptions.paths).toEqual({ '@proj/my-lib': ['libs/my-lib/src/index.ts'], }); tree = (await callRule(updateTsconfig(schema), tree)) as UnitTestTree; - tsConfig = readJsonInTree(tree, '/tsconfig.json'); + tsConfig = readJsonInTree(tree, '/tsconfig.base.json'); expect(tsConfig.compilerOptions.paths).toEqual({}); }); }); diff --git a/packages/workspace/src/schematics/remove/lib/update-tsconfig.ts b/packages/workspace/src/schematics/remove/lib/update-tsconfig.ts index 49ddddbf09..58a96fc9c1 100644 --- a/packages/workspace/src/schematics/remove/lib/update-tsconfig.ts +++ b/packages/workspace/src/schematics/remove/lib/update-tsconfig.ts @@ -21,7 +21,7 @@ export function updateTsconfig(schema: Schema) { const nxJson = readJsonInTree(tree, 'nx.json'); const project = workspace.projects.get(schema.projectName); - const tsConfigPath = 'tsconfig.json'; + const tsConfigPath = 'tsconfig.base.json'; if (tree.exists(tsConfigPath)) { const tsConfigJson = readJsonInTree(tree, tsConfigPath); delete tsConfigJson.compilerOptions.paths[ diff --git a/packages/workspace/src/schematics/workspace/files/nx.json b/packages/workspace/src/schematics/workspace/files/nx.json index c4fc5eb497..baf65ce4ff 100644 --- a/packages/workspace/src/schematics/workspace/files/nx.json +++ b/packages/workspace/src/schematics/workspace/files/nx.json @@ -9,7 +9,7 @@ "dependencies": "*", "devDependencies": "*" }, - "tsconfig.json": "*", + "tsconfig.base.json": "*", "tslint.json": "*", "nx.json": "*" }, @@ -17,12 +17,7 @@ "default": { "runner": "@nrwl/workspace/tasks-runners/default", "options": { - "cacheableOperations": [ - "build", - "lint", - "test", - "e2e" - ] + "cacheableOperations": ["build", "lint", "test", "e2e"] } } }, diff --git a/packages/workspace/src/schematics/workspace/files/tools/tsconfig.tools.json b/packages/workspace/src/schematics/workspace/files/tools/tsconfig.tools.json index 82bd1f098d..5f6f15d74e 100644 --- a/packages/workspace/src/schematics/workspace/files/tools/tsconfig.tools.json +++ b/packages/workspace/src/schematics/workspace/files/tools/tsconfig.tools.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../dist/out-tsc/tools", "rootDir": ".", diff --git a/packages/workspace/src/schematics/workspace/files/tsconfig.json b/packages/workspace/src/schematics/workspace/files/tsconfig.base.json similarity index 100% rename from packages/workspace/src/schematics/workspace/files/tsconfig.json rename to packages/workspace/src/schematics/workspace/files/tsconfig.base.json diff --git a/packages/workspace/src/schematics/workspace/workspace.spec.ts b/packages/workspace/src/schematics/workspace/workspace.spec.ts index b821c660d8..72e6143d14 100644 --- a/packages/workspace/src/schematics/workspace/workspace.spec.ts +++ b/packages/workspace/src/schematics/workspace/workspace.spec.ts @@ -31,7 +31,7 @@ describe('workspace', () => { dependencies: '*', devDependencies: '*', }, - 'tsconfig.json': '*', + 'tsconfig.base.json': '*', 'tslint.json': '*', 'nx.json': '*', }, diff --git a/packages/workspace/src/tasks-runner/hasher.spec.ts b/packages/workspace/src/tasks-runner/hasher.spec.ts index 222365cfeb..729eb591d5 100644 --- a/packages/workspace/src/tasks-runner/hasher.spec.ts +++ b/packages/workspace/src/tasks-runner/hasher.spec.ts @@ -11,7 +11,7 @@ describe('Hasher', () => { 'nx.json': 'nx.json.hash', 'package-lock.json': 'package-lock.json.hash', 'package.json': 'package.json.hash', - 'tsconfig.json': 'tsconfig.json.hash', + 'tsconfig.base.json': 'tsconfig.base.json.hash', 'workspace.json': 'workspace.json.hash', }; beforeEach(() => { @@ -67,7 +67,7 @@ describe('Hasher', () => { 'nx.json': 'nx.json.hash', 'package-lock.json': 'package-lock.json.hash', 'package.json': 'package.json.hash', - 'tsconfig.json': 'tsconfig.json.hash', + 'tsconfig.base.json': 'tsconfig.base.json.hash', 'workspace.json': 'workspace.json.hash', }); expect(hash.details.runtime).toEqual({ diff --git a/packages/workspace/src/tslint/nxEnforceModuleBoundariesRule.spec.ts b/packages/workspace/src/tslint/nxEnforceModuleBoundariesRule.spec.ts index 02779d4002..1141a79140 100644 --- a/packages/workspace/src/tslint/nxEnforceModuleBoundariesRule.spec.ts +++ b/packages/workspace/src/tslint/nxEnforceModuleBoundariesRule.spec.ts @@ -65,7 +65,7 @@ const fileSys = { './libs/domain2/src/index.ts': '', './libs/buildableLib/src/main.ts': '', './libs/nonBuildableLib/src/main.ts': '', - './tsconfig.json': JSON.stringify(tsconfig), + './tsconfig.base.json': JSON.stringify(tsconfig), }; describe('Enforce Module Boundaries', () => { diff --git a/packages/workspace/src/utils/lint.ts b/packages/workspace/src/utils/lint.ts index 42104c14c1..70562aba20 100644 --- a/packages/workspace/src/utils/lint.ts +++ b/packages/workspace/src/utils/lint.ts @@ -230,7 +230,7 @@ const globalESLint = ` "parserOptions": { "ecmaVersion": 2018, "sourceType": "module", - "project": "./tsconfig.json" + "project": "./tsconfig.base.json" }, "ignorePatterns": ["**/*"], "plugins": ["@typescript-eslint", "@nrwl/nx"], diff --git a/packages/workspace/src/utils/testing-utils.ts b/packages/workspace/src/utils/testing-utils.ts index 974ff99502..ce18ec909f 100644 --- a/packages/workspace/src/utils/testing-utils.ts +++ b/packages/workspace/src/utils/testing-utils.ts @@ -56,7 +56,7 @@ export function createEmptyWorkspace(tree: Tree): Tree { }) ); tree.create( - '/tsconfig.json', + '/tsconfig.base.json', JSON.stringify({ compilerOptions: { paths: {} } }) ); tree.create( diff --git a/packages/workspace/src/utils/typescript.ts b/packages/workspace/src/utils/typescript.ts index e989a6c352..2a6b93a8e2 100644 --- a/packages/workspace/src/utils/typescript.ts +++ b/packages/workspace/src/utils/typescript.ts @@ -45,7 +45,7 @@ export function resolveModuleByImport(importExpr: string, filePath: string) { } function getCompilerHost() { - const { options } = readTsConfig(`${appRootPath}/tsconfig.json`); + const { options } = readTsConfig(`${appRootPath}/tsconfig.base.json`); const host = ts.createCompilerHost(options, true); const moduleResolutionCache = ts.createModuleResolutionCache( appRootPath, diff --git a/packages/workspace/src/utils/versions.ts b/packages/workspace/src/utils/versions.ts index 37a0832a77..76be1c35c9 100644 --- a/packages/workspace/src/utils/versions.ts +++ b/packages/workspace/src/utils/versions.ts @@ -1,7 +1,7 @@ export const nxVersion = '*'; -export const angularCliVersion = '9.1.0'; -export const typescriptVersion = '~3.8.3'; +export const angularCliVersion = '~10.0.0'; +export const typescriptVersion = '~3.9.3'; export const prettierVersion = '2.0.4'; export const typescriptESLintVersion = '2.19.2'; export const eslintVersion = '6.8.0'; diff --git a/scripts/e2e.ts b/scripts/e2e.ts index e20269528e..46d11aec19 100755 --- a/scripts/e2e.ts +++ b/scripts/e2e.ts @@ -108,7 +108,7 @@ async function runTest() { .join(','); } - execSync(`./scripts/package.sh 9999.0.1 "~9.1.0" "3.8.3" "2.0.4"`, { + execSync(`./scripts/package.sh 9999.0.1 "~10.0.0" "3.9.3" "2.0.4"`, { stdio: [0, 1, 2], }); execSync(`rm -rf tmp`); diff --git a/yarn.lock b/yarn.lock index ae1fa9e695..7bd0305148 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,13 +45,13 @@ dependencies: cross-fetch "3.0.4" -"@angular-devkit/architect@0.901.0": - version "0.901.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.0.tgz#c660cb76e3bd35fc294d8e8578782b83157924aa" - integrity sha512-SlqEBkPrT40zMCy5344AsUqC76pEPCaGPaAkCIvadaz2dC9vNMzQrvubCPJHViD/TumkSX1kYmLS3iYASVM9GQ== +"@angular-devkit/architect@0.1000.1", "@angular-devkit/architect@~0.1000.0": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.1.tgz#6ca8529d888b3f5fc1f28863bb744855b67b811e" + integrity sha512-GpoJ+p38feerxwfpJgrjwv/2c47qIX+TMdfKVqbswxLnzK21hXjd0zn6UfovAFwLeL1hRu2O00NDsmQn01gdoA== dependencies: - "@angular-devkit/core" "9.1.0" - rxjs "6.5.4" + "@angular-devkit/core" "10.0.1" + rxjs "6.5.5" "@angular-devkit/architect@0.901.7", "@angular-devkit/architect@~0.901.0": version "0.901.7" @@ -61,93 +61,105 @@ "@angular-devkit/core" "9.1.7" rxjs "6.5.4" -"@angular-devkit/build-angular@~0.901.0": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.901.7.tgz#10d55e3c73213971ba7d733f15d66494dfe9918a" - integrity sha512-NiBwapx/XJqYGzSmENff78i6Yif9PjYDJ9BB+59t2eDofkCZUcPFrhQmRgliO7rt6RATvT81lDP89+LBXCTQPw== +"@angular-devkit/build-angular@~0.1000.0": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1000.1.tgz#8073c8826763b6e0d2e5f2dcb21d55be11ce6937" + integrity sha512-rRYtHzy27BM3XjPVqlpQOs+RXAgtiT1Qr6EiLiMcb8Twg4aWHzKF+IITLQL9CSYkpOnY40vHjWZuEVu0qIhEPQ== dependencies: - "@angular-devkit/architect" "0.901.7" - "@angular-devkit/build-optimizer" "0.901.7" - "@angular-devkit/build-webpack" "0.901.7" - "@angular-devkit/core" "9.1.7" - "@babel/core" "7.9.0" - "@babel/generator" "7.9.3" - "@babel/preset-env" "7.9.0" + "@angular-devkit/architect" "0.1000.1" + "@angular-devkit/build-optimizer" "0.1000.1" + "@angular-devkit/build-webpack" "0.1000.1" + "@angular-devkit/core" "10.0.1" + "@babel/core" "7.9.6" + "@babel/generator" "7.9.6" + "@babel/plugin-transform-runtime" "7.9.6" + "@babel/preset-env" "7.9.6" + "@babel/runtime" "7.9.6" "@babel/template" "7.8.6" "@jsdevtools/coverage-istanbul-loader" "3.0.3" - "@ngtools/webpack" "9.1.7" - ajv "6.12.0" - autoprefixer "9.7.4" - babel-loader "8.0.6" + "@ngtools/webpack" "10.0.1" + ajv "6.12.2" + autoprefixer "9.8.0" + babel-loader "8.1.0" browserslist "^4.9.1" - cacache "15.0.0" + cacache "15.0.3" caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.0" - copy-webpack-plugin "5.1.1" + copy-webpack-plugin "6.0.3" core-js "3.6.4" - css-loader "3.5.1" + css-loader "3.5.3" cssnano "4.1.10" file-loader "6.0.0" find-cache-dir "3.3.1" glob "7.1.6" - jest-worker "25.1.0" + jest-worker "26.0.0" karma-source-map-support "1.4.0" - less "3.11.1" - less-loader "5.0.0" - license-webpack-plugin "2.1.4" + less-loader "6.1.0" + license-webpack-plugin "2.2.0" loader-utils "2.0.0" mini-css-extract-plugin "0.9.0" minimatch "3.0.4" - open "7.0.3" + open "7.0.4" parse5 "4.0.0" - postcss "7.0.27" + pnp-webpack-plugin "1.6.4" + postcss "7.0.31" postcss-import "12.0.1" postcss-loader "3.0.0" - raw-loader "4.0.0" + raw-loader "4.0.1" regenerator-runtime "0.13.5" + resolve-url-loader "3.1.1" rimraf "3.0.2" - rollup "2.1.0" - rxjs "6.5.4" - sass "1.26.3" + rollup "2.10.9" + rxjs "6.5.5" + sass "1.26.5" sass-loader "8.0.2" - semver "7.1.3" + semver "7.3.2" source-map "0.7.3" - source-map-loader "0.2.4" - speed-measure-webpack-plugin "1.3.1" - style-loader "1.1.3" + source-map-loader "1.0.0" + source-map-support "0.5.19" + speed-measure-webpack-plugin "1.3.3" + style-loader "1.2.1" stylus "0.54.7" stylus-loader "3.0.2" - terser "4.6.10" - terser-webpack-plugin "2.3.5" + terser "4.7.0" + terser-webpack-plugin "3.0.1" tree-kill "1.2.2" - webpack "4.42.0" + webpack "4.43.0" webpack-dev-middleware "3.7.2" webpack-dev-server "3.11.0" webpack-merge "4.2.2" webpack-sources "1.4.3" - webpack-subresource-integrity "1.4.0" + webpack-subresource-integrity "1.4.1" worker-plugin "4.0.3" -"@angular-devkit/build-ng-packagr@~0.901.0": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.901.7.tgz#d8bce9c67cba4299f6c4a5bdd13840bc39ed0f58" - integrity sha512-HJ6nzXIUyI8yUuXGtdk26qDgLzlmfSwsSuc8JWdeqieP82fz/qokf78vVAqyHyJ9gi90IZiPO2+oh6Ot6UMo+g== +"@angular-devkit/build-ng-packagr@~0.1000.0": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1000.1.tgz#60e1143866ca000d3e7a9e46d3bcd3f918160276" + integrity sha512-y8w1DPtBp/mW12JJnKYx/56cMG8m4g7XHllsDvYuxHZ0XW3iqA967DKsE0xcyYBMn84yKybgqyibZVKZiXNTIA== dependencies: - "@angular-devkit/architect" "0.901.7" - rxjs "6.5.4" + "@angular-devkit/architect" "0.1000.1" + rxjs "6.5.5" -"@angular-devkit/build-optimizer@0.901.7", "@angular-devkit/build-optimizer@~0.901.0": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.901.7.tgz#e72fc3031207a78aee175a76d3317cdf226984e9" - integrity sha512-Xuce3StdxhcgLYb0BAaFGr3Bzj5EM2OsAqIT15PkikWY1k5cK50vPxoC/BkX4QDL9eXSHtqAfMBfA6h5N422vw== +"@angular-devkit/build-optimizer@0.1000.1", "@angular-devkit/build-optimizer@~0.1000.0": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.1.tgz#2cb46c7b8fc4361d06244d50545b23e91e866c15" + integrity sha512-Q60lxyetBcMKUiNMc1vGUExuJMashHB9CF8HVenX80R9ihaA/GHAUrD2PbKBpLVoC4T291uUhfcA8MB1fJNRfw== dependencies: loader-utils "2.0.0" source-map "0.7.3" - tslib "1.11.1" - typescript "3.6.5" + tslib "2.0.0" webpack-sources "1.4.3" -"@angular-devkit/build-webpack@0.901.7", "@angular-devkit/build-webpack@~0.901.0": +"@angular-devkit/build-webpack@0.1000.1", "@angular-devkit/build-webpack@~0.1000.0": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.1.tgz#c0e8208dfa52ca1743955c6ae96fb1d7685103e1" + integrity sha512-m+abxD38LYdHw+w53Rmc4MbuwDP7rfevAZ/1QR2WFYj0BI5QsTYGlpmieI2TXiwiwvTILn9UzYZAA16nKvmUwA== + dependencies: + "@angular-devkit/architect" "0.1000.1" + "@angular-devkit/core" "10.0.1" + rxjs "6.5.5" + +"@angular-devkit/build-webpack@~0.901.0": version "0.901.7" resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.7.tgz#6d93c38756540a02e67d2c3ccfac4220c62962de" integrity sha512-pTLW5Eqy9cHgv78LKiH0e30lxqKzUPjh1djvNtFsEemOHsfKQdAfjLjikoaQvqMoBKVaUU7r2vmyyS17cH+1yw== @@ -156,15 +168,15 @@ "@angular-devkit/core" "9.1.7" rxjs "6.5.4" -"@angular-devkit/core@9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.0.tgz#5cc89bb5d44c6fd12a3527bae0253adb60d64b07" - integrity sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg== +"@angular-devkit/core@10.0.1", "@angular-devkit/core@~10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.1.tgz#acc1c6a088507e7340964c8cbf85e91781e86686" + integrity sha512-AXsxN00zbixi/9HyzzsDGm6rtMferxKfhG8WPJfp/0TLeJrmiLs5wdNjk8LhfTZABSTYx/QxRgOI6OnBoXePgg== dependencies: - ajv "6.12.0" + ajv "6.12.2" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.5.4" + rxjs "6.5.5" source-map "0.7.3" "@angular-devkit/core@9.1.7", "@angular-devkit/core@~9.1.0": @@ -178,14 +190,14 @@ rxjs "6.5.4" source-map "0.7.3" -"@angular-devkit/schematics@9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.0.tgz#f453a9ff78c34a5468cc21830ac4a46089ee1a31" - integrity sha512-cb9PSvskMwWlL54fPfCcpJoyNDWAX6Wo7CzL5qpIB2cJCPLAuyfRUYYrkO77YUST+n2HvypHz0cZ5SNGMfaaBQ== +"@angular-devkit/schematics@10.0.1", "@angular-devkit/schematics@~10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.1.tgz#2631043e7459c5d1228ffeba18eb63aa1e45f40e" + integrity sha512-lG70f4KsZews/z1npzJC7ccJgz3RXyLetyg+wa5uGWV+Silpr7XX+3U65DjPwG/+921woifeqRMbOhK+zCCaVA== dependencies: - "@angular-devkit/core" "9.1.0" - ora "4.0.3" - rxjs "6.5.4" + "@angular-devkit/core" "10.0.1" + ora "4.0.4" + rxjs "6.5.5" "@angular-devkit/schematics@9.1.7", "@angular-devkit/schematics@~9.1.0": version "9.1.7" @@ -196,41 +208,43 @@ ora "4.0.3" rxjs "6.5.4" -"@angular/cli@9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.1.0.tgz#07ec165d507208bb8d8d8ab73c3e14102643edff" - integrity sha512-ofum4gPE/W3fKyzuJrpdHeOS0ZL8x0eYCgsrMyUoFodSpb5LWPqeW+56NgDTpIeny+Trx3pM9dr9QTUVTJ0vYg== +"@angular/cli@~10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.1.tgz#23fd9e6495a89d7fe1bc756fdfb5af9c71bcaf26" + integrity sha512-6Ht3022UcaWTBDnQKgcvTHbOP4ITjzn1DcZWKN0+zKk4PNqOwWtOEF2CBokOG79gTQVdrp2p5YQo5uX6UG7KMQ== dependencies: - "@angular-devkit/architect" "0.901.0" - "@angular-devkit/core" "9.1.0" - "@angular-devkit/schematics" "9.1.0" - "@schematics/angular" "9.1.0" - "@schematics/update" "0.901.0" + "@angular-devkit/architect" "0.1000.1" + "@angular-devkit/core" "10.0.1" + "@angular-devkit/schematics" "10.0.1" + "@schematics/angular" "10.0.1" + "@schematics/update" "0.1000.1" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.1.1" ini "1.3.5" inquirer "7.1.0" npm-package-arg "8.0.1" - npm-pick-manifest "6.0.0" - open "7.0.3" - pacote "11.1.4" + npm-pick-manifest "6.1.0" + open "7.0.4" + pacote "9.5.12" read-package-tree "5.3.1" rimraf "3.0.2" - semver "7.1.3" + semver "7.3.2" symbol-observable "1.2.0" universal-analytics "0.4.20" - uuid "7.0.2" + uuid "8.1.0" -"@angular/common@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.9.tgz#16e77b2db675b80e32f1788a20c538150fd09294" - integrity sha512-y/tJtkuOJhV2kcaXZyrLZH84i4uQ1r+vaaEHvXj+JZYfYfcMMd/TDqMiPcIkUb3RxqghtZ+q0ZNW5D1Nlru3Pw== +"@angular/common@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.2.tgz#8d5422b3a3e1bc405606476b90b0caffc9c9155a" + integrity sha512-zpNB2XD6jinXZjfihoO5Q1Yg7urfpZTt/fitdmwFHCcQ/1qZ9T2BVh8+VqVRkh6Pjxmtvu0uPnJ1a/aZ5f9r9A== + dependencies: + tslib "^2.0.0" -"@angular/compiler-cli@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.9.tgz#e3c234d888074002fa5f6b7eab4f63f4ddbdb7bd" - integrity sha512-aLr2eaDlREN8XybgTbelvjtSZ8eAkxBPilnkddc700BgiC6ImyUSKaItOwa8bnjQwq4Wlz5eVG0ibsrX+5MXwg== +"@angular/compiler-cli@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.0.2.tgz#8f178a03989e0018890c52807df9e3e03faaf47a" + integrity sha512-LGX86k1hOyaw5aPCjFfoLuPhVLKMENOdCBeNBzZB+H2CUGHfv8OWFB1EzjZO1N07VGR7JoMx9ZWSP7ornhuS4Q== dependencies: canonical-path "1.0.0" chokidar "^3.0.0" @@ -243,47 +257,64 @@ semver "^6.3.0" source-map "^0.6.1" sourcemap-codec "^1.4.8" + tslib "^2.0.0" yargs "15.3.0" -"@angular/compiler@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.9.tgz#cbf678ee28a0811a8ef3ee7be565d4911ff28ec7" - integrity sha512-kjFgaTB2ckr9lgmkS1dOGRT7kmzpQueydxsxXSHWgICNVE6F/u1PHyeSOyJRpxW0GnrkLq3QM2EUFnQGGga5bg== +"@angular/compiler@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.0.2.tgz#1056af84ad76763f03228aa3a60b63a5cd775944" + integrity sha512-TNE5ESDlRCVneb/K62HOEgLpxuZZTlw8RcmOy5vt3SngEVc576OE/aYsEA6MCwTlqj16GLSS3jGm9HBJcBKUVw== + dependencies: + tslib "^2.0.0" -"@angular/core@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.9.tgz#db4241f867d6e14b81ed6e7c50334813c6ebfc10" - integrity sha512-q/DERgVU6vK2LtTcdVCGGBcoO424WsEfImh3Vcuy+P/ZVmthlDUC/+q+tSKt8MMf4hLpxFDQJE8vUSkktj7QEw== +"@angular/core@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.2.tgz#d2d2c2dd4a9e80dcccc63c274f13ab7397ee5a3b" + integrity sha512-r4M1D2NOdkmmFyvYLHRYSIBKTGNXQarZHDZcm5oEq2eTsRVe2u9MYIeOpHKeVQCQK7XKQVB13IZQP3XpUvljFg== + dependencies: + tslib "^2.0.0" -"@angular/forms@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.9.tgz#20c9a79d1dcb2cace45df9e2f304b658e02c1687" - integrity sha512-r675yImnb/0pY7K5W3V2ITa7YETu1I2AS+bRfII6UQ6gthyeFFOHb5noa7YneC2yqQiM6E4DQmF5ig3daPuFNg== +"@angular/forms@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.2.tgz#fa443f73156640664a9e018aaeb42f85d6d20fcb" + integrity sha512-qnfApb5Q58SFdl8za8i6ijvP0UfVGxxTtIVnf8czVU5Jz5/KYDbPeChVw/aPl3hfXq8jt0Q6Yl99aAm/BNyhpQ== + dependencies: + tslib "^2.0.0" -"@angular/platform-browser-dynamic@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.9.tgz#12f8b05d3c9ef0844df88f3833e29ea1e49ec5e0" - integrity sha512-b9MG5MWne+IuL3uLm8jwPhlJzqYaGBGk/qibOqb17T24j1iyrlO7T5bZ8zO6pUy5iT/TahVfHPnPJC1qTK5OmA== +"@angular/platform-browser-dynamic@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.2.tgz#b752e2110e5a4316087ce7922227b453e423c144" + integrity sha512-R1rt1/Ynm0DHgzMBcduCPoDg2y3MrYZVgT+N0DLobr2nCaVD74vGsJBVCRv7/m1sdCxyhPlOvq8Bm5sRauw2fw== + dependencies: + tslib "^2.0.0" -"@angular/platform-browser@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.9.tgz#c2fcc50aebfdc268521b407e32dc0d967cb40411" - integrity sha512-V861X3MxJp1AlMTnkUPldpBLIJbApXF3ka0A5Dq2nVJCyOFeteGkaRWSBgqe2jxmq+LVpJbzcNvtDFXw6mQ0jA== +"@angular/platform-browser@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.2.tgz#518db3bdff9692cc4ec0c871f3305218da66aebd" + integrity sha512-FLS3fYSuWvrDc7PiVCvs4joWZZxDe9+alJi90Sub1oBS/EnxmZpkS0Gr7zQv4MjAvVhNCVoTzL3CaV/SIoZqaw== + dependencies: + tslib "^2.0.0" -"@angular/router@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.9.tgz#5d79d72cb62ea1c04ea70238846653ecf9c4a73c" - integrity sha512-4u+CWMPB4hCkAsFCEzC94YEWT0wVozqGkc/Dortt2hFaqvZpIegg6iJVZlDxuyDjzFYBPnnbTDdgiTTA8ckfuA== +"@angular/router@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.2.tgz#6514540f4f3179d8be3fd23b1f4a0dd02801a314" + integrity sha512-IcA3W+r5T0NC8TM4J9F0VOxG0wr7nJOSef6Qek6utZd6ByLlXxOhBrPIC5Ou+QNZeg9OuI2FBt6coea9jgmNOA== + dependencies: + tslib "^2.0.0" -"@angular/service-worker@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-9.1.9.tgz#2a5fbd528aed4a69e7f5d6b80ecaf5f6878e51d7" - integrity sha512-TRN9SD38VfyrVwObeAYhogQqSHl9hax51Vi/egEt/LXdOFBIssLsW0Wa3WOByzo25zcR3M2mMbQ7UuWtUnfduA== +"@angular/service-worker@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-10.0.2.tgz#1414f4b7721a45c97c9a3efc6b7516453643d55d" + integrity sha512-PXbh5k7yba+X18o2nNqST92Mcsq+5CXDaYIwUcUkYhx1omAMHhYF9W+FFJSY/EhW2yx5x4aRoh9ZmOqldsQB9A== + dependencies: + tslib "^2.0.0" -"@angular/upgrade@^9.1.0": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-9.1.9.tgz#8f93e465e28579f52042eb5fd0ba683821236664" - integrity sha512-W9APyQYUZdHgRXxvensIqxru+bv+4rypS9v4v4ebbNU4pn10/XEDb+U63jk42KpNbklmX61HVhbwTMk9mgqMpw== +"@angular/upgrade@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-10.0.2.tgz#c860a709628b4ef543d19ae25003e1c0e5c844a0" + integrity sha512-cz9M5t1oiB3j9rIKF+UynmWtjsBxj7edqQAgnOptgwne0gsQJ1LSxKV9J2D+BJFdh+ywo9OpABzVvPQ6zS9lkQ== + dependencies: + tslib "^2.0.0" "@babel/code-frame@7.5.5": version "7.5.5" @@ -299,7 +330,7 @@ dependencies: "@babel/highlight" "^7.10.1" -"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.1.tgz#b1085ffe72cd17bf2c0ee790fc09f9626011b2db" integrity sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw== @@ -328,28 +359,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" @@ -394,17 +403,17 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.9.3": - version "7.9.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.3.tgz#7c8b2956c6f68b3ab732bd16305916fbba521d94" - integrity sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ== +"@babel/generator@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== dependencies: - "@babel/types" "^7.9.0" + "@babel/types" "^7.9.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2", "@babel/generator@^7.9.0", "@babel/generator@^7.9.6": +"@babel/generator@^7.10.1", "@babel/generator@^7.10.2", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2", "@babel/generator@^7.9.6": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== @@ -446,7 +455,7 @@ "@babel/helper-annotate-as-pure" "^7.10.1" "@babel/types" "^7.10.1" -"@babel/helper-compilation-targets@^7.10.2", "@babel/helper-compilation-targets@^7.8.7", "@babel/helper-compilation-targets@^7.9.6": +"@babel/helper-compilation-targets@^7.10.2", "@babel/helper-compilation-targets@^7.9.6": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== @@ -615,7 +624,7 @@ "@babel/traverse" "^7.10.1" "@babel/types" "^7.10.1" -"@babel/helpers@^7.10.1", "@babel/helpers@^7.7.0", "@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": +"@babel/helpers@^7.10.1", "@babel/helpers@^7.7.0", "@babel/helpers@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== @@ -633,7 +642,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.4.3", "@babel/parser@^7.7.2", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": +"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.4.3", "@babel/parser@^7.7.2", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== @@ -736,7 +745,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.10.1", "@babel/plugin-proposal-object-rest-spread@^7.6.2", "@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": +"@babel/plugin-proposal-object-rest-spread@^7.10.1", "@babel/plugin-proposal-object-rest-spread@^7.6.2", "@babel/plugin-proposal-object-rest-spread@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" integrity sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ== @@ -935,7 +944,7 @@ "@babel/helper-plugin-utils" "^7.10.1" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.10.1", "@babel/plugin-transform-classes@^7.7.0", "@babel/plugin-transform-classes@^7.9.0", "@babel/plugin-transform-classes@^7.9.5": +"@babel/plugin-transform-classes@^7.10.1", "@babel/plugin-transform-classes@^7.7.0", "@babel/plugin-transform-classes@^7.9.5": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" integrity sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ== @@ -956,7 +965,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.1" -"@babel/plugin-transform-destructuring@^7.10.1", "@babel/plugin-transform-destructuring@^7.6.0", "@babel/plugin-transform-destructuring@^7.8.3", "@babel/plugin-transform-destructuring@^7.9.5": +"@babel/plugin-transform-destructuring@^7.10.1", "@babel/plugin-transform-destructuring@^7.6.0", "@babel/plugin-transform-destructuring@^7.9.5": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== @@ -1023,7 +1032,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.1" -"@babel/plugin-transform-modules-amd@^7.10.1", "@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.9.0", "@babel/plugin-transform-modules-amd@^7.9.6": +"@babel/plugin-transform-modules-amd@^7.10.1", "@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== @@ -1042,7 +1051,7 @@ "@babel/helper-simple-access" "^7.7.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.10.1", "@babel/plugin-transform-modules-commonjs@^7.7.0", "@babel/plugin-transform-modules-commonjs@^7.9.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": +"@babel/plugin-transform-modules-commonjs@^7.10.1", "@babel/plugin-transform-modules-commonjs@^7.7.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== @@ -1052,7 +1061,7 @@ "@babel/helper-simple-access" "^7.10.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.1", "@babel/plugin-transform-modules-systemjs@^7.7.0", "@babel/plugin-transform-modules-systemjs@^7.9.0", "@babel/plugin-transform-modules-systemjs@^7.9.6": +"@babel/plugin-transform-modules-systemjs@^7.10.1", "@babel/plugin-transform-modules-systemjs@^7.7.0", "@babel/plugin-transform-modules-systemjs@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz#9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6" integrity sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA== @@ -1092,7 +1101,7 @@ "@babel/helper-plugin-utils" "^7.10.1" "@babel/helper-replace-supers" "^7.10.1" -"@babel/plugin-transform-parameters@^7.10.1", "@babel/plugin-transform-parameters@^7.4.4", "@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": +"@babel/plugin-transform-parameters@^7.10.1", "@babel/plugin-transform-parameters@^7.4.4", "@babel/plugin-transform-parameters@^7.9.5": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== @@ -1195,6 +1204,16 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/plugin-transform-runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" + integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + "@babel/plugin-transform-shorthand-properties@^7.10.1", "@babel/plugin-transform-shorthand-properties@^7.2.0", "@babel/plugin-transform-shorthand-properties@^7.8.3": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" @@ -1313,72 +1332,6 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - "@babel/preset-env@7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" @@ -1612,6 +1565,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" @@ -1637,7 +1597,7 @@ "@babel/parser" "^7.10.1" "@babel/types" "^7.10.1" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2", "@babel/traverse@^7.9.6": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== @@ -1670,7 +1630,7 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.1", "@babel/types@^7.7.2", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": +"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.1", "@babel/types@^7.7.2", "@babel/types@^7.8.6", "@babel/types@^7.9.5", "@babel/types@^7.9.6": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== @@ -2223,14 +2183,14 @@ resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-9.1.0.tgz#1339716a34e2b389979d25464bb32b0dba799557" integrity sha512-Ah2nApPZXTvKl7ybaFMIFwEdMg8b7PvIKATigbDTUftAsFxked2+T7blNv6aCgSfEqbOVMBTYPk7OsLCYZoz4Q== -"@ngtools/webpack@9.1.7", "@ngtools/webpack@~9.1.0": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.1.7.tgz#4322757b029e1175a3361183c06b31d0576538d8" - integrity sha512-A7VB2I42Kn+7jl0tDKzGNLAoZLWSqkKo9Hg1bmKpvAAIz+DSbq3uV+JWgGgTprM3tn0lfkVgmqk4H17HKwAOcg== +"@ngtools/webpack@10.0.1", "@ngtools/webpack@~10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.0.1.tgz#f3d5143f268cc1c3c8d94de0e048b970c95e6a27" + integrity sha512-/uUTczGcH2WJoVovCLHXdPdTzN0yQZontcf5MkoDjlA0selUdRFntV9cnUWoray9SVxzgoHqjRxBANCTsiiuuw== dependencies: - "@angular-devkit/core" "9.1.7" + "@angular-devkit/core" "10.0.1" enhanced-resolve "4.1.1" - rxjs "6.5.4" + rxjs "6.5.5" webpack-sources "1.4.3" "@nodelib/fs.scandir@2.1.3": @@ -2259,36 +2219,6 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@npmcli/ci-detect@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz#0df142a1ac3bba6cbf2e9da1a6994cd898e32c95" - integrity sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA== - -"@npmcli/git@^2.0.1": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.2.tgz#41d75caf59e4799c62b354a3e4eed3b0e64310c0" - integrity sha512-uv9+EuP5YWluNPgkEOL+iyB/+MVt4U5PMBCfl+I8korKluFdiSp7RxjXYzpWM/wU4wXaROAUFiOiCMmBftonjw== - dependencies: - "@npmcli/promise-spawn" "^1.1.0" - lru-cache "^5.1.1" - mkdirp "^1.0.3" - npm-pick-manifest "^6.0.0" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - semver "^7.3.2" - unique-filename "^1.1.1" - which "^2.0.2" - -"@npmcli/installed-package-contents@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz#cc78565e55d9f14d46acf46a96f70934e516fa3d" - integrity sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A== - dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - read-package-json-fast "^1.1.1" - readdir-scoped-modules "^1.1.0" - "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -2296,13 +2226,6 @@ dependencies: mkdirp "^1.0.4" -"@npmcli/promise-spawn@^1.1.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.2.0.tgz#167d70b926f771c8bd8b9183bfc8b5aec29d7e45" - integrity sha512-nFtqjVETliApiRdjbYwKwhlSHx2ZMagyj5b9YbNt0BWeeOVxJd47ZVE2u16vxDHyTOZvk+YLV7INwfAE9a2uow== - dependencies: - infer-owner "^1.0.4" - "@nrwl/cli@9.4.4": version "9.4.4" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-9.4.4.tgz#831f0afa0c0407b0cf0bf74489c47ae8c4312a47" @@ -2536,35 +2459,27 @@ dependencies: any-observable "^0.3.0" -"@schematics/angular@9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.0.tgz#fc0ad9099d3c3be3044d6b3f260cac6eb9f3e564" - integrity sha512-qkehaITQ1S1udfnnBY5CXGWnk1iVFI8cZayjLUlRfD5w+6v9if3VIuqPssX96MqvkbjyRu1N214+ieaawzLmuA== +"@schematics/angular@10.0.1", "@schematics/angular@~10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.1.tgz#0660d5eb99169a67ecfc7a4c2946de1ea32320c0" + integrity sha512-SrWr2FzenwuofRpcaLhzJYNFVJmJwKxlKu32dWAVnclpteMO0Hnp/jVI/e70HIc6zoWzgJ4yArmwBTA+Q26yaA== dependencies: - "@angular-devkit/core" "9.1.0" - "@angular-devkit/schematics" "9.1.0" + "@angular-devkit/core" "10.0.1" + "@angular-devkit/schematics" "10.0.1" -"@schematics/angular@~9.1.0": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.7.tgz#b7801a5e20f844da560db81d2971590e8ac090ff" - integrity sha512-ld3WcoMWvup04V3OWioQ+AFGQBzz7IDM4Fxc5+Qc3wILWkDJnNkrc4EmJAow96Ab4/T1+Wl1vof3tV4At0BTzA== +"@schematics/update@0.1000.1": + version "0.1000.1" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.1.tgz#bcccf6822eb2b145a0ac3d1b352ada2925a558bf" + integrity sha512-AiU3RiKMfzxquzxANgDMO88iTkk9pVKQ5fZV4UwiyZO5q/fUCW4FFx9h4Nc7e9adchM+VaCz/uEAWqrVdsPv9Q== dependencies: - "@angular-devkit/core" "9.1.7" - "@angular-devkit/schematics" "9.1.7" - -"@schematics/update@0.901.0": - version "0.901.0" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.901.0.tgz#3e08231354f2c414c7d5b3bde1d9f7c08c664a74" - integrity sha512-u2VESL1dgOSGZK/wcWEz0WcCU/yv764zhzCQerCwUtbV1CISSSDZ6x+prVYDXOdxWBGtDos2MbCF3GEJJI1T+w== - dependencies: - "@angular-devkit/core" "9.1.0" - "@angular-devkit/schematics" "9.1.0" + "@angular-devkit/core" "10.0.1" + "@angular-devkit/schematics" "10.0.1" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" npm-package-arg "^8.0.0" - pacote "11.1.4" - rxjs "6.5.4" - semver "7.1.3" + pacote "9.5.12" + rxjs "6.5.5" + semver "7.3.2" semver-intersect "1.4.0" "@sheerun/mutationobserver-shim@^0.3.2": @@ -3185,11 +3100,6 @@ "@testing-library/dom" "^6.11.0" "@types/testing-library__react" "^9.1.2" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -4139,7 +4049,7 @@ "@zeit/next-css" "1.0.1" stylus-loader "^3.0.2" -JSONStream@1.3.5, JSONStream@^1.0.4: +JSONStream@1.3.5, JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -4269,20 +4179,18 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agent-base@6: - version "6.0.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" - integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: - debug "4" + es6-promisify "^5.0.0" -agentkeepalive@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.2.tgz#d7bc3bafd7ea88032f6be22b6f1389b3d42c9c91" - integrity sha512-waNHE7tQBBn+2qXucI8HY0o2Y0OBPWldWOWsZwY71JcCm4SvrPnWdceFfB5NIXSqE8Ewq6VR/Qt5b1i69P6KCQ== +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: - debug "^4.1.0" - depd "^1.1.2" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -4346,6 +4254,16 @@ ajv@6.12.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@6.12.2, ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + 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" @@ -4356,16 +4274,6 @@ ajv@^5.1.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.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -4844,7 +4752,7 @@ autoprefixer@9.7.4: postcss "^7.0.26" postcss-value-parser "^4.0.2" -autoprefixer@^9.6.1, autoprefixer@^9.6.5, autoprefixer@^9.7.2: +autoprefixer@9.8.0, autoprefixer@^9.6.1, autoprefixer@^9.6.5, autoprefixer@^9.7.2: version "9.8.0" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== @@ -5881,7 +5789,7 @@ bluebird@3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== -bluebird@3.7.2, bluebird@^3.3.0, bluebird@^3.3.5, bluebird@^3.5.0, bluebird@^3.5.5: +bluebird@3.7.2, bluebird@^3.3.0, bluebird@^3.3.5, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -6285,12 +6193,12 @@ cacache@12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.0.tgz#133b59edbd2a37ea8ef2d54964c6f247e47e5059" - integrity sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g== +cacache@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392" + integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ== dependencies: - chownr "^1.1.2" + chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" infer-owner "^1.0.4" @@ -6300,15 +6208,15 @@ cacache@15.0.0: minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" mkdirp "^1.0.3" - move-concurrently "^1.0.1" - p-map "^3.0.0" + move-file "^2.0.0" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.7.1" + rimraf "^3.0.2" ssri "^8.0.0" - tar "^6.0.1" + tar "^6.0.2" unique-filename "^1.1.1" -cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -6353,7 +6261,7 @@ cacache@^13.0.1: ssri "^7.0.0" unique-filename "^1.1.1" -cacache@^15.0.0: +cacache@^15.0.3, cacache@^15.0.4: version "15.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1" integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw== @@ -6688,7 +6596,7 @@ chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3, chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -7593,6 +7501,23 @@ copy-webpack-plugin@5.1.1: serialize-javascript "^2.1.2" webpack-log "^2.0.0" +copy-webpack-plugin@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== + dependencies: + cacache "^15.0.4" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + core-js-compat@^3.1.1, core-js-compat@^3.6.2: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" @@ -7891,26 +7816,7 @@ css-loader@3.4.2: postcss-value-parser "^4.0.2" schema-utils "^2.6.0" -css-loader@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.1.tgz#db2b2336f4169edb68e6a829ad4fd36552647b77" - integrity sha512-0G4CbcZzQ9D1Q6ndOfjFuMDo8uLYMu5vc9Abs5ztyHcKvmil6GJrMiNjzzi3tQvUF+mVRuDg7bE6Oc0Prolgig== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.27" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.3" - schema-utils "^2.6.5" - semver "^6.3.0" - -css-loader@^3.0.0: +css-loader@3.5.3, css-loader@^3.0.0: version "3.5.3" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== @@ -8334,7 +8240,7 @@ dayjs@1.8.26: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.26.tgz#c6d62ccdf058ca72a8d14bb93a23501058db9f1e" integrity sha512-KqtAuIfdNfZR5sJY1Dixr2Is4ZvcCqhb0dZpCOt5dGEFiMzoIbjkTSzUb4QKTCsP+WNpGwUjAFIZrnZvUxxkhw== -debug@*, debug@4, debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@*, debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -8563,7 +8469,7 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@^1.1.2, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -9074,7 +8980,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -encoding@^0.1.12: +encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= @@ -9841,6 +9747,18 @@ fast-glob@^3.0.3: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.1.1, fast-glob@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -9903,7 +9821,7 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.5.1: +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== @@ -10323,7 +10241,7 @@ fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1.0: fs-extra@9.0.0, fs-extra@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + resolved "http://localhost:4873/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== dependencies: at-least-node "^1.0.0" @@ -10342,7 +10260,14 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -10432,6 +10357,11 @@ generic-names@^2.0.1: dependencies: loader-utils "^1.1.0" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -10592,7 +10522,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -10778,6 +10708,18 @@ globby@8.0.2, globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -11145,7 +11087,7 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== @@ -11282,12 +11224,12 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" -http-cache-semantics@3.8.1: +http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== -http-cache-semantics@^4.0.0, http-cache-semantics@^4.0.4: +http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== @@ -11342,15 +11284,6 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -11398,7 +11331,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: +https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== @@ -11406,14 +11339,6 @@ https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -11450,6 +11375,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -11491,7 +11423,7 @@ ignore-loader@0.1.2: resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463" integrity sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM= -ignore-walk@^3.0.3: +ignore-walk@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== @@ -12057,11 +11989,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= - is-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" @@ -12893,10 +12820,10 @@ jest-worker@24.9.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" - integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== +jest-worker@26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" + integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" @@ -12909,6 +12836,14 @@ jest-worker@^25.1.0, jest-worker@^25.4.0, jest-worker@^25.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^26.0.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest@^25.2.3: version "25.5.4" resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" @@ -13038,16 +12973,11 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz#304d29aa54bb01156a1328c454034ff0ac8a7bf4" - integrity sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g== - 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" @@ -13132,7 +13062,7 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0, jsonparse@^1.3.1: +jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= @@ -13420,6 +13350,16 @@ less-loader@5.0.0: loader-utils "^1.1.0" pify "^4.0.1" +less-loader@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.0.tgz#59fd591df408ced89a40fce11a2aea449b005631" + integrity sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA== + dependencies: + clone "^2.1.2" + less "^3.11.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + less@3.11.1: version "3.11.1" resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" @@ -13454,6 +13394,23 @@ less@^3.10.3: request "^2.83.0" source-map "~0.6.0" +less@^3.11.1: + version "3.11.3" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c" + integrity sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw== + dependencies: + clone "^2.1.2" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + level-codec@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.1.tgz#042f4aa85e56d4328ace368c950811ba802b7247" @@ -13564,10 +13521,10 @@ license-webpack-plugin@2.1.2: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" -license-webpack-plugin@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz#c5529a4bb87cc9b4489b486d054ba7cae43a554e" - integrity sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ== +license-webpack-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz#5c964380d7d0e0c27c349d86a6f856c82924590e" + integrity sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg== dependencies: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" @@ -14071,26 +14028,22 @@ make-error@1.x, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^8.0.7: - version "8.0.7" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.7.tgz#7f98e6e75784c541833d0ffe2f82c31418a87ac2" - integrity sha512-rkDA4c1nMXVqLkfOaM5RK2dxkUndjLOCrPycTDZgbkFDzhmaCO3P1dmCW//yt1I/G1EcedJqMsSjWkV79Hh4hQ== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: - agentkeepalive "^4.1.0" - cacache "^15.0.0" - http-cache-semantics "^4.0.4" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" lru-cache "^5.1.1" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.1.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" promise-retry "^1.1.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" makeerror@1.0.x: version "1.0.11" @@ -14554,18 +14507,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.1.2, minipass-fetch@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.2.1.tgz#1b97ecb559be56b09812d45b2e9509f1f59ece2f" - integrity sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg== - dependencies: - minipass "^3.1.0" - minipass-pipeline "^1.2.2" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -14573,14 +14514,6 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - minipass-pipeline@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" @@ -14588,21 +14521,29 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: - minipass "^3.0.0" + safe-buffer "^5.1.2" + yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.0.1, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: +minipass@^3.0.0, minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== dependencies: yallist "^4.0.0" -minizlib@^2.0.0, minizlib@^2.1.0: +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +minizlib@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== @@ -14686,6 +14627,13 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +move-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/move-file/-/move-file-2.0.0.tgz#83ffa309b5d7f69d518b28e1333e2ffadf331e3e" + integrity sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ== + dependencies: + path-exists "^4.0.0" + mri@^1.1.0, mri@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.5.tgz#ce21dba2c69f74a9b7cf8a1ec62307e089e223e0" @@ -14994,6 +14942,15 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-fetch@2.6.0, node-fetch@^2.1.1, node-fetch@^2.3.0, node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" @@ -15081,7 +15038,7 @@ normalize-html-whitespace@1.0.0: resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz#5e3c8e192f1b06c3b9eee4b7e7f28854c7601e34" integrity sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA== -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.5.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -15137,7 +15094,7 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -npm-bundled@^1.1.1: +npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== @@ -15156,7 +15113,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.0.1, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: +npm-package-arg@8.0.1, npm-package-arg@^8.0.0: version "8.0.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== @@ -15165,26 +15122,26 @@ npm-package-arg@8.0.1, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: semver "^7.0.0" validate-npm-package-name "^3.0.0" -npm-packlist@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.2.tgz#a3045b52aefc37e7a5e86a55e6ca8cb1e909e25a" - integrity sha512-eByPaP+wsKai0BJX5pmb58d3mfR0zUATcnyuvSxIudTEn+swCPFLxh7srCmqB4hr7i9V24/DPjjq5b2qUtbgXQ== +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.12: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz#bfde7abe95f2670aed1629a3c18245ccb3cc2eb8" - integrity sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-pick-manifest@^6.0.0: +npm-pick-manifest@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== @@ -15193,19 +15150,27 @@ npm-pick-manifest@^6.0.0: npm-package-arg "^8.0.0" semver "^7.0.0" -npm-registry-fetch@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-8.1.0.tgz#1d5c229b82412414b9c63cde040b51981db76904" - integrity sha512-RkcugRDye2j6yEiHGMyAdKQoipgp8VToSIjm+TFLhVraXOkC/WU2kjE2URcYBpcJ4hs++VFBKo6+Zg4wmrS+Qw== +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: - "@npmcli/ci-detect" "^1.0.0" + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-registry-fetch@^4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz#cb87cf7f25bfb048d6c3ee19d115bebf93ea5bfa" + integrity sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" lru-cache "^5.1.1" - make-fetch-happen "^8.0.7" - minipass "^3.1.3" - minipass-fetch "^1.1.2" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-all@4.1.5, npm-run-all@^4.1.5: version "4.1.5" @@ -15448,15 +15413,7 @@ open@6.4.0, open@^6.3.0: dependencies: is-wsl "^1.1.0" -open@7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" - integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -open@^7.0.0: +open@7.0.4, open@^7.0.0: version "7.0.4" resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== @@ -15539,6 +15496,20 @@ ora@4.0.3: strip-ansi "^6.0.0" wcwidth "^1.0.1" +ora@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5" @@ -15591,11 +15562,19 @@ os-name@^3.0.0: macos-release "^2.2.0" windows-release "^3.1.0" -os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + ospath@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -15648,13 +15627,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.2.2, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.1.tgz#584784ac0722d1aed09f19f90ed2999af6ce2839" + integrity sha512-mw/p92EyOzl2MhauKodw54Rx5ZK4624rNfgNaBguFZkHzyUG9WsDzFF5/yQVEJinbJDdP4jEfMN+uBquiGnaLg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -15749,34 +15735,41 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@11.1.4: - version "11.1.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.1.4.tgz#5529a453c59881b7f059da8af6903b0f79c124b2" - integrity sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw== +pacote@9.5.12: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== dependencies: - "@npmcli/git" "^2.0.1" - "@npmcli/installed-package-contents" "^1.0.5" - "@npmcli/promise-spawn" "^1.1.0" - cacache "^15.0.0" - chownr "^1.1.4" - fs-minipass "^2.1.0" + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" infer-owner "^1.0.4" lru-cache "^5.1.1" - minipass "^3.0.1" - minipass-fetch "^1.2.1" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.0" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^8.0.0" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" + osenv "^0.1.5" promise-inflight "^1.0.1" promise-retry "^1.1.1" - read-package-json-fast "^1.1.3" - rimraf "^2.7.1" - semver "^7.1.3" - ssri "^8.0.0" - tar "^6.0.1" - which "^2.0.2" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" pako@~1.0.2, pako@~1.0.5: version "1.0.11" @@ -16151,6 +16144,13 @@ pnp-webpack-plugin@1.5.0: dependencies: ts-pnp "^1.1.2" +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + polished@^3.3.1: version "3.6.4" resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.4.tgz#cec6bc0fbffc5d6ce5799c85bcc1bca5e63f1dee" @@ -16899,6 +16899,15 @@ postcss@7.0.27: source-map "^0.6.1" supports-color "^6.1.0" +postcss@7.0.31: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" @@ -17119,6 +17128,13 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + protractor@5.4.3: version "5.4.3" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.3.tgz#35f050741e404a45868618ea648745d89af31683" @@ -17342,13 +17358,13 @@ raw-loader@3.1.0, raw-loader@^3.1.0: loader-utils "^1.1.0" schema-utils "^2.0.1" -raw-loader@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.0.tgz#d639c40fb9d72b5c7f8abc1fb2ddb25b29d3d540" - integrity sha512-iINUOYvl1cGEmfoaLjnZXt4bKfT2LJnZZib5N/LLyAphC+Dd11vNP9CNVb38j+SAJpFI1uo8j9frmih53ASy7Q== +raw-loader@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" + integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^2.6.5" rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" @@ -17666,14 +17682,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-package-json-fast@^1.1.1, read-package-json-fast@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz#3b78464ea8f3c4447f3358635390b6946dc0737e" - integrity sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg== - dependencies: - json-parse-even-better-errors "^2.0.1" - npm-normalize-package-bin "^1.0.1" - read-package-json@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" @@ -17805,7 +17813,7 @@ readable-stream@1.1.x: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -18469,7 +18477,7 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -18580,10 +18588,10 @@ rollup@1.31.1: "@types/node" "*" acorn "^7.1.0" -rollup@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.1.0.tgz#552e248e397a06b9c6db878c0564ca4ee06729c9" - integrity sha512-gfE1455AEazVVTJoeQtcOq/U6GSxwoj4XPSWVsuWmgIxj7sBQNLDOSA82PbdMe+cP8ql8fR1jogPFe8Wg8g4SQ== +rollup@2.10.9: + version "2.10.9" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.9.tgz#17dcc6753c619efcc1be2cf61d73a87827eebdf9" + integrity sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg== optionalDependencies: fsevents "~2.1.2" @@ -18628,7 +18636,7 @@ rxjs@6.5.4: dependencies: tslib "^1.9.0" -rxjs@^6.1.0, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.3, rxjs@^6.5.4: +rxjs@6.5.5, rxjs@^6.1.0, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.3, rxjs@^6.5.4: version "6.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== @@ -18711,6 +18719,13 @@ sass@1.26.3: dependencies: chokidar ">=2.0.0 <4.0.0" +sass@1.26.5: + version "1.26.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.5.tgz#2d7aecfbbabfa298567c8f06615b6e24d2d68099" + integrity sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q== + dependencies: + chokidar ">=2.0.0 <4.0.0" + sass@^1.23.0: version "1.26.7" resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.7.tgz#d3c9f3dd9771632bfb60af8746c308da3765166d" @@ -18774,7 +18789,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6: +schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== @@ -18868,17 +18883,12 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" - integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== - semver@7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.2.1.tgz#d997aa36bdbb00b501ae4ac4c7d17e9f7a587ae5" integrity sha512-aHhm1pD02jXXkyIpq25qBZjr3CQgg8KST8uX0OWXch3xE6jw+1bfbWnCjzMwojsTquroUmKFHNzU6x26mEiRxw== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2: +semver@7.3.2, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -18914,6 +18924,13 @@ serialize-javascript@^3.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -19249,16 +19266,15 @@ sockjs@0.3.20: uuid "^3.4.0" websocket-driver "0.6.5" -socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== dependencies: - agent-base "6" - debug "4" - socks "^2.3.3" + agent-base "~4.2.1" + socks "~2.3.2" -socks@^2.3.3: +socks@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== @@ -19298,6 +19314,17 @@ source-map-loader@0.2.4: async "^2.5.0" loader-utils "^1.1.0" +source-map-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.0.0.tgz#240b88575a9b0d27214aeecbd4e7686af95cfa56" + integrity sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg== + dependencies: + data-urls "^2.0.0" + iconv-lite "^0.5.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + source-map "^0.6.0" + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2, source-map-resolve@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -19317,14 +19344,7 @@ source-map-support@0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.4.15, source-map-support@~0.4.0: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.12, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@0.5.19, source-map-support@^0.5.12, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -19332,6 +19352,13 @@ source-map-support@^0.5.12, source-map-support@^0.5.17, source-map-support@^0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.4.15, source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -19432,6 +19459,13 @@ speed-measure-webpack-plugin@1.3.1: dependencies: chalk "^2.0.1" +speed-measure-webpack-plugin@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz#6ff894fc83e8a6310dde3af863a0329cd79da4f5" + integrity sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ== + dependencies: + chalk "^2.0.1" + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -19478,7 +19512,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -19817,15 +19851,7 @@ style-loader@1.0.0: loader-utils "^1.2.3" schema-utils "^2.0.1" -style-loader@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" - integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.6.4" - -style-loader@^1.0.0: +style-loader@1.2.1, style-loader@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== @@ -20027,7 +20053,20 @@ tar@5.0.5: mkdirp "^0.5.0" yallist "^4.0.0" -tar@^6.0.1, tar@^6.0.2: +tar@^4.4.10: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +tar@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== @@ -20107,19 +20146,19 @@ terser-webpack-plugin@2.3.1: terser "^4.4.3" webpack-sources "^1.4.3" -terser-webpack-plugin@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" - integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== +terser-webpack-plugin@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz#31928c9330a582fb5ec6f90805337289b85cb8fe" + integrity sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw== dependencies: - cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^25.1.0" - p-limit "^2.2.2" - schema-utils "^2.6.4" - serialize-javascript "^2.1.2" + cacache "^15.0.3" + find-cache-dir "^3.3.1" + jest-worker "^26.0.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" source-map "^0.6.1" - terser "^4.4.3" + terser "^4.6.13" webpack-sources "^1.4.3" terser-webpack-plugin@^1.4.3: @@ -20170,15 +20209,6 @@ terser@4.4.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@4.6.10: - version "4.6.10" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2" - integrity sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@4.6.7: version "4.6.7" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" @@ -20188,7 +20218,7 @@ terser@4.6.7: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^4.1.2, terser@^4.1.3, terser@^4.3.8, terser@^4.4.3, terser@^4.6.12, terser@^4.6.3: +terser@4.7.0, terser@^4.1.2, terser@^4.1.3, terser@^4.3.8, terser@^4.4.3, terser@^4.6.12, terser@^4.6.3: version "4.7.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== @@ -20197,6 +20227,15 @@ terser@^4.1.2, terser@^4.1.3, terser@^4.3.8, terser@^4.4.3, terser@^4.6.12, ters source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.6.13: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -20567,7 +20606,7 @@ ts-node@^8.0.2: source-map-support "^0.5.17" yn "3.1.1" -ts-pnp@^1.1.2: +ts-pnp@^1.1.2, ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== @@ -20601,12 +20640,7 @@ tslib@1.10.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== - -tslib@2.0.0: +tslib@2.0.0, tslib@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== @@ -20738,15 +20772,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.5.tgz#dae20114a7b4ff4bd642db9c8c699f2953e8bbdb" - integrity sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ== - -typescript@~3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@~3.9.3: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== uglify-js@3.4.x: version "3.4.10" @@ -21115,11 +21144,6 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" - integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== - uuid@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" @@ -21528,10 +21552,10 @@ webpack-subresource-integrity@1.1.0-rc.6: dependencies: webpack-core "^0.6.8" -webpack-subresource-integrity@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.0.tgz#44963a64c9a214ad729158e7f46d52c2525cc88a" - integrity sha512-GB1kB/LwAWC3CxwcedGhMkxGpNZxSheCe1q+KJP1bakuieAdX/rGHEcf5zsEzhKXpqsGqokgsDoD9dIkr61VDQ== +webpack-subresource-integrity@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz#e8bf918b444277df46a66cd84542cbcdc5a6272d" + integrity sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw== dependencies: webpack-sources "^1.3.0" @@ -21571,7 +21595,7 @@ webpack@4.42.0: watchpack "^1.6.0" webpack-sources "^1.4.1" -webpack@^4.33.0, webpack@^4.38.0: +webpack@4.43.0, webpack@^4.33.0, webpack@^4.38.0: version "4.43.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== @@ -21924,7 +21948,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==