diff --git a/.eslintrc.json b/.eslintrc.json index 4593ec6..620f2a1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,9 +23,17 @@ "platform:node" ] }, + { + "sourceTag": "scope:internal", + "onlyDependOnLibsWithTags": ["scope:internal", "scope:shared"] + }, { "sourceTag": "type:e2e", - "onlyDependOnLibsWithTags": ["type:package"] + "onlyDependOnLibsWithTags": ["type:package", "type:e2e-util"] + }, + { + "sourceTag": "type:e2e-util", + "onlyDependOnLibsWithTags": ["type:e2e-util"] }, { "sourceTag": "type:tool", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b5fbd3..10e5015 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -168,4 +168,4 @@ jobs: --verify-store-integrity false - run: pnpm store prune - - run: pnpm e2e + - run: pnpm e2e -- --skip-nx-cache diff --git a/e2e/angular-e2e/jest.config.js b/e2e/angular-e2e/jest.config.js index 85cd0fe..191b288 100644 --- a/e2e/angular-e2e/jest.config.js +++ b/e2e/angular-e2e/jest.config.js @@ -6,10 +6,11 @@ module.exports = { tsConfig: '/tsconfig.spec.json', }, }, - testTimeout: 30000, + runner: 'jest-serial-runner', + testTimeout: 120_000, transform: { '^.+\\.[tj]s$': 'ts-jest', }, moduleFileExtensions: ['ts', 'js', 'html'], - coverageDirectory: '../../coverage/e2eangular-e2e', + coverageDirectory: '../../coverage/e2e/angular-e2e', }; diff --git a/e2e/angular-e2e/tests/angular.spec.ts b/e2e/angular-e2e/tests/angular.spec.ts deleted file mode 100644 index a922a35..0000000 --- a/e2e/angular-e2e/tests/angular.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - checkFilesExist, - ensureNxProject, - readJson, - runNxCommandAsync, - uniq, - updateFile, -} from '@nrwl/nx-plugin/testing'; - -describe('angular e2e', () => { - beforeEach(() => { - ensureNxProject('@nxworker/angular', 'dist/packages/angular'); - updateFile('.npmrc', 'prefer-frozen-lockfile=false'); - updateFile('workspace.json', raw => { - const workspaceJson = JSON.parse(raw); - const workspaceJsonUsingPnpm = { - ...workspaceJson, - cli: { - ...workspaceJson.cli, - packageManager: 'pnpm', - }, - }; - - return JSON.stringify(workspaceJsonUsingPnpm, null, 2); - }); - }); - - it('should create angular', async done => { - const plugin = uniq('angular'); - await runNxCommandAsync(`generate @nxworker/angular:angular ${plugin}`); - - const result = await runNxCommandAsync(`build ${plugin}`); - expect(result.stdout).toContain('Executor ran'); - - done(); - }); - - describe('--directory', () => { - it('should create src in the specified directory', async done => { - const plugin = uniq('angular'); - await runNxCommandAsync( - `generate @nxworker/angular:angular ${plugin} --directory subdir` - ); - expect(() => - checkFilesExist(`libs/subdir/${plugin}/src/index.ts`) - ).not.toThrow(); - done(); - }); - }); - - describe('--tags', () => { - it('should add tags to nx.json', async done => { - const plugin = uniq('angular'); - await runNxCommandAsync( - `generate @nxworker/angular:angular ${plugin} --tags e2etag,e2ePackage` - ); - const nxJson = readJson('nx.json'); - expect(nxJson.projects[plugin].tags).toEqual(['e2etag', 'e2ePackage']); - done(); - }); - }); -}); diff --git a/e2e/angular-e2e/tests/convert-to-buildable.spec.ts b/e2e/angular-e2e/tests/convert-to-buildable.spec.ts new file mode 100644 index 0000000..a03ecfe --- /dev/null +++ b/e2e/angular-e2e/tests/convert-to-buildable.spec.ts @@ -0,0 +1,61 @@ +import { addPackages } from '@internal/e2e-util'; +import { + checkFilesExist, + copyNodeModules, + ensureNxProject, + readJson, + runNxCommandAsync, + uniq, +} from '@nrwl/nx-plugin/testing'; +import * as path from 'path'; + +describe('@nxworker/angular:convert-to-buildable generator e2e', () => { + beforeAll(() => { + copyNodeModules(['@nrwl/angular', 'ng-packagr']); + ensureNxProject('@nxworker/angular', 'dist/packages/angular'); + addPackages({ + devDependencies: { + ['@nrwl/angular']: '^11.2.0 || >=11.2.0-rc.2', + }, + }); + }); + + beforeEach(async () => { + projectName = uniq('convert-to-buildable'); + await runNxCommandAsync(`generate @nrwl/angular:library ${projectName}`); + }); + + let projectName: string; + + it('generates buildable library configurations', async () => { + const configurationFileNames = [ + 'ng-package.json', + 'package.json', + 'tsconfig.lib.prod.json', + ].map(fileName => path.join('libs', projectName, fileName)); + + await runNxCommandAsync( + `generate @nxworker/angular:convert-to-buildable ${projectName}` + ); + + expect(() => checkFilesExist(...configurationFileNames)).not.toThrow(); + }); + + it('adds ng-packagr', async () => { + await runNxCommandAsync( + `generate @nxworker/angular:convert-to-buildable ${projectName}` + ); + + const { devDependencies = {} } = readJson('package.json'); + expect(devDependencies['ng-packagr']).toBeDefined(); + }); + + it('adds a "build" execution target', async () => { + await runNxCommandAsync( + `generate @nxworker/angular:convert-to-buildable ${projectName}` + ); + + const result = await runNxCommandAsync(`build ${projectName}`); + expect(result.stdout).toContain('Built Angular Package'); + }); +}); diff --git a/e2e/angular-e2e/tests/use-incremental-build.spec.ts b/e2e/angular-e2e/tests/use-incremental-build.spec.ts new file mode 100644 index 0000000..5587647 --- /dev/null +++ b/e2e/angular-e2e/tests/use-incremental-build.spec.ts @@ -0,0 +1,61 @@ +import { addPackages, useDefaultBaseBranch } from '@internal/e2e-util'; +import { + copyNodeModules, + ensureNxProject, + runCommandAsync, + runNxCommandAsync, + uniq, +} from '@nrwl/nx-plugin/testing'; + +describe('@nxworker/angular:use-incremental-build generator e2e', () => { + beforeAll(() => { + copyNodeModules(['@nrwl/angular']); + ensureNxProject('@nxworker/angular', 'dist/packages/angular'); + addPackages({ + devDependencies: { + ['@nrwl/angular']: '^11.2.0 || >=11.2.0-rc.2', + }, + }); + useDefaultBaseBranch('main'); + }); + + beforeEach(async () => { + projectName = uniq('use-incremental-build'); + await runNxCommandAsync( + `generate @nrwl/angular:application ${projectName}` + ); + }); + + let projectName: string; + + it('updates the "build" execution target', async () => { + await runNxCommandAsync( + `generate @nxworker/angular:use-incremental-build ${projectName}` + ); + + const result = await runNxCommandAsync( + `build ${projectName} --parallel --with-deps` + ); + expect(result.stdout).toContain('Running target "build" succeeded'); + }); + + it('updates the "build" script', async () => { + await runNxCommandAsync( + `generate @nxworker/angular:use-incremental-build ${projectName}` + ); + + const result = await runCommandAsync(`npm run build -- ${projectName}`); + expect(result.stdout).toContain('Running target "build" succeeded'); + }); + + it('updates the "affected:build" script', async () => { + await runNxCommandAsync( + `generate @nxworker/angular:use-incremental-build ${projectName}` + ); + + const result = await runCommandAsync( + `npm run affected:build -- --base=remotes/origin/main` + ); + expect(result.stdout).toContain('Running target "build" succeeded'); + }); +}); diff --git a/e2e/angular-e2e/tsconfig.json b/e2e/angular-e2e/tsconfig.json index 879cca4..b9c9d95 100644 --- a/e2e/angular-e2e/tsconfig.json +++ b/e2e/angular-e2e/tsconfig.json @@ -3,9 +3,6 @@ "files": [], "include": [], "references": [ - { - "path": "./tsconfig.e2e.json" - }, { "path": "./tsconfig.spec.json" } diff --git a/jest.config.js b/jest.config.js index a2a9201..4168b4b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,22 +1,24 @@ module.exports = { projects: [ '/e2e/angular-e2e', - '/packages/angular', - '/tools', '/e2e/examples/angular/nrwl-airlines/booking/desktop-app', '/e2e/examples/angular/nrwl-airlines/booking/mobile-app', '/e2e/examples/angular/nrwl-airlines/check-in/desktop-app', '/e2e/examples/angular/nrwl-airlines/check-in/mobile-app', - '/packages/examples/angular/nrwl-airlines/shared/root/data-access', - '/packages/examples/angular/nrwl-airlines/check-in/root/feature-shell', - '/packages/examples/angular/nrwl-airlines/check-in/data-access', - '/packages/examples/angular/nrwl-airlines/shared/ui-buttons', - '/packages/examples/angular/nrwl-airlines/shared/util-formatting', - '/packages/examples/angular/nrwl-airlines/seatmap/data-access', - '/packages/examples/angular/nrwl-airlines/seatmap/feature-seat-listing', + '/packages/angular', '/packages/examples/angular/nrwl-airlines/booking/data-access', '/packages/examples/angular/nrwl-airlines/booking/feature-flight-search', '/packages/examples/angular/nrwl-airlines/booking/feature-passenger-info', '/packages/examples/angular/nrwl-airlines/booking/root/feature-shell', + '/packages/examples/angular/nrwl-airlines/check-in/data-access', + '/packages/examples/angular/nrwl-airlines/check-in/root/feature-shell', + '/packages/examples/angular/nrwl-airlines/seatmap/data-access', + '/packages/examples/angular/nrwl-airlines/seatmap/feature-seat-listing', + '/packages/examples/angular/nrwl-airlines/shared/root/data-access', + '/packages/examples/angular/nrwl-airlines/shared/ui-buttons', + '/packages/examples/angular/nrwl-airlines/shared/util-formatting', + '/packages/internal/e2e-util', + '/packages/internal/test-util', + '/tools', ], }; diff --git a/nx.json b/nx.json index 1ab37f5..919cd2d 100644 --- a/nx.json +++ b/nx.json @@ -117,6 +117,12 @@ "examples-angular-nrwl-airlines-shared-util-formatting": { "tags": ["domain:shared", "platform:web", "scope:shared", "type:util"] }, + "internal-e2e-util": { + "tags": ["platform:node", "scope:internal", "type:e2e-util"] + }, + "internal-test-util": { + "tags": ["platform:node", "scope:internal", "type:test-util"] + }, "workspace-tools": { "tags": ["platform:node", "type:tool"] } diff --git a/package.json b/package.json index 988e186..c399076 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "build": "nx run-many --target=build --configuration=production --all", "test": "nx run-many --target=test --all --parallel", "lint": "nx workspace-lint && nx run-many --target=lint --all --parallel", - "e2e": "nx run-many --target=e2e --all --parallel", + "e2e": "nx run-many --target=e2e --all --parallel --skip-nx-cache", "affected:apps": "nx affected:apps", "affected:libs": "nx affected:libs", "affected:build": "nx affected:build", @@ -22,7 +22,7 @@ "affected:dep-graph": "nx affected:dep-graph", "affected": "nx affected", "contributors:add": "all-contributors add", - "format": "pnpm sort-projects && nx format:write && pnpx prettier --config .prettierrc --write \"**/*.*\" \"!dist/**\" \"!pnmpm-lock.yaml\"", + "format": "pnpm sort-projects && nx format:write && pnpx prettier --config .prettierrc --write \"**/*.*\" \"!dist/**\" \"!pnpm-lock.yaml\"", "format:write": "nx format:write", "format:check": "nx format:check", "update": "nx migrate @nrwl/worskpace && nx migrate latest", @@ -36,50 +36,50 @@ "affected:ci": "pnpm affected:lint && pnpm affected:test && pnpm affected:build && pnpm affected:e2e" }, "dependencies": { - "@angular/animations": "^11.0.7", - "@angular/common": "^11.0.7", - "@angular/compiler": "^11.0.7", - "@angular/core": "^11.0.7", - "@angular/forms": "^11.0.7", - "@angular/platform-browser": "^11.0.7", - "@angular/platform-browser-dynamic": "^11.0.7", - "@angular/router": "^11.0.7", + "@angular/animations": "~11.0.0", + "@angular/common": "~11.0.0", + "@angular/compiler": "~11.0.0", + "@angular/core": "~11.0.0", + "@angular/forms": "~11.0.0", + "@angular/platform-browser": "~11.0.0", + "@angular/platform-browser-dynamic": "~11.0.0", + "@angular/router": "~11.0.0", "@ngrx/effects": "^10.1.2", "@ngrx/entity": "^10.1.2", "@ngrx/router-store": "^10.1.2", "@ngrx/store": "^10.1.2", - "@nrwl/angular": "11.1.1", + "@nrwl/angular": "11.2.0-rc.2", "luxon": "^1.25.0", - "rxjs": "~6.5.5", + "rxjs": "~6.6.3", "tslib": "^2.1.0", - "zone.js": "^0.10.3" + "zone.js": "^0.11.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1100.6", + "@angular-devkit/build-angular": "~0.1100.1", "@angular-eslint/eslint-plugin": "1.0.0", "@angular-eslint/eslint-plugin-template": "1.0.0", "@angular-eslint/template-parser": "1.0.0", - "@angular/cli": "^11.0.6", - "@angular/compiler-cli": "^11.0.7", - "@angular/language-service": "^11.0.7", + "@angular/cli": "~11.0.1", + "@angular/compiler-cli": "~11.0.0", + "@angular/language-service": "~11.0.0", "@commitlint/cli": "^11.0.0", "@commitlint/config-angular": "^11.0.0", "@commitlint/config-conventional": "^11.0.0", "@ngrx/schematics": "^10.1.2", "@ngrx/store-devtools": "^10.1.2", - "@nrwl/cli": "11.1.1", - "@nrwl/cypress": "11.1.1", - "@nrwl/devkit": "11.0.20", - "@nrwl/eslint-plugin-nx": "11.1.1", - "@nrwl/jest": "11.1.1", - "@nrwl/node": "11.1.1", - "@nrwl/nx-cloud": "11.0.1", - "@nrwl/nx-plugin": "11.1.1", - "@nrwl/tao": "11.1.1", - "@nrwl/workspace": "11.1.1", + "@nrwl/cli": "11.2.0-rc.2", + "@nrwl/cypress": "11.2.0-rc.2", + "@nrwl/devkit": "11.2.0-rc.2", + "@nrwl/eslint-plugin-nx": "11.2.0-rc.2", + "@nrwl/jest": "11.2.0-rc.2", + "@nrwl/node": "11.2.0-rc.2", + "@nrwl/nx-cloud": "11.1.2", + "@nrwl/nx-plugin": "11.2.0-rc.2", + "@nrwl/tao": "11.2.0-rc.2", + "@nrwl/workspace": "11.2.0-rc.2", "@types/jest": "26.0.8", - "@types/luxon": "^1.25.0", - "@types/node": "12.12.38", + "@types/luxon": "^1.25.1", + "@types/node": "12.12.33", "@typescript-eslint/eslint-plugin": "4.3.0", "@typescript-eslint/parser": "4.3.0", "all-contributors-cli": "^6.19.0", @@ -89,16 +89,18 @@ "eslint-config-prettier": "6.0.0", "eslint-plugin-cypress": "^2.11.2", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsdoc": "^30.7.13", + "eslint-plugin-jsdoc": "^31.3.3", "eslint-plugin-prefer-arrow": "^1.2.2", "git-cz": "^4.7.6", - "husky": "^4.3.7", + "husky": "^4.3.8", "jest": "26.2.2", - "jest-preset-angular": "8.3.1", + "jest-preset-angular": "8.3.2", + "jest-serial-runner": "^1.1.0", "json": "^10.0.0", "lint-staged": "^10.5.3", + "ng-packagr": "~11.1.2", "prettier": "2.1.2", - "ts-jest": "26.4.0", + "ts-jest": "26.4.4", "ts-node": "~9.1.1", "typescript": "~4.0.5" }, diff --git a/packages/angular/executors.json b/packages/angular/executors.json index b9de79b..35a7ccc 100644 --- a/packages/angular/executors.json +++ b/packages/angular/executors.json @@ -1,11 +1,5 @@ { "$schema": "http://json-schema.org/schema", "generators": {}, - "executors": { - "build": { - "implementation": "./src/executors/build/executor", - "schema": "./src/executors/build/schema.json", - "description": "build executor" - } - } + "executors": {} } diff --git a/packages/angular/generators.json b/packages/angular/generators.json index f3378a8..f2794d1 100644 --- a/packages/angular/generators.json +++ b/packages/angular/generators.json @@ -3,10 +3,17 @@ "name": "angular", "version": "0.0.1", "generators": { - "angular": { - "factory": "./src/generators/angular/generator", - "schema": "./src/generators/angular/schema.json", - "description": "angular generator" + "convert-to-buildable": { + "factory": "./src/generators/convert-to-buildable/generator", + "schema": "./src/generators/convert-to-buildable/schema.json", + "aliases": ["buildable"], + "description": "Convert to buildable but non-publishable project. Supports application and workspace library projects." + }, + "use-incremental-build": { + "factory": "./src/generators/use-incremental-build/generator", + "schema": "./src/generators/use-incremental-build/schema.json", + "description": "Use incremental build executor for Angular application project.", + "aliases": ["inc-build"] } } } diff --git a/packages/angular/src/executors/build/executor.spec.ts b/packages/angular/src/executors/build/executor.spec.ts deleted file mode 100644 index 32de13c..0000000 --- a/packages/angular/src/executors/build/executor.spec.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BuildExecutorSchema } from './schema'; -import executor from './executor'; - -const options: BuildExecutorSchema = {}; - -describe('Build Executor', () => { - it('can run', async () => { - const output = await executor(options); - expect(output.success).toBe(true); - }); -}); diff --git a/packages/angular/src/executors/build/executor.ts b/packages/angular/src/executors/build/executor.ts deleted file mode 100644 index 39569a7..0000000 --- a/packages/angular/src/executors/build/executor.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { BuildExecutorSchema } from './schema'; - -export default async function runExecutor(options: BuildExecutorSchema) { - console.log('Executor ran for Build', options); - return { - success: true, - }; -} diff --git a/packages/angular/src/executors/build/schema.d.ts b/packages/angular/src/executors/build/schema.d.ts deleted file mode 100644 index f8247ab..0000000 --- a/packages/angular/src/executors/build/schema.d.ts +++ /dev/null @@ -1 +0,0 @@ -export interface BuildExecutorSchema {} // eslint-disable-line diff --git a/packages/angular/src/executors/build/schema.json b/packages/angular/src/executors/build/schema.json deleted file mode 100644 index 54d8d22..0000000 --- a/packages/angular/src/executors/build/schema.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "cli": "nx", - "title": "Build executor", - "description": "", - "type": "object", - "properties": {}, - "required": [] -} diff --git a/packages/angular/src/file-types/index.ts b/packages/angular/src/file-types/index.ts new file mode 100644 index 0000000..44252ec --- /dev/null +++ b/packages/angular/src/file-types/index.ts @@ -0,0 +1,2 @@ +export * from './package-json'; +export * from './tsconfig-base-json'; diff --git a/packages/angular/src/file-types/package-json.ts b/packages/angular/src/file-types/package-json.ts new file mode 100644 index 0000000..6011bf7 --- /dev/null +++ b/packages/angular/src/file-types/package-json.ts @@ -0,0 +1,23 @@ +/** + * package.json configuration file in workspace root directory. + */ +export interface WorkspaceRootPackageJson { + /** + * Workspace scripts. + */ + readonly scripts?: { + /** + * Script name mapped to local command. + */ + readonly [scriptName: string]: string; + }; + /** + * Package dependencies not used during runtime. + */ + readonly devDependencies?: { + /** + * Package name mapped to version range. + */ + readonly [packageName: string]: string; + }; +} diff --git a/packages/angular/src/file-types/tsconfig-base-json.ts b/packages/angular/src/file-types/tsconfig-base-json.ts new file mode 100644 index 0000000..747da08 --- /dev/null +++ b/packages/angular/src/file-types/tsconfig-base-json.ts @@ -0,0 +1,21 @@ +/** + * Path map in TypeScript configuration. Mostly used in tsconfig.base.json. + */ +export interface TsconfigPathMap { + readonly [importPath: string]: readonly string[]; +} + +/** + * tsconfig.base.json configuration file in workspace root. + */ +export interface TsconfigBaseJson { + /** + * TypeScript compiler options. + */ + readonly compilerOptions: { + /** + * Import paths also known as TypeScript path mappings. + */ + readonly paths?: TsconfigPathMap; + }; +} diff --git a/packages/angular/src/generators/angular/add-ng-packagr.ts b/packages/angular/src/generators/angular/add-ng-packagr.ts deleted file mode 100644 index 1fc31e5..0000000 --- a/packages/angular/src/generators/angular/add-ng-packagr.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { readJson, Tree } from '@nrwl/devkit'; - -export function addNgPackagr(host: Tree) { - const packageJsonPath = 'package.json'; - const currentPackageJson = readJson(host, packageJsonPath); - const isNgPackagrInstalled = - currentPackageJson.devDependencies?.['ng-packagr'] !== undefined; - - if (isNgPackagrInstalled) { - return; - } - - const modifiedPackageJson = { - ...currentPackageJson, - devDependencies: { - ...currentPackageJson.devDependencies, - 'ng-packagr': '^11.0.3', - }, - }; - - host.write(packageJsonPath, JSON.stringify(modifiedPackageJson, null, 2)); -} diff --git a/packages/angular/src/generators/angular/files/src/index.ts__template__ b/packages/angular/src/generators/angular/files/src/index.ts__template__ deleted file mode 100644 index dde3cb6..0000000 --- a/packages/angular/src/generators/angular/files/src/index.ts__template__ +++ /dev/null @@ -1 +0,0 @@ -const variable = "<%= projectName %>"; \ No newline at end of file diff --git a/packages/angular/src/generators/angular/generator.spec.ts b/packages/angular/src/generators/angular/generator.spec.ts deleted file mode 100644 index 52a8164..0000000 --- a/packages/angular/src/generators/angular/generator.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; -import { Tree, readProjectConfiguration } from '@nrwl/devkit'; - -import generator from './generator'; -import { AngularGeneratorSchema } from './schema'; - -describe('angular generator', () => { - let appTree: Tree; - const options: AngularGeneratorSchema = { name: 'test' }; - - beforeEach(() => { - appTree = createTreeWithEmptyWorkspace(); - }); - - it('should run successfully', async () => { - await generator(appTree, options); - const config = readProjectConfiguration(appTree, 'test'); - expect(config).toBeDefined(); - }); -}); diff --git a/packages/angular/src/generators/angular/generator.ts b/packages/angular/src/generators/angular/generator.ts deleted file mode 100644 index e6888c6..0000000 --- a/packages/angular/src/generators/angular/generator.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - addProjectConfiguration, - formatFiles, - generateFiles, - getWorkspaceLayout, - installPackagesTask, - names, - offsetFromRoot, - Tree, -} from '@nrwl/devkit'; -import * as path from 'path'; - -import { addNgPackagr } from './add-ng-packagr'; -import { AngularGeneratorSchema } from './schema'; - -interface NormalizedSchema extends AngularGeneratorSchema { - projectName: string; - projectRoot: string; - projectDirectory: string; - parsedTags: string[]; -} - -function normalizeOptions( - host: Tree, - options: AngularGeneratorSchema -): NormalizedSchema { - const name = names(options.name).fileName; - const projectDirectory = options.directory - ? `${names(options.directory).fileName}/${name}` - : name; - const projectName = projectDirectory.replace(new RegExp('/', 'g'), '-'); - const projectRoot = `${getWorkspaceLayout(host).libsDir}/${projectDirectory}`; - const parsedTags = options.tags - ? options.tags.split(',').map(s => s.trim()) - : []; - - return { - ...options, - projectName, - projectRoot, - projectDirectory, - parsedTags, - }; -} - -function addFiles(host: Tree, options: NormalizedSchema) { - const templateOptions = { - ...options, - ...names(options.name), - offsetFromRoot: offsetFromRoot(options.projectRoot), - template: '', - }; - generateFiles( - host, - path.join(__dirname, 'files'), - options.projectRoot, - templateOptions - ); -} - -export default async function (host: Tree, options: AngularGeneratorSchema) { - const normalizedOptions = normalizeOptions(host, options); - addProjectConfiguration(host, normalizedOptions.projectName, { - root: normalizedOptions.projectRoot, - projectType: 'library', - sourceRoot: `${normalizedOptions.projectRoot}/src`, - targets: { - build: { - executor: '@nxworker/angular:build', - }, - }, - tags: normalizedOptions.parsedTags, - }); - addFiles(host, normalizedOptions); - addNgPackagr(host); - await formatFiles(host); - - return () => { - installPackagesTask(host); - }; -} diff --git a/packages/angular/src/generators/angular/schema.d.ts b/packages/angular/src/generators/angular/schema.d.ts deleted file mode 100644 index 8df3ac3..0000000 --- a/packages/angular/src/generators/angular/schema.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface AngularGeneratorSchema { - name: string; - tags?: string; - directory?: string; -} diff --git a/packages/angular/src/generators/angular/schema.json b/packages/angular/src/generators/angular/schema.json deleted file mode 100644 index ae0f1fb..0000000 --- a/packages/angular/src/generators/angular/schema.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "cli": "nx", - "id": "Angular", - "title": "", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?" - }, - "tags": { - "type": "string", - "description": "Add tags to the project (used for linting)", - "alias": "t" - }, - "directory": { - "type": "string", - "description": "A directory where the project is placed", - "alias": "d" - } - }, - "required": ["name"] -} diff --git a/packages/angular/src/generators/convert-to-buildable/generator.spec.ts b/packages/angular/src/generators/convert-to-buildable/generator.spec.ts new file mode 100644 index 0000000..dcfb44e --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generator.spec.ts @@ -0,0 +1,97 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { + addAngularLibrary, + createProjectName, + LibraryType, +} from '@internal/test-util'; +import { + ProjectConfiguration, + readJson, + readProjectConfiguration, + TargetConfiguration, + Tree, +} from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import * as path from 'path'; + +import { WorkspaceRootPackageJson } from '../../file-types'; +import generator from './generator'; + +describe('convert-to-buildable generator', () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'feature-flight-search'; + const directory = 'booking'; + projectName = createProjectName({ + directory, + name, + }); + addAngularLibrary(host, { + directory, + name, + npmScope: 'nrwl-airlines', + type: LibraryType.WorkspaceLibrary, + }); + project = readProjectConfiguration(host, projectName); + }); + + let project: ProjectConfiguration; + let projectName: string; + let host: Tree; + + describe('Libraries', () => { + it('generates buildable library configurations when none of them exist', async () => { + const configurationFileNames = [ + 'ng-package.json', + 'package.json', + 'tsconfig.lib.prod.json', + ]; + + await generator(host, { + project: projectName, + }); + + configurationFileNames.forEach(configurationFileName => + expect( + host.exists(path.join(project.root, configurationFileName)) + ).toBe(true) + ); + }); + + it('adds ng-packagr as a development dependency when not installed', async () => { + await generator(host, { + project: projectName, + }); + + const { devDependencies = {} } = readJson( + host, + 'package.json' + ); + expect(devDependencies['ng-packagr']).toBeDefined(); + }); + + it('adds a build target', async () => { + const expectedBuildTarget: TargetConfiguration = { + executor: '@nrwl/angular:ng-packagr-lite', + options: { + tsConfig: path.join(project.root, 'tsconfig.lib.json'), + project: path.join(project.root, 'ng-package.json'), + }, + configurations: { + production: { + tsConfig: path.join(project.root, 'tsconfig.lib.prod.json'), + }, + }, + }; + + await generator(host, { + project: projectName, + }); + + const { + targets: { build: actualBuildTarget }, + } = readProjectConfiguration(host, projectName); + expect(actualBuildTarget).toEqual(expectedBuildTarget); + }); + }); +}); diff --git a/packages/angular/src/generators/convert-to-buildable/generator.ts b/packages/angular/src/generators/convert-to-buildable/generator.ts new file mode 100644 index 0000000..0561276 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generator.ts @@ -0,0 +1,26 @@ +import { formatFiles, installPackagesTask, Tree } from '@nrwl/devkit'; + +import { addLibraryBuildTarget } from './generators/add-library-build-target'; +import { addNgPackagr } from './generators/add-ng-packagr'; +import { generateBuildableLibraryConfigurations } from './generators/generate-buildable-library-configurations'; +import { ConvertToBuildableGeneratorSchema } from './schema'; +import { normalizeOptions } from './util'; + +export default async function ( + host: Tree, + schema: ConvertToBuildableGeneratorSchema +): Promise<() => void> { + const options = normalizeOptions(host, schema); + + await generateBuildableLibraryConfigurations(host, options); + addNgPackagr(host); + addLibraryBuildTarget(host, options); + + if (!options.skipFormat) { + await formatFiles(host); + } + + return () => { + installPackagesTask(host); + }; +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.spec.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.spec.ts new file mode 100644 index 0000000..cd695c7 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.spec.ts @@ -0,0 +1,63 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { + addAngularLibrary, + createProjectName, + LibraryType, +} from '@internal/test-util'; +import { + readProjectConfiguration, + TargetConfiguration, + Tree, +} from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import * as path from 'path'; + +import { NormalizedSchema, normalizeOptions } from '../../util'; +import { addLibraryBuildTarget } from './add-library-build-target'; + +describe(addLibraryBuildTarget.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'feature-seat-listing'; + const directory = 'seatmap'; + projectName = createProjectName({ + directory, + name, + }); + addAngularLibrary(host, { + directory, + name, + npmScope: 'nrwl-airlines', + type: LibraryType.WorkspaceLibrary, + }); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + let host: Tree; + let options: NormalizedSchema; + let projectName: string; + + it('adds a build target', () => { + const expectedBuildTarget: TargetConfiguration = { + executor: '@nrwl/angular:ng-packagr-lite', + options: { + tsConfig: path.join(options.projectRoot, 'tsconfig.lib.json'), + project: path.join(options.projectRoot, 'ng-package.json'), + }, + configurations: { + production: { + tsConfig: path.join(options.projectRoot, 'tsconfig.lib.prod.json'), + }, + }, + }; + + addLibraryBuildTarget(host, options); + + const { + targets: { build: actualBuildTarget }, + } = readProjectConfiguration(host, projectName); + expect(actualBuildTarget).toEqual(expectedBuildTarget); + }); +}); diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.ts new file mode 100644 index 0000000..af7c1e2 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/add-library-build-target.ts @@ -0,0 +1,70 @@ +import { + TargetConfiguration, + Tree, + updateProjectConfiguration, +} from '@nrwl/devkit'; +import * as path from 'path'; + +import { NormalizedSchema } from '../../util'; + +const incrementalBuildExecutor = '@nrwl/angular:ng-packagr-lite'; + +export function addLibraryBuildTarget( + host: Tree, + { + projectConfiguration, + projectName, + projectRoot, + projectType, + }: NormalizedSchema +): void { + const { targets: executionTargets } = projectConfiguration; + const { build: buildTarget } = executionTargets; + + if (projectType !== 'library') { + console.error( + `Project with name "${projectName}" is not a library. Skipping..."` + ); + + return; + } + + let executor: string; + + if (buildTarget) { + executor = buildTarget.executor; + + if (executor === incrementalBuildExecutor) { + console.info( + `Application with name "${projectName}" is already set up for incremental build. Skipping...` + ); + + return; + } + + console.warn( + `Library with project name "${projectName}" already has a "build" target. Overwriting..."` + ); + } + + const incrementalBuildTarget: TargetConfiguration = { + executor: incrementalBuildExecutor, + options: { + tsConfig: path.join(projectRoot, 'tsconfig.lib.json'), + project: path.join(projectRoot, 'ng-package.json'), + }, + configurations: { + production: { + tsConfig: path.join(projectRoot, 'tsconfig.lib.prod.json'), + }, + }, + }; + + updateProjectConfiguration(host, projectName, { + ...projectConfiguration, + targets: { + ...executionTargets, + build: incrementalBuildTarget, + }, + }); +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/index.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/index.ts new file mode 100644 index 0000000..286291b --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-library-build-target/index.ts @@ -0,0 +1 @@ +export * from './add-library-build-target'; diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.spec.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.spec.ts new file mode 100644 index 0000000..28d9465 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.spec.ts @@ -0,0 +1,50 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { addAngularLibrary, LibraryType } from '@internal/test-util'; +import { readJson, Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; + +import { WorkspaceRootPackageJson } from '../../../../file-types'; +import { addNgPackagr } from './add-ng-packagr'; + +describe(addNgPackagr.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'ui-buttons'; + const directory = 'shared'; + addAngularLibrary(host, { + directory, + name, + npmScope: 'nrwl-airlines', + type: LibraryType.WorkspaceLibrary, + }); + }); + + let host: Tree; + + it('installs ng-packagr when not installed', async () => { + await addNgPackagr(host); + + const { devDependencies = {} } = readJson( + host, + 'package.json' + ); + expect(devDependencies['ng-packagr']).toMatch(/\^\d+\.\d+\.\d+/); + }); + + it('leaves ng-packagr version intact when already installed', async () => { + const packageJson: WorkspaceRootPackageJson = { + devDependencies: { + ['ng-packagr']: '13.37.0', + }, + }; + host.write('package.json', JSON.stringify(packageJson)); + + await addNgPackagr(host); + + const { devDependencies = {} } = readJson( + host, + 'package.json' + ); + expect(devDependencies['ng-packagr']).toBe('13.37.0'); + }); +}); diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.ts new file mode 100644 index 0000000..0ad76d2 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/add-ng-packagr.ts @@ -0,0 +1,27 @@ +import { readJson, Tree } from '@nrwl/devkit'; + +import { WorkspaceRootPackageJson } from '../../../../file-types'; + +export function addNgPackagr(host: Tree) { + const packageJsonPath = 'package.json'; + const currentPackageJson: WorkspaceRootPackageJson = readJson( + host, + packageJsonPath + ); + const { devDependencies = {} } = currentPackageJson; + const isNgPackagrInstalled = devDependencies['ng-packagr'] !== undefined; + + if (isNgPackagrInstalled) { + return; + } + + const modifiedPackageJson: WorkspaceRootPackageJson = { + ...currentPackageJson, + devDependencies: { + ...devDependencies, + 'ng-packagr': '^11.0.3', + }, + }; + + host.write(packageJsonPath, JSON.stringify(modifiedPackageJson, null, 2)); +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/index.ts b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/index.ts new file mode 100644 index 0000000..939f223 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/add-ng-packagr/index.ts @@ -0,0 +1 @@ +export * from './add-ng-packagr'; diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/file-template-replacements.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/file-template-replacements.ts new file mode 100644 index 0000000..54cc080 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/file-template-replacements.ts @@ -0,0 +1,24 @@ +export interface FileTemplateReplacements { + /** + * Whether the production build is compiled with Ivy. This speeds up + * incremental build. + */ + readonly enableIvy: boolean; + /** + * Library import path, for example `@nrwl-airlines/booking/data-access`. + */ + readonly importPath: string; + /** + * Project directory offset from root workspace directory, for example: `'../../'`. + */ + readonly offsetFromRoot: string; + /** + * Project root directory. + */ + readonly projectRoot: string; + /** + * Template files have the `__template__` suffix which will be removed when + * this is set. + */ + readonly template: ''; +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/index.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/index.ts new file mode 100644 index 0000000..fb57653 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/index.ts @@ -0,0 +1,4 @@ +export * from './file-template-replacements'; +export * from './ng-package-json'; +export * from './package-json'; +export * from './tsconfig-lib-prod-json'; diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/ng-package-json.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/ng-package-json.ts new file mode 100644 index 0000000..eb57adc --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/ng-package-json.ts @@ -0,0 +1,27 @@ +/** + * ng-package.json configuration file in buildable library root directory. Used + * by ng-packagr for publishable libraries and ng-packagr-lite for buildable + * libraries. + */ +export interface NgPackageJson { + /** + * Relative path referring to the + * node_modules/ng-packagr/ng-packagr.schema.json JSON schema file. + */ + readonly $schema: string; + /** + * Relative path referring to the project output path, for example + * `../../../dist/libs/booking/data-access`. + */ + readonly dest: string; + /** + * Library configuration. + */ + readonly lib: { + /** + * Absolute projet path referring to the public API file, for example + * `src/index.ts`. + */ + readonly entryFile: string; + }; +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/package-json.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/package-json.ts new file mode 100644 index 0000000..c22750b --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/package-json.ts @@ -0,0 +1,13 @@ +/** + * package.json configuration file in buildable library root directory. + */ +export interface BuildableLibraryPackageJson { + /** + * Import path of the buildable library. + */ + readonly name: string; + /** + * Set to `true` to prevent accidental publishing to a package registry. + */ + readonly private: boolean; +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/tsconfig-lib-prod-json.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/tsconfig-lib-prod-json.ts new file mode 100644 index 0000000..6188bcc --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/file-types/tsconfig-lib-prod-json.ts @@ -0,0 +1,37 @@ +/** + * Angular compiler options in a TypeScript configuration file + * (tsconfig[.*].json). + */ +export interface AngularCompilerOptions { + /** + * `true` uses the Angular Ivy compiler. `false` uses the Angular View Engine + * compiler. + */ + readonly enableIvy?: boolean; +} + +/** + * tsconfig.lib.prod.json configuration file in project root folder. Used for + * `production` configuration to the `build` target of a buildable library. + */ +export interface TsconfigLibProdJson { + /** + * References tsconfig.lib.json in the same directory. + */ + readonly extends: string; + /** + * TypeScript compiler options. + */ + readonly compilerOptions: { + /** + * When set to `true` while the `declaration` option is enabled, a + * `d.ts.map` source map is also output. Set to `false` in production builds + * for faster compilation. + */ + readonly declarationMap: boolean; + }; + /** + * Angular compiler options. + */ + readonly angularCompilerOptions: AngularCompilerOptions; +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/ng-package.json__template__ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/ng-package.json__template__ new file mode 100644 index 0000000..291387c --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/ng-package.json__template__ @@ -0,0 +1,7 @@ +{ + "$schema": "<%= offsetFromRoot %>node_modules/ng-packagr/ng-package.schema.json", + "dest": "<%= offsetFromRoot %>dist/<%= projectRoot %>", + "lib": { + "entryFile": "src/index.ts" + } +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/package.json__template__ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/package.json__template__ new file mode 100644 index 0000000..bf5092e --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/package.json__template__ @@ -0,0 +1,4 @@ +{ + "name": "<%= importPath %>", + "private": true +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/tsconfig.lib.prod.json__template__ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/tsconfig.lib.prod.json__template__ new file mode 100644 index 0000000..57f1032 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/files/tsconfig.lib.prod.json__template__ @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": { + <% if (enableIvy) { %> + "enableIvy": true + <% } %> + } +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.spec.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.spec.ts new file mode 100644 index 0000000..f055143 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.spec.ts @@ -0,0 +1,209 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { + addAngularLibrary, + createProjectName, + LibraryType, +} from '@internal/test-util'; +import { readJson, Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import * as path from 'path'; + +import { TsconfigBaseJson } from '../../../../file-types'; +import { NormalizedSchema, normalizeOptions } from '../../util'; +import { + AngularCompilerOptions, + BuildableLibraryPackageJson, + NgPackageJson, + TsconfigLibProdJson, +} from './file-types'; +import { generateBuildableLibraryConfigurations } from './generate-buildable-library-configurations'; + +describe(generateBuildableLibraryConfigurations.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'ui-buttons'; + const directory = 'shared'; + projectName = createProjectName({ + directory, + name, + }); + addAngularLibrary(host, { + directory, + name, + npmScope: 'nrwl-airlines', + type: LibraryType.WorkspaceLibrary, + }); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + let host: Tree; + let options: NormalizedSchema; + let projectName: string; + + describe('Package configurations', () => { + it('generates ng-package.json', async () => { + const filePath = path.join(options.projectRoot, 'ng-package.json'); + const expectedNgPackageJson: NgPackageJson = { + $schema: '../../../node_modules/ng-packagr/ng-package.schema.json', + dest: `../../../dist/${options.projectRoot}`, + lib: { + entryFile: 'src/index.ts', + }, + }; + + await generateBuildableLibraryConfigurations(host, options); + + expect(host.exists(filePath)).toBe(true); + const actualNgPackageJson: NgPackageJson = readJson(host, filePath); + expect(actualNgPackageJson).toEqual(expectedNgPackageJson); + }); + + it('generates package.json', async () => { + const filePath = path.join(options.projectRoot, 'package.json'); + const expectedPackageJson: BuildableLibraryPackageJson = { + name: options.importPath, + private: true, + }; + + await generateBuildableLibraryConfigurations(host, options); + + expect(host.exists(filePath)).toBe(true); + const actualPackageJson: BuildableLibraryPackageJson = readJson( + host, + filePath + ); + expect(actualPackageJson).toEqual(expectedPackageJson); + }); + + it('generates tsconfig.lib.prod.json', async () => { + const filePath = path.join(options.projectRoot, 'tsconfig.lib.prod.json'); + const expectedTsconfig: TsconfigLibProdJson = { + extends: './tsconfig.lib.json', + compilerOptions: { + declarationMap: false, + }, + angularCompilerOptions: { + enableIvy: true, + }, + }; + + await generateBuildableLibraryConfigurations(host, options); + + expect(host.exists(filePath)).toBe(true); + const actualTsconfig: TsconfigLibProdJson = readJson(host, filePath); + expect(actualTsconfig).toEqual(expectedTsconfig); + }); + + it('keeps package configurations when they all exist', async () => { + const testConfiguration = { test: true }; + const ngPackageJsonPath = path.join( + options.projectRoot, + 'ng-package.json' + ); + const packageJsonPath = path.join(options.projectRoot, 'package.json'); + const productionTsconfigPath = path.join( + options.projectRoot, + 'tsconfig.lib.prod.json' + ); + host.write(ngPackageJsonPath, JSON.stringify(testConfiguration)); + host.write(packageJsonPath, JSON.stringify(testConfiguration)); + host.write(productionTsconfigPath, JSON.stringify(testConfiguration)); + + await generateBuildableLibraryConfigurations(host, options); + + const ngPackageJson = readJson(host, ngPackageJsonPath); + const packageJson = readJson(host, packageJsonPath); + const productionTsconfig = readJson(host, productionTsconfigPath); + expect(ngPackageJson).toEqual(testConfiguration); + expect(packageJson).toEqual(testConfiguration); + expect(productionTsconfig).toEqual(testConfiguration); + }); + + it('overwrites package configurations when only some of them exist', async () => { + const testConfiguration = { test: true }; + const ngPackageJsonPath = path.join( + options.projectRoot, + 'ng-package.json' + ); + const packageJsonPath = path.join(options.projectRoot, 'package.json'); + host.write(ngPackageJsonPath, JSON.stringify(testConfiguration)); + host.write(packageJsonPath, JSON.stringify(testConfiguration)); + + await generateBuildableLibraryConfigurations(host, options); + + const ngPackageJson = readJson(host, ngPackageJsonPath); + const packageJson = readJson(host, packageJsonPath); + expect(ngPackageJson).not.toEqual(testConfiguration); + expect(packageJson).not.toEqual(testConfiguration); + }); + }); + + describe('enableIvy option', () => { + beforeEach(() => { + filePath = path.join(options.projectRoot, 'tsconfig.lib.prod.json'); + }); + + let filePath: string; + + it('sets the enableIvy option to true when true is passed', async () => { + options = { + ...options, + enableIvy: true, + }; + const expectedAngularCompilerOptions: AngularCompilerOptions = { + enableIvy: true, + }; + + await generateBuildableLibraryConfigurations(host, options); + + const actualTsconfig: TsconfigLibProdJson = readJson(host, filePath); + expect(actualTsconfig.angularCompilerOptions).toEqual( + expectedAngularCompilerOptions + ); + }); + + it('omits the enableIvy option when false is passed', async () => { + options = { + ...options, + enableIvy: false, + }; + const expectedAngularCompilerOptions: AngularCompilerOptions = {}; + + await generateBuildableLibraryConfigurations(host, options); + + const actualTsconfig: TsconfigLibProdJson = readJson(host, filePath); + expect(actualTsconfig.angularCompilerOptions).toEqual( + expectedAngularCompilerOptions + ); + }); + }); + + describe('Errors', () => { + const tsconfigBaseFilePath = 'tsconfig.base.json'; + + it('throws an error if tsconfig.base.json is missing', async () => { + host.delete(tsconfigBaseFilePath); + + const act = () => generateBuildableLibraryConfigurations(host, options); + + await expect(act).rejects.toThrowError( + `Cannot find ${tsconfigBaseFilePath}` + ); + }); + + it('throws an error if import path is missing', async () => { + const noPathMap: TsconfigBaseJson = { + compilerOptions: {}, + }; + host.write(tsconfigBaseFilePath, JSON.stringify(noPathMap)); + + const act = () => generateBuildableLibraryConfigurations(host, options); + + await expect(act).rejects.toThrowError( + `Import path is missing for project with name "${projectName}"` + ); + }); + }); +}); diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.ts new file mode 100644 index 0000000..c5bf0af --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/generate-buildable-library-configurations.ts @@ -0,0 +1,37 @@ +import { generateFiles, Tree } from '@nrwl/devkit'; +import * as path from 'path'; + +import { NormalizedSchema, readImportPathOrThrow } from '../../util'; +import { FileTemplateReplacements } from './file-types'; +import { hasPackageConfigurations } from './util/has-package-configurations'; + +export async function generateBuildableLibraryConfigurations( + host: Tree, + { + enableIvy, + offsetFromRoot, + projectName, + projectRoot, + sourceRoot, + }: NormalizedSchema +): Promise { + const replacements: FileTemplateReplacements = { + enableIvy, + importPath: readImportPathOrThrow(host, { + projectName, + sourceRoot, + }), + offsetFromRoot, + projectRoot, + template: '', + }; + + if (!hasPackageConfigurations(host, projectRoot)) { + generateFiles( + host, + path.join(__dirname, 'files'), + projectRoot, + replacements + ); + } +} diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/index.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/index.ts new file mode 100644 index 0000000..02e08dd --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/index.ts @@ -0,0 +1 @@ +export * from './generate-buildable-library-configurations'; diff --git a/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/util/has-package-configurations.ts b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/util/has-package-configurations.ts new file mode 100644 index 0000000..aae4bc1 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/generators/generate-buildable-library-configurations/util/has-package-configurations.ts @@ -0,0 +1,21 @@ +import { Tree } from '@nrwl/devkit'; +import * as path from 'path'; + +export function hasPackageConfigurations( + host: Tree, + projectRoot: string +): boolean { + if (!host.exists(path.join(projectRoot, 'ng-package.json'))) { + return false; + } + + if (!host.exists(path.join(projectRoot, 'package.json'))) { + return false; + } + + if (!host.exists(path.join(projectRoot, 'tsconfig.lib.prod.json'))) { + return false; + } + + return true; +} diff --git a/packages/angular/src/generators/convert-to-buildable/schema.d.ts b/packages/angular/src/generators/convert-to-buildable/schema.d.ts new file mode 100644 index 0000000..dd9aad8 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/schema.d.ts @@ -0,0 +1,14 @@ +export interface ConvertToBuildableGeneratorSchema { + /** + * Enable incremental Angular Ivy compilation? + */ + readonly enableIvy?: boolean; + /** + * The name of the project. + */ + readonly project: string; + /** + * Skip formatting files? + */ + readonly skipFormat?: boolean; +} diff --git a/packages/angular/src/generators/convert-to-buildable/schema.json b/packages/angular/src/generators/convert-to-buildable/schema.json new file mode 100644 index 0000000..5798dbe --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "id": "ConvertToBuildable", + "title": "Convert to buildable but non-publishable project. Supports application and workspace library projects.", + "type": "object", + "properties": { + "enableIvy": { + "type": "boolean", + "description": "Enable incremental Angular Ivy compilation? (default: true)", + "alias": "i", + "default": true + }, + "project": { + "type": "string", + "description": "The name of the project", + "$default": { + "$source": "argv", + "index": 0 + } + }, + "skipFormat": { + "type": "boolean", + "description": "Skip formatting files? (default: false)", + "default": false + } + }, + "required": ["project"] +} diff --git a/packages/angular/src/generators/convert-to-buildable/util/index.ts b/packages/angular/src/generators/convert-to-buildable/util/index.ts new file mode 100644 index 0000000..5c49195 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/util/index.ts @@ -0,0 +1,3 @@ +export * from './normalize-options'; +export * from './normalized-schema'; +export * from './read-import-path-or-throw'; diff --git a/packages/angular/src/generators/convert-to-buildable/util/normalize-options.ts b/packages/angular/src/generators/convert-to-buildable/util/normalize-options.ts new file mode 100644 index 0000000..8e55c0a --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/util/normalize-options.ts @@ -0,0 +1,40 @@ +import { offsetFromRoot, readProjectConfiguration, Tree } from '@nrwl/devkit'; + +import { ConvertToBuildableGeneratorSchema } from '../schema'; +import { NormalizedSchema } from './normalized-schema'; +import { readImportPathOrThrow } from './read-import-path-or-throw'; + +export function normalizeOptions( + host: Tree, + { + enableIvy = true, + project: projectName, + skipFormat = false, + }: ConvertToBuildableGeneratorSchema +): NormalizedSchema { + const projectConfiguration = readProjectConfiguration(host, projectName); + const { + projectType, + root: projectRoot, + sourceRoot = `${projectRoot}/src`, + } = projectConfiguration; + + if (projectType !== 'library') { + throw new Error(`Project with name "${projectName}" is not a library.`); + } + + return { + enableIvy, + importPath: readImportPathOrThrow(host, { + projectName, + sourceRoot, + }), + offsetFromRoot: offsetFromRoot(projectRoot), + projectConfiguration, + projectName, + projectRoot, + projectType, + skipFormat, + sourceRoot, + }; +} diff --git a/packages/angular/src/generators/convert-to-buildable/util/normalized-schema.ts b/packages/angular/src/generators/convert-to-buildable/util/normalized-schema.ts new file mode 100644 index 0000000..1d7c3b9 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/util/normalized-schema.ts @@ -0,0 +1,44 @@ +import { ProjectConfiguration } from '@nrwl/devkit'; + +import { ConvertToBuildableGeneratorSchema } from '../schema'; + +export interface NormalizedSchema + extends Omit { + /** + * Enable incremental Angular Ivy compilation? + */ + readonly enableIvy: boolean; + /** + * Library import path, for example `@nrwl-airlines/booking/data-access`. + */ + readonly importPath: string; + /** + * Project directory offset from root workspace directory, for example + * `'../../'`. + */ + readonly offsetFromRoot: string; + /** + * The full configuration of the project. + */ + readonly projectConfiguration: ProjectConfiguration; + /** + * The name of the project. + */ + readonly projectName: string; + /** + * Project root directory, for example `libs/shared/util-formatting`. + */ + readonly projectRoot: string; + /** + * The type of the project. + */ + readonly projectType: 'application' | 'library'; + /** + * Skip formatting files? + */ + readonly skipFormat: boolean; + /** + * Project source directory, for example `libs/shared/util-formatting/src`. + */ + readonly sourceRoot: string; +} diff --git a/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.spec.ts b/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.spec.ts new file mode 100644 index 0000000..9f9271f --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.spec.ts @@ -0,0 +1,53 @@ +import { Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; + +import { TsconfigBaseJson } from '../../../file-types'; +import { readImportPathOrThrow } from './read-import-path-or-throw'; + +describe(readImportPathOrThrow.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + }); + + let host: Tree; + const projectName = 'shared-ui-buttons'; + const sourceRoot = 'libs/shared/ui-buttons'; + + it('reads import path when defined in path map', () => { + const expectedImportPath = '@nrwl-airlines/shared/ui-buttons'; + const tsconfigBase: TsconfigBaseJson = { + compilerOptions: { + paths: { + [expectedImportPath]: [`${sourceRoot}/index.ts`], + }, + }, + }; + host.write('tsconfig.base.json', JSON.stringify(tsconfigBase)); + + const actualImportPath = readImportPathOrThrow(host, { + projectName, + sourceRoot, + }); + + expect(actualImportPath).toBe(expectedImportPath); + }); + + it('throws an error when import path is undefined in path map', () => { + const noPathMap: TsconfigBaseJson = { + compilerOptions: { + paths: {}, + }, + }; + host.write('tsconfig.base.json', JSON.stringify(noPathMap)); + + const act = () => + readImportPathOrThrow(host, { + projectName, + sourceRoot, + }); + + expect(act).toThrowError( + `Import path is missing for project with name "${projectName}"` + ); + }); +}); diff --git a/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.ts b/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.ts new file mode 100644 index 0000000..2b198b4 --- /dev/null +++ b/packages/angular/src/generators/convert-to-buildable/util/read-import-path-or-throw.ts @@ -0,0 +1,88 @@ +import { readJson, Tree } from '@nrwl/devkit'; +import * as path from 'path'; + +import { TsconfigBaseJson, TsconfigPathMap } from '../../../file-types'; + +export interface ReadImportPathProjectOptions { + readonly projectName: string; + readonly sourceRoot: string; +} + +/** + * Find the import path having an entry under the specified source root + * directory. + * @throws {Error} Throws an error if `tsconfig.base.json` is missing from the + * workspace root or if import path for the specified project is missing from + * tsconfig.base.json. + */ +function findPathEntryOrThrow( + { projectName, sourceRoot }: ReadImportPathProjectOptions, + pathMap: TsconfigPathMap +): string { + const maybePathEntry = Object.entries(pathMap).find(([, publicApis]) => + publicApis.some(publicApi => publicApi.startsWith(sourceRoot)) + ); + + if (!maybePathEntry) { + throw new Error( + `Import path is missing for project with name "${projectName}".` + ); + } + + const [importPath] = maybePathEntry; + + return importPath; +} + +/** + * Normalize the source paths of the specified path map according to operating + * system. + */ +function normalizePathMap(pathMap: TsconfigPathMap): TsconfigPathMap { + return Object.entries(pathMap) + .map(([importPath, sourcePaths]): [string, readonly string[]] => [ + importPath, + sourcePaths.map(sourcePath => path.normalize(sourcePath)), + ]) + .reduce( + (normalizePathMap, [importPath, sourcePaths]) => ({ + ...normalizePathMap, + [importPath]: sourcePaths, + }), + {} + ); +} + +/** + * Get the import path of the specified project. + * + * @param host Virtual workspace tree. Must have tsconfig.base.json in the + * workspace root directory. + * @param options Project options. + * @param options.projectName The name of the project. + * @param options.projectRoot The root directory of the project. + * @throws {Error} Throws an error if `tsconfig.base.json` is missing from the + * workspace root or if import path for the specified project is missing from + * tsconfig.base.json. + */ +export function readImportPathOrThrow( + host: Tree, + { projectName, sourceRoot }: ReadImportPathProjectOptions +): string { + sourceRoot = path.normalize(sourceRoot); + const tsconfigBaseJson = readJson( + host, + 'tsconfig.base.json' + ); + const pathMap = normalizePathMap( + tsconfigBaseJson.compilerOptions.paths ?? {} + ); + + return findPathEntryOrThrow( + { + projectName, + sourceRoot, + }, + pathMap + ); +} diff --git a/packages/angular/src/generators/use-incremental-build/generator.spec.ts b/packages/angular/src/generators/use-incremental-build/generator.spec.ts new file mode 100644 index 0000000..fce68a7 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generator.spec.ts @@ -0,0 +1,40 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { addAngularApplication, createProjectName } from '@internal/test-util'; +import { readProjectConfiguration, Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; + +import generator from './generator'; + +describe('convert-to-buildable generator', () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'desktop-app'; + const directory = 'booking'; + projectName = createProjectName({ + directory, + name, + }); + addAngularApplication(host, { + directory, + name, + }); + }); + + let projectName: string; + let host: Tree; + + it('uses the incremental build executor', async () => { + const expectedBuildExecutor = '@nrwl/angular:webpack-browser'; + + await generator(host, { + project: projectName, + }); + + const { + targets: { + build: { executor: actualBuildExecutor }, + }, + } = readProjectConfiguration(host, projectName); + expect(actualBuildExecutor).toEqual(expectedBuildExecutor); + }); +}); diff --git a/packages/angular/src/generators/use-incremental-build/generator.ts b/packages/angular/src/generators/use-incremental-build/generator.ts new file mode 100644 index 0000000..668dfa9 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generator.ts @@ -0,0 +1,20 @@ +import { formatFiles, Tree } from '@nrwl/devkit'; + +import { updateApplicationBuildTarget } from './generators/update-application-build-target'; +import { updateBuildScripts } from './generators/update-build-scripts'; +import { UseIncrementalBuildGeneratorSchema } from './schema'; +import { normalizeOptions } from './util'; + +export default async function ( + host: Tree, + schema: UseIncrementalBuildGeneratorSchema +): Promise { + const options = normalizeOptions(host, schema); + + updateApplicationBuildTarget(host, options); + updateBuildScripts(host); + + if (!options.skipFormat) { + await formatFiles(host); + } +} diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/executors.ts b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/executors.ts new file mode 100644 index 0000000..9a30287 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/executors.ts @@ -0,0 +1,3 @@ +export const defaultAngularBuildExecutor = + '@angular-devkit/build-angular:browser'; +export const incrementalBuildExecutor = '@nrwl/angular:webpack-browser'; diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/index.ts b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/index.ts new file mode 100644 index 0000000..adfe1ab --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/index.ts @@ -0,0 +1 @@ +export * from './update-application-build-target'; diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.spec.ts b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.spec.ts new file mode 100644 index 0000000..229b231 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.spec.ts @@ -0,0 +1,137 @@ +// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries +import { addAngularApplication, createProjectName } from '@internal/test-util'; +import { readProjectConfiguration, TargetConfiguration, Tree, updateProjectConfiguration } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; + +import { NormalizedSchema, normalizeOptions } from '../../util'; +import { incrementalBuildExecutor } from './executors'; +import { updateApplicationBuildTarget } from './update-application-build-target'; + +function readBuildTarget( + host: Tree, + projectName: string +): TargetConfiguration | undefined { + return readProjectConfiguration(host, projectName).targets.build; +} + +function removeBuildTarget(host: Tree, projectName: string): void { + const project = readProjectConfiguration(host, projectName); + + delete project.targets.build; + + updateProjectConfiguration(host, projectName, project); +} + +function useBuildExecutor( + executor: string, + host: Tree, + projectName: string +): void { + const project = readProjectConfiguration(host, projectName); + + project.targets.build = { + executor: incrementalBuildExecutor, + }; + + updateProjectConfiguration(host, projectName, project); +} + +describe(updateApplicationBuildTarget.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + const name = 'feature-seat-listing'; + const directory = 'seatmap'; + projectName = createProjectName({ + directory, + name, + }); + addAngularApplication(host, { + directory, + name, + }); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + let host: Tree; + let options: NormalizedSchema; + let projectName: string; + + it('configures the incremental build executor when the application configuration is valid', () => { + const initialBuildTarget = readBuildTarget(host, projectName); + const expectedBuildTarget: TargetConfiguration = { + ...initialBuildTarget, + executor: '@nrwl/angular:webpack-browser', + }; + + updateApplicationBuildTarget(host, options); + + const actualBuildTarget = readBuildTarget(host, projectName); + expect(actualBuildTarget).toEqual(expectedBuildTarget); + }); + + describe('when the application configuration has no build target', () => { + beforeEach(() => { + removeBuildTarget(host, projectName); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + it('does not add a build target', () => { + updateApplicationBuildTarget(host, options); + + const actualBuildTarget = readBuildTarget(host, projectName); + expect(actualBuildTarget).toBeUndefined(); + }); + + it('outputs a warning', () => { + const warnSpy = spyOn(console, 'warn'); + + updateApplicationBuildTarget(host, options); + + expect(warnSpy).toHaveBeenCalledTimes(1); + const warnMessage = warnSpy.calls.mostRecent().args[0]; + expect(warnMessage).toContain('Skipping...'); + }); + }); + + describe('when the application uses incremental build', () => { + beforeEach(() => { + useBuildExecutor(incrementalBuildExecutor, host, projectName); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + it('outputs an info message', () => { + const infoSpy = spyOn(console, 'info'); + + updateApplicationBuildTarget(host, options); + + expect(infoSpy).toHaveBeenCalledTimes(1); + const infoMessage = infoSpy.calls.mostRecent().args[0]; + expect(infoMessage).toContain('Skipping...'); + }); + }); + + describe('when the application uses an unknown build executor', () => { + beforeEach(() => { + useBuildExecutor('@test/executor:run', host, projectName); + options = normalizeOptions(host, { + project: projectName, + }); + }); + + it('outputs an error message', () => { + const infoSpy = spyOn(console, 'info'); + + updateApplicationBuildTarget(host, options); + + expect(infoSpy).toHaveBeenCalledTimes(1); + const infoMessage = infoSpy.calls.mostRecent().args[0]; + expect(infoMessage).toContain('Skipping...'); + }); + }); +}); diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.ts b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.ts new file mode 100644 index 0000000..bff9d7a --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-application-build-target/update-application-build-target.ts @@ -0,0 +1,57 @@ +import { TargetConfiguration, Tree, updateProjectConfiguration } from '@nrwl/devkit'; + +import { NormalizedSchema } from '../../util'; +import { defaultAngularBuildExecutor, incrementalBuildExecutor } from './executors'; + +export function updateApplicationBuildTarget( + host: Tree, + { projectConfiguration, projectName }: NormalizedSchema +): void { + const { targets } = projectConfiguration; + const { build: buildTarget } = targets; + + if (!buildTarget) { + console.warn( + `Application with project name "${projectName}" does not has an existing "build" target. Skipping..."` + ); + + return; + } + + const { executor } = buildTarget; + + if (executor === incrementalBuildExecutor) { + console.info( + `Application with name "${projectName}" is already set up for incremental build. Skipping...` + ); + + return; + } + + if (executor !== defaultAngularBuildExecutor) { + console.error( + `Unexpected builder/executor "${executor}" for "build" target of project with name "${projectName}". Skipping..."` + ); + + return; + } + + const incrementalBuildTarget: TargetConfiguration = { + ...buildTarget, + executor: incrementalBuildExecutor, + options: { + ...(buildTarget.options ?? {}), + // guarded by schema, see https://github.com/nrwl/nx/pull/4548 + // parallel: true, + // withDeps: true, + }, + }; + + updateProjectConfiguration(host, projectName, { + ...projectConfiguration, + targets: { + ...targets, + build: incrementalBuildTarget, + }, + }); +} diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/index.ts b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/index.ts new file mode 100644 index 0000000..ea3a515 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/index.ts @@ -0,0 +1 @@ +export * from './update-build-scripts'; diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.spec.ts b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.spec.ts new file mode 100644 index 0000000..a690dcf --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.spec.ts @@ -0,0 +1,38 @@ +import { readJson, Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import { WorkspaceRootPackageJson } from 'packages/angular/src/file-types'; + +import { updateBuildScripts } from './update-build-scripts'; + +function readScript(scriptName: string, host: Tree): string { + const { scripts = {} } = readJson( + host, + 'package.json' + ); + + return scripts[scriptName]; +} + +describe(updateBuildScripts.name, () => { + beforeEach(() => { + host = createTreeWithEmptyWorkspace(); + }); + + let host: Tree; + + it('adds incremental build parameters to the affected:build script', () => { + updateBuildScripts(host); + + const affectedBuildScript = readScript('affected:build', host); + expect(affectedBuildScript).toBe( + 'nx affected:build --with-deps --parallel' + ); + }); + + it('adds incremental build parameters to the build script', () => { + updateBuildScripts(host); + + const affectedBuildScript = readScript('build', host); + expect(affectedBuildScript).toBe('nx build --with-deps --parallel'); + }); +}); diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.ts b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.ts new file mode 100644 index 0000000..a134f3d --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/update-build-scripts.ts @@ -0,0 +1,26 @@ +import { Tree } from '@nrwl/devkit'; + +import { WorkspaceRootPackageJson } from '../../../../file-types'; +import { writeJson } from './util/write-json'; + +export function updateBuildScripts(host: Tree): void { + const incrementalBuildCommand = 'nx build --with-deps --parallel'; + const affectedIncrementalBuildCommand = + 'nx affected:build --with-deps --parallel'; + writeJson(host, 'package.json', packageJson => ({ + ...packageJson, + scripts: { + ...packageJson.scripts, + 'affected:build': + packageJson.scripts?.['affected:build']?.replace( + /nx affected:build/g, + affectedIncrementalBuildCommand + ) ?? affectedIncrementalBuildCommand, + build: + packageJson.scripts?.build?.replace( + /nx build/g, + incrementalBuildCommand + ) ?? incrementalBuildCommand, + }, + })); +} diff --git a/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/util/write-json.ts b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/util/write-json.ts new file mode 100644 index 0000000..88e3485 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/generators/update-build-scripts/util/write-json.ts @@ -0,0 +1,10 @@ +import { readJson, Tree } from '@nrwl/devkit'; + +export function writeJson( + host: Tree, + file: string, + mapper: (json: TJson) => TJson +): void { + const json = readJson(host, file); + host.write(file, JSON.stringify(mapper(json), null, 2)); +} diff --git a/packages/angular/src/generators/use-incremental-build/schema.d.ts b/packages/angular/src/generators/use-incremental-build/schema.d.ts new file mode 100644 index 0000000..840c6e3 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/schema.d.ts @@ -0,0 +1,10 @@ +export interface UseIncrementalBuildGeneratorSchema { + /** + * The name of the project. + */ + readonly project: string; + /** + * Skip formatting files? + */ + readonly skipFormat?: boolean; +} diff --git a/packages/angular/src/generators/use-incremental-build/schema.json b/packages/angular/src/generators/use-incremental-build/schema.json new file mode 100644 index 0000000..b854ae9 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/schema.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "id": "UseIncrementalBuild", + "title": "", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The name of the project", + "$default": { + "$source": "argv", + "index": 0 + } + }, + "skipFormat": { + "type": "boolean", + "description": "Skip formatting files? (default: false)", + "default": false + } + }, + "required": ["project"] +} diff --git a/packages/angular/src/generators/use-incremental-build/util/index.ts b/packages/angular/src/generators/use-incremental-build/util/index.ts new file mode 100644 index 0000000..6b2c090 --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/util/index.ts @@ -0,0 +1,2 @@ +export * from './normalize-options'; +export * from './normalized-schema'; diff --git a/packages/angular/src/generators/use-incremental-build/util/normalize-options.ts b/packages/angular/src/generators/use-incremental-build/util/normalize-options.ts new file mode 100644 index 0000000..2d4f4da --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/util/normalize-options.ts @@ -0,0 +1,26 @@ +import { readProjectConfiguration, Tree } from '@nrwl/devkit'; + +import { UseIncrementalBuildGeneratorSchema } from '../schema'; +import { NormalizedSchema } from './normalized-schema'; + +export function normalizeOptions( + host: Tree, + { + project: projectName, + skipFormat = false, + }: UseIncrementalBuildGeneratorSchema +): NormalizedSchema { + const projectConfiguration = readProjectConfiguration(host, projectName); + + if (projectConfiguration.projectType !== 'application') { + throw new Error( + `Project with name "${projectName}" is not an application.` + ); + } + + return { + projectConfiguration, + projectName, + skipFormat, + }; +} diff --git a/packages/angular/src/generators/use-incremental-build/util/normalized-schema.ts b/packages/angular/src/generators/use-incremental-build/util/normalized-schema.ts new file mode 100644 index 0000000..7b1562e --- /dev/null +++ b/packages/angular/src/generators/use-incremental-build/util/normalized-schema.ts @@ -0,0 +1,19 @@ +import { ProjectConfiguration } from '@nrwl/devkit'; + +import { UseIncrementalBuildGeneratorSchema } from '../schema'; + +export interface NormalizedSchema + extends Omit { + /** + * The full configuration of the project. + */ + readonly projectConfiguration: ProjectConfiguration; + /** + * The name of the project. + */ + readonly projectName: string; + /** + * Skip formatting files? + */ + readonly skipFormat: boolean; +} diff --git a/packages/internal/e2e-util/.eslintrc.json b/packages/internal/e2e-util/.eslintrc.json new file mode 100644 index 0000000..0c9b27c --- /dev/null +++ b/packages/internal/e2e-util/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../.eslintrc.json", + "ignorePatterns": ["!**/*"], + "rules": {} +} diff --git a/packages/internal/e2e-util/README.md b/packages/internal/e2e-util/README.md new file mode 100644 index 0000000..12e38d9 --- /dev/null +++ b/packages/internal/e2e-util/README.md @@ -0,0 +1,7 @@ +# internal-e2e-util + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test internal-e2e-util` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/internal/e2e-util/jest.config.js b/packages/internal/e2e-util/jest.config.js new file mode 100644 index 0000000..66f9e30 --- /dev/null +++ b/packages/internal/e2e-util/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + displayName: 'internal-e2e-util', + preset: '../../../jest.preset.js', + globals: { + 'ts-jest': { + tsConfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]sx?$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../../coverage/packages/internal/e2e-util', +}; diff --git a/packages/internal/e2e-util/src/index.ts b/packages/internal/e2e-util/src/index.ts new file mode 100644 index 0000000..07ffdd5 --- /dev/null +++ b/packages/internal/e2e-util/src/index.ts @@ -0,0 +1,3 @@ +export * from './lib/add-packages'; +export * from './lib/update-json-file'; +export * from './lib/use-default-base-branch'; diff --git a/packages/internal/e2e-util/src/lib/add-packages.ts b/packages/internal/e2e-util/src/lib/add-packages.ts new file mode 100644 index 0000000..c4c0c1b --- /dev/null +++ b/packages/internal/e2e-util/src/lib/add-packages.ts @@ -0,0 +1,21 @@ +import { WorkspaceRootPackageJson } from './types'; +import { updateJsonFile } from './update-json-file'; + +export type Packages = Pick< + WorkspaceRootPackageJson, + 'dependencies' | 'devDependencies' +>; + +export function addPackages(packages: Packages): void { + updateJsonFile('package.json', (packageJson: WorkspaceRootPackageJson) => ({ + ...packageJson, + dependencies: { + ...(packageJson.dependencies ?? {}), + ...(packages.dependencies ?? {}), + }, + devDependencies: { + ...(packageJson.devDependencies ?? {}), + ...(packages.devDependencies ?? {}), + }, + })); +} diff --git a/packages/internal/e2e-util/src/lib/types/index.ts b/packages/internal/e2e-util/src/lib/types/index.ts new file mode 100644 index 0000000..f383d7e --- /dev/null +++ b/packages/internal/e2e-util/src/lib/types/index.ts @@ -0,0 +1 @@ +export * from './package-json'; diff --git a/packages/internal/e2e-util/src/lib/types/package-json.ts b/packages/internal/e2e-util/src/lib/types/package-json.ts new file mode 100644 index 0000000..cf0a57e --- /dev/null +++ b/packages/internal/e2e-util/src/lib/types/package-json.ts @@ -0,0 +1,23 @@ +/** + * package.json configuration file in workspace root directory. + */ +export interface WorkspaceRootPackageJson { + /** + * Package dependencies used at runtime. + */ + readonly dependencies?: { + /** + * Package name mapped to version range. + */ + readonly [packageName: string]: string; + }; + /** + * Package dependencies not used during runtime. + */ + readonly devDependencies?: { + /** + * Package name mapped to version range. + */ + readonly [packageName: string]: string; + }; +} diff --git a/packages/internal/e2e-util/src/lib/update-json-file.ts b/packages/internal/e2e-util/src/lib/update-json-file.ts new file mode 100644 index 0000000..d775b47 --- /dev/null +++ b/packages/internal/e2e-util/src/lib/update-json-file.ts @@ -0,0 +1,12 @@ +import { updateFile } from '@nrwl/nx-plugin/testing'; + +export function updateJsonFile( + file: string, + mapper: (json: TJson) => TJson +): void { + updateFile(file, content => { + const json: TJson = JSON.parse(content); + + return JSON.stringify(mapper(json), null, 2); + }); +} diff --git a/packages/internal/e2e-util/src/lib/use-default-base-branch.ts b/packages/internal/e2e-util/src/lib/use-default-base-branch.ts new file mode 100644 index 0000000..85a020f --- /dev/null +++ b/packages/internal/e2e-util/src/lib/use-default-base-branch.ts @@ -0,0 +1,18 @@ +import { NxJsonConfiguration } from '@nrwl/devkit'; + +import { updateJsonFile } from './update-json-file'; + +/** + * Configure the default base branch for Nx. + * + * @param defaultBaseBranch Default base branch used by nx affected commands. + */ +export function useDefaultBaseBranch(defaultBaseBranch: string): void { + updateJsonFile('nx.json', nxJson => ({ + ...nxJson, + affected: { + ...nxJson.affected, + defaultBase: defaultBaseBranch, + }, + })); +} diff --git a/packages/internal/e2e-util/tsconfig.json b/packages/internal/e2e-util/tsconfig.json new file mode 100644 index 0000000..667a346 --- /dev/null +++ b/packages/internal/e2e-util/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/internal/e2e-util/tsconfig.lib.json b/packages/internal/e2e-util/tsconfig.lib.json new file mode 100644 index 0000000..d1adde4 --- /dev/null +++ b/packages/internal/e2e-util/tsconfig.lib.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": ["jest", "node"], + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "exclude": ["**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/packages/internal/e2e-util/tsconfig.spec.json b/packages/internal/e2e-util/tsconfig.spec.json new file mode 100644 index 0000000..1798b37 --- /dev/null +++ b/packages/internal/e2e-util/tsconfig.spec.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "**/*.spec.ts", + "**/*.spec.tsx", + "**/*.spec.js", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/packages/internal/test-util/.eslintrc.json b/packages/internal/test-util/.eslintrc.json new file mode 100644 index 0000000..0c9b27c --- /dev/null +++ b/packages/internal/test-util/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../.eslintrc.json", + "ignorePatterns": ["!**/*"], + "rules": {} +} diff --git a/packages/internal/test-util/README.md b/packages/internal/test-util/README.md new file mode 100644 index 0000000..7551bdc --- /dev/null +++ b/packages/internal/test-util/README.md @@ -0,0 +1,7 @@ +# internal-test-util + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test internal-test-util` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/internal/test-util/jest.config.js b/packages/internal/test-util/jest.config.js new file mode 100644 index 0000000..e1fc9cb --- /dev/null +++ b/packages/internal/test-util/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + displayName: 'internal-test-util', + preset: '../../../jest.preset.js', + globals: { + 'ts-jest': { + tsConfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]sx?$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../../coverage/packages/internal/test-util', +}; diff --git a/packages/internal/test-util/src/index.ts b/packages/internal/test-util/src/index.ts new file mode 100644 index 0000000..92b332f --- /dev/null +++ b/packages/internal/test-util/src/index.ts @@ -0,0 +1,3 @@ +export * from './lib/generators/add-angular-application'; +export * from './lib/generators/add-angular-library'; +export * from './lib/util/create-project-name'; diff --git a/packages/internal/test-util/src/lib/file-types/index.ts b/packages/internal/test-util/src/lib/file-types/index.ts new file mode 100644 index 0000000..dd34348 --- /dev/null +++ b/packages/internal/test-util/src/lib/file-types/index.ts @@ -0,0 +1 @@ +export * from './tsconfig-base-json'; diff --git a/packages/internal/test-util/src/lib/file-types/tsconfig-base-json.ts b/packages/internal/test-util/src/lib/file-types/tsconfig-base-json.ts new file mode 100644 index 0000000..747da08 --- /dev/null +++ b/packages/internal/test-util/src/lib/file-types/tsconfig-base-json.ts @@ -0,0 +1,21 @@ +/** + * Path map in TypeScript configuration. Mostly used in tsconfig.base.json. + */ +export interface TsconfigPathMap { + readonly [importPath: string]: readonly string[]; +} + +/** + * tsconfig.base.json configuration file in workspace root. + */ +export interface TsconfigBaseJson { + /** + * TypeScript compiler options. + */ + readonly compilerOptions: { + /** + * Import paths also known as TypeScript path mappings. + */ + readonly paths?: TsconfigPathMap; + }; +} diff --git a/packages/internal/test-util/src/lib/generators/add-angular-application.ts b/packages/internal/test-util/src/lib/generators/add-angular-application.ts new file mode 100644 index 0000000..86e31fc --- /dev/null +++ b/packages/internal/test-util/src/lib/generators/add-angular-application.ts @@ -0,0 +1,124 @@ +import { + addProjectConfiguration, + getWorkspaceLayout, + ProjectConfiguration, + Tree, +} from '@nrwl/devkit'; +import * as path from 'path'; + +import { createProjectName, normalizePath } from '../util'; + +export interface AddAngularApplicationOptions { + readonly directory?: string; + readonly name: string; +} + +export function addAngularApplication( + host: Tree, + { directory = '', name }: AddAngularApplicationOptions +): void { + const { appsDir } = getWorkspaceLayout(host); + const root = normalizePath(path.join(appsDir, directory, name)); + const sourceRoot = normalizePath(path.join(appsDir, directory, name, 'src')); + const projectName = createProjectName({ directory, name }); + const project: ProjectConfiguration = { + projectType: 'application', + root, + sourceRoot, + // prefix: 'booking', + targets: { + build: { + executor: '@angular-devkit/build-angular:browser', + options: { + outputPath: normalizePath( + path.join('dist', appsDir, directory, name) + ), + index: normalizePath(path.join(sourceRoot, 'index.html')), + main: normalizePath(path.join(sourceRoot, 'main.ts')), + polyfills: normalizePath(path.join(sourceRoot, 'polyfills.ts')), + tsConfig: normalizePath(path.join(root, 'tsconfig.app.json')), + aot: true, + assets: [ + normalizePath(path.join(sourceRoot, 'favicon.ico')), + normalizePath(path.join(sourceRoot, 'assets')), + ], + styles: [normalizePath(path.join(sourceRoot, 'styles.scss'))], + scripts: [], + }, + configurations: { + production: { + fileReplacements: [ + { + replace: normalizePath( + path.join(sourceRoot, 'environments/environment.ts') + ), + with: normalizePath( + path.join(sourceRoot, 'environments/environment.prod.ts') + ), + }, + ], + optimization: true, + outputHashing: 'all', + sourceMap: false, + namedChunks: false, + extractLicenses: true, + vendorChunk: false, + buildOptimizer: true, + budgets: [ + { + type: 'initial', + maximumWarning: '2mb', + maximumError: '5mb', + }, + { + type: 'anyComponentStyle', + maximumWarning: '6kb', + maximumError: '10kb', + }, + ], + }, + }, + }, + serve: { + executor: '@angular-devkit/build-angular:dev-server', + options: { + browserTarget: `${projectName}:build`, + }, + configurations: { + production: { + browserTarget: `${projectName}:build:production`, + }, + }, + }, + 'extract-i18n': { + executor: '@angular-devkit/build-angular:extract-i18n', + options: { + browserTarget: `${projectName}:build`, + }, + }, + lint: { + executor: '@nrwl/linter:eslint', + options: { + lintFilePatterns: [ + normalizePath(path.join(sourceRoot, '**/*.ts')), + normalizePath(path.join(sourceRoot, '**/*.html')), + ], + }, + }, + test: { + executor: '@nrwl/jest:jest', + outputs: [ + normalizePath(path.join('coverage', appsDir, directory, name)), + ], + options: { + jestConfig: normalizePath( + path.join(appsDir, directory, name, 'jest.config.js') + ), + passWithNoTests: true, + }, + }, + }, + }; + + addProjectConfiguration(host, projectName, project); +} diff --git a/packages/internal/test-util/src/lib/generators/add-angular-library.ts b/packages/internal/test-util/src/lib/generators/add-angular-library.ts new file mode 100644 index 0000000..9bdc09f --- /dev/null +++ b/packages/internal/test-util/src/lib/generators/add-angular-library.ts @@ -0,0 +1,69 @@ +import { + addProjectConfiguration, + getWorkspaceLayout, + ProjectConfiguration, + Tree, +} from '@nrwl/devkit'; +import * as path from 'path'; + +import { TsconfigBaseJson } from '../file-types'; +import { createProjectName, normalizePath } from '../util'; + +export enum LibraryType { + BuildableLibrary, + PublishableLibrary, + WorkspaceLibrary, +} + +export interface AddAngularLibraryOptions { + readonly directory?: string; + readonly name: string; + readonly npmScope?: string; + readonly type: LibraryType; +} + +export function addAngularLibrary( + host: Tree, + { directory = '', name, npmScope }: AddAngularLibraryOptions +): void { + const { libsDir, npmScope: defaultNpmScope } = getWorkspaceLayout(host); + npmScope ??= defaultNpmScope; + const importPath = `@${npmScope}/${directory}/${name}`; + const root = normalizePath(path.join(libsDir, directory, name)); + const sourceRoot = normalizePath(path.join(libsDir, directory, name, 'src')); + const project: ProjectConfiguration = { + projectType: 'library', + root, + sourceRoot, + targets: { + lint: { + executor: '@nrwl/linter:eslint', + options: { + lintFilePatterns: [ + normalizePath(path.join(sourceRoot, '**', '*.ts')), + normalizePath(path.join(sourceRoot, '**', '*.html')), + ], + }, + }, + test: { + executor: '@nrwl/jest:jest', + outputs: [normalizePath(path.join('coverage', root))], + options: { + jestConfig: normalizePath(path.join(root, 'jest.config.js')), + passWithNoTests: true, + }, + }, + }, + }; + const tsconfigBase: TsconfigBaseJson = { + compilerOptions: { + paths: { + [importPath]: [normalizePath(path.join(sourceRoot, 'index.ts'))], + }, + }, + }; + const projectName = createProjectName({ directory, name }); + + host.write('tsconfig.base.json', JSON.stringify(tsconfigBase)); + addProjectConfiguration(host, projectName, project); +} diff --git a/packages/internal/test-util/src/lib/util/create-project-name.ts b/packages/internal/test-util/src/lib/util/create-project-name.ts new file mode 100644 index 0000000..c3b256c --- /dev/null +++ b/packages/internal/test-util/src/lib/util/create-project-name.ts @@ -0,0 +1,14 @@ +export interface CreateProjectNameOptions { + readonly directory?: string; + readonly name: string; +} + +export function createProjectName({ + directory = '', + name, +}: CreateProjectNameOptions): string { + const separator = '-'; + const directoryParts = directory.split(/\/\\/g); + + return [...directoryParts, name].join(separator); +} diff --git a/packages/internal/test-util/src/lib/util/index.ts b/packages/internal/test-util/src/lib/util/index.ts new file mode 100644 index 0000000..3f40949 --- /dev/null +++ b/packages/internal/test-util/src/lib/util/index.ts @@ -0,0 +1,2 @@ +export * from './create-project-name'; +export * from './normalize-path'; diff --git a/packages/internal/test-util/src/lib/util/normalize-path.ts b/packages/internal/test-util/src/lib/util/normalize-path.ts new file mode 100644 index 0000000..c2b6f15 --- /dev/null +++ b/packages/internal/test-util/src/lib/util/normalize-path.ts @@ -0,0 +1,3 @@ +export function normalizePath(path: string): string { + return path.replace(/\\/g, '/'); +} diff --git a/packages/internal/test-util/tsconfig.json b/packages/internal/test-util/tsconfig.json new file mode 100644 index 0000000..667a346 --- /dev/null +++ b/packages/internal/test-util/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/internal/test-util/tsconfig.lib.json b/packages/internal/test-util/tsconfig.lib.json new file mode 100644 index 0000000..89f9865 --- /dev/null +++ b/packages/internal/test-util/tsconfig.lib.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "../../../dist/out-tsc", + "types": ["jest", "node"], + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "exclude": ["**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/packages/internal/test-util/tsconfig.spec.json b/packages/internal/test-util/tsconfig.spec.json new file mode 100644 index 0000000..1798b37 --- /dev/null +++ b/packages/internal/test-util/tsconfig.spec.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "**/*.spec.ts", + "**/*.spec.tsx", + "**/*.spec.js", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42e7d10..efd7bbc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,47 +1,47 @@ dependencies: '@angular/animations': 11.0.9_@angular+core@11.0.9 - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 '@angular/compiler': 11.0.9 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - '@angular/forms': 11.0.9_5ca4793bdf8f3b6352f42f806d14580c + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + '@angular/forms': 11.0.9_58109f712dfe1a39e6d2d2dc0ca2a98b '@angular/platform-browser': 11.0.9_0d11ba2a2337edbaa2684af2277e7862 '@angular/platform-browser-dynamic': 11.0.9_8383343813cdfa803f2f916e7857b4c5 - '@angular/router': 11.0.9_5ca4793bdf8f3b6352f42f806d14580c - '@ngrx/effects': 10.1.2_566b34705c48b81bdc6e6d4de79195c5 - '@ngrx/entity': 10.1.2_566b34705c48b81bdc6e6d4de79195c5 - '@ngrx/router-store': 10.1.2_137b9eaf69d062fc259575bfc001fcf2 - '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.5.5 - '@nrwl/angular': 11.1.1_b544165f54f89853f0045af9ccb54cf8 + '@angular/router': 11.0.9_58109f712dfe1a39e6d2d2dc0ca2a98b + '@ngrx/effects': 10.1.2_c9984c2d5dfead750ae4944108f89915 + '@ngrx/entity': 10.1.2_c9984c2d5dfead750ae4944108f89915 + '@ngrx/router-store': 10.1.2_4d6084dfa1bb34253ddd107c7f0fa925 + '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.6.3 + '@nrwl/angular': 11.2.0-rc.2_d6b0abbe2edd0c42ac81d0710b1f1fa8 luxon: 1.25.0 - rxjs: 6.5.5 + rxjs: 6.6.3 tslib: 2.1.0 - zone.js: 0.10.3 + zone.js: 0.11.3 devDependencies: - '@angular-devkit/build-angular': 0.1100.6_dc6b7e444892a2807f0c2974f3e21085 - '@angular-eslint/eslint-plugin': 1.0.0_fd68a510280f74aa31387ed2af786951 + '@angular-devkit/build-angular': 0.1100.7_9b807e5ff1efcabea2af6c05ffc64e6e + '@angular-eslint/eslint-plugin': 1.0.0_c3bc21fa3870a09a40baf546878571ad '@angular-eslint/eslint-plugin-template': 1.0.0_0361543f832fb11a9481f3c18ac13408 '@angular-eslint/template-parser': 1.0.0_1477e8f1042969ed998938df42d96062 - '@angular/cli': 11.0.6 + '@angular/cli': 11.0.7 '@angular/compiler-cli': 11.0.9_3656b9d387a5ec1e283954a14f07f018 '@angular/language-service': 11.0.9 '@commitlint/cli': 11.0.0 '@commitlint/config-angular': 11.0.0 '@commitlint/config-conventional': 11.0.0 - '@ngrx/schematics': 10.1.2_rxjs@6.5.5+zone.js@0.10.3 - '@ngrx/store-devtools': 10.1.2_@ngrx+store@10.1.2+rxjs@6.5.5 - '@nrwl/cli': 11.1.1 - '@nrwl/cypress': 11.1.1_cypress@5.6.0+typescript@4.0.5 - '@nrwl/devkit': 11.0.20 - '@nrwl/eslint-plugin-nx': 11.1.1_0a641c819e3f5e2d27a85327fbf21101 - '@nrwl/jest': 11.1.1 - '@nrwl/node': 11.1.1_typescript@4.0.5 - '@nrwl/nx-cloud': 11.0.1 - '@nrwl/nx-plugin': 11.1.1_typescript@4.0.5 - '@nrwl/tao': 11.1.1 - '@nrwl/workspace': 11.1.1_prettier@2.1.2 + '@ngrx/schematics': 10.1.2_rxjs@6.6.3+zone.js@0.11.3 + '@ngrx/store-devtools': 10.1.2_@ngrx+store@10.1.2+rxjs@6.6.3 + '@nrwl/cli': 11.2.0-rc.2 + '@nrwl/cypress': 11.2.0-rc.2_cypress@5.6.0+typescript@4.0.5 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/eslint-plugin-nx': 11.2.0-rc.2_0a641c819e3f5e2d27a85327fbf21101 + '@nrwl/jest': 11.2.0-rc.2 + '@nrwl/node': 11.2.0-rc.2_typescript@4.0.5 + '@nrwl/nx-cloud': 11.1.2 + '@nrwl/nx-plugin': 11.2.0-rc.2_typescript@4.0.5 + '@nrwl/tao': 11.2.0-rc.2 + '@nrwl/workspace': 11.2.0-rc.2_prettier@2.1.2 '@types/jest': 26.0.8 - '@types/luxon': 1.25.0 - '@types/node': 12.12.38 + '@types/luxon': 1.25.1 + '@types/node': 12.12.33 '@typescript-eslint/eslint-plugin': 4.3.0_0a641c819e3f5e2d27a85327fbf21101 '@typescript-eslint/parser': 4.3.0_eslint@7.10.0+typescript@4.0.5 all-contributors-cli: 6.19.0 @@ -51,36 +51,38 @@ devDependencies: eslint-config-prettier: 6.0.0_eslint@7.10.0 eslint-plugin-cypress: 2.11.2_eslint@7.10.0 eslint-plugin-import: 2.22.1_eslint@7.10.0 - eslint-plugin-jsdoc: 30.7.13_eslint@7.10.0 + eslint-plugin-jsdoc: 31.3.3_eslint@7.10.0 eslint-plugin-prefer-arrow: 1.2.2_eslint@7.10.0 git-cz: 4.7.6 - husky: 4.3.7 + husky: 4.3.8 jest: 26.2.2_ts-node@9.1.1 - jest-preset-angular: 8.3.1_c29faa133a6a4b4ab5c55a1fa06c50f9 + jest-preset-angular: 8.3.2_c29faa133a6a4b4ab5c55a1fa06c50f9 + jest-serial-runner: 1.1.0 json: 10.0.0 lint-staged: 10.5.3 + ng-packagr: 11.1.2_d5db820be2a97d193023211c377028b4 prettier: 2.1.2 - ts-jest: 26.4.0_jest@26.2.2+typescript@4.0.5 + ts-jest: 26.4.4_jest@26.2.2+typescript@4.0.5 ts-node: 9.1.1_typescript@4.0.5 typescript: 4.0.5 lockfileVersion: 5.2 packages: - /@angular-devkit/architect/0.1100.6: + /@angular-devkit/architect/0.1100.7: dependencies: - '@angular-devkit/core': 11.0.6 + '@angular-devkit/core': 11.0.7 rxjs: 6.6.3 engines: node: '>= 10.13.0' npm: '>= 6.11.0' yarn: '>= 1.13.0' resolution: - integrity: sha512-4O+cg3AimI2bNAxxdu5NrqSf4Oa8r8xL0+G2Ycd3jLoFv0h0ecJiNKEG5F6IpTprb4aexZD6pcxBJCqQ8MmzWQ== - /@angular-devkit/build-angular/0.1100.6_dc6b7e444892a2807f0c2974f3e21085: + integrity: sha512-b2zv2yiRbdhJ7hJfZsAvGYcqgh2DVtc7gRIPo1eDPvOAKrenmZ4zo/v0PRYScrTsPzqmoCokNA5nIwufwUEnuA== + /@angular-devkit/build-angular/0.1100.7_9b807e5ff1efcabea2af6c05ffc64e6e: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/build-optimizer': 0.1100.6 - '@angular-devkit/build-webpack': 0.1100.6_e3222a4926c3b7d4c1aa5becb19e445f - '@angular-devkit/core': 11.0.6 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/build-optimizer': 0.1100.7 + '@angular-devkit/build-webpack': 0.1100.7_e3222a4926c3b7d4c1aa5becb19e445f + '@angular-devkit/core': 11.0.7 '@angular/compiler-cli': 11.0.9_3656b9d387a5ec1e283954a14f07f018 '@babel/core': 7.12.3 '@babel/generator': 7.12.1 @@ -89,13 +91,13 @@ packages: '@babel/runtime': 7.12.1 '@babel/template': 7.10.4 '@jsdevtools/coverage-istanbul-loader': 3.0.5 - '@ngtools/webpack': 11.0.6_ab33affbbb6f67462fbfb9b4d53a8b97 + '@ngtools/webpack': 11.0.7_ab33affbbb6f67462fbfb9b4d53a8b97 ansi-colors: 4.1.1 autoprefixer: 9.8.6 babel-loader: 8.1.0_427212bc1158d185e577033f19ca0757 browserslist: 4.16.1 cacache: 15.0.5 - caniuse-lite: 1.0.30001176 + caniuse-lite: 1.0.30001179 circular-dependency-plugin: 5.2.0_webpack@4.44.2 copy-webpack-plugin: 6.2.1_webpack@4.44.2 core-js: 3.6.5 @@ -113,6 +115,7 @@ packages: loader-utils: 2.0.0 mini-css-extract-plugin: 1.2.1_webpack@4.44.2 minimatch: 3.0.4 + ng-packagr: 11.1.2_d5db820be2a97d193023211c377028b4 open: 7.3.0 ora: 5.1.0 parse5-html-rewriting-stream: 6.0.1 @@ -173,8 +176,8 @@ packages: tslint: optional: true resolution: - integrity: sha512-HcqsWiSIUxExGg3HRQScLOmF+ckVkCKolfpPcNOCCpBYxH/i8n4wDGLBP5Rtxky+0Qz+3nnAaFIpNb9p9aUmbg== - /@angular-devkit/build-optimizer/0.1100.6: + integrity: sha512-erc+AtSU46ZIX7A5dmeZ0/G/SQIbqMAGbTKZbf11GePyhT0JAAnfMQtOHMb6AaX85n4yQTg1uMo9f5+8V3lfKA== + /@angular-devkit/build-optimizer/0.1100.7: dependencies: loader-utils: 2.0.0 source-map: 0.7.3 @@ -188,11 +191,11 @@ packages: yarn: '>= 1.13.0' hasBin: true resolution: - integrity: sha512-Qkq7n6510N+nXmfZqpqpI0I6Td+b+06RRNmS7KftSNJntU1z5QYh4FggwlthZ5P0QUT92cnBQsnT8OgYqGnwbg== - /@angular-devkit/build-webpack/0.1100.6_e3222a4926c3b7d4c1aa5becb19e445f: + integrity: sha512-bHIIub0d1trVAmAX/EaNR6Zo4b7hkscewK394qYYp/w8VKQkLSAPMUbt2YTWN+erR9yyHnJ2y7tBabIui75Wdw== + /@angular-devkit/build-webpack/0.1100.7_e3222a4926c3b7d4c1aa5becb19e445f: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/core': 11.0.7 rxjs: 6.6.3 webpack: 4.44.2 webpack-dev-server: 3.11.0_webpack@4.44.2 @@ -205,11 +208,11 @@ packages: webpack: ^4.6.0 webpack-dev-server: ^3.1.4 resolution: - integrity: sha512-kK0FlpYJHP25o1yzIGHQqIvO5kp+p6V5OwGpD2GGRZLlJqd3WdjY5DxnyZoX3/IofO6KsTnmm76fzTRqc62z/Q== - /@angular-devkit/build-webpack/0.1100.6_f17e7dc3686dc4072a83e169fb8b83a8: + integrity: sha512-/6Hudd1hs/GMHX4C/Qk7jueIMNg8NKFJWDEbvMPMgDzTqUIa680PTD6SNSCcY5Cz9mEpdpYCZo5N31JB7dlpOg== + /@angular-devkit/build-webpack/0.1100.7_f17e7dc3686dc4072a83e169fb8b83a8: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/core': 11.0.7 rxjs: 6.6.3 webpack: 4.42.0 webpack-dev-server: 3.11.0_webpack@4.42.0 @@ -222,22 +225,8 @@ packages: webpack: ^4.6.0 webpack-dev-server: ^3.1.4 resolution: - integrity: sha512-kK0FlpYJHP25o1yzIGHQqIvO5kp+p6V5OwGpD2GGRZLlJqd3WdjY5DxnyZoX3/IofO6KsTnmm76fzTRqc62z/Q== - /@angular-devkit/core/11.0.0: - dependencies: - ajv: 6.12.6 - fast-json-stable-stringify: 2.1.0 - magic-string: 0.25.7 - rxjs: 6.6.3 - source-map: 0.7.3 - dev: true - engines: - node: '>= 10.13.0' - npm: '>= 6.11.0' - yarn: '>= 1.13.0' - resolution: - integrity: sha512-fXZtSs3J4S12hboi3om1FA+QS0e8nuQMyzl2nkmtuhcELUFMmSrEl36dtCni5e7Svs46BUAZ5w8EazIkgGQDJg== - /@angular-devkit/core/11.0.6: + integrity: sha512-/6Hudd1hs/GMHX4C/Qk7jueIMNg8NKFJWDEbvMPMgDzTqUIa680PTD6SNSCcY5Cz9mEpdpYCZo5N31JB7dlpOg== + /@angular-devkit/core/11.0.7: dependencies: ajv: 6.12.6 fast-json-stable-stringify: 2.1.0 @@ -249,32 +238,20 @@ packages: npm: '>= 6.11.0' yarn: '>= 1.13.0' resolution: - integrity: sha512-nhvU5hH01r9qcexAqvIFU233treWWeW3ncs9UFYjD9Hys9sDSvqC3+bvGvl9vCG5FsyY7oDsjaVAipyUc+SFAg== - /@angular-devkit/schematics/11.0.0: + integrity: sha512-1GKnIT++YSUHpzzRx9QC0+8yOw4wy+ZpiJVDlroPSeK4FGrTCJqJKenkfRjVFRFOSrzTiJds+IU6kI4+bFbw9g== + /@angular-devkit/schematics/11.0.7: dependencies: - '@angular-devkit/core': 11.0.0 + '@angular-devkit/core': 11.0.7 ora: 5.1.0 rxjs: 6.6.3 - dev: true engines: node: '>= 10.13.0' npm: '>= 6.11.0' yarn: '>= 1.13.0' resolution: - integrity: sha512-oCz9E0thA5WdGDuv6biu3X5kw5/vNE4ZZOKT2sHBQMpAuuDYrDpfTYQJjXQtjfXWvmlr8L8aqDD9N4HXsE4Esw== - /@angular-devkit/schematics/11.0.6: + integrity: sha512-mKkXWmSTlZYjQO4i7xUX+bG1E9h9Ke3GgGQQouA+kth06IPO+VcywLQNsui4qcyLDUjyo8CaX+44aoSXoX3Tgg== + /@angular-eslint/eslint-plugin-template/1.0.0_0361543f832fb11a9481f3c18ac13408: dependencies: - '@angular-devkit/core': 11.0.6 - ora: 5.1.0 - rxjs: 6.6.3 - engines: - node: '>= 10.13.0' - npm: '>= 6.11.0' - yarn: '>= 1.13.0' - resolution: - integrity: sha512-hCyu/SSSiC6dKl/NxdWctknIrBqKR6pRe7DMArWowrZX6P9oi36LpKEFnKutE8+tXjsOqQj8XMBq9L64sXZWqg== - ? /@angular-eslint/eslint-plugin-template/1.0.0_0361543f832fb11a9481f3c18ac13408 - : dependencies: '@angular-eslint/template-parser': 1.0.0_1477e8f1042969ed998938df42d96062 '@typescript-eslint/experimental-utils': 4.3.0_eslint@7.10.0+typescript@4.0.5 aria-query: 4.2.2 @@ -288,12 +265,12 @@ packages: typescript: '*' resolution: integrity: sha512-+LrAypsGUaW98aoDb/ITWWDKYHYp6UcJraJU7/bih7AQOJyDs6AnpbMPLscTcxkcCP2ylmJ31pEzYz4ItNKRTQ== - /@angular-eslint/eslint-plugin/1.0.0_fd68a510280f74aa31387ed2af786951: + /@angular-eslint/eslint-plugin/1.0.0_c3bc21fa3870a09a40baf546878571ad: dependencies: '@typescript-eslint/experimental-utils': 4.3.0_eslint@7.10.0+typescript@4.0.5 eslint: 7.10.0 eslint-plugin-import: 2.22.1_eslint@7.10.0 - eslint-plugin-jsdoc: 30.7.13_eslint@7.10.0 + eslint-plugin-jsdoc: 31.3.3_eslint@7.10.0 eslint-plugin-prefer-arrow: 1.2.2_eslint@7.10.0 typescript: 4.0.5 dev: true @@ -320,20 +297,20 @@ packages: integrity: sha512-M7rj907yOoEzq10FO5BDX7Ylw24V+YfdsYfyEi/TzzQtNGxCwQhbEwXc1PAZgsQ+P1wbGFbg9mb3yFkps7/LEA== /@angular/animations/11.0.9_@angular+core@11.0.9: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 tslib: 2.1.0 dev: false peerDependencies: '@angular/core': 11.0.9 resolution: integrity: sha512-/KsMBUbRTqp29CNLbRIe4/8IxWxhnbUUZWqULaySnRDDW/p2m4miPcFVSp4zjrDZPqdXSibDiCyTiWmQ5PTuKA== - /@angular/cli/11.0.6: + /@angular/cli/11.0.7: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - '@schematics/angular': 11.0.6 - '@schematics/update': 0.1100.6 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 + '@schematics/angular': 11.0.7 + '@schematics/update': 0.1100.7 '@yarnpkg/lockfile': 1.1.0 ansi-colors: 4.1.1 debug: 4.2.0 @@ -357,11 +334,11 @@ packages: hasBin: true requiresBuild: true resolution: - integrity: sha512-bwrXXyU23HjUlFl0CNCU+XMGa/enooqpMLcTAA15StVpKFHyaA4c57il/aqu+1IuB+zR6rGDzhAABuvRcHd+mQ== - /@angular/common/11.0.9_@angular+core@11.0.9+rxjs@6.5.5: + integrity: sha512-gKHfkkjduNi5OFaEKd75UKpZ7gg9h2+eVoo7ufrZda87PLP7v/XB/QoFz9zj6tTM2/IWkKhJhcsE2MLyIOTUZA== + /@angular/common/11.0.9_@angular+core@11.0.9+rxjs@6.6.3: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - rxjs: 6.5.5 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -375,7 +352,7 @@ packages: '@babel/core': 7.12.10 '@babel/types': 7.12.12 canonical-path: 1.0.0 - chokidar: 3.5.0 + chokidar: 3.5.1 convert-source-map: 1.7.0 dependency-graph: 0.7.2 fs-extra: 4.0.2 @@ -403,34 +380,34 @@ packages: dev: false resolution: integrity: sha512-H2IfS6ciPWN0kmKhbwDuvS8ry5GcRFKfoyA/HGk+nQwCE2nAHC8VNwldbtoisO7XfRWr/uaTrh6z/vdfxsAiHw== - /@angular/core/10.2.4_rxjs@6.5.5+zone.js@0.10.3: + /@angular/core/10.2.4_rxjs@6.6.3+zone.js@0.11.3: dependencies: - rxjs: 6.5.5 + rxjs: 6.6.3 tslib: 2.1.0 - zone.js: 0.10.3 + zone.js: 0.11.3 dev: true peerDependencies: rxjs: ^6.5.3 zone.js: ~0.10.3 resolution: integrity: sha512-5xpAvmZwD9nZ8eWx10urjibqEeePGEiFXVMEn3IaJWgfdOcMmeSoioW9JUllT3w85+DlNVWbRbhz0YfE9a4jyw== - /@angular/core/11.0.9_rxjs@6.5.5+zone.js@0.10.3: + /@angular/core/11.0.9_rxjs@6.6.3+zone.js@0.11.3: dependencies: - rxjs: 6.5.5 + rxjs: 6.6.3 tslib: 2.1.0 - zone.js: 0.10.3 + zone.js: 0.11.3 dev: false peerDependencies: rxjs: ^6.5.3 zone.js: ~0.10.3 resolution: integrity: sha512-J0ff3UK2Cw7Z0eNLtUXrpMFvmmkvPPZWLYIwimyc1pZys7qsIVT6cy2ybGEOhbJgC6qt3fo0DoJV3pGXTalb8A== - /@angular/forms/11.0.9_5ca4793bdf8f3b6352f42f806d14580c: + /@angular/forms/11.0.9_58109f712dfe1a39e6d2d2dc0ca2a98b: dependencies: - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 '@angular/platform-browser': 11.0.9_0d11ba2a2337edbaa2684af2277e7862 - rxjs: 6.5.5 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -446,9 +423,9 @@ packages: integrity: sha512-wmt/siAwHUMNIXeu4OCW3z6JtP/VoJLkiQXDfSnetuCfHwy401b72L4h+TWiX3x2ZLzeYwmi0sbqMb5UCctrIw== /@angular/platform-browser-dynamic/11.0.9_8383343813cdfa803f2f916e7857b4c5: dependencies: - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 '@angular/compiler': 11.0.9 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 '@angular/platform-browser': 11.0.9_0d11ba2a2337edbaa2684af2277e7862 tslib: 2.1.0 dev: false @@ -462,8 +439,8 @@ packages: /@angular/platform-browser/11.0.9_0d11ba2a2337edbaa2684af2277e7862: dependencies: '@angular/animations': 11.0.9_@angular+core@11.0.9 - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 tslib: 2.1.0 dev: false peerDependencies: @@ -475,12 +452,12 @@ packages: optional: true resolution: integrity: sha512-snuq8SaIRuVDYJLy80kYCEuVITZZbtG3PvxamATvzpgYpAzBskToc4/7LKJk0IEVSMvKzi8eSBCDaK2f2ZJB3A== - /@angular/router/11.0.9_5ca4793bdf8f3b6352f42f806d14580c: + /@angular/router/11.0.9_58109f712dfe1a39e6d2d2dc0ca2a98b: dependencies: - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 '@angular/platform-browser': 11.0.9_0d11ba2a2337edbaa2684af2277e7862 - rxjs: 6.5.5 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -522,11 +499,11 @@ packages: /@babel/core/7.12.3: dependencies: '@babel/code-frame': 7.12.11 - '@babel/generator': 7.12.1 + '@babel/generator': 7.12.11 '@babel/helper-module-transforms': 7.12.1 '@babel/helpers': 7.12.5 '@babel/parser': 7.12.11 - '@babel/template': 7.10.4 + '@babel/template': 7.12.7 '@babel/traverse': 7.12.12 '@babel/types': 7.12.12 convert-source-map: 1.7.0 @@ -684,7 +661,7 @@ packages: '@babel/helper-simple-access': 7.12.1 '@babel/helper-split-export-declaration': 7.12.11 '@babel/helper-validator-identifier': 7.12.11 - '@babel/template': 7.10.4 + '@babel/template': 7.12.7 '@babel/traverse': 7.12.12 '@babel/types': 7.12.12 lodash: 4.17.20 @@ -744,7 +721,7 @@ packages: integrity: sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== /@babel/helpers/7.12.5: dependencies: - '@babel/template': 7.10.4 + '@babel/template': 7.12.7 '@babel/traverse': 7.12.12 '@babel/types': 7.12.12 resolution: @@ -864,8 +841,8 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== - ? /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.10 - : dependencies: + /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.10: + dependencies: '@babel/core': 7.12.10 '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.10 @@ -874,8 +851,8 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== - ? /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.3 - : dependencies: + /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.3: + dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 @@ -884,8 +861,8 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== - ? /@babel/plugin-proposal-nullish-coalescing-operator/7.12.1_@babel+core@7.12.10 - : dependencies: + /@babel/plugin-proposal-nullish-coalescing-operator/7.12.1_@babel+core@7.12.10: + dependencies: '@babel/core': 7.12.10 '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.10 @@ -1514,8 +1491,8 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== - ? /@babel/plugin-transform-member-expression-literals/7.12.1_@babel+core@7.12.10 - : dependencies: + /@babel/plugin-transform-member-expression-literals/7.12.1_@babel+core@7.12.10: + dependencies: '@babel/core': 7.12.10 '@babel/helper-plugin-utils': 7.10.4 optional: true @@ -1624,8 +1601,8 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== - ? /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.10 - : dependencies: + /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.10: + dependencies: '@babel/core': 7.12.10 '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.10 optional: true @@ -1633,8 +1610,8 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== - ? /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.3 - : dependencies: + /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.3: + dependencies: '@babel/core': 7.12.3 '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.3 dev: true @@ -1961,7 +1938,7 @@ packages: '@babel/plugin-transform-unicode-regex': 7.12.1_@babel+core@7.12.10 '@babel/preset-modules': 0.1.4_@babel+core@7.12.10 '@babel/types': 7.12.12 - core-js-compat: 3.8.2 + core-js-compat: 3.8.3 semver: 5.7.1 optional: true peerDependencies: @@ -2035,7 +2012,7 @@ packages: '@babel/plugin-transform-unicode-regex': 7.12.1_@babel+core@7.12.3 '@babel/preset-modules': 0.1.4_@babel+core@7.12.3 '@babel/types': 7.12.12 - core-js-compat: 3.8.2 + core-js-compat: 3.8.3 semver: 5.7.1 dev: true peerDependencies: @@ -2070,7 +2047,7 @@ packages: integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== /@babel/runtime-corejs3/7.12.5: dependencies: - core-js-pure: 3.8.2 + core-js-pure: 3.8.3 regenerator-runtime: 0.13.7 dev: true resolution: @@ -2078,12 +2055,12 @@ packages: /@babel/runtime/7.12.1: dependencies: regenerator-runtime: 0.13.7 + dev: true resolution: integrity: sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== /@babel/runtime/7.12.5: dependencies: regenerator-runtime: 0.13.7 - dev: true resolution: integrity: sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== /@babel/template/7.10.4: @@ -2091,6 +2068,7 @@ packages: '@babel/code-frame': 7.12.11 '@babel/parser': 7.12.11 '@babel/types': 7.12.12 + dev: true resolution: integrity: sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== /@babel/template/7.12.7: @@ -2142,7 +2120,7 @@ packages: '@commitlint/load': 11.0.0 '@commitlint/read': 11.0.0 chalk: 4.1.0 - core-js: 3.8.2 + core-js: 3.8.3 get-stdin: 8.0.0 lodash: 4.17.20 resolve-from: 5.0.0 @@ -2252,7 +2230,7 @@ packages: /@commitlint/read/11.0.0: dependencies: '@commitlint/top-level': 11.0.0 - fs-extra: 9.0.1 + fs-extra: 9.1.0 git-raw-commits: 2.0.9 dev: true engines: @@ -2393,10 +2371,20 @@ packages: node: '>=8' resolution: integrity: sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + /@jest/console/24.9.0: + dependencies: + '@jest/source-map': 24.9.0 + chalk: 2.4.2 + slash: 2.0.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== /@jest/console/26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 chalk: 4.1.0 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -2413,7 +2401,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 ansi-escapes: 4.3.1 chalk: 4.1.0 exit: 0.1.2 @@ -2443,22 +2431,43 @@ packages: ts-node: '*' resolution: integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + /@jest/environment/24.9.0: + dependencies: + '@jest/fake-timers': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== /@jest/environment/26.6.2: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 jest-mock: 26.6.2 dev: true engines: node: '>= 10.14.2' resolution: integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + /@jest/fake-timers/24.9.0: + dependencies: + '@jest/types': 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== /@jest/fake-timers/26.6.2: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 12.12.38 + '@types/node': 12.19.15 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -2510,6 +2519,16 @@ packages: node-notifier: 8.0.1 resolution: integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + /@jest/source-map/24.9.0: + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.4 + source-map: 0.6.1 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== /@jest/source-map/26.6.2: dependencies: callsites: 3.1.0 @@ -2520,6 +2539,16 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + /@jest/test-result/24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/types': 24.9.0 + '@types/istanbul-lib-coverage': 2.0.3 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== /@jest/test-result/26.6.2: dependencies: '@jest/console': 26.6.2 @@ -2531,6 +2560,17 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + /@jest/test-sequencer/24.9.0: + dependencies: + '@jest/test-result': 24.9.0 + jest-haste-map: 24.9.0 + jest-runner: 24.9.0 + jest-runtime: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== /@jest/test-sequencer/26.6.3_ts-node@9.1.1: dependencies: '@jest/test-result': 26.6.2 @@ -2545,6 +2585,29 @@ packages: ts-node: '*' resolution: integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + /@jest/transform/24.9.0: + dependencies: + '@babel/core': 7.12.10 + '@jest/types': 24.9.0 + babel-plugin-istanbul: 5.2.0 + chalk: 2.4.2 + convert-source-map: 1.7.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.4 + jest-haste-map: 24.9.0 + jest-regex-util: 24.9.0 + jest-util: 24.9.0 + micromatch: 3.1.10 + pirates: 4.0.1 + realpath-native: 1.1.0 + slash: 2.0.0 + source-map: 0.6.1 + write-file-atomic: 2.4.1 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== /@jest/transform/26.6.2: dependencies: '@babel/core': 7.12.10 @@ -2567,6 +2630,16 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + /@jest/types/24.9.0: + dependencies: + '@types/istanbul-lib-coverage': 2.0.3 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 13.0.11 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== /@jest/types/25.5.0: dependencies: '@types/istanbul-lib-coverage': 2.0.3 @@ -2582,7 +2655,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.0 - '@types/node': 12.12.38 + '@types/node': 12.19.15 '@types/yargs': 15.0.12 chalk: 4.1.0 engines: @@ -2599,11 +2672,11 @@ packages: dev: true resolution: integrity: sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA== - /@ngrx/effects/10.1.2_566b34705c48b81bdc6e6d4de79195c5: + /@ngrx/effects/10.1.2_c9984c2d5dfead750ae4944108f89915: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.5.5 - rxjs: 6.5.5 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.6.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -2612,11 +2685,11 @@ packages: rxjs: ^6.5.3 resolution: integrity: sha512-6pX6FEzLlqdbtFVMbCvscsaL6QC/L95e72JKj76Xz+8V77UTlpVsxWyMo7YU9pM4EXNpBGmOpMs2xKjfBfK05Q== - /@ngrx/entity/10.1.2_566b34705c48b81bdc6e6d4de79195c5: + /@ngrx/entity/10.1.2_c9984c2d5dfead750ae4944108f89915: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.5.5 - rxjs: 6.5.5 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.6.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -2625,13 +2698,13 @@ packages: rxjs: ^6.5.3 resolution: integrity: sha512-peit/zjLUxl8zQgNuPlPXDf4FmNZYMMNGsKQHiFpShIpWjLFTnR1wCeeLw8LMrqSy9vxLO3JpXwkDFZb8a+FDg== - /@ngrx/router-store/10.1.2_137b9eaf69d062fc259575bfc001fcf2: + /@ngrx/router-store/10.1.2_4d6084dfa1bb34253ddd107c7f0fa925: dependencies: - '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.5.5 - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - '@angular/router': 11.0.9_5ca4793bdf8f3b6352f42f806d14580c - '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.5.5 - rxjs: 6.5.5 + '@angular/common': 11.0.9_@angular+core@11.0.9+rxjs@6.6.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + '@angular/router': 11.0.9_58109f712dfe1a39e6d2d2dc0ca2a98b + '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.6.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -2642,19 +2715,19 @@ packages: rxjs: ^6.5.3 resolution: integrity: sha512-IBsZee5ZUmLbXkY/O4OjhJP1Q6mdu4lcLcQ9jeXsdCMH/Vvc0EGK+MlhsZrxv5+v2ZXb1bhtKsLBUsTovanLWA== - /@ngrx/schematics/10.1.2_rxjs@6.5.5+zone.js@0.10.3: + /@ngrx/schematics/10.1.2_rxjs@6.6.3+zone.js@0.11.3: dependencies: - '@angular/core': 10.2.4_rxjs@6.5.5+zone.js@0.10.3 + '@angular/core': 10.2.4_rxjs@6.6.3+zone.js@0.11.3 dev: true peerDependencies: rxjs: '*' zone.js: '*' resolution: integrity: sha512-N53YObCnZoBIHWuCiQSfY3r8M/T0lGkzApLoaGTSNUHbyTBYevpjpUpvANE+Pb4F6Jh/7EEZBsmXBYKcPD2BtA== - /@ngrx/store-devtools/10.1.2_@ngrx+store@10.1.2+rxjs@6.5.5: + /@ngrx/store-devtools/10.1.2_@ngrx+store@10.1.2+rxjs@6.6.3: dependencies: - '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.5.5 - rxjs: 6.5.5 + '@ngrx/store': 10.1.2_@angular+core@11.0.9+rxjs@6.6.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: true peerDependencies: @@ -2662,10 +2735,10 @@ packages: rxjs: ^6.5.3 resolution: integrity: sha512-HE681GuZ+lRgSXpgt7y7LKzsfu/+Tgy9yPZpaitvkhg+eCIjnN5Uvs1rWqETHYWnsKliW25yoqFUAVw+xb7hug== - /@ngrx/store/10.1.2_@angular+core@11.0.9+rxjs@6.5.5: + /@ngrx/store/10.1.2_@angular+core@11.0.9+rxjs@6.6.3: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 - rxjs: 6.5.5 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 + rxjs: 6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -2673,9 +2746,9 @@ packages: rxjs: ^6.5.3 resolution: integrity: sha512-FUjN786ch4Qt9WgJ78ef7Yquq3mPCekgcWgZrs4ycZw1f+KdfTHLTk1bGDtO8A8CzOya5yTT7KhxbdVjbOS5ng== - /@ngtools/webpack/11.0.6_ab33affbbb6f67462fbfb9b4d53a8b97: + /@ngtools/webpack/11.0.7_ab33affbbb6f67462fbfb9b4d53a8b97: dependencies: - '@angular-devkit/core': 11.0.6 + '@angular-devkit/core': 11.0.7 '@angular/compiler-cli': 11.0.9_3656b9d387a5ec1e283954a14f07f018 enhanced-resolve: 5.3.1 typescript: 4.0.5 @@ -2691,7 +2764,7 @@ packages: typescript: ~4.0.0 webpack: ^4.0.0 resolution: - integrity: sha512-vf5YNEpXWRa0fKC/BRq5sVVj2WnEqW8jn14YQRHwVt5ppUeyu8IKUF69p6W1MwZMgMqMaw/vPQ8LI5cFbyf3uw== + integrity: sha512-OWGiiDc7s4T53BBCY8tLkLUjgw44HrixW8Wh8e4thFH1eIUM0NHe087s/B5hDNu72W/GqK4IoBbhNQ2wiCR7qQ== /@nodelib/fs.scandir/2.1.4: dependencies: '@nodelib/fs.stat': 2.0.4 @@ -2716,23 +2789,24 @@ packages: node: '>= 8' resolution: integrity: sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - /@npmcli/move-file/1.0.1: + /@npmcli/move-file/1.1.0: dependencies: mkdirp: 1.0.4 + rimraf: 2.7.1 dev: true engines: node: '>=10' resolution: - integrity: sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== - /@nrwl/angular/11.1.1_b544165f54f89853f0045af9ccb54cf8: + integrity: sha512-Iv2iq0JuyYjKeFkSR4LPaCdDZwlGK9X2cP/01nJcp3yMJ1FjNd9vpiEYvLUgzBxKPg2SFmaOhizoQsPc0LWeOQ== + /@nrwl/angular/11.2.0-rc.2_d6b0abbe2edd0c42ac81d0710b1f1fa8: dependencies: - '@angular-devkit/schematics': 11.0.6 - '@nrwl/cypress': 11.1.1_cypress@5.6.0+typescript@4.0.5 - '@nrwl/devkit': 11.1.1 - '@nrwl/jest': 11.1.1 - '@nrwl/linter': 11.1.1 - '@schematics/angular': 11.0.6 - jasmine-marbles: 0.6.0_rxjs@6.5.5 + '@angular-devkit/schematics': 11.0.7 + '@nrwl/cypress': 11.2.0-rc.2_cypress@5.6.0+typescript@4.0.5 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/jest': 11.2.0-rc.2 + '@nrwl/linter': 11.2.0-rc.2 + '@schematics/angular': 11.0.7 + jasmine-marbles: 0.6.0_rxjs@6.6.3 tslib: 2.1.0 dev: false peerDependencies: @@ -2740,10 +2814,10 @@ packages: rxjs: '*' typescript: '*' resolution: - integrity: sha512-zVR4Vp8z/o51Q/DK3TFZhG8kXtAyYQQ+dABSN+nVcc8Kmwjle7FJuvM3XH1lvGnQKvsklXlXGtoyXaRMWPvcNQ== - /@nrwl/cli/11.1.1: + integrity: sha512-qTn3ubknOGV+Rwcal7TnDV+vOi1ZuKEoYjbhw5a0aey3qzwWUU+uKr4+3Oc+B0fX5SzTzyAiOkHBLsdIdbqIqw== + /@nrwl/cli/11.2.0-rc.2: dependencies: - '@nrwl/tao': 11.1.1 + '@nrwl/tao': 11.2.0-rc.2 chalk: 4.1.0 tmp: 0.0.33 yargs: 15.4.1 @@ -2751,18 +2825,18 @@ packages: dev: true hasBin: true resolution: - integrity: sha512-d1m7+V4gOE8ZbqDFk+eHgiJno0IRLeu02K46jRFeiiDuaEvkxQ5iQxawoqiJsXbEhMA7GDaGTBAdaGSar+CnVw== - /@nrwl/cypress/11.1.1_cypress@5.6.0+typescript@4.0.5: + integrity: sha512-UuFcwZLH+spKEZkGER4KL2Ff1oLPJhkWEkA3nlbZ97/GlnEejSxoKL79SNsK/M0fl1xf+qiq+0L1lMZQXvlU4A== + /@nrwl/cypress/11.2.0-rc.2_cypress@5.6.0+typescript@4.0.5: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 '@cypress/webpack-preprocessor': 4.1.5 - '@nrwl/devkit': 11.1.1 + '@nrwl/devkit': 11.2.0-rc.2 cypress: 5.6.0 fork-ts-checker-webpack-plugin: 3.1.1 fs-extra: 7.0.1 - rxjs: 6.5.5 + rxjs: 6.6.3 tree-kill: 1.2.2 ts-loader: 5.4.5_typescript@4.0.5 tsconfig-paths-webpack-plugin: 3.2.0 @@ -2773,28 +2847,21 @@ packages: cypress: '>= 3 < 7' typescript: '*' resolution: - integrity: sha512-vunmvJRqLLvMCbhZbNcUGnC7GURJ1NSb3Q9UK5CcVmRQ0YIeoaYmpRIGhvAg3dj5hA7r+a9BByaPb9cWrMfACg== - /@nrwl/devkit/11.0.20: - dependencies: - '@nrwl/tao': 11.0.20 - ejs: 3.1.5 - strip-json-comments: 2.0.1 - tslib: 2.1.0 - dev: true - resolution: - integrity: sha512-enhdAZeC96ZQad9lciNtm7CGNjI8PUNme4J5/y2ZlGMShrqDaijag9yktVVkErfdizaXL4o2Rny7UFXSXdElEw== - /@nrwl/devkit/11.1.1: + integrity: sha512-64lhgnUcn/rj8V1f1slX5yxogKiLqU7jtdfH+YQzwWckjhEujzZo7QxYrw0MJnhOQo8FNifP1/IzOGkZtVCJJg== + /@nrwl/devkit/11.2.0-rc.2: dependencies: - '@nrwl/tao': 11.1.1 + '@nrwl/tao': 11.2.0-rc.2 ejs: 3.1.5 + ignore: 5.1.8 + semver: 6.3.0 strip-json-comments: 2.0.1 tslib: 2.1.0 resolution: - integrity: sha512-Twu++BN5dFpQSER6+z3vBznTqrofH5geERDbtM1cl7U9D26tdYFM+eNzk3ma03PVCMBEVZymWqmFtewr869uNw== - /@nrwl/eslint-plugin-nx/11.1.1_0a641c819e3f5e2d27a85327fbf21101: + integrity: sha512-MYheiE97psI58ihcaxLDDeriJW2n1/t1RliCo0j1YVpItIWUOdN5wSiwM1ZOA7w+oHd9nrNpaDeji4Tpsgr1Jg== + /@nrwl/eslint-plugin-nx/11.2.0-rc.2_0a641c819e3f5e2d27a85327fbf21101: dependencies: - '@angular-devkit/core': 11.0.6 - '@typescript-eslint/experimental-utils': 4.13.0_eslint@7.10.0+typescript@4.0.5 + '@nrwl/devkit': 11.2.0-rc.2 + '@typescript-eslint/experimental-utils': 4.14.1_eslint@7.10.0+typescript@4.0.5 '@typescript-eslint/parser': 4.3.0_eslint@7.10.0+typescript@4.0.5 confusing-browser-globals: 1.0.10 dev: true @@ -2803,43 +2870,40 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-tPCgkhdl0VABsMJJMGtjVxtRfowmcTBhFevfgwbzuJpOCrXCreyGY6GiTdXrVBJwRjfx9L8wneC/cTedl6umhA== - /@nrwl/jest/11.1.1: + integrity: sha512-EgZfN1J5+7FW0Z6TvCxQLh3v55E86r5PshCd3miuoF5Eiu1kGOfwQ0Bbd7qJL4s6fCZgqVlxj6y+rU285Qv3Sg== + /@nrwl/jest/11.2.0-rc.2: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - '@nrwl/devkit': 11.1.1 + '@nrwl/devkit': 11.2.0-rc.2 jest-resolve: 26.6.2 - rxjs: 6.5.5 + rxjs: 6.6.3 strip-json-comments: 2.0.1 tslib: 2.1.0 resolution: - integrity: sha512-QWBlbuODdPUb4332XSKnWONsewah4jRHPfTcD2lr2LtzBdvc3b7h7q4NmpHtkiWtU9srRhcwgZiPjI46FrDS1w== - /@nrwl/linter/11.1.1: + integrity: sha512-APRIZZEjJ2yx03Llw0W6uJJ9hLWn9t53zJcQE4rZeP7cveW18z00XIM85D9H7VhihTxcvmSMWj6ylz7cB09UIg== + /@nrwl/linter/11.2.0-rc.2: dependencies: - '@angular-devkit/architect': 0.1100.6 + '@nrwl/devkit': 11.2.0-rc.2 glob: 7.1.4 minimatch: 3.0.4 tslib: 2.1.0 resolution: - integrity: sha512-T1LgglzcPuZlgpFFYANVO2uYjWOcThpiUbRLVfehgD7W14Xey46wP3H3AVtfoCYcW+WMfwLUJ/1jqDmyEjdr8g== - /@nrwl/node/11.1.1_typescript@4.0.5: + integrity: sha512-yrsRcjcilu38WYt5rpC+9nL5tjyoPc+t0RM/33goH9xe77iWTGYetjkx0X+swIn2R2uEh7NecTfJu0Nj+UwQ1w== + /@nrwl/node/11.2.0-rc.2_typescript@4.0.5: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/build-webpack': 0.1100.6_f17e7dc3686dc4072a83e169fb8b83a8 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - '@nrwl/devkit': 11.1.1 - '@nrwl/jest': 11.1.1 - '@nrwl/linter': 11.1.1 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/build-webpack': 0.1100.7_f17e7dc3686dc4072a83e169fb8b83a8 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/jest': 11.2.0-rc.2 + '@nrwl/linter': 11.2.0-rc.2 circular-dependency-plugin: 5.2.0_webpack@4.42.0 copy-webpack-plugin: 6.0.3_webpack@4.42.0 fork-ts-checker-webpack-plugin: 3.1.1 fs-extra: 7.0.1 glob: 7.1.4 license-webpack-plugin: 2.1.2 - rxjs: 6.5.5 + rxjs: 6.6.3 source-map-support: 0.5.16 tree-kill: 1.2.2 ts-loader: 5.4.5_typescript@4.0.5 @@ -2853,10 +2917,9 @@ packages: peerDependencies: typescript: '*' resolution: - integrity: sha512-YKUX7M5qx12XSHDJgdnQt9xrp+gPsqX2pLeqH0OIUB03nRREl0it8TPtSO1ivNfCvYFIxrRSBlhm4Bahdc3x9w== - /@nrwl/nx-cloud/11.0.1: + integrity: sha512-rVGVrC3PzNLHvCY/RY8NVQnZPE9rprrt2Z1TufUyHRB7umaBlJwbIVovQTV5oyIBIz2DCTBiPI/T898iFfNSVg== + /@nrwl/nx-cloud/11.1.2: dependencies: - '@angular-devkit/schematics': 11.0.0 axios: 0.21.1 chalk: 4.1.0 node-machine-id: 1.1.12 @@ -2865,18 +2928,18 @@ packages: uuid: 3.4.0 dev: true resolution: - integrity: sha512-GP0AOIDhkG3HO708BQeOgAX0c2JX8TZjmTjLElTryVxpM48vra4I9jJXZhorgmo7ap+QzYugcYx6wtGw9PTfqA== - /@nrwl/nx-plugin/11.1.1_typescript@4.0.5: + integrity: sha512-e2rtUBodOG1CtZSj93p7LT34Q6tPR97o55LT1jNzLUaNlJJKT+eObpoNR10D6OBFMbKDEkHwDN8Z08ov8N0nlQ== + /@nrwl/nx-plugin/11.2.0-rc.2_typescript@4.0.5: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - '@nrwl/devkit': 11.1.1 - '@nrwl/linter': 11.1.1 - '@nrwl/node': 11.1.1_typescript@4.0.5 + '@angular-devkit/architect': 0.1100.7 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/linter': 11.2.0-rc.2 + '@nrwl/node': 11.2.0-rc.2_typescript@4.0.5 fs-extra: 7.0.1 inquirer: 6.5.2 - rxjs: 6.5.5 + rxjs: 6.6.3 tmp: 0.0.33 tslib: 2.1.0 yargs: 15.4.1 @@ -2884,36 +2947,15 @@ packages: peerDependencies: typescript: '*' resolution: - integrity: sha512-OZGOdFdSHp+Sw/CbPeFBgxPAfq+9bX1iqrFoK0aJGEN05evLSVJvUR6+zr+IHXVWmy0Yf+bpxmsOw0X2VKXfKQ== - /@nrwl/tao/11.0.20: + integrity: sha512-N/b9QgBzPswYzRHI+QghsvLLHEzaUAo2CHV8s1KkVhqtFhFCzp2uKiMyKYkevG5CYqakCmHWMeZk0TBGEcx+gA== + /@nrwl/tao/11.2.0-rc.2: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 chalk: 4.1.0 fs-extra: 7.0.1 inquirer: 6.5.2 minimist: 1.2.5 rxjs: 6.6.3 - semver: 6.3.0 - strip-json-comments: 2.0.1 - tmp: 0.0.33 - tslib: 2.1.0 - yargs-parser: 20.0.0 - dev: true - hasBin: true - resolution: - integrity: sha512-S/jaeenZ0ueQZgz54AGhMtK1Obs6KTwsojfHdB+FiEve2ipBbKKeBZXXfeXlH2priH5ej5FhosCEV1DKqXLlUg== - /@nrwl/tao/11.1.1: - dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - chalk: 4.1.0 - fs-extra: 7.0.1 - inquirer: 6.5.2 - minimist: 1.2.5 - rxjs: 6.5.5 + rxjs-for-await: 0.0.2_rxjs@6.6.3 semver: 6.3.0 strip-json-comments: 2.0.1 tmp: 0.0.33 @@ -2921,14 +2963,13 @@ packages: yargs-parser: 20.0.0 hasBin: true resolution: - integrity: sha512-cSGCaOV0sHkZ+PkvJK2IILDD4IuIOegq8qOBKwC+kxvfDEBgB528L14CoQwmVkpq5IrGdCLi/zr2h6W5N/6RpA== - /@nrwl/workspace/11.1.1_prettier@2.1.2: + integrity: sha512-6z2uKY/stTUa76PMI+fLnlX67DAB278++U2GmIeqDN7NDkKU0iggMritOvj6m8Mt9WZ10iQ48nB5Ge2X397gjA== + /@nrwl/workspace/11.2.0-rc.2_prettier@2.1.2: dependencies: - '@angular-devkit/architect': 0.1100.6 - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 - '@nrwl/cli': 11.1.1 - '@nrwl/devkit': 11.1.1 + '@nrwl/cli': 11.2.0-rc.2 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/jest': 11.2.0-rc.2 + '@nrwl/linter': 11.2.0-rc.2 axios: 0.21.1 chalk: 4.1.0 cosmiconfig: 4.0.0 @@ -2943,7 +2984,7 @@ packages: opn: 5.5.0 prettier: 2.1.2 resolve: 1.17.0 - rxjs: 6.5.5 + rxjs: 6.6.3 semver: 6.3.0 strip-json-comments: 2.0.1 tmp: 0.0.33 @@ -2954,7 +2995,62 @@ packages: peerDependencies: prettier: ^2.0.4 resolution: - integrity: sha512-A3qrdHQQsGW3zmbcQnefrzm0CzHTNtkey04Fw8qWX+dSzjvLGkqc2jcYEdTnDrPMPYrTvgBT38WOdOAcuMIkwQ== + integrity: sha512-m92QjoWE3QSQL+X1XhCuRPqznbuITFlWs/j8Ran3YbPjsgffLBVcrbXXH25YOZxucAVSWvP5BeUXzOlTBKzjGA== + /@rollup/plugin-commonjs/17.0.0_rollup@2.38.0: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.38.0 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.1.6 + is-reference: 1.2.1 + magic-string: 0.25.7 + resolve: 1.19.0 + rollup: 2.38.0 + dev: true + engines: + node: '>= 8.0.0' + peerDependencies: + rollup: ^2.30.0 + resolution: + integrity: sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA== + /@rollup/plugin-json/4.1.0_rollup@2.38.0: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.38.0 + rollup: 2.38.0 + dev: true + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + resolution: + integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + /@rollup/plugin-node-resolve/11.1.0_rollup@2.38.0: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.38.0 + '@types/resolve': 1.17.1 + builtin-modules: 3.2.0 + deepmerge: 4.2.2 + is-module: 1.0.0 + resolve: 1.19.0 + rollup: 2.38.0 + dev: true + engines: + node: '>= 10.0.0' + peerDependencies: + rollup: ^1.20.0||^2.0.0 + resolution: + integrity: sha512-ouBBppRdWJKCllDXGzJ7ZIkYbaq+5TmyP0smt1vdJCFfoZhLi31vhpmjLhyo8lreHf4RoeSNllaWrvSqHpHRog== + /@rollup/pluginutils/3.1.0_rollup@2.38.0: + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.2.2 + rollup: 2.38.0 + dev: true + engines: + node: '>= 8.0.0' + peerDependencies: + rollup: ^1.20.0||^2.0.0 + resolution: + integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.3: dependencies: any-observable: 0.3.0 @@ -2972,21 +3068,21 @@ packages: optional: true resolution: integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== - /@schematics/angular/11.0.6: + /@schematics/angular/11.0.7: dependencies: - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 jsonc-parser: 2.3.1 engines: node: '>= 10.13.0' npm: '>= 6.11.0' yarn: '>= 1.13.0' resolution: - integrity: sha512-XUcpOrlcp55PBHrgpIVx69lnhDY6ro35BSRmqNmjXik56qcOkfvdki8vvyW9EsWvu9/sfBSsVDdparlbVois7w== - /@schematics/update/0.1100.6: + integrity: sha512-h8ZmHJvMcvre3rzaDBu1b5RxaaBe008kcniFNeks5nHTQRqDL/5Thg4YhIgH9VQ9Yf8U4atLjRJK5PG1OzmgDA== + /@schematics/update/0.1100.7: dependencies: - '@angular-devkit/core': 11.0.6 - '@angular-devkit/schematics': 11.0.6 + '@angular-devkit/core': 11.0.7 + '@angular-devkit/schematics': 11.0.7 '@yarnpkg/lockfile': 1.1.0 ini: 1.3.6 npm-package-arg: 8.1.0 @@ -2999,7 +3095,7 @@ packages: npm: '>= 6.11.0' yarn: '>= 1.13.0' resolution: - integrity: sha512-+B8n+k+zZ3VYOhjNBsLqzjp8O9ZdUWgdpf9L8XAA7mh/oPwufXpExyEc66uAS07imvUMmjz6i8E2eNWV/IjBJg== + integrity: sha512-DXxWr4FwzhhpzDLivpA/QgXrnBHLSL5EQHcLLRylg3TISJFGKEQGYMYPw5V2ZS43hPM2zoJI/Dkcoo/PHBmNYw== /@sinonjs/commons/1.8.2: dependencies: type-detect: 4.0.8 @@ -3041,16 +3137,24 @@ packages: dev: true resolution: integrity: sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + /@types/estree/0.0.39: + dev: true + resolution: + integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + /@types/estree/0.0.46: + dev: true + resolution: + integrity: sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== /@types/glob/7.1.3: dependencies: '@types/minimatch': 3.0.3 - '@types/node': 12.12.38 + '@types/node': 12.19.15 dev: true resolution: integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== /@types/graceful-fs/4.1.4: dependencies: - '@types/node': 12.12.38 + '@types/node': 12.19.15 dev: true resolution: integrity: sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== @@ -3074,6 +3178,13 @@ packages: '@types/istanbul-lib-report': 3.0.0 resolution: integrity: sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + /@types/jest/26.0.20: + dependencies: + jest-diff: 26.6.2 + pretty-format: 26.6.2 + dev: true + resolution: + integrity: sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== /@types/jest/26.0.8: dependencies: jest-diff: 25.5.0 @@ -3081,16 +3192,16 @@ packages: dev: true resolution: integrity: sha512-eo3VX9jGASSuv680D4VQ89UmuLZneNxv2MCZjfwlInav05zXVJTzfc//lavdV0GPwSxsXJTy2jALscB7Acqg0g== - /@types/json-schema/7.0.6: + /@types/json-schema/7.0.7: resolution: - integrity: sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + integrity: sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== /@types/json5/0.0.29: resolution: integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - /@types/luxon/1.25.0: + /@types/luxon/1.25.1: dev: true resolution: - integrity: sha512-iIJp2CP6C32gVqI08HIYnzqj55tlLnodIBMCcMf28q9ckqMfMzocCmIzd9JWI/ALLPMUiTkCu1JGv3FFtu6t3g== + integrity: sha512-enkMO4WJcbdkhK1eZrItF616buau02wtrSN+DDt9Qj9U23boSAXNJm0fMlgwpTDaRHq3S0D/SPIRbxy4YxBjiA== /@types/minimatch/3.0.3: dev: true resolution: @@ -3099,9 +3210,13 @@ packages: dev: true resolution: integrity: sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== - /@types/node/12.12.38: + /@types/node/12.12.33: + dev: true resolution: - integrity: sha512-75eLjX0pFuTcUXnnWmALMzzkYorjND0ezNEycaKesbUBg9eGZp4GHPuDmkRc4mQQvIpe29zrzATNRA6hkYqwmA== + integrity: sha512-KXxfbd6nOiC0rF/JV2F93nZEKecoKPJ+VQTwrApXHj9g5fyUmnIloflMT3w3m9wdCqNEJExGWFXLmimo21DLNA== + /@types/node/12.19.15: + resolution: + integrity: sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw== /@types/normalize-package-data/2.4.0: resolution: integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== @@ -3117,6 +3232,12 @@ packages: dev: true resolution: integrity: sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + /@types/resolve/1.17.1: + dependencies: + '@types/node': 12.19.15 + dev: true + resolution: + integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== /@types/sinonjs__fake-timers/6.0.2: dev: true resolution: @@ -3129,13 +3250,17 @@ packages: dev: true resolution: integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + /@types/stack-utils/1.0.1: + dev: true + resolution: + integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== /@types/stack-utils/2.0.0: dev: true resolution: integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== /@types/webpack-sources/0.1.8: dependencies: - '@types/node': 12.12.38 + '@types/node': 12.19.15 '@types/source-list-map': 0.1.2 source-map: 0.6.1 dev: true @@ -3144,6 +3269,12 @@ packages: /@types/yargs-parser/20.2.0: resolution: integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + /@types/yargs/13.0.11: + dependencies: + '@types/yargs-parser': 20.2.0 + dev: true + resolution: + integrity: sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== /@types/yargs/15.0.12: dependencies: '@types/yargs-parser': 20.2.0 @@ -3159,7 +3290,7 @@ packages: functional-red-black-tree: 1.0.1 regexpp: 3.1.0 semver: 7.3.4 - tsutils: 3.19.1_typescript@4.0.5 + tsutils: 3.20.0_typescript@4.0.5 typescript: 4.0.5 dev: true engines: @@ -3173,12 +3304,12 @@ packages: optional: true resolution: integrity: sha512-RqEcaHuEKnn3oPFislZ6TNzsBLqpZjN93G69SS+laav/I8w/iGMuMq97P0D2/2/kW4SCebHggqhbcCfbDaaX+g== - /@typescript-eslint/experimental-utils/4.13.0_eslint@7.10.0+typescript@4.0.5: + /@typescript-eslint/experimental-utils/4.14.1_eslint@7.10.0+typescript@4.0.5: dependencies: - '@types/json-schema': 7.0.6 - '@typescript-eslint/scope-manager': 4.13.0 - '@typescript-eslint/types': 4.13.0 - '@typescript-eslint/typescript-estree': 4.13.0_typescript@4.0.5 + '@types/json-schema': 7.0.7 + '@typescript-eslint/scope-manager': 4.14.1 + '@typescript-eslint/types': 4.14.1 + '@typescript-eslint/typescript-estree': 4.14.1_typescript@4.0.5 eslint: 7.10.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 @@ -3189,10 +3320,10 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw== + integrity: sha512-2CuHWOJwvpw0LofbyG5gvYjEyoJeSvVH2PnfUQSn0KQr4v8Dql2pr43ohmx4fdPQ/eVoTSFjTi/bsGEXl/zUUQ== /@typescript-eslint/experimental-utils/4.3.0_eslint@7.10.0+typescript@4.0.5: dependencies: - '@types/json-schema': 7.0.6 + '@types/json-schema': 7.0.7 '@typescript-eslint/scope-manager': 4.3.0 '@typescript-eslint/types': 4.3.0 '@typescript-eslint/typescript-estree': 4.3.0_typescript@4.0.5 @@ -3226,15 +3357,15 @@ packages: optional: true resolution: integrity: sha512-JyfRnd72qRuUwItDZ00JNowsSlpQGeKfl9jxwO0FHK1qQ7FbYdoy5S7P+5wh1ISkT2QyAvr2pc9dAemDxzt75g== - /@typescript-eslint/scope-manager/4.13.0: + /@typescript-eslint/scope-manager/4.14.1: dependencies: - '@typescript-eslint/types': 4.13.0 - '@typescript-eslint/visitor-keys': 4.13.0 + '@typescript-eslint/types': 4.14.1 + '@typescript-eslint/visitor-keys': 4.14.1 dev: true engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ== + integrity: sha512-F4bjJcSqXqHnC9JGUlnqSa3fC2YH5zTtmACS1Hk+WX/nFB0guuynVK5ev35D4XZbdKjulXBAQMyRr216kmxghw== /@typescript-eslint/scope-manager/4.3.0: dependencies: '@typescript-eslint/types': 4.3.0 @@ -3244,28 +3375,28 @@ packages: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: integrity: sha512-cTeyP5SCNE8QBRfc+Lgh4Xpzje46kNUhXYfc3pQWmJif92sjrFuHT9hH4rtOkDTo/si9Klw53yIr+djqGZS1ig== - /@typescript-eslint/types/4.13.0: + /@typescript-eslint/types/4.14.1: dev: true engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== + integrity: sha512-SkhzHdI/AllAgQSxXM89XwS1Tkic7csPdndUuTKabEwRcEfR8uQ/iPA3Dgio1rqsV3jtqZhY0QQni8rLswJM2w== /@typescript-eslint/types/4.3.0: dev: true engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: integrity: sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw== - /@typescript-eslint/typescript-estree/4.13.0_typescript@4.0.5: + /@typescript-eslint/typescript-estree/4.14.1_typescript@4.0.5: dependencies: - '@typescript-eslint/types': 4.13.0 - '@typescript-eslint/visitor-keys': 4.13.0 + '@typescript-eslint/types': 4.14.1 + '@typescript-eslint/visitor-keys': 4.14.1 debug: 4.3.1 globby: 11.0.2 is-glob: 4.0.1 lodash: 4.17.20 semver: 7.3.4 - tsutils: 3.19.1_typescript@4.0.5 + tsutils: 3.20.0_typescript@4.0.5 typescript: 4.0.5 dev: true engines: @@ -3276,7 +3407,7 @@ packages: typescript: optional: true resolution: - integrity: sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg== + integrity: sha512-M8+7MbzKC1PvJIA8kR2sSBnex8bsR5auatLCnVlNTJczmJgqRn8M+sAlQfkEq7M4IY3WmaNJ+LJjPVRrREVSHQ== /@typescript-eslint/typescript-estree/4.3.0_typescript@4.0.5: dependencies: '@typescript-eslint/types': 4.3.0 @@ -3286,7 +3417,7 @@ packages: is-glob: 4.0.1 lodash: 4.17.20 semver: 7.3.4 - tsutils: 3.19.1_typescript@4.0.5 + tsutils: 3.20.0_typescript@4.0.5 typescript: 4.0.5 dev: true engines: @@ -3298,15 +3429,15 @@ packages: optional: true resolution: integrity: sha512-ZAI7xjkl+oFdLV/COEz2tAbQbR3XfgqHEGy0rlUXzfGQic6EBCR4s2+WS3cmTPG69aaZckEucBoTxW9PhzHxxw== - /@typescript-eslint/visitor-keys/4.13.0: + /@typescript-eslint/visitor-keys/4.14.1: dependencies: - '@typescript-eslint/types': 4.13.0 + '@typescript-eslint/types': 4.14.1 eslint-visitor-keys: 2.0.0 dev: true engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g== + integrity: sha512-TAblbDXOI7bd0C/9PE1G+AFo7R5uc+ty1ArDoxmrC1ah61Hn6shURKy7gLdRb1qKJmjHkqu5Oq+e4Kt0jwf1IA== /@typescript-eslint/visitor-keys/4.3.0: dependencies: '@typescript-eslint/types': 4.3.0 @@ -3604,6 +3735,13 @@ packages: node: '>= 0.6' resolution: integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + /acorn-globals/4.3.4: + dependencies: + acorn: 6.4.2 + acorn-walk: 6.2.0 + dev: true + resolution: + integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== /acorn-globals/6.0.0: dependencies: acorn: 7.4.1 @@ -3619,12 +3757,25 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 resolution: integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + /acorn-walk/6.2.0: + dev: true + engines: + node: '>=0.4.0' + resolution: + integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== /acorn-walk/7.2.0: dev: true engines: node: '>=0.4.0' resolution: integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + /acorn/5.7.4: + dev: true + engines: + node: '>=0.4.0' + hasBin: true + resolution: + integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== /acorn/6.4.2: dev: true engines: @@ -3704,6 +3855,15 @@ packages: uri-js: 4.4.1 resolution: integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + /ajv/7.0.3: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + resolution: + integrity: sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== /all-contributors-cli/6.19.0: dependencies: '@babel/runtime': 7.12.5 @@ -3864,6 +4024,10 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + /array-equal/1.0.0: + dev: true + resolution: + integrity: sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= /array-flatten/1.1.1: dev: true resolution: @@ -3880,7 +4044,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.0-next.1 + es-abstract: 1.18.0-next.2 get-intrinsic: 1.0.2 is-string: 1.0.5 dev: true @@ -3917,7 +4081,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.0-next.1 + es-abstract: 1.18.0-next.2 dev: true engines: node: '>= 0.4' @@ -4014,11 +4178,11 @@ packages: /autoprefixer/9.8.6: dependencies: browserslist: 4.16.1 - caniuse-lite: 1.0.30001176 + caniuse-lite: 1.0.30001179 colorette: 1.2.1 normalize-range: 0.1.2 num2fraction: 1.2.2 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 4.1.0 dev: true hasBin: true @@ -4049,6 +4213,23 @@ packages: js-tokens: 3.0.2 resolution: integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + /babel-jest/24.9.0_@babel+core@7.12.10: + dependencies: + '@babel/core': 7.12.10 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/babel__core': 7.1.12 + babel-plugin-istanbul: 5.2.0 + babel-preset-jest: 24.9.0_@babel+core@7.12.10 + chalk: 2.4.2 + slash: 2.0.0 + dev: true + engines: + node: '>= 6' + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== /babel-jest/26.6.3_@babel+core@7.12.10: dependencies: '@babel/core': 7.12.10 @@ -4104,6 +4285,17 @@ packages: object.assign: 4.1.2 resolution: integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + /babel-plugin-istanbul/5.2.0: + dependencies: + '@babel/helper-plugin-utils': 7.10.4 + find-up: 3.0.0 + istanbul-lib-instrument: 3.3.0 + test-exclude: 5.2.3 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== /babel-plugin-istanbul/6.0.0: dependencies: '@babel/helper-plugin-utils': 7.10.4 @@ -4116,6 +4308,14 @@ packages: node: '>=8' resolution: integrity: sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + /babel-plugin-jest-hoist/24.9.0: + dependencies: + '@types/babel__traverse': 7.11.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== /babel-plugin-jest-hoist/26.6.2: dependencies: '@babel/template': 7.12.7 @@ -4147,6 +4347,18 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + /babel-preset-jest/24.9.0_@babel+core@7.12.10: + dependencies: + '@babel/core': 7.12.10 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.10 + babel-plugin-jest-hoist: 24.9.0 + dev: true + engines: + node: '>= 6' + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== /babel-preset-jest/26.6.2_@babel+core@7.12.10: dependencies: '@babel/core': 7.12.10 @@ -4210,6 +4422,14 @@ packages: optional: true resolution: integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + /bl/4.0.3: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + resolution: + integrity: sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== /blob-util/2.0.2: dev: true resolution: @@ -4298,6 +4518,12 @@ packages: dev: true resolution: integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + /browser-resolve/1.11.3: + dependencies: + resolve: 1.1.7 + dev: true + resolution: + integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== /browserify-aes/1.2.0: dependencies: buffer-xor: 1.0.3 @@ -4355,11 +4581,11 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/4.16.1: dependencies: - caniuse-lite: 1.0.30001176 + caniuse-lite: 1.0.30001179 colorette: 1.2.1 - electron-to-chromium: 1.3.637 + electron-to-chromium: 1.3.645 escalade: 3.1.1 - node-releases: 1.1.69 + node-releases: 1.1.70 engines: node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 hasBin: true @@ -4403,8 +4629,21 @@ packages: dev: true resolution: integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - /builtin-status-codes/3.0.0: - dev: true + /buffer/5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + resolution: + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + /builtin-modules/3.2.0: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + /builtin-status-codes/3.0.0: + dev: true resolution: integrity: sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= /builtins/1.0.3: @@ -4445,7 +4684,7 @@ packages: integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== /cacache/15.0.5: dependencies: - '@npmcli/move-file': 1.0.1 + '@npmcli/move-file': 1.1.0 chownr: 2.0.0 fs-minipass: 2.1.0 glob: 7.1.6 @@ -4547,15 +4786,15 @@ packages: /caniuse-api/3.0.0: dependencies: browserslist: 4.16.1 - caniuse-lite: 1.0.30001176 + caniuse-lite: 1.0.30001179 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true resolution: integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - /caniuse-lite/1.0.30001176: + /caniuse-lite/1.0.30001179: resolution: - integrity: sha512-VWdkYmqdkDLRe0lvfJlZQ43rnjKqIGKHWhWWRbkqMsJIUaYDNf/K/sdZZcVO6YKQklubokdkJY+ujArsuJ5cag== + integrity: sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA== /canonical-path/1.0.0: dev: true resolution: @@ -4637,15 +4876,13 @@ packages: path-is-absolute: 1.0.1 readdirp: 2.2.1 upath: 1.2.0 - deprecated: - Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less - dependencies. + deprecated: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. dev: true optionalDependencies: fsevents: 1.2.13 resolution: integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - /chokidar/3.5.0: + /chokidar/3.5.1: dependencies: anymatch: 3.1.1 braces: 3.0.2 @@ -4659,7 +4896,7 @@ packages: optionalDependencies: fsevents: 2.3.1 resolution: - integrity: sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== + integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== /chownr/1.1.4: dev: true resolution: @@ -4933,12 +5170,18 @@ packages: node: '>= 6' resolution: integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - /comment-parser/0.7.6: + /commander/7.0.0: dev: true engines: - node: '>= 6.0.0' + node: '>= 10' + resolution: + integrity: sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== + /comment-parser/1.1.1: + dev: true + engines: + node: '>= 10.0.0' resolution: - integrity: sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== + integrity: sha512-vue7cRi1ZO5/72FJ+wZ5+siTSBlUv3ZksTk8bWD2IkaA6obitzMZP3yI65azTJLckwmi8lxfPP5Sd9oGuZ8e2g== /common-tags/1.8.0: dev: true engines: @@ -5095,6 +5338,12 @@ packages: node: '>= 0.6' resolution: integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + /copy-anything/2.0.1: + dependencies: + is-what: 3.12.0 + dev: true + resolution: + integrity: sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g== /copy-concurrently/1.0.5: dependencies: aproba: 1.2.0 @@ -5114,7 +5363,7 @@ packages: /copy-webpack-plugin/6.0.3_webpack@4.42.0: dependencies: cacache: 15.0.5 - fast-glob: 3.2.4 + fast-glob: 3.2.5 find-cache-dir: 3.3.1 glob-parent: 5.1.1 globby: 11.0.2 @@ -5135,7 +5384,7 @@ packages: /copy-webpack-plugin/6.2.1_webpack@4.44.2: dependencies: cacache: 15.0.5 - fast-glob: 3.2.4 + fast-glob: 3.2.5 find-cache-dir: 3.3.1 glob-parent: 5.1.1 globby: 11.0.2 @@ -5153,27 +5402,27 @@ packages: webpack: ^4.37.0 || ^5.0.0 resolution: integrity: sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q== - /core-js-compat/3.8.2: + /core-js-compat/3.8.3: dependencies: browserslist: 4.16.1 semver: 7.0.0 resolution: - integrity: sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== - /core-js-pure/3.8.2: + integrity: sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog== + /core-js-pure/3.8.3: dev: true requiresBuild: true resolution: - integrity: sha512-v6zfIQqL/pzTVAbZvYUozsxNfxcFb6Ks3ZfEbuneJl3FW9Jb8F6vLWB6f+qTmAu72msUdyb84V8d/yBFf7FNnw== + integrity: sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA== /core-js/3.6.5: dev: true requiresBuild: true resolution: integrity: sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - /core-js/3.8.2: + /core-js/3.8.3: dev: true requiresBuild: true resolution: - integrity: sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A== + integrity: sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q== /core-util-is/1.0.2: resolution: integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -5203,7 +5452,7 @@ packages: dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 - parse-json: 5.1.0 + parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.0 dev: true @@ -5287,7 +5536,7 @@ packages: integrity: sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= /css-declaration-sorter/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 timsort: 0.3.0 dev: true engines: @@ -5300,14 +5549,14 @@ packages: cssesc: 3.0.0 icss-utils: 4.1.1 loader-utils: 2.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-modules-extract-imports: 2.0.0 postcss-modules-local-by-default: 3.0.3 postcss-modules-scope: 2.2.0 postcss-modules-values: 3.0.0 postcss-value-parser: 4.1.0 schema-utils: 2.7.1 - semver: 7.3.2 + semver: 7.3.4 webpack: 4.44.2 dev: true engines: @@ -5379,7 +5628,7 @@ packages: dependencies: css-declaration-sorter: 4.0.1 cssnano-util-raw-cache: 4.0.1 - postcss: 7.0.32 + postcss: 7.0.35 postcss-calc: 7.0.5 postcss-colormin: 4.0.3 postcss-convert-values: 4.0.1 @@ -5426,7 +5675,7 @@ packages: integrity: sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= /cssnano-util-raw-cache/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -5443,7 +5692,7 @@ packages: cosmiconfig: 5.2.1 cssnano-preset-default: 4.0.7 is-resolvable: 1.1.0 - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -5465,6 +5714,12 @@ packages: dev: true resolution: integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + /cssstyle/1.4.0: + dependencies: + cssom: 0.3.8 + dev: true + resolution: + integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== /cssstyle/2.3.0: dependencies: cssom: 0.3.8 @@ -5473,6 +5728,10 @@ packages: node: '>=8' resolution: integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + /cuint/0.2.2: + dev: true + resolution: + integrity: sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= /cyclist/1.0.1: dev: true resolution: @@ -5498,7 +5757,7 @@ packages: execa: 4.1.0 executable: 4.1.1 extract-zip: 1.7.0 - fs-extra: 9.0.1 + fs-extra: 9.1.0 getos: 3.2.1 is-ci: 2.0.0 is-installed-globally: 0.3.2 @@ -5545,6 +5804,14 @@ packages: node: '>=0.10' resolution: integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + /data-urls/1.1.0: + dependencies: + abab: 2.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 7.1.0 + dev: true + resolution: + integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== /data-urls/2.0.0: dependencies: abab: 2.0.5 @@ -5579,21 +5846,13 @@ packages: /debug/4.1.1: dependencies: ms: 2.1.3 - deprecated: - Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos - regression when used in a Node.js environment. It is recommended you - upgrade to 3.2.7 or 4.3.1. - (https://github.com/visionmedia/debug/issues/797) + deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) resolution: integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== /debug/4.2.0: dependencies: ms: 2.1.2 - deprecated: - Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos - regression when used in a Node.js environment. It is recommended you - upgrade to 3.2.7 or 4.3.1. - (https://github.com/visionmedia/debug/issues/797) + deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) dev: true engines: node: '>=6.0' @@ -5679,7 +5938,7 @@ packages: is-regex: 1.1.1 object-is: 1.1.4 object-keys: 1.1.1 - regexp.prototype.flags: 1.3.0 + regexp.prototype.flags: 1.3.1 dev: true resolution: integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== @@ -5779,6 +6038,12 @@ packages: dev: true resolution: integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + /detect-newline/2.1.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= /detect-newline/3.1.0: dev: true engines: @@ -5793,6 +6058,12 @@ packages: dev: true resolution: integrity: sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= + /diff-sequences/24.9.0: + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== /diff-sequences/25.2.6: dev: true engines: @@ -5864,7 +6135,7 @@ packages: /dom-serializer/0.2.2: dependencies: domelementtype: 2.1.0 - entities: 2.1.0 + entities: 2.2.0 dev: true resolution: integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== @@ -5883,6 +6154,12 @@ packages: dev: true resolution: integrity: sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + /domexception/1.0.1: + dependencies: + webidl-conversions: 4.0.2 + dev: true + resolution: + integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== /domexception/2.0.1: dependencies: webidl-conversions: 5.0.0 @@ -5940,9 +6217,9 @@ packages: hasBin: true resolution: integrity: sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== - /electron-to-chromium/1.3.637: + /electron-to-chromium/1.3.645: resolution: - integrity: sha512-924WXYMYquYybc+7pNApGlhY2RWg3MY3he4BrZ5BUmM2n1MGBsrS+PZxrlo6UAsWuNl4NE66fqFdwsWkBUGgkA== + integrity: sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g== /elegant-spinner/1.0.1: dev: true engines: @@ -6030,10 +6307,10 @@ packages: node: '>=8.6' resolution: integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - /entities/2.1.0: + /entities/2.2.0: dev: true resolution: - integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== /err-code/1.1.2: dev: true resolution: @@ -6067,10 +6344,12 @@ packages: node: '>= 0.4' resolution: integrity: sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - /es-abstract/1.18.0-next.1: + /es-abstract/1.18.0-next.2: dependencies: + call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 + get-intrinsic: 1.0.2 has: 1.0.3 has-symbols: 1.0.1 is-callable: 1.2.2 @@ -6085,7 +6364,7 @@ packages: engines: node: '>= 0.4' resolution: - integrity: sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + integrity: sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== /es-to-primitive/1.2.1: dependencies: is-callable: 1.2.2 @@ -6221,9 +6500,9 @@ packages: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 resolution: integrity: sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== - /eslint-plugin-jsdoc/30.7.13_eslint@7.10.0: + /eslint-plugin-jsdoc/31.3.3_eslint@7.10.0: dependencies: - comment-parser: 0.7.6 + comment-parser: 1.1.1 debug: 4.3.1 eslint: 7.10.0 jsdoctypeparser: 9.0.0 @@ -6237,7 +6516,7 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 resolution: - integrity: sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ== + integrity: sha512-7kmYu7qQpwe4gCLTBGSpwkiCzmsDlQui7HNlEArUE6Jbqb6ddWpn4Q4X26bOpcByRsyAwm+0xwZtWmJVSue+kw== /eslint-plugin-prefer-arrow/1.2.2_eslint@7.10.0: dependencies: eslint: 7.10.0 @@ -6374,6 +6653,14 @@ packages: node: '>=4.0' resolution: integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + /estree-walker/1.0.1: + dev: true + resolution: + integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + /estree-walker/2.0.2: + dev: true + resolution: + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== /esutils/2.0.3: engines: node: '>=0.10.0' @@ -6481,6 +6768,19 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + /expect/24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-styles: 3.2.1 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-regex-util: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== /expect/26.6.2: dependencies: '@jest/types': 26.6.2 @@ -6598,7 +6898,7 @@ packages: /fast-deep-equal/3.1.3: resolution: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - /fast-glob/3.2.4: + /fast-glob/3.2.5: dependencies: '@nodelib/fs.stat': 2.0.4 '@nodelib/fs.walk': 1.2.6 @@ -6610,7 +6910,7 @@ packages: engines: node: '>=8' resolution: - integrity: sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + integrity: sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== /fast-json-stable-stringify/2.1.0: resolution: integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -6626,7 +6926,7 @@ packages: integrity: sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== /faye-websocket/0.10.0: dependencies: - websocket-driver: 0.6.5 + websocket-driver: 0.7.4 dev: true engines: node: '>=0.4.0' @@ -6760,6 +7060,10 @@ packages: node: '>=8' resolution: integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + /find-parent-dir/0.3.0: + dev: true + resolution: + integrity: sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= /find-up/2.1.0: dependencies: locate-path: 2.0.0 @@ -6851,6 +7155,12 @@ packages: optional: true resolution: integrity: sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + /for-each/0.3.3: + dependencies: + is-callable: 1.2.2 + dev: true + resolution: + integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== /for-in/1.0.2: engines: node: '>=0.10.0' @@ -6864,7 +7174,7 @@ packages: dependencies: babel-code-frame: 6.26.0 chalk: 2.4.2 - chokidar: 3.5.0 + chokidar: 3.5.1 micromatch: 3.1.10 minimatch: 3.0.4 semver: 5.7.1 @@ -6928,17 +7238,17 @@ packages: node: '>=6 <7 || >=8' resolution: integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - /fs-extra/9.0.1: + /fs-extra/9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.4 jsonfile: 6.1.0 - universalify: 1.0.0 + universalify: 2.0.0 dev: true engines: node: '>=10' resolution: - integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== /fs-minipass/1.2.7: dependencies: minipass: 2.9.0 @@ -6969,9 +7279,7 @@ packages: dependencies: bindings: 1.5.0 nan: 2.14.2 - deprecated: - fsevents 1 will break on node v14+ and could be using insecure binaries. - Upgrade to fsevents 2. + deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. dev: true engines: node: '>= 4.0' @@ -7169,7 +7477,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.4 + fast-glob: 3.2.5 ignore: 5.1.8 merge2: 1.4.1 slash: 3.0.0 @@ -7181,7 +7489,7 @@ packages: /globby/6.1.0: dependencies: array-union: 1.0.2 - glob: 7.1.4 + glob: 7.1.6 object-assign: 4.1.1 pify: 2.3.0 pinkie-promise: 2.0.1 @@ -7345,6 +7653,12 @@ packages: dev: true resolution: integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + /html-encoding-sniffer/1.0.2: + dependencies: + whatwg-encoding: 1.0.5 + dev: true + resolution: + integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== /html-encoding-sniffer/2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -7478,7 +7792,7 @@ packages: dev: true resolution: integrity: sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - /husky/4.3.7: + /husky/4.3.8: dependencies: chalk: 4.1.0 ci-info: 2.0.0 @@ -7496,7 +7810,7 @@ packages: hasBin: true requiresBuild: true resolution: - integrity: sha512-0fQlcCDq/xypoyYSJvEuzbDPHFf8ZF9IXKJxlrnvxABTSzK1VPT2RKYQKrcgJ+YD39swgoB6sbzywUqFxUiqjw== + integrity: sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== /iconv-lite/0.4.24: dependencies: safer-buffer: 2.1.2 @@ -7514,7 +7828,7 @@ packages: integrity: sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== /icss-utils/4.1.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>= 6' @@ -7541,7 +7855,6 @@ packages: resolution: integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== /ignore/5.1.8: - dev: true engines: node: '>= 4' resolution: @@ -7647,6 +7960,12 @@ packages: dev: true resolution: integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + /injection-js/2.4.0: + dependencies: + tslib: 2.1.0 + dev: true + resolution: + integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA== /inquirer/6.5.2: dependencies: ansi-escapes: 3.2.0 @@ -7695,6 +8014,12 @@ packages: node: '>=6' resolution: integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + /invariant/2.2.4: + dependencies: + loose-envify: 1.4.0 + dev: true + resolution: + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== /ip-regex/2.1.0: dev: true engines: @@ -7920,6 +8245,10 @@ packages: node: '>=8' resolution: integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + /is-module/1.0.0: + dev: true + resolution: + integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= /is-negative-zero/2.0.1: dev: true engines: @@ -8007,6 +8336,12 @@ packages: dev: true resolution: integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + /is-reference/1.2.1: + dependencies: + '@types/estree': 0.0.46 + dev: true + resolution: + integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== /is-regex/1.1.1: dependencies: has-symbols: 1.0.1 @@ -8071,6 +8406,10 @@ packages: dev: true resolution: integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + /is-what/3.12.0: + dev: true + resolution: + integrity: sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw== /is-windows/1.0.2: engines: node: '>=0.10.0' @@ -8113,15 +8452,35 @@ packages: dev: true resolution: integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + /istanbul-lib-coverage/2.0.5: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== /istanbul-lib-coverage/3.0.0: dev: true engines: node: '>=8' resolution: integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + /istanbul-lib-instrument/3.3.0: + dependencies: + '@babel/generator': 7.12.11 + '@babel/parser': 7.12.11 + '@babel/template': 7.12.7 + '@babel/traverse': 7.12.12 + '@babel/types': 7.12.12 + istanbul-lib-coverage: 2.0.5 + semver: 6.3.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== /istanbul-lib-instrument/4.0.3: dependencies: - '@babel/core': 7.12.3 + '@babel/core': 7.12.10 '@istanbuljs/schema': 0.1.2 istanbul-lib-coverage: 3.0.0 semver: 6.3.0 @@ -8168,10 +8527,10 @@ packages: hasBin: true resolution: integrity: sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - /jasmine-marbles/0.6.0_rxjs@6.5.5: + /jasmine-marbles/0.6.0_rxjs@6.6.3: dependencies: lodash: 4.17.20 - rxjs: 6.5.5 + rxjs: 6.6.3 dev: false peerDependencies: rxjs: ^6.4.0 @@ -8210,6 +8569,30 @@ packages: ts-node: '*' resolution: integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + /jest-config/24.9.0: + dependencies: + '@babel/core': 7.12.10 + '@jest/test-sequencer': 24.9.0 + '@jest/types': 24.9.0 + babel-jest: 24.9.0_@babel+core@7.12.10 + chalk: 2.4.2 + glob: 7.1.6 + jest-environment-jsdom: 24.9.0 + jest-environment-node: 24.9.0 + jest-get-type: 24.9.0 + jest-jasmine2: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + micromatch: 3.1.10 + pretty-format: 24.9.0 + realpath-native: 1.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== /jest-config/26.6.3_ts-node@9.1.1: dependencies: '@babel/core': 7.12.10 @@ -8241,6 +8624,17 @@ packages: optional: true resolution: integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + /jest-diff/24.9.0: + dependencies: + chalk: 2.4.2 + diff-sequences: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== /jest-diff/25.5.0: dependencies: chalk: 3.0.0 @@ -8263,6 +8657,14 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + /jest-docblock/24.9.0: + dependencies: + detect-newline: 2.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== /jest-docblock/26.0.0: dependencies: detect-newline: 3.1.0 @@ -8271,6 +8673,18 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + /jest-each/24.9.0: + dependencies: + '@jest/types': 24.9.0 + chalk: 2.4.2 + jest-get-type: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== /jest-each/26.6.2: dependencies: '@jest/types': 26.6.2 @@ -8283,12 +8697,25 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + /jest-environment-jsdom/24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + jsdom: 11.12.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== /jest-environment-jsdom/26.6.2: dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.4.0 @@ -8297,12 +8724,24 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + /jest-environment-node/24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== /jest-environment-node/26.6.2: dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 jest-mock: 26.6.2 jest-util: 26.6.2 dev: true @@ -8310,6 +8749,12 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + /jest-get-type/24.9.0: + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== /jest-get-type/25.2.6: dev: true engines: @@ -8322,11 +8767,31 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + /jest-haste-map/24.9.0: + dependencies: + '@jest/types': 24.9.0 + anymatch: 2.0.0 + fb-watchman: 2.0.1 + graceful-fs: 4.2.4 + invariant: 2.2.4 + jest-serializer: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + micromatch: 3.1.10 + sane: 4.1.0 + walker: 1.0.7 + dev: true + engines: + node: '>= 6' + optionalDependencies: + fsevents: 1.2.13 + resolution: + integrity: sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== /jest-haste-map/26.6.2: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.4 - '@types/node': 12.12.38 + '@types/node': 12.19.15 anymatch: 3.1.1 fb-watchman: 2.0.1 graceful-fs: 4.2.4 @@ -8344,6 +8809,29 @@ packages: fsevents: 2.3.1 resolution: integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + /jest-jasmine2/24.9.0: + dependencies: + '@babel/traverse': 7.12.12 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + co: 4.6.0 + expect: 24.9.0 + is-generator-fn: 2.1.0 + jest-each: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-runtime: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + throat: 4.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== /jest-jasmine2/26.6.3_ts-node@9.1.1: dependencies: '@babel/traverse': 7.12.12 @@ -8351,7 +8839,7 @@ packages: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 chalk: 4.1.0 co: 4.6.0 expect: 26.6.2 @@ -8371,6 +8859,15 @@ packages: ts-node: '*' resolution: integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + /jest-leak-detector/24.9.0: + dependencies: + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== /jest-leak-detector/26.6.2: dependencies: jest-get-type: 26.3.0 @@ -8380,6 +8877,17 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + /jest-matcher-utils/24.9.0: + dependencies: + chalk: 2.4.2 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== /jest-matcher-utils/26.6.2: dependencies: chalk: 4.1.0 @@ -8391,6 +8899,21 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + /jest-message-util/24.9.0: + dependencies: + '@babel/code-frame': 7.12.11 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + '@types/stack-utils': 1.0.1 + chalk: 2.4.2 + micromatch: 3.1.10 + slash: 2.0.0 + stack-utils: 1.0.4 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== /jest-message-util/26.6.2: dependencies: '@babel/code-frame': 7.12.11 @@ -8407,15 +8930,36 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + /jest-mock/24.9.0: + dependencies: + '@jest/types': 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== /jest-mock/26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 dev: true engines: node: '>= 10.14.2' resolution: integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + /jest-pnp-resolver/1.2.2_jest-resolve@24.9.0: + dependencies: + jest-resolve: 24.9.0 + dev: true + engines: + node: '>=6' + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + resolution: + integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== /jest-pnp-resolver/1.2.2_jest-resolve@26.6.2: dependencies: jest-resolve: 26.6.2 @@ -8428,9 +8972,9 @@ packages: optional: true resolution: integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - /jest-preset-angular/8.3.1_c29faa133a6a4b4ab5c55a1fa06c50f9: + /jest-preset-angular/8.3.2_c29faa133a6a4b4ab5c55a1fa06c50f9: dependencies: - '@angular/core': 11.0.9_rxjs@6.5.5+zone.js@0.10.3 + '@angular/core': 11.0.9_rxjs@6.6.3+zone.js@0.11.3 '@angular/platform-browser-dynamic': 11.0.9_8383343813cdfa803f2f916e7857b4c5 jest: 26.2.2_ts-node@9.1.1 pretty-format: 26.6.2 @@ -8444,7 +8988,13 @@ packages: jest: ^26.0.0 typescript: '*' resolution: - integrity: sha512-WhQm+0tXzikkvIF35XErV87DqYbieZI0R0MIGgn7VE/DDhdbXFDmYQxFZ7w4qcA0cGLLvSMTBbIsUtHeE/rFxQ== + integrity: sha512-mdETK9E5tkCJPnPzB7NLXDB7CULbUEwcrA7eKU7WdR0u7ZIJqP0pvQxK5Cc70KBsOEaiwJK6LSGJm7aeqjSYYA== + /jest-regex-util/24.9.0: + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== /jest-regex-util/26.0.0: dev: true engines: @@ -8461,6 +9011,18 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + /jest-resolve/24.9.0: + dependencies: + '@jest/types': 24.9.0 + browser-resolve: 1.11.3 + chalk: 2.4.2 + jest-pnp-resolver: 1.2.2_jest-resolve@24.9.0 + realpath-native: 1.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== /jest-resolve/26.6.2: dependencies: '@jest/types': 26.6.2 @@ -8475,13 +9037,39 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + /jest-runner/24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + graceful-fs: 4.2.4 + jest-config: 24.9.0 + jest-docblock: 24.9.0 + jest-haste-map: 24.9.0 + jest-jasmine2: 24.9.0 + jest-leak-detector: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + jest-runtime: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + source-map-support: 0.5.19 + throat: 4.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== /jest-runner/26.6.3_ts-node@9.1.1: dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 chalk: 4.1.0 emittery: 0.7.2 exit: 0.1.2 @@ -8504,6 +9092,37 @@ packages: ts-node: '*' resolution: integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + /jest-runtime/24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/yargs': 13.0.11 + chalk: 2.4.2 + exit: 0.1.2 + glob: 7.1.6 + graceful-fs: 4.2.4 + jest-config: 24.9.0 + jest-haste-map: 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + realpath-native: 1.1.0 + slash: 2.0.0 + strip-bom: 3.0.0 + yargs: 13.3.2 + dev: true + engines: + node: '>= 6' + hasBin: true + resolution: + integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== /jest-runtime/26.6.3_ts-node@9.1.1: dependencies: '@jest/console': 26.6.2 @@ -8541,15 +9160,47 @@ packages: ts-node: '*' resolution: integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + /jest-serial-runner/1.1.0: + dependencies: + jest-runner: 24.9.0 + dev: true + resolution: + integrity: sha512-QSCMVZMYPAB8ALys43sxgVt4R6slizz7wj2rbCQPvczMh/AOImKeRil6T0dqaXQUTT9UXYzq00zb1bdK5uGEVQ== + /jest-serializer/24.9.0: + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== /jest-serializer/26.6.2: dependencies: - '@types/node': 12.12.38 + '@types/node': 12.19.15 graceful-fs: 4.2.4 dev: true engines: node: '>= 10.14.2' resolution: integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + /jest-snapshot/24.9.0: + dependencies: + '@babel/types': 7.12.12 + '@jest/types': 24.9.0 + chalk: 2.4.2 + expect: 24.9.0 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + mkdirp: 0.5.5 + natural-compare: 1.4.0 + pretty-format: 24.9.0 + semver: 6.3.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== /jest-snapshot/26.6.2: dependencies: '@babel/types': 7.12.12 @@ -8573,10 +9224,29 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + /jest-util/24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + callsites: 3.1.0 + chalk: 2.4.2 + graceful-fs: 4.2.4 + is-ci: 2.0.0 + mkdirp: 0.5.5 + slash: 2.0.0 + source-map: 0.6.1 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== /jest-util/26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 chalk: 4.1.0 graceful-fs: 4.2.4 is-ci: 2.0.0 @@ -8585,6 +9255,19 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + /jest-validate/24.9.0: + dependencies: + '@jest/types': 24.9.0 + camelcase: 5.3.1 + chalk: 2.4.2 + jest-get-type: 24.9.0 + leven: 3.1.0 + pretty-format: 24.9.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== /jest-validate/26.6.2: dependencies: '@jest/types': 26.6.2 @@ -8602,7 +9285,7 @@ packages: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 12.12.38 + '@types/node': 12.19.15 ansi-escapes: 4.3.1 chalk: 4.1.0 jest-util: 26.6.2 @@ -8612,9 +9295,18 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + /jest-worker/24.9.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== /jest-worker/26.5.0: dependencies: - '@types/node': 12.12.38 + '@types/node': 12.19.15 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -8624,7 +9316,7 @@ packages: integrity: sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== /jest-worker/26.6.2: dependencies: - '@types/node': 12.12.38 + '@types/node': 12.19.15 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -8670,6 +9362,37 @@ packages: hasBin: true resolution: integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== + /jsdom/11.12.0: + dependencies: + abab: 2.0.5 + acorn: 5.7.4 + acorn-globals: 4.3.4 + array-equal: 1.0.0 + cssom: 0.3.8 + cssstyle: 1.4.0 + data-urls: 1.1.0 + domexception: 1.0.1 + escodegen: 1.14.3 + html-encoding-sniffer: 1.0.2 + left-pad: 1.3.0 + nwsapi: 2.2.0 + parse5: 4.0.0 + pn: 1.1.0 + request: 2.88.2 + request-promise-native: 1.0.9_request@2.88.2 + sax: 1.2.4 + symbol-tree: 3.2.4 + tough-cookie: 2.5.0 + w3c-hr-time: 1.0.2 + webidl-conversions: 4.0.2 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 6.5.0 + ws: 5.2.2 + xml-name-validator: 3.0.0 + dev: true + resolution: + integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== /jsdom/16.4.0: dependencies: abab: 2.0.5 @@ -8738,6 +9461,10 @@ packages: /json-schema-traverse/0.4.1: resolution: integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + /json-schema-traverse/1.0.0: + dev: true + resolution: + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== /json-schema/0.2.3: dev: true resolution: @@ -8860,6 +9587,11 @@ packages: node: '> 0.8' resolution: integrity: sha1-eZllXoZGwX8In90YfRUNMyTVRRM= + /left-pad/1.3.0: + deprecated: use String.prototype.padStart() + dev: true + resolution: + integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== /less-loader/7.0.2_less@3.12.2+webpack@4.44.2: dependencies: klona: 2.0.4 @@ -8892,6 +9624,25 @@ packages: source-map: 0.6.1 resolution: integrity: sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== + /less/4.1.0: + dependencies: + copy-anything: 2.0.1 + parse-node-version: 1.0.1 + tslib: 1.14.1 + dev: true + engines: + node: '>=6' + hasBin: true + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.4 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 2.6.0 + source-map: 0.6.1 + resolution: + integrity: sha512-w1Ag/f34g7LwtQ/sMVSGWIyZx+gG9ZOAEtyxeX1fG75is6BMyC2lD5kG+1RueX7PkAvlQBm2Lf2aN2j0JbVr2A== /leven/3.1.0: dev: true engines: @@ -8943,7 +9694,7 @@ packages: dedent: 0.7.0 enquirer: 2.3.6 execa: 4.1.0 - listr2: 3.2.3_enquirer@2.3.6 + listr2: 3.3.0_enquirer@2.3.6 log-symbols: 4.0.0 micromatch: 4.0.2 normalize-path: 3.0.0 @@ -9005,7 +9756,7 @@ packages: node: '>=6' resolution: integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - /listr2/3.2.3_enquirer@2.3.6: + /listr2/3.3.0_enquirer@2.3.6: dependencies: chalk: 4.1.0 cli-truncate: 2.1.0 @@ -9016,13 +9767,14 @@ packages: p-map: 4.0.0 rxjs: 6.6.3 through: 2.3.8 + wrap-ansi: 7.0.0 dev: true engines: node: '>=10.0.0' peerDependencies: enquirer: '>= 2.3.0 < 3' resolution: - integrity: sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w== + integrity: sha512-G9IFI/m65icgVlifS0wMQnvn35/8VJGzEb3crpE4NnaegQYQOn/wP7yqi9TTJQ/eoxme4UaPbffBK1XqKP/DOg== /load-json-file/2.0.0: dependencies: graceful-fs: 4.2.4 @@ -9191,6 +9943,13 @@ packages: node: '>= 0.6.0' resolution: integrity: sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + /loose-envify/1.4.0: + dependencies: + js-tokens: 4.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== /lru-cache/5.1.1: dependencies: yallist: 3.1.1 @@ -9430,13 +10189,13 @@ packages: hasBin: true resolution: integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - /mime/2.4.7: + /mime/2.5.0: dev: true engines: node: '>=4.0.0' hasBin: true resolution: - integrity: sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== + integrity: sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== /mimic-fn/1.2.0: engines: node: '>=4' @@ -9662,6 +10421,18 @@ packages: dev: true resolution: integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + /needle/2.6.0: + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.2.4 + dev: true + engines: + node: '>= 4.4.x' + hasBin: true + optional: true + resolution: + integrity: sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== /negotiator/0.6.2: dev: true engines: @@ -9676,6 +10447,51 @@ packages: dev: true resolution: integrity: sha1-yobR/ogoFpsBICCOPchCS524NCw= + /ng-packagr/11.1.2_d5db820be2a97d193023211c377028b4: + dependencies: + '@angular/compiler': 11.0.9 + '@angular/compiler-cli': 11.0.9_3656b9d387a5ec1e283954a14f07f018 + '@rollup/plugin-commonjs': 17.0.0_rollup@2.38.0 + '@rollup/plugin-json': 4.1.0_rollup@2.38.0 + '@rollup/plugin-node-resolve': 11.1.0_rollup@2.38.0 + ajv: 7.0.3 + ansi-colors: 4.1.1 + autoprefixer: 9.8.6 + browserslist: 4.16.1 + chokidar: 3.5.1 + commander: 7.0.0 + cssnano-preset-default: 4.0.7 + glob: 7.1.6 + injection-js: 2.4.0 + less: 4.1.0 + node-sass-tilde-importer: 1.0.2 + ora: 5.3.0 + postcss: 7.0.35 + postcss-url: 8.0.0 + read-pkg-up: 5.0.0 + rimraf: 3.0.2 + rollup: 2.38.0 + rollup-plugin-sourcemaps: 0.6.3_eed5ecdf8c698c4cfff75e3a9fe8238b + rxjs: 6.6.3 + sass: 1.32.5 + stylus: 0.54.8 + terser: 5.5.1 + tslib: 2.1.0 + typescript: 4.0.5 + dev: true + hasBin: true + peerDependencies: + '@angular/compiler': ^11.0.0 + '@angular/compiler-cli': ^11.0.0 + '@types/node': '*' + tsickle: ~0.39.0 + tslib: ^2.0.0 + typescript: '>=4.0 <4.2' + peerDependenciesMeta: + tsickle: + optional: true + resolution: + integrity: sha512-Ud6DJC4eiiQHDUi3BegW50gJfvUfbXTu9fqR/Hhj0s42PLDOfGzbIAFhz8AhiDNdzptZTsinITvESuKj12CIAA== /nice-try/1.0.5: dev: true resolution: @@ -9756,13 +10572,19 @@ packages: optional: true resolution: integrity: sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== - /node-releases/1.1.69: + /node-releases/1.1.70: + resolution: + integrity: sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== + /node-sass-tilde-importer/1.0.2: + dependencies: + find-parent-dir: 0.3.0 + dev: true resolution: - integrity: sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== + integrity: sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg== /normalize-package-data/2.5.0: dependencies: hosted-git-info: 2.8.8 - resolve: 1.18.1 + resolve: 1.19.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 resolution: @@ -9811,7 +10633,7 @@ packages: integrity: sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== /npm-install-checks/4.0.0: dependencies: - semver: 7.3.2 + semver: 7.3.4 dev: true engines: node: '>=10' @@ -9833,7 +10655,7 @@ packages: /npm-package-arg/8.1.0: dependencies: hosted-git-info: 3.0.7 - semver: 7.3.2 + semver: 7.3.4 validate-npm-package-name: 3.0.0 dev: true engines: @@ -9860,7 +10682,7 @@ packages: dependencies: npm-install-checks: 4.0.0 npm-package-arg: 8.1.0 - semver: 7.3.2 + semver: 7.3.4 dev: true resolution: integrity: sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== @@ -9987,7 +10809,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.0-next.1 + es-abstract: 1.18.0-next.2 dev: true engines: node: '>= 0.8' @@ -10004,7 +10826,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.0-next.1 + es-abstract: 1.18.0-next.2 has: 1.0.3 dev: true engines: @@ -10116,6 +10938,21 @@ packages: node: '>=10' resolution: integrity: sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== + /ora/5.3.0: + dependencies: + bl: 4.0.3 + chalk: 4.1.0 + cli-cursor: 3.1.0 + cli-spinners: 2.5.0 + is-interactive: 1.0.0 + log-symbols: 4.0.0 + strip-ansi: 6.0.0 + wcwidth: 1.0.1 + dev: true + engines: + node: '>=10' + resolution: + integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== /original/1.0.2: dependencies: url-parse: 1.4.7 @@ -10329,7 +11166,7 @@ packages: node: '>=4' resolution: integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - /parse-json/5.1.0: + /parse-json/5.2.0: dependencies: '@babel/code-frame': 7.12.11 error-ex: 1.3.2 @@ -10338,7 +11175,13 @@ packages: engines: node: '>=8' resolution: - integrity: sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + /parse-node-version/1.0.1: + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== /parse5-html-rewriting-stream/6.0.1: dependencies: parse5: 6.0.1 @@ -10352,6 +11195,10 @@ packages: dev: true resolution: integrity: sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg== + /parse5/4.0.0: + dev: true + resolution: + integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== /parse5/5.1.1: dev: true resolution: @@ -10562,6 +11409,10 @@ packages: dev: true resolution: integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + /pn/1.1.0: + dev: true + resolution: + integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== /pnp-webpack-plugin/1.6.4_typescript@4.0.5: dependencies: ts-pnp: 1.2.0_typescript@4.0.5 @@ -10589,7 +11440,7 @@ packages: integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= /postcss-calc/7.0.5: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 6.0.4 postcss-value-parser: 4.1.0 dev: true @@ -10600,7 +11451,7 @@ packages: browserslist: 4.16.1 color: 3.1.3 has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10609,7 +11460,7 @@ packages: integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== /postcss-convert-values/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10618,7 +11469,7 @@ packages: integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== /postcss-discard-comments/4.0.2: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10626,7 +11477,7 @@ packages: integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== /postcss-discard-duplicates/4.0.2: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10634,7 +11485,7 @@ packages: integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== /postcss-discard-empty/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10642,7 +11493,7 @@ packages: integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== /postcss-discard-overridden/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10650,7 +11501,7 @@ packages: integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== /postcss-import/12.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 read-cache: 1.0.0 resolve: 1.19.0 @@ -10666,7 +11517,7 @@ packages: loader-utils: 2.0.0 postcss: 7.0.32 schema-utils: 3.0.0 - semver: 7.3.2 + semver: 7.3.4 webpack: 4.44.2 dev: true engines: @@ -10679,7 +11530,7 @@ packages: /postcss-merge-longhand/4.0.11: dependencies: css-color-names: 0.0.4 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 stylehacks: 4.0.3 dev: true @@ -10692,7 +11543,7 @@ packages: browserslist: 4.16.1 caniuse-api: 3.0.0 cssnano-util-same-parent: 4.0.1 - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 3.1.2 vendors: 1.0.4 dev: true @@ -10702,7 +11553,7 @@ packages: integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== /postcss-minify-font-values/4.0.2: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10713,7 +11564,7 @@ packages: dependencies: cssnano-util-get-arguments: 4.0.0 is-color-stop: 1.1.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10725,7 +11576,7 @@ packages: alphanum-sort: 1.0.2 browserslist: 4.16.1 cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 uniqs: 2.0.0 dev: true @@ -10737,7 +11588,7 @@ packages: dependencies: alphanum-sort: 1.0.2 has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 3.1.2 dev: true engines: @@ -10746,7 +11597,7 @@ packages: integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== /postcss-modules-extract-imports/2.0.0: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>= 6' @@ -10755,7 +11606,7 @@ packages: /postcss-modules-local-by-default/3.0.3: dependencies: icss-utils: 4.1.1 - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 6.0.4 postcss-value-parser: 4.1.0 dev: true @@ -10765,7 +11616,7 @@ packages: integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== /postcss-modules-scope/2.2.0: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 6.0.4 dev: true engines: @@ -10775,13 +11626,13 @@ packages: /postcss-modules-values/3.0.0: dependencies: icss-utils: 4.1.1 - postcss: 7.0.32 + postcss: 7.0.35 dev: true resolution: integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== /postcss-normalize-charset/4.0.1: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10790,7 +11641,7 @@ packages: /postcss-normalize-display-values/4.0.2: dependencies: cssnano-util-get-match: 4.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10801,7 +11652,7 @@ packages: dependencies: cssnano-util-get-arguments: 4.0.0 has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10812,7 +11663,7 @@ packages: dependencies: cssnano-util-get-arguments: 4.0.0 cssnano-util-get-match: 4.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10822,7 +11673,7 @@ packages: /postcss-normalize-string/4.0.2: dependencies: has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10832,7 +11683,7 @@ packages: /postcss-normalize-timing-functions/4.0.2: dependencies: cssnano-util-get-match: 4.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10842,7 +11693,7 @@ packages: /postcss-normalize-unicode/4.0.1: dependencies: browserslist: 4.16.1 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10853,7 +11704,7 @@ packages: dependencies: is-absolute-url: 2.1.0 normalize-url: 3.3.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10862,7 +11713,7 @@ packages: integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== /postcss-normalize-whitespace/4.0.2: dependencies: - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10872,7 +11723,7 @@ packages: /postcss-ordered-values/4.1.2: dependencies: cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10884,7 +11735,7 @@ packages: browserslist: 4.16.1 caniuse-api: 3.0.0 has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 dev: true engines: node: '>=6.9.0' @@ -10894,7 +11745,7 @@ packages: dependencies: cssnano-util-get-match: 4.0.0 has: 1.0.3 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 dev: true engines: @@ -10925,7 +11776,7 @@ packages: /postcss-svgo/4.0.2: dependencies: is-svg: 3.0.0 - postcss: 7.0.32 + postcss: 7.0.35 postcss-value-parser: 3.3.1 svgo: 1.3.2 dev: true @@ -10936,13 +11787,25 @@ packages: /postcss-unique-selectors/4.0.1: dependencies: alphanum-sort: 1.0.2 - postcss: 7.0.32 + postcss: 7.0.35 uniqs: 2.0.0 dev: true engines: node: '>=6.9.0' resolution: integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + /postcss-url/8.0.0: + dependencies: + mime: 2.5.0 + minimatch: 3.0.4 + mkdirp: 0.5.5 + postcss: 7.0.35 + xxhashjs: 0.2.2 + dev: true + engines: + node: '>=6.0.0' + resolution: + integrity: sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw== /postcss-value-parser/3.3.1: dev: true resolution: @@ -10971,6 +11834,16 @@ packages: node: '>=6.0.0' resolution: integrity: sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + /postcss/7.0.35: + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + dev: true + engines: + node: '>=6.0.0' + resolution: + integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== /prelude-ls/1.1.2: dev: true engines: @@ -10996,6 +11869,17 @@ packages: node: '>=6' resolution: integrity: sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== + /pretty-format/24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-regex: 4.1.0 + ansi-styles: 3.2.1 + react-is: 16.13.1 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== /pretty-format/25.5.0: dependencies: '@jest/types': 25.5.0 @@ -11233,6 +12117,24 @@ packages: node: '>=4' resolution: integrity: sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + /read-pkg-up/4.0.0: + dependencies: + find-up: 3.0.0 + read-pkg: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + /read-pkg-up/5.0.0: + dependencies: + find-up: 3.0.0 + read-pkg: 5.2.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg== /read-pkg-up/7.0.1: dependencies: find-up: 4.1.0 @@ -11266,7 +12168,7 @@ packages: dependencies: '@types/normalize-package-data': 2.4.0 normalize-package-data: 2.5.0 - parse-json: 5.1.0 + parse-json: 5.2.0 type-fest: 0.6.0 engines: node: '>=8' @@ -11310,6 +12212,14 @@ packages: node: '>=8.10.0' resolution: integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + /realpath-native/1.1.0: + dependencies: + util.promisify: 1.1.1 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== /redent/3.0.0: dependencies: indent-string: 4.0.0 @@ -11338,7 +12248,7 @@ packages: integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== /regenerator-transform/0.14.5: dependencies: - '@babel/runtime': 7.12.1 + '@babel/runtime': 7.12.5 resolution: integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== /regex-not/1.0.2: @@ -11353,15 +12263,15 @@ packages: dev: true resolution: integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - /regexp.prototype.flags/1.3.0: + /regexp.prototype.flags/1.3.1: dependencies: + call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.17.7 dev: true engines: node: '>= 0.4' resolution: - integrity: sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== /regexpp/3.1.0: dev: true engines: @@ -11432,10 +12342,7 @@ packages: request-promise-core: 1.1.4_request@2.88.2 stealthy-require: 1.1.1 tough-cookie: 2.5.0 - deprecated: - request-promise-native has been deprecated because it extends the now - deprecated request package, see - https://github.com/request/request/issues/3142 + deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 dev: true engines: node: '>=0.12.0' @@ -11465,9 +12372,7 @@ packages: tough-cookie: 2.5.0 tunnel-agent: 0.6.0 uuid: 3.4.0 - deprecated: - request has been deprecated, see - https://github.com/request/request/issues/3142 + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dev: true engines: node: '>= 6' @@ -11556,6 +12461,10 @@ packages: deprecated: https://github.com/lydell/resolve-url#deprecated resolution: integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + /resolve/1.1.7: + dev: true + resolution: + integrity: sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= /resolve/1.17.0: dependencies: path-parse: 1.0.6 @@ -11566,6 +12475,7 @@ packages: dependencies: is-core-module: 2.2.0 path-parse: 1.0.6 + dev: true resolution: integrity: sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== /resolve/1.19.0: @@ -11668,6 +12578,23 @@ packages: dev: true resolution: integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + /rollup-plugin-sourcemaps/0.6.3_eed5ecdf8c698c4cfff75e3a9fe8238b: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.38.0 + '@types/node': 12.12.33 + rollup: 2.38.0 + source-map-resolve: 0.6.0 + dev: true + engines: + node: '>=10.0.0' + peerDependencies: + '@types/node': '>=10.0.0' + rollup: '>=0.31.2' + peerDependenciesMeta: + '@types/node': + optional: true + resolution: + integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== /rollup/2.32.1: dev: true engines: @@ -11677,6 +12604,15 @@ packages: fsevents: 2.1.3 resolution: integrity: sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw== + /rollup/2.38.0: + dev: true + engines: + node: '>=10.0.0' + hasBin: true + optionalDependencies: + fsevents: 2.1.3 + resolution: + integrity: sha512-ay9zDiNitZK/LNE/EM2+v5CZ7drkB2xyDljvb1fQJCGnq43ZWRkhxN145oV8GmoW1YNi4sA/1Jdkr2LfawJoXw== /rsvp/4.8.5: dev: true engines: @@ -11698,9 +12634,17 @@ packages: dev: true resolution: integrity: sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + /rxjs-for-await/0.0.2_rxjs@6.6.3: + dependencies: + rxjs: 6.6.3 + peerDependencies: + rxjs: ^6.0.0 + resolution: + integrity: sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw== /rxjs/6.5.5: dependencies: tslib: 1.14.1 + dev: true engines: npm: '>=2.0.0' resolution: @@ -11751,7 +12695,7 @@ packages: neo-async: 2.6.2 sass: 1.27.0 schema-utils: 3.0.0 - semver: 7.3.2 + semver: 7.3.4 webpack: 4.44.2 dev: true engines: @@ -11772,13 +12716,22 @@ packages: integrity: sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== /sass/1.27.0: dependencies: - chokidar: 3.5.0 + chokidar: 3.5.1 dev: true engines: node: '>=8.9.0' hasBin: true resolution: integrity: sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig== + /sass/1.32.5: + dependencies: + chokidar: 3.5.1 + dev: true + engines: + node: '>=8.9.0' + hasBin: true + resolution: + integrity: sha512-kU1yJ5zUAmPxr7f3q0YXTAd1oZjSR1g3tYyv+xu0HZSl5JiNOaE987eiz7wCUvbm4I9fGWGU2TgApTtcP4GMNQ== /sax/1.2.4: dev: true resolution: @@ -11803,7 +12756,7 @@ packages: integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== /schema-utils/2.7.1: dependencies: - '@types/json-schema': 7.0.6 + '@types/json-schema': 7.0.7 ajv: 6.12.6 ajv-keywords: 3.5.2_ajv@6.12.6 engines: @@ -11812,7 +12765,7 @@ packages: integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== /schema-utils/3.0.0: dependencies: - '@types/json-schema': 7.0.6 + '@types/json-schema': 7.0.7 ajv: 6.12.6 ajv-keywords: 3.5.2_ajv@6.12.6 dev: true @@ -12023,6 +12976,12 @@ packages: dev: true resolution: integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + /slash/2.0.0: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== /slash/3.0.0: engines: node: '>=8' @@ -12168,6 +13127,13 @@ packages: urix: 0.1.0 resolution: integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + /source-map-resolve/0.6.0: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + dev: true + resolution: + integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== /source-map-support/0.5.16: dependencies: buffer-from: 1.1.1 @@ -12318,6 +13284,14 @@ packages: dev: true resolution: integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + /stack-utils/1.0.4: + dependencies: + escape-string-regexp: 2.0.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== /stack-utils/2.0.3: dependencies: escape-string-regexp: 2.0.0 @@ -12431,7 +13405,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.0-next.1 + es-abstract: 1.18.0-next.2 dev: true engines: node: '>= 0.4' @@ -12557,7 +13531,7 @@ packages: /stylehacks/4.0.3: dependencies: browserslist: 4.16.1 - postcss: 7.0.32 + postcss: 7.0.35 postcss-selector-parser: 3.1.2 dev: true engines: @@ -12566,7 +13540,7 @@ packages: integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== /stylus-loader/4.3.1_stylus@0.54.8+webpack@4.44.2: dependencies: - fast-glob: 3.2.4 + fast-glob: 3.2.5 klona: 2.0.4 loader-utils: 2.0.0 normalize-path: 3.0.0 @@ -12781,12 +13755,12 @@ packages: dependencies: cacache: 15.0.5 find-cache-dir: 3.3.1 - jest-worker: 26.5.0 + jest-worker: 26.6.2 p-limit: 3.1.0 schema-utils: 3.0.0 serialize-javascript: 5.0.1 source-map: 0.6.1 - terser: 5.3.7 + terser: 5.5.1 webpack: 4.44.2 webpack-sources: 1.4.3 dev: true @@ -12800,7 +13774,7 @@ packages: dependencies: commander: 2.20.3 source-map: 0.6.1 - source-map-support: 0.5.16 + source-map-support: 0.5.19 dev: true engines: node: '>=6.0.0' @@ -12818,6 +13792,28 @@ packages: hasBin: true resolution: integrity: sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w== + /terser/5.5.1: + dependencies: + commander: 2.20.3 + source-map: 0.7.3 + source-map-support: 0.5.19 + dev: true + engines: + node: '>=10' + hasBin: true + resolution: + integrity: sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== + /test-exclude/5.2.3: + dependencies: + glob: 7.1.6 + minimatch: 3.0.4 + read-pkg-up: 4.0.0 + require-main-filename: 2.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== /test-exclude/6.0.0: dependencies: '@istanbuljs/schema': 0.1.2 @@ -12838,6 +13834,10 @@ packages: dev: true resolution: integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + /throat/4.1.0: + dev: true + resolution: + integrity: sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= /throat/5.0.0: dev: true resolution: @@ -12963,6 +13963,12 @@ packages: node: '>=6' resolution: integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + /tr46/1.0.1: + dependencies: + punycode: 2.1.1 + dev: true + resolution: + integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= /tr46/2.0.2: dependencies: punycode: 2.1.1 @@ -13011,6 +14017,30 @@ packages: typescript: '>=3.8 <5.0' resolution: integrity: sha512-ofBzoCqf6Nv/PoWb/ByV3VNKy2KJSikamOBxvR3E6eVdIw10GwAXoyvMWXXjZJK2s6S27ZE8fI+JBTnGaovl6Q== + /ts-jest/26.4.4_jest@26.2.2+typescript@4.0.5: + dependencies: + '@types/jest': 26.0.20 + bs-logger: 0.2.6 + buffer-from: 1.1.1 + fast-json-stable-stringify: 2.1.0 + jest: 26.2.2_ts-node@9.1.1 + jest-util: 26.6.2 + json5: 2.1.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + mkdirp: 1.0.4 + semver: 7.3.4 + typescript: 4.0.5 + yargs-parser: 20.2.4 + dev: true + engines: + node: '>= 10' + hasBin: true + peerDependencies: + jest: '>=26 <27' + typescript: '>=3.8 <5.0' + resolution: + integrity: sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg== /ts-loader/5.4.5_typescript@4.0.5: dependencies: chalk: 2.4.2 @@ -13080,7 +14110,7 @@ packages: /tslib/2.1.0: resolution: integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - /tsutils/3.19.1_typescript@4.0.5: + /tsutils/3.20.0_typescript@4.0.5: dependencies: tslib: 1.14.1 typescript: 4.0.5 @@ -13088,11 +14118,9 @@ packages: engines: node: '>= 6' peerDependencies: - typescript: - '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev - || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' resolution: - integrity: sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw== + integrity: sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== /tty-browserify/0.0.0: dev: true resolution: @@ -13240,7 +14268,7 @@ packages: integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== /universal-analytics/0.4.23: dependencies: - debug: 4.2.0 + debug: 4.3.1 request: 2.88.2 uuid: 3.4.0 dev: true @@ -13251,12 +14279,6 @@ packages: node: '>= 4.0.0' resolution: integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - /universalify/1.0.0: - dev: true - engines: - node: '>= 10.0.0' - resolution: - integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== /universalify/2.0.0: dev: true engines: @@ -13333,6 +14355,16 @@ packages: dev: true resolution: integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + /util.promisify/1.1.1: + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + for-each: 0.3.3 + has-symbols: 1.0.1 + object.getownpropertydescriptors: 2.1.1 + dev: true + resolution: + integrity: sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== /util/0.10.3: dependencies: inherits: 2.0.1 @@ -13450,7 +14482,7 @@ packages: neo-async: 2.6.2 dev: true optionalDependencies: - chokidar: 3.5.0 + chokidar: 3.5.1 watchpack-chokidar2: 2.0.1 resolution: integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== @@ -13465,6 +14497,10 @@ packages: defaults: 1.0.3 resolution: integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + /webidl-conversions/4.0.2: + dev: true + resolution: + integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== /webidl-conversions/5.0.0: dev: true engines: @@ -13477,13 +14513,13 @@ packages: node: '>=10.4' resolution: integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - /webpack-dev-middleware/3.7.2_webpack@4.44.2: + /webpack-dev-middleware/3.7.2_webpack@4.42.0: dependencies: memory-fs: 0.4.1 - mime: 2.4.7 + mime: 2.5.0 mkdirp: 0.5.5 range-parser: 1.2.1 - webpack: 4.44.2 + webpack: 4.42.0 webpack-log: 2.0.0 dev: true engines: @@ -13492,25 +14528,10 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - /webpack-dev-middleware/3.7.3_webpack@4.42.0: - dependencies: - memory-fs: 0.4.1 - mime: 2.4.7 - mkdirp: 0.5.5 - range-parser: 1.2.1 - webpack: 4.42.0 - webpack-log: 2.0.0 - dev: true - engines: - node: '>= 6' - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - resolution: - integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - /webpack-dev-middleware/3.7.3_webpack@4.44.2: + /webpack-dev-middleware/3.7.2_webpack@4.44.2: dependencies: memory-fs: 0.4.1 - mime: 2.4.7 + mime: 2.5.0 mkdirp: 0.5.5 range-parser: 1.2.1 webpack: 4.44.2 @@ -13519,9 +14540,9 @@ packages: engines: node: '>= 6' peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + webpack: ^4.0.0 resolution: - integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + integrity: sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== /webpack-dev-server/3.11.0_webpack@4.42.0: dependencies: ansi-html: 0.0.7 @@ -13554,7 +14575,7 @@ packages: supports-color: 6.1.0 url: 0.11.0 webpack: 4.42.0 - webpack-dev-middleware: 3.7.3_webpack@4.42.0 + webpack-dev-middleware: 3.7.2_webpack@4.42.0 webpack-log: 2.0.0 ws: 6.2.1 yargs: 13.3.2 @@ -13602,7 +14623,7 @@ packages: supports-color: 6.1.0 url: 0.11.0 webpack: 4.44.2 - webpack-dev-middleware: 3.7.3_webpack@4.44.2 + webpack-dev-middleware: 3.7.2_webpack@4.44.2 webpack-log: 2.0.0 ws: 6.2.1 yargs: 13.3.2 @@ -13780,6 +14801,22 @@ packages: dev: true resolution: integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + /whatwg-url/6.5.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + resolution: + integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + /whatwg-url/7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + resolution: + integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== /whatwg-url/8.4.0: dependencies: lodash.sortby: 4.7.0 @@ -13886,6 +14923,14 @@ packages: /wrappy/1.0.2: resolution: integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + /write-file-atomic/2.4.1: + dependencies: + graceful-fs: 4.2.4 + imurmurhash: 0.1.4 + signal-exit: 3.0.3 + dev: true + resolution: + integrity: sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== /write-file-atomic/3.0.3: dependencies: imurmurhash: 0.1.4 @@ -13903,6 +14948,12 @@ packages: node: '>=4' resolution: integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + /ws/5.2.2: + dependencies: + async-limiter: 1.0.1 + dev: true + resolution: + integrity: sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== /ws/6.2.1: dependencies: async-limiter: 1.0.1 @@ -13937,6 +14988,12 @@ packages: node: '>=0.4' resolution: integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + /xxhashjs/0.2.2: + dependencies: + cuint: 0.2.2 + dev: true + resolution: + integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== /y18n/4.0.1: dev: true resolution: @@ -14054,26 +15111,28 @@ packages: node: '>=10' resolution: integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - /zone.js/0.10.3: + /zone.js/0.11.3: + dependencies: + tslib: 2.1.0 dev: false resolution: - integrity: sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== + integrity: sha512-Y4hTHoh4VcxU5BDGAqEoOnOiyT254w6CiHtpQxAJUSMZPyVgdbKf+5R7Mwz6xsPhMIeBXk5rTopRZDpjssTCUg== specifiers: - '@angular-devkit/build-angular': ~0.1100.6 + '@angular-devkit/build-angular': ~0.1100.1 '@angular-eslint/eslint-plugin': 1.0.0 '@angular-eslint/eslint-plugin-template': 1.0.0 '@angular-eslint/template-parser': 1.0.0 - '@angular/animations': ^11.0.7 - '@angular/cli': ^11.0.6 - '@angular/common': ^11.0.7 - '@angular/compiler': ^11.0.7 - '@angular/compiler-cli': ^11.0.7 - '@angular/core': ^11.0.7 - '@angular/forms': ^11.0.7 - '@angular/language-service': ^11.0.7 - '@angular/platform-browser': ^11.0.7 - '@angular/platform-browser-dynamic': ^11.0.7 - '@angular/router': ^11.0.7 + '@angular/animations': ~11.0.0 + '@angular/cli': ~11.0.1 + '@angular/common': ~11.0.0 + '@angular/compiler': ~11.0.0 + '@angular/compiler-cli': ~11.0.0 + '@angular/core': ~11.0.0 + '@angular/forms': ~11.0.0 + '@angular/language-service': ~11.0.0 + '@angular/platform-browser': ~11.0.0 + '@angular/platform-browser-dynamic': ~11.0.0 + '@angular/router': ~11.0.0 '@commitlint/cli': ^11.0.0 '@commitlint/config-angular': ^11.0.0 '@commitlint/config-conventional': ^11.0.0 @@ -14083,20 +15142,20 @@ specifiers: '@ngrx/schematics': ^10.1.2 '@ngrx/store': ^10.1.2 '@ngrx/store-devtools': ^10.1.2 - '@nrwl/angular': 11.1.1 - '@nrwl/cli': 11.1.1 - '@nrwl/cypress': 11.1.1 - '@nrwl/devkit': 11.0.20 - '@nrwl/eslint-plugin-nx': 11.1.1 - '@nrwl/jest': 11.1.1 - '@nrwl/node': 11.1.1 - '@nrwl/nx-cloud': 11.0.1 - '@nrwl/nx-plugin': 11.1.1 - '@nrwl/tao': 11.1.1 - '@nrwl/workspace': 11.1.1 + '@nrwl/angular': 11.2.0-rc.2 + '@nrwl/cli': 11.2.0-rc.2 + '@nrwl/cypress': 11.2.0-rc.2 + '@nrwl/devkit': 11.2.0-rc.2 + '@nrwl/eslint-plugin-nx': 11.2.0-rc.2 + '@nrwl/jest': 11.2.0-rc.2 + '@nrwl/node': 11.2.0-rc.2 + '@nrwl/nx-cloud': 11.1.2 + '@nrwl/nx-plugin': 11.2.0-rc.2 + '@nrwl/tao': 11.2.0-rc.2 + '@nrwl/workspace': 11.2.0-rc.2 '@types/jest': 26.0.8 - '@types/luxon': ^1.25.0 - '@types/node': 12.12.38 + '@types/luxon': ^1.25.1 + '@types/node': 12.12.33 '@typescript-eslint/eslint-plugin': 4.3.0 '@typescript-eslint/parser': 4.3.0 all-contributors-cli: ^6.19.0 @@ -14106,19 +15165,21 @@ specifiers: eslint-config-prettier: 6.0.0 eslint-plugin-cypress: ^2.11.2 eslint-plugin-import: ^2.22.1 - eslint-plugin-jsdoc: ^30.7.13 + eslint-plugin-jsdoc: ^31.3.3 eslint-plugin-prefer-arrow: ^1.2.2 git-cz: ^4.7.6 - husky: ^4.3.7 + husky: ^4.3.8 jest: 26.2.2 - jest-preset-angular: 8.3.1 + jest-preset-angular: 8.3.2 + jest-serial-runner: ^1.1.0 json: ^10.0.0 lint-staged: ^10.5.3 luxon: ^1.25.0 + ng-packagr: ~11.1.2 prettier: 2.1.2 - rxjs: ~6.5.5 - ts-jest: 26.4.0 + rxjs: ~6.6.3 + ts-jest: 26.4.4 ts-node: ~9.1.1 tslib: ^2.1.0 typescript: ~4.0.5 - zone.js: ^0.10.3 + zone.js: ^0.11.3 diff --git a/tsconfig.base.json b/tsconfig.base.json index 37fd669..b0fdcf3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -19,6 +19,8 @@ "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "paths": { + "@internal/e2e-util": ["packages/internal/e2e-util/src/index.ts"], + "@internal/test-util": ["packages/internal/test-util/src/index.ts"], "@nxworker/angular": ["packages/angular/src/index.ts"], "@nrwl-airlines/booking/data-access": [ "packages/examples/angular/nrwl-airlines/booking/data-access/src/index.ts" diff --git a/workspace.json b/workspace.json index afd724e..f1eb127 100644 --- a/workspace.json +++ b/workspace.json @@ -1,8 +1,7 @@ { "version": 2, "cli": { - "defaultCollection": "@nrwl/angular", - "packageManager": "pnpm" + "defaultCollection": "@nrwl/angular" }, "generators": { "@nrwl/angular:application": { @@ -759,6 +758,48 @@ } } }, + "internal-e2e-util": { + "root": "packages/internal/e2e-util", + "sourceRoot": "packages/internal/e2e-util/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "options": { + "lintFilePatterns": ["packages/internal/e2e-util/**/*.ts"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/packages/internal/e2e-util"], + "options": { + "jestConfig": "packages/internal/e2e-util/jest.config.js", + "passWithNoTests": true + } + } + } + }, + "internal-test-util": { + "root": "packages/internal/test-util", + "sourceRoot": "packages/internal/test-util/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "options": { + "lintFilePatterns": ["packages/internal/test-util/**/*.ts"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/packages/internal/test-util"], + "options": { + "jestConfig": "packages/internal/test-util/jest.config.js", + "passWithNoTests": true + } + } + } + }, "workspace-tools": { "projectType": "tool", "root": "tools",