From 972381bc3fcb6007d9568498fb8fa0773db767e0 Mon Sep 17 00:00:00 2001 From: Jason Jean Date: Sat, 1 Feb 2020 11:34:31 -0500 Subject: [PATCH] feat(testing): update to jest-preset-angular v8.0.0 (#2401) * feat(testing): update to jest-preset-angular v8.0.0 part 1 Updates to jest-preset-angular to v8.0.0, includes migrations to fix any existing projects affected by the jest-preset-angular update. closes #1979 * feat(testing): update jest-preset-angular to v8.0.0 part 2 Closed issues: #1979, #2165 Co-authored-by: Joshua D. Mentzer * feat(testing): update jest-preset-angular to v8.0.0 part 3 Co-authored-by: mentzerj Co-authored-by: Mehrad Rafigh <4339673+mehrad-rafigh@users.noreply.github.com> --- .prettierrc | 8 +- CONTRIBUTING.md | 2 +- package.json | 4 +- .../application/application.spec.ts | 117 +++--- packages/angular/src/utils/versions.ts | 2 +- packages/jest/migrations.json | 16 + .../jest/src/builders/jest/jest.impl.spec.ts | 18 +- packages/jest/src/builders/jest/jest.impl.ts | 5 +- .../update-9-0-0/update-9-0-0.spec.ts | 173 +++++++++ .../migrations/update-9-0-0/update-9-0-0.ts | 139 ++++++++ .../jest-project/files/jest.config.js__tmpl__ | 5 +- .../jest-project/jest-project.spec.ts | 10 +- .../application/application.spec.ts | 2 +- .../application/application.spec.ts | 2 +- yarn.lock | 334 ++++++------------ 15 files changed, 536 insertions(+), 301 deletions(-) create mode 100644 packages/jest/src/migrations/update-9-0-0/update-9-0-0.spec.ts create mode 100644 packages/jest/src/migrations/update-9-0-0/update-9-0-0.ts diff --git a/.prettierrc b/.prettierrc index dc948e00afa23..1d01da021e4f3 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,4 @@ -{ - "singleQuote": true, - "endOfLine": "lf" -} \ No newline at end of file +{ + "singleQuote": true, + "endOfLine": "lf" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c677b411d3010..b57e0e4752df3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -80,7 +80,7 @@ While developing you may want to try out the changes you have made. The easier w yarn create-playground ``` -You can then go to `tmp/nx` (this is set up to use Nx CLI) or `tmp/angular` (this is set up to use Angular CLI), where you will find an empty workspace with your changes in it, something this that: +You can then go to `tmp/nx` (this is set up to use Nx CLI) or `tmp/angular` (this is set up to use Angular CLI), where you will find an empty workspace with your changes in it.: ```bash yarn create-playground diff --git a/package.json b/package.json index 5c9a09fb99141..2755a75ffbe7c 100644 --- a/package.json +++ b/package.json @@ -147,8 +147,8 @@ "jasmine-spec-reporter": "~4.2.1", "jest": "^24.1.0", "jest-jasmine2": "^24.1.0", - "jest-preset-angular": "7.0.0", - "jest-worker": "24.9.0", + "jest-preset-angular": "8.0.0", + "jest-worker": "^25.1.0", "karma": "~4.0.0", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.1", diff --git a/packages/angular/src/schematics/application/application.spec.ts b/packages/angular/src/schematics/application/application.spec.ts index 0db2bd15fd664..e7713fee19a42 100644 --- a/packages/angular/src/schematics/application/application.spec.ts +++ b/packages/angular/src/schematics/application/application.spec.ts @@ -91,6 +91,17 @@ describe('app', () => { expect(tsconfigE2E.extends).toEqual('./tsconfig.json'); }); + it('should setup jest with serializers', async () => { + const tree = await runSchematic('app', { name: 'myApp' }, appTree); + + expect(tree.readContent('apps/my-app/jest.config.js')).toContain( + `'jest-preset-angular/build/AngularSnapshotSerializer.js'` + ); + expect(tree.readContent('apps/my-app/jest.config.js')).toContain( + `'jest-preset-angular/build/HTMLCommentSerializer.js'` + ); + }); + it('should default the prefix to npmScope', async () => { const noPrefix = await runSchematic( 'app', @@ -350,53 +361,71 @@ describe('app', () => { }); }); - describe('--unit-test-runner karma', () => { - it('should generate a karma config', async () => { - const tree = await runSchematic( - 'app', - { name: 'myApp', unitTestRunner: 'karma' }, - appTree - ); + describe('--unit-test-runner', () => { + describe('default (jest)', () => { + it('should generate jest.config.js with serializers', async () => { + const tree = await runSchematic('app', { name: 'myApp' }, appTree); - expect(tree.exists('apps/my-app/tsconfig.spec.json')).toBeTruthy(); - expect(tree.exists('apps/my-app/karma.conf.js')).toBeTruthy(); - const workspaceJson = readJsonInTree(tree, 'workspace.json'); - expect(workspaceJson.projects['my-app'].architect.test.builder).toEqual( - '@angular-devkit/build-angular:karma' - ); - expect( - workspaceJson.projects['my-app'].architect.lint.options.tsConfig - ).toEqual([ - 'apps/my-app/tsconfig.app.json', - 'apps/my-app/tsconfig.spec.json' - ]); - const tsconfigAppJson = readJsonInTree( - tree, - 'apps/my-app/tsconfig.app.json' - ); - expect(tsconfigAppJson.compilerOptions.outDir).toEqual( - '../../dist/out-tsc' - ); + expect(tree.readContent('apps/my-app/jest.config.js')).toContain( + `'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js'` + ); + expect(tree.readContent('apps/my-app/jest.config.js')).toContain( + `'jest-preset-angular/build/AngularSnapshotSerializer.js'` + ); + expect(tree.readContent('apps/my-app/jest.config.js')).toContain( + `'jest-preset-angular/build/HTMLCommentSerializer.js'` + ); + }); }); - }); - describe('--unit-test-runner none', () => { - it('should not generate test configuration', async () => { - const tree = await runSchematic( - 'app', - { name: 'myApp', unitTestRunner: 'none' }, - appTree - ); - expect(tree.exists('apps/my-app/src/test-setup.ts')).toBeFalsy(); - expect(tree.exists('apps/my-app/src/test.ts')).toBeFalsy(); - expect(tree.exists('apps/my-app/tsconfig.spec.json')).toBeFalsy(); - expect(tree.exists('apps/my-app/jest.config.js')).toBeFalsy(); - expect(tree.exists('apps/my-app/karma.config.js')).toBeFalsy(); - const workspaceJson = readJsonInTree(tree, 'workspace.json'); - expect(workspaceJson.projects['my-app'].architect.test).toBeUndefined(); - expect( - workspaceJson.projects['my-app'].architect.lint.options.tsConfig - ).toEqual(['apps/my-app/tsconfig.app.json']); + describe('karma', () => { + it('should generate a karma config', async () => { + const tree = await runSchematic( + 'app', + { name: 'myApp', unitTestRunner: 'karma' }, + appTree + ); + + expect(tree.exists('apps/my-app/tsconfig.spec.json')).toBeTruthy(); + expect(tree.exists('apps/my-app/karma.conf.js')).toBeTruthy(); + const workspaceJson = readJsonInTree(tree, 'workspace.json'); + expect(workspaceJson.projects['my-app'].architect.test.builder).toEqual( + '@angular-devkit/build-angular:karma' + ); + expect( + workspaceJson.projects['my-app'].architect.lint.options.tsConfig + ).toEqual([ + 'apps/my-app/tsconfig.app.json', + 'apps/my-app/tsconfig.spec.json' + ]); + const tsconfigAppJson = readJsonInTree( + tree, + 'apps/my-app/tsconfig.app.json' + ); + expect(tsconfigAppJson.compilerOptions.outDir).toEqual( + '../../dist/out-tsc' + ); + }); + }); + + describe('none', () => { + it('should not generate test configuration', async () => { + const tree = await runSchematic( + 'app', + { name: 'myApp', unitTestRunner: 'none' }, + appTree + ); + expect(tree.exists('apps/my-app/src/test-setup.ts')).toBeFalsy(); + expect(tree.exists('apps/my-app/src/test.ts')).toBeFalsy(); + expect(tree.exists('apps/my-app/tsconfig.spec.json')).toBeFalsy(); + expect(tree.exists('apps/my-app/jest.config.js')).toBeFalsy(); + expect(tree.exists('apps/my-app/karma.config.js')).toBeFalsy(); + const workspaceJson = readJsonInTree(tree, 'workspace.json'); + expect(workspaceJson.projects['my-app'].architect.test).toBeUndefined(); + expect( + workspaceJson.projects['my-app'].architect.lint.options.tsConfig + ).toEqual(['apps/my-app/tsconfig.app.json']); + }); }); }); diff --git a/packages/angular/src/utils/versions.ts b/packages/angular/src/utils/versions.ts index 9e9d913bf253b..64f23029c950a 100644 --- a/packages/angular/src/utils/versions.ts +++ b/packages/angular/src/utils/versions.ts @@ -4,4 +4,4 @@ export const angularDevkitVersion = '0.900.0-rc.12'; export const angularJsVersion = '1.6.6'; export const ngrxVersion = '8.5.0'; export const rxjsVersion = '~6.5.0'; -export const jestPresetAngularVersion = '7.0.0'; +export const jestPresetAngularVersion = '8.0.0'; diff --git a/packages/jest/migrations.json b/packages/jest/migrations.json index af07eb455a84b..a2f119a5e659f 100644 --- a/packages/jest/migrations.json +++ b/packages/jest/migrations.json @@ -9,6 +9,22 @@ "version": "8.7.0", "description": "Update Jest testPathPattern option", "factory": "./src/migrations/update-8-7-0/update-8-7-0" + }, + "update-9.0.0": { + "version": "9.0.0-beta.1", + "description": "Upgrades jest-preset-angular to 8.0.0", + "factory": "./src/migrations/update-9-0-0/update-9-0-0" + } + }, + "packageJsonUpdates": { + "9.0.0": { + "version": "9.0.0-beta.1", + "packages": { + "jest-preset-angular": { + "version": "8.0.0", + "alwaysAddToPackageJson": false + } + } } } } diff --git a/packages/jest/src/builders/jest/jest.impl.spec.ts b/packages/jest/src/builders/jest/jest.impl.spec.ts index ef46d4f5766d6..8d9f447162247 100644 --- a/packages/jest/src/builders/jest/jest.impl.spec.ts +++ b/packages/jest/src/builders/jest/jest.impl.spec.ts @@ -57,7 +57,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), @@ -99,7 +100,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), @@ -142,7 +144,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), @@ -199,7 +202,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), @@ -251,7 +255,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), @@ -307,7 +312,8 @@ describe('Jest Builder', () => { tsConfig: '/root/tsconfig.test.json', stringifyContentPathRegex: '\\.(html|svg)$', astTransformers: [ - 'jest-preset-angular/InlineHtmlStripStylesTransformer' + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' ] } }), diff --git a/packages/jest/src/builders/jest/jest.impl.ts b/packages/jest/src/builders/jest/jest.impl.ts index 0bad8b2a1e1ce..226a4401aaaad 100644 --- a/packages/jest/src/builders/jest/jest.impl.ts +++ b/packages/jest/src/builders/jest/jest.impl.ts @@ -72,7 +72,10 @@ function run( require.resolve('jest-preset-angular'); Object.assign(tsJestConfig, { stringifyContentPathRegex: '\\.(html|svg)$', - astTransformers: ['jest-preset-angular/InlineHtmlStripStylesTransformer'] + astTransformers: [ + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' + ] }); } catch (e) {} diff --git a/packages/jest/src/migrations/update-9-0-0/update-9-0-0.spec.ts b/packages/jest/src/migrations/update-9-0-0/update-9-0-0.spec.ts new file mode 100644 index 0000000000000..ce1707e879354 --- /dev/null +++ b/packages/jest/src/migrations/update-9-0-0/update-9-0-0.spec.ts @@ -0,0 +1,173 @@ +import { Tree } from '@angular-devkit/schematics'; +import { readJsonInTree } from '@nrwl/workspace/src/utils/ast-utils'; +import { SchematicTestRunner } from '@angular-devkit/schematics/testing'; +import * as path from 'path'; +import { createEmptyWorkspace } from '@nrwl/workspace/testing'; +import { serializeJson } from '@nrwl/workspace'; + +describe('Update 9.0.0', () => { + let initialTree: Tree; + let schematicRunner: SchematicTestRunner; + + beforeEach(async () => { + initialTree = createEmptyWorkspace(Tree.empty()); + + schematicRunner = new SchematicTestRunner( + '@nrwl/jest', + path.join(__dirname, '../../../migrations.json') + ); + + initialTree.overwrite( + 'package.json', + serializeJson({ devDependencies: { 'jest-preset-angular': '7.0.0' } }) + ); + + initialTree.overwrite( + 'workspace.json', + serializeJson({ + projects: { + 'angular-one': { + root: 'apps/angular-one/', + architect: { + test: { + builder: '@nrwl/jest:jest', + options: { + jestConfig: 'apps/angular-one/jest.config.js' + } + } + } + }, + 'angular-two': { + root: 'apps/angular-two/', + architect: { + test: { + builder: '@nrwl/jest:jest', + options: { + jestConfig: 'apps/angular-two/jest.config.js' + } + } + } + }, + 'non-angular-one': { + root: 'apps/non-angular-one/', + architect: { + test: { + builder: '@nrwl/jest:jest', + options: { + jestConfig: 'apps/non-angular-one/jest.config.js' + } + } + } + } + } + }) + ); + + initialTree.create( + 'apps/angular-one/jest.config.js', + `module.exports = { + name: 'angular-one', + preset: '../../jest.config.js', + coverageDirectory: + '../../coverage/apps/angular-one', + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js' + ] + };` + ); + + initialTree.create( + 'apps/angular-two/jest.config.js', + `module.exports = { + name: 'angular-two', + preset: '../../jest.config.js', + coverageDirectory: + '../../coverage/apps/angular-two', + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js' + ] + };` + ); + + initialTree.create( + 'apps/non-angular-one/jest.config.js', + `module.exports = { + name: 'non-angular-one', + preset: '../../jest.config.js', + coverageDirectory: + '../../coverage/apps/non-angular-one', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'html'] + };` + ); + }); + + it('should update jest-preset-angular to 8.0.0', async () => { + const result = await schematicRunner + .runSchematicAsync('update-9.0.0', {}, initialTree) + .toPromise(); + + const { devDependencies } = readJsonInTree(result, 'package.json'); + expect(devDependencies['jest-preset-angular']).toEqual('8.0.0'); + }); + + it(`it should add '/build' into jest-preset-angular snapshotSerializers in any jest.config.js where it exists`, async () => { + const result = await schematicRunner + .runSchematicAsync('update-9.0.0', {}, initialTree) + .toPromise(); + + const updateJestAngularOne = result.readContent( + 'apps/angular-one/jest.config.js' + ); + const updateJestAngularTwo = result.readContent( + 'apps/angular-two/jest.config.js' + ); + const updateJestNonAngularOne = result.readContent( + 'apps/non-angular-one/jest.config.js' + ); + + expect(updateJestAngularOne).not.toContain( + 'jest-preset-angular/AngularSnapshotSerializer.js' + ); + expect(updateJestAngularOne).not.toContain( + 'jest-preset-angular/HTMLCommentSerializer.js' + ); + expect(updateJestAngularTwo).not.toContain( + 'jest-preset-angular/AngularSnapshotSerializer.js' + ); + expect(updateJestAngularTwo).not.toContain( + 'jest-preset-angular/HTMLCommentSerializer.js' + ); + + expect(updateJestAngularOne).toContain( + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js' + ); + expect(updateJestAngularOne).toContain( + 'jest-preset-angular/build/AngularSnapshotSerializer.js' + ); + expect(updateJestAngularOne).toContain( + 'jest-preset-angular/build/HTMLCommentSerializer.js' + ); + + expect(updateJestAngularTwo).toContain( + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js' + ); + expect(updateJestAngularTwo).toContain( + 'jest-preset-angular/build/AngularSnapshotSerializer.js' + ); + expect(updateJestAngularTwo).toContain( + 'jest-preset-angular/build/HTMLCommentSerializer.js' + ); + + expect(updateJestNonAngularOne).not.toContain( + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js' + ); + expect(updateJestNonAngularOne).not.toContain( + 'jest-preset-angular/build/AngularSnapshotSerializer.js' + ); + expect(updateJestNonAngularOne).not.toContain( + 'jest-preset-angular/build/HTMLCommentSerializer.js' + ); + }); +}); diff --git a/packages/jest/src/migrations/update-9-0-0/update-9-0-0.ts b/packages/jest/src/migrations/update-9-0-0/update-9-0-0.ts new file mode 100644 index 0000000000000..3099fc8f7b65e --- /dev/null +++ b/packages/jest/src/migrations/update-9-0-0/update-9-0-0.ts @@ -0,0 +1,139 @@ +import { + chain, + Rule, + SchematicContext, + Tree +} from '@angular-devkit/schematics'; +import { + formatFiles, + insert, + readWorkspace, + updatePackagesInPackageJson +} from '@nrwl/workspace'; +import * as ts from 'typescript'; +import * as path from 'path'; +import { + Change, + getSourceNodes, + InsertChange, + readJsonInTree, + ReplaceChange +} from '@nrwl/workspace/src/utils/ast-utils'; +import { stripIndents } from '@angular-devkit/core/src/utils/literals'; + +export default function update(): Rule { + return chain([ + displayInformation, + updatePackagesInPackageJson( + path.join(__dirname, '../../../', 'migrations.json'), + '9.0.0' + ), + updateJestConfigs, + formatFiles() + ]); +} + +function displayInformation(host: Tree, context: SchematicContext) { + const config = readJsonInTree(host, 'package.json'); + if (config.devDependencies && config.devDependencies['jest-preset-angular']) { + context.logger.info(stripIndents` + \`jest-preset-angular\` 8.0.0 has restructured folders, introducing breaking changes to + jest.config.js files. + + We are updating snapshotSerializers in each Angular project to include appropriate paths. + + See: https://github.com/thymikee/jest-preset-angular/releases/tag/v8.0.0 + `); + } +} + +function updateJestConfigs(host: Tree) { + const config = readJsonInTree(host, 'package.json'); + + if (config.devDependencies && config.devDependencies['jest-preset-angular']) { + const workspaceConfig = readWorkspace(host); + const jestConfigsToUpdate = []; + + Object.values(workspaceConfig.projects).forEach(project => { + if (!project.architect) { + return; + } + + Object.values(project.architect).forEach(target => { + if (target.builder !== '@nrwl/jest:jest') { + return; + } + + if (target.options.jestConfig) { + jestConfigsToUpdate.push(target.options.jestConfig); + } + + if (target.configurations) { + Object.values(target.configurations).forEach(config => { + if (config.jestConfig) { + jestConfigsToUpdate.push(config.jestConfig); + } + }); + } + }); + }); + + jestConfigsToUpdate.forEach(configPath => { + if (host.exists(configPath)) { + const contents = host.read(configPath).toString(); + const sourceFile = ts.createSourceFile( + configPath, + contents, + ts.ScriptTarget.Latest + ); + + const changes: Change[] = []; + + getSourceNodes(sourceFile).forEach(node => { + if (node && ts.isStringLiteral(node)) { + const nodeText = node.text; + + if ( + nodeText === 'jest-preset-angular/AngularSnapshotSerializer.js' + ) { + // add new serializer from v8 of jest-preset-angular + changes.push( + new InsertChange( + configPath, + node.getStart(sourceFile), + `'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js',\n` + ) + ); + + changes.push( + new ReplaceChange( + configPath, + node.getStart(sourceFile) + 1, + nodeText, + 'jest-preset-angular/build/AngularSnapshotSerializer.js' + ) + ); + } + + if (nodeText === 'jest-preset-angular/HTMLCommentSerializer.js') { + changes.push( + new ReplaceChange( + configPath, + node.getStart(sourceFile) + 1, + nodeText, + 'jest-preset-angular/build/HTMLCommentSerializer.js' + ) + ); + } + } + }); + + insert( + host, + configPath, + changes.sort((a, b) => (a.order > b.order ? -1 : 1)) + ); + } + }); + } +} diff --git a/packages/jest/src/schematics/jest-project/files/jest.config.js__tmpl__ b/packages/jest/src/schematics/jest-project/files/jest.config.js__tmpl__ index 3cce0d3ce0fc4..20d7cea386a37 100644 --- a/packages/jest/src/schematics/jest-project/files/jest.config.js__tmpl__ +++ b/packages/jest/src/schematics/jest-project/files/jest.config.js__tmpl__ @@ -7,7 +7,8 @@ module.exports = { moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'html'],<% } %> coverageDirectory: '<%= offsetFromRoot %>coverage/<%= projectRoot %>'<% if(!skipSerializers) { %>, snapshotSerializers: [ - 'jest-preset-angular/AngularSnapshotSerializer.js', - 'jest-preset-angular/HTMLCommentSerializer.js' + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', + 'jest-preset-angular/build/AngularSnapshotSerializer.js', + 'jest-preset-angular/build/HTMLCommentSerializer.js' ]<% } %> }; 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 18e2f72270148..cbed157c47b80 100644 --- a/packages/jest/src/schematics/jest-project/jest-project.spec.ts +++ b/packages/jest/src/schematics/jest-project/jest-project.spec.ts @@ -89,8 +89,9 @@ describe('jestProject', () => { preset: '../../jest.config.js', coverageDirectory: '../../coverage/libs/lib1', snapshotSerializers: [ - 'jest-preset-angular/AngularSnapshotSerializer.js', - 'jest-preset-angular/HTMLCommentSerializer.js' + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', + 'jest-preset-angular/build/AngularSnapshotSerializer.js', + 'jest-preset-angular/build/HTMLCommentSerializer.js' ] }; `); @@ -234,8 +235,9 @@ describe('jestProject', () => { const jestConfig = resultTree.readContent('libs/lib1/jest.config.js'); expect(jestConfig).not.toContain(` snapshotSerializers: [ - 'jest-preset-angular/AngularSnapshotSerializer.js', - 'jest-preset-angular/HTMLCommentSerializer.js' + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js, + 'jest-preset-angular/build/AngularSnapshotSerializer.js', + 'jest-preset-angular/build/HTMLCommentSerializer.js' ] `); }); diff --git a/packages/react/src/schematics/application/application.spec.ts b/packages/react/src/schematics/application/application.spec.ts index 8e318bd9b6bbf..3845dd58f52cf 100644 --- a/packages/react/src/schematics/application/application.spec.ts +++ b/packages/react/src/schematics/application/application.spec.ts @@ -218,7 +218,7 @@ describe('app', () => { ); expect(tree.readContent('apps/my-app/jest.config.js')).not.toContain( - `'jest-preset-angular/AngularSnapshotSerializer.js',` + `'jest-preset-angular/build/AngularSnapshotSerializer.js',` ); }); diff --git a/packages/web/src/schematics/application/application.spec.ts b/packages/web/src/schematics/application/application.spec.ts index adff8909c6782..a62956213cdad 100644 --- a/packages/web/src/schematics/application/application.spec.ts +++ b/packages/web/src/schematics/application/application.spec.ts @@ -207,7 +207,7 @@ describe('app', () => { ); expect(tree.readContent('apps/my-app/jest.config.js')).not.toContain( - `'jest-preset-angular/AngularSnapshotSerializer.js',` + `'jest-preset-angular/build/AngularSnapshotSerializer.js',` ); }); diff --git a/yarn.lock b/yarn.lock index caebcfff4e9c9..2f0e20913d1c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -267,7 +267,7 @@ resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-9.0.0-rc.12.tgz#294377e6476e130392fdb800c4b63022687e564f" integrity sha512-XrE2kA8RvvU29By1wHNUWsMVR1uYZHBipqwqgTvBjLf3jhr56WXNdYVwbFpGvOSEswOvK5iCzhr+zHknagNqTA== -"@babel/code-frame@7.5.5", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35", "@babel/code-frame@^7.5.5": +"@babel/code-frame@7.5.5", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== @@ -2730,7 +2730,7 @@ slash "^2.0.0" strip-ansi "^5.0.0" -"@jest/environment@^24.9.0": +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== @@ -2740,7 +2740,7 @@ "@jest/types" "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^24.9.0": +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== @@ -2826,7 +2826,7 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.9.0": +"@jest/types@^24.3.0", "@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== @@ -4206,7 +4206,7 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0, acorn-globals@^4.3.0: +acorn-globals@^4.1.0, acorn-globals@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== @@ -4229,7 +4229,7 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: +acorn@^6.0.1, acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== @@ -4542,19 +4542,12 @@ aria-query@3.0.0, aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -4634,11 +4627,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -5957,15 +5945,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -8055,18 +8034,30 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^1.0.0, cssstyle@^1.1.1: +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssstyle@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: cssom "0.3.x" +cssstyle@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.0.0.tgz#911f0fe25532db4f5d44afc83f89cc4b82c97fe3" + integrity sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg== + dependencies: + cssom "~0.3.6" + csstype@^2.2.0, csstype@^2.5.7: version "2.6.6" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41" @@ -9128,7 +9119,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0, escodegen@^1.9.1: +escodegen@^1.11.1, escodegen@^1.9.1: version "1.12.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== @@ -9463,13 +9454,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -9483,13 +9467,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -9574,13 +9551,6 @@ external-editor@^3.0.0, external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -9800,11 +9770,6 @@ file-system-cache@^1.0.5: fs-extra "^0.30.0" ramda "^0.21.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - fileset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" @@ -9823,17 +9788,6 @@ filesize@^4.1.2: resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.1.2.tgz#fcd570af1353cea97897be64f56183adb995994b" integrity sha512-iSWteWtfNcrWQTkQw8ble2bnonSl7YJImsn9OZKpE2E4IHhXI78eASpDYUljXZZdYj36QsEKjOs/CsiDqmKMJw== -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -10028,7 +9982,7 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3, for-own@^0.1.4: +for-own@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= @@ -11712,18 +11666,6 @@ is-docker@2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -11780,7 +11722,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^2.0.0, is-glob@^2.0.1: +is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= @@ -11839,13 +11781,6 @@ is-npm@^3.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -11853,11 +11788,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -11935,16 +11865,6 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -12370,14 +12290,17 @@ jest-each@^24.9.0: jest-util "^24.9.0" pretty-format "^24.9.0" -jest-environment-jsdom-thirteen@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-thirteen/-/jest-environment-jsdom-thirteen-0.0.2.tgz#8de6a9cc178cb585adfaf2d58a646c514502df9f" - integrity sha512-NH7b44aUdSjSzIYogJS9WkymmJNA+Q3na6XebsxZmP70NzW++/WD1Ky8E6PVxTqKuEnYzxFA/5Of2VxoreugGg== +jest-environment-jsdom-fifteen@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz#49a0af55e0d32737a6114a1575dd714702ad63b0" + integrity sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg== dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - jsdom "^13.0.0" + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^15.2.1" jest-environment-jsdom@^24.9.0: version "24.9.0" @@ -12466,17 +12389,6 @@ jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -12491,12 +12403,7 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= - -jest-mock@^24.9.0: +jest-mock@^24.0.0, jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== @@ -12508,12 +12415,13 @@ jest-pnp-resolver@^1.2.1: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-preset-angular@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-7.0.0.tgz#cf2dfa75ec8d3846e28afac0da0da269f8036ca2" - integrity sha512-XwMTabZ7/clqpWxgmrXeqKUNn5eXuyNtddFyG1JWTtVoRFIru8kEigk9Eyra82Yx0vJIN1KkNoOKieBQfqfvwQ== +jest-preset-angular@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-8.0.0.tgz#6653f4cb5df32ca63af032417a18da44ad5e4f2b" + integrity sha512-POQUTOdZwHJOFTr8lT+bR9da1L5ItRPQSjC1gyKf3wXO9ct2Ht08CO60dYDshivfewThdqzMeVYzgM9tEssw2A== dependencies: - jest-environment-jsdom-thirteen "^0.0.2" + jest-environment-jsdom-fifteen "^1.0.0" + pretty-format "^24.0.0" ts-jest "^24.0.0" jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: @@ -12619,21 +12527,7 @@ jest-snapshot@^24.9.0: pretty-format "^24.9.0" semver "^6.2.0" -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" - mkdirp "^0.5.1" - slash "^1.0.0" - source-map "^0.6.0" - -jest-util@^24.9.0: +jest-util@^24.0.0, jest-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== @@ -12760,36 +12654,36 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsdom@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" - integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw== +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== dependencies: abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" + cssom "^0.4.1" + cssstyle "^2.0.0" data-urls "^1.1.0" domexception "^1.0.1" - escodegen "^1.11.0" + escodegen "^1.11.1" html-encoding-sniffer "^1.0.2" - nwsapi "^2.0.9" + nwsapi "^2.2.0" parse5 "5.1.0" pn "^1.1.0" request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.5" + request-promise-native "^1.0.7" + saxes "^3.1.9" symbol-tree "^3.2.2" - tough-cookie "^2.5.0" + tough-cookie "^3.0.1" w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.0.1" + w3c-xmlserializer "^1.1.2" webidl-conversions "^4.0.2" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" whatwg-url "^7.0.0" - ws "^6.1.2" + ws "^7.0.0" xml-name-validator "^3.0.0" jsesc@^1.3.0: @@ -13705,11 +13599,6 @@ material-colors@^1.2.1: resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -13882,25 +13771,6 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -14621,7 +14491,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -14776,11 +14646,16 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7, nwsapi@^2.0.9: +nwsapi@^2.0.7: version "2.1.4" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -14885,14 +14760,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -15367,16 +15234,6 @@ parse-github-repo-url@^1.3.0: resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -16478,11 +16335,6 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - prettier@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" @@ -16496,7 +16348,7 @@ pretty-error@^2.0.2, pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -pretty-format@^24.3.0, pretty-format@^24.9.0: +pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== @@ -16782,15 +16634,6 @@ ramda@^0.21.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -17404,13 +17247,6 @@ regenerator-transform@^0.14.0: dependencies: private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -17587,7 +17423,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -17613,6 +17449,13 @@ request-promise-core@1.1.2: dependencies: lodash "^4.17.11" +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + request-promise-native@^1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" @@ -17622,6 +17465,15 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" +request-promise-native@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + request@2.88.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -18170,7 +18022,7 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^3.1.5: +saxes@^3.1.9: version "3.1.11" resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== @@ -19800,7 +19652,7 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: +tough-cookie@^2.3.3, tough-cookie@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -19808,6 +19660,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -20511,7 +20372,7 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -w3c-xmlserializer@^1.0.1: +w3c-xmlserializer@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== @@ -20995,13 +20856,18 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.2, ws@^6.2.1: +ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== dependencies: async-limiter "~1.0.0" +ws@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" + integrity sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A== + ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"