From 220667f83e8e867b696604d932a1312afc77d5e2 Mon Sep 17 00:00:00 2001 From: timdeschryver <28659384+timdeschryver@users.noreply.github.com> Date: Thu, 25 Jun 2020 18:43:34 +0200 Subject: [PATCH 1/3] chore: migrate to NX --- .circleci/config.yml | 38 +- angular.json | 91 +- .../example-app}/app/app-routing.module.ts | 0 .../example-app}/app/app.component.css | 0 .../example-app}/app/app.component.html | 0 .../example-app}/app/app.component.ts | 0 {src => apps/example-app}/app/app.module.ts | 0 .../app/examples/00-single-component.spec.ts | 0 .../app/examples/00-single-component.ts | 0 .../app/examples/01-nested-component.spec.ts | 0 .../app/examples/01-nested-component.ts | 0 .../app/examples/02-input-output.spec.ts | 0 .../app/examples/02-input-output.ts | 0 .../app/examples/03-forms.spec.ts | 0 .../example-app}/app/examples/03-forms.ts | 0 .../examples/04-forms-with-material.spec.ts | 0 .../app/examples/04-forms-with-material.ts | 0 .../examples/05-component-provider.spec.ts | 0 .../app/examples/05-component-provider.ts | 0 .../app/examples/06-with-ngrx-store.spec.ts | 0 .../app/examples/06-with-ngrx-store.ts | 0 .../examples/07-with-ngrx-mock-store.spec.ts | 0 .../app/examples/07-with-ngrx-mock-store.ts | 0 .../app/examples/08-directive.spec.ts | 0 .../example-app}/app/examples/08-directive.ts | 0 .../app/examples/09-router.spec.ts | 0 .../example-app}/app/examples/09-router.ts | 0 .../10-inject-token-dependency.spec.ts | 0 .../examples/10-inject-token-dependency.ts | 0 .../app/examples/11-ng-content.spec.ts | 0 .../app/examples/11-ng-content.ts | 0 .../app/examples/12-service-component.spec.ts | 0 .../app/examples/12-service-component.ts | 0 .../example-app}/app/examples/README.md | 0 .../example-app}/app/issues/issue-106.spec.ts | 0 .../example-app}/app/material.module.ts | 0 {src => apps/example-app}/assets/.gitkeep | 0 .../app/examples/00-single-component.ts.html | 119 ++ .../app/examples/01-nested-component.ts.html | 170 ++ .../app/examples/02-input-output.ts.html | 128 ++ .../coverage/app/examples/03-forms.ts.html | 281 +++ .../examples/04-forms-with-material.ts.html | 347 ++++ .../examples/05-component-provider.ts.html | 179 ++ .../app/examples/06-with-ngrx-store.ts.html | 200 +++ .../examples/07-with-ngrx-mock-store.ts.html | 152 ++ .../app/examples/08-directive.ts.html | 155 ++ .../coverage/app/examples/09-router.ts.html | 200 +++ .../10-inject-token-dependency.ts.html | 113 ++ .../app/examples/11-ng-content.ts.html | 113 ++ .../app/examples/12-service-component.ts.html | 173 ++ .../coverage/app/examples/index.html | 291 +++ apps/example-app/coverage/app/index.html | 111 ++ .../coverage/app/material.module.ts.html | 107 ++ apps/example-app/coverage/base.css | 224 +++ apps/example-app/coverage/block-navigation.js | 79 + apps/example-app/coverage/favicon.png | Bin 0 -> 540 bytes apps/example-app/coverage/index.html | 126 ++ apps/example-app/coverage/prettify.css | 1 + apps/example-app/coverage/prettify.js | 2 + .../coverage/sort-arrow-sprite.png | Bin 0 -> 209 bytes apps/example-app/coverage/sorter.js | 170 ++ .../environments/environment.prod.ts | 0 .../example-app}/environments/environment.ts | 0 {src => apps/example-app}/favicon.ico | Bin {src => apps/example-app}/index.html | 0 apps/example-app/jest.config.js | 8 + {src => apps/example-app}/main.ts | 0 {src => apps/example-app}/polyfills.ts | 0 .../example-app/setup-jest.ts | 0 {src => apps/example-app}/styles.css | 0 .../example-app/tsconfig.json | 2 +- .../example-app/tsconfig.spec.json | 2 +- {src => apps/example-app}/tslint.json | 2 +- jest.base.config.js => jest.config.js | 11 +- nx.json | 30 + package.json | 26 +- projects/jest-utils/coverage/base.css | 224 +++ .../jest-utils/coverage/block-navigation.js | 79 + projects/jest-utils/coverage/favicon.png | Bin 0 -> 540 bytes projects/jest-utils/coverage/index.html | 126 ++ projects/jest-utils/coverage/prettify.css | 1 + projects/jest-utils/coverage/prettify.js | 2 + .../jest-utils/coverage/sort-arrow-sprite.png | Bin 0 -> 209 bytes projects/jest-utils/coverage/sorter.js | 170 ++ projects/jest-utils/coverage/src/index.html | 111 ++ .../coverage/src/lib/create-mock.ts.html | 191 ++ .../jest-utils/coverage/src/lib/index.html | 126 ++ .../jest-utils/coverage/src/lib/index.ts.html | 83 + .../coverage/src/public_api.ts.html | 95 + projects/jest-utils/index.ts | 1 + projects/jest-utils/jest.config.js | 8 + projects/jest-utils/ng-package.json | 4 +- projects/jest-utils/ng-package.prod.json | 8 - .../setup-jest.ts} | 0 projects/jest-utils/tsconfig.lib.json | 1 + projects/jest-utils/tsconfig.lib.prod.json | 6 - projects/jest-utils/tsconfig.spec.json | 7 + projects/jest.lib.config.js | 11 - projects/testing-library/coverage/base.css | 224 +++ .../coverage/block-navigation.js | 79 + projects/testing-library/coverage/favicon.png | Bin 0 -> 540 bytes projects/testing-library/coverage/index.html | 201 +++ .../coverage/migrations/4_0_0/index.html | 111 ++ .../coverage/migrations/4_0_0/index.ts.html | 170 ++ .../migrations/4_0_0/rules/index.html | 141 ++ .../rules/noComponentParametersRule.ts.html | 212 +++ .../rules/noComponentPropertyRule.ts.html | 146 ++ .../4_0_0/rules/noCreateComponentRule.ts.html | 200 +++ .../coverage/migrations/5_1_2/index.html | 111 ++ .../coverage/migrations/5_1_2/index.ts.html | 239 +++ .../migrations/5_1_2/rules/index.html | 111 ++ .../noAngularExtensionsImportRule.ts.html | 158 ++ .../testing-library/coverage/prettify.css | 1 + projects/testing-library/coverage/prettify.js | 2 + .../coverage/sort-arrow-sprite.png | Bin 0 -> 209 bytes projects/testing-library/coverage/sorter.js | 170 ++ .../testing-library/coverage/src/index.html | 111 ++ .../coverage/src/lib/config.ts.html | 152 ++ .../coverage/src/lib/index.html | 126 ++ .../coverage/src/lib/testing-library.ts.html | 1574 +++++++++++++++++ .../coverage/src/lib/user-events/index.html | 156 ++ .../src/lib/user-events/index.ts.html | 254 +++ .../src/lib/user-events/selectOptions.ts.html | 275 +++ .../coverage/src/lib/user-events/tab.ts.html | 110 ++ .../coverage/src/lib/user-events/type.ts.html | 389 ++++ .../coverage/src/public_api.ts.html | 104 ++ projects/testing-library/index.ts | 1 + projects/testing-library/jest.config.js | 8 + projects/testing-library/ng-package.json | 2 +- projects/testing-library/ng-package.prod.json | 14 - projects/testing-library/setup-jest.ts | 2 + projects/testing-library/tsconfig.lib.json | 1 + .../testing-library/tsconfig.lib.prod.json | 6 - projects/testing-library/tsconfig.spec.json | 7 + src/jest.app.config.js | 13 - tsconfig.json | 4 +- yarn.lock | 1557 +++++++++++++++- 137 files changed, 11887 insertions(+), 160 deletions(-) rename {src => apps/example-app}/app/app-routing.module.ts (100%) rename {src => apps/example-app}/app/app.component.css (100%) rename {src => apps/example-app}/app/app.component.html (100%) rename {src => apps/example-app}/app/app.component.ts (100%) rename {src => apps/example-app}/app/app.module.ts (100%) rename {src => apps/example-app}/app/examples/00-single-component.spec.ts (100%) rename {src => apps/example-app}/app/examples/00-single-component.ts (100%) rename {src => apps/example-app}/app/examples/01-nested-component.spec.ts (100%) rename {src => apps/example-app}/app/examples/01-nested-component.ts (100%) rename {src => apps/example-app}/app/examples/02-input-output.spec.ts (100%) rename {src => apps/example-app}/app/examples/02-input-output.ts (100%) rename {src => apps/example-app}/app/examples/03-forms.spec.ts (100%) rename {src => apps/example-app}/app/examples/03-forms.ts (100%) rename {src => apps/example-app}/app/examples/04-forms-with-material.spec.ts (100%) rename {src => apps/example-app}/app/examples/04-forms-with-material.ts (100%) rename {src => apps/example-app}/app/examples/05-component-provider.spec.ts (100%) rename {src => apps/example-app}/app/examples/05-component-provider.ts (100%) rename {src => apps/example-app}/app/examples/06-with-ngrx-store.spec.ts (100%) rename {src => apps/example-app}/app/examples/06-with-ngrx-store.ts (100%) rename {src => apps/example-app}/app/examples/07-with-ngrx-mock-store.spec.ts (100%) rename {src => apps/example-app}/app/examples/07-with-ngrx-mock-store.ts (100%) rename {src => apps/example-app}/app/examples/08-directive.spec.ts (100%) rename {src => apps/example-app}/app/examples/08-directive.ts (100%) rename {src => apps/example-app}/app/examples/09-router.spec.ts (100%) rename {src => apps/example-app}/app/examples/09-router.ts (100%) rename {src => apps/example-app}/app/examples/10-inject-token-dependency.spec.ts (100%) rename {src => apps/example-app}/app/examples/10-inject-token-dependency.ts (100%) rename {src => apps/example-app}/app/examples/11-ng-content.spec.ts (100%) rename {src => apps/example-app}/app/examples/11-ng-content.ts (100%) rename {src => apps/example-app}/app/examples/12-service-component.spec.ts (100%) rename {src => apps/example-app}/app/examples/12-service-component.ts (100%) rename {src => apps/example-app}/app/examples/README.md (100%) rename {src => apps/example-app}/app/issues/issue-106.spec.ts (100%) rename {src => apps/example-app}/app/material.module.ts (100%) rename {src => apps/example-app}/assets/.gitkeep (100%) create mode 100644 apps/example-app/coverage/app/examples/00-single-component.ts.html create mode 100644 apps/example-app/coverage/app/examples/01-nested-component.ts.html create mode 100644 apps/example-app/coverage/app/examples/02-input-output.ts.html create mode 100644 apps/example-app/coverage/app/examples/03-forms.ts.html create mode 100644 apps/example-app/coverage/app/examples/04-forms-with-material.ts.html create mode 100644 apps/example-app/coverage/app/examples/05-component-provider.ts.html create mode 100644 apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html create mode 100644 apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html create mode 100644 apps/example-app/coverage/app/examples/08-directive.ts.html create mode 100644 apps/example-app/coverage/app/examples/09-router.ts.html create mode 100644 apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html create mode 100644 apps/example-app/coverage/app/examples/11-ng-content.ts.html create mode 100644 apps/example-app/coverage/app/examples/12-service-component.ts.html create mode 100644 apps/example-app/coverage/app/examples/index.html create mode 100644 apps/example-app/coverage/app/index.html create mode 100644 apps/example-app/coverage/app/material.module.ts.html create mode 100644 apps/example-app/coverage/base.css create mode 100644 apps/example-app/coverage/block-navigation.js create mode 100644 apps/example-app/coverage/favicon.png create mode 100644 apps/example-app/coverage/index.html create mode 100644 apps/example-app/coverage/prettify.css create mode 100644 apps/example-app/coverage/prettify.js create mode 100644 apps/example-app/coverage/sort-arrow-sprite.png create mode 100644 apps/example-app/coverage/sorter.js rename {src => apps/example-app}/environments/environment.prod.ts (100%) rename {src => apps/example-app}/environments/environment.ts (100%) rename {src => apps/example-app}/favicon.ico (100%) rename {src => apps/example-app}/index.html (100%) create mode 100644 apps/example-app/jest.config.js rename {src => apps/example-app}/main.ts (100%) rename {src => apps/example-app}/polyfills.ts (100%) rename src/setupJest.ts => apps/example-app/setup-jest.ts (100%) rename {src => apps/example-app}/styles.css (100%) rename src/tsconfig.app.json => apps/example-app/tsconfig.json (79%) rename tsconfig.spec.json => apps/example-app/tsconfig.spec.json (70%) rename {src => apps/example-app}/tslint.json (81%) rename jest.base.config.js => jest.config.js (51%) create mode 100644 nx.json create mode 100644 projects/jest-utils/coverage/base.css create mode 100644 projects/jest-utils/coverage/block-navigation.js create mode 100644 projects/jest-utils/coverage/favicon.png create mode 100644 projects/jest-utils/coverage/index.html create mode 100644 projects/jest-utils/coverage/prettify.css create mode 100644 projects/jest-utils/coverage/prettify.js create mode 100644 projects/jest-utils/coverage/sort-arrow-sprite.png create mode 100644 projects/jest-utils/coverage/sorter.js create mode 100644 projects/jest-utils/coverage/src/index.html create mode 100644 projects/jest-utils/coverage/src/lib/create-mock.ts.html create mode 100644 projects/jest-utils/coverage/src/lib/index.html create mode 100644 projects/jest-utils/coverage/src/lib/index.ts.html create mode 100644 projects/jest-utils/coverage/src/public_api.ts.html create mode 100644 projects/jest-utils/index.ts create mode 100644 projects/jest-utils/jest.config.js delete mode 100644 projects/jest-utils/ng-package.prod.json rename projects/{setupJest.ts => jest-utils/setup-jest.ts} (100%) delete mode 100644 projects/jest-utils/tsconfig.lib.prod.json create mode 100644 projects/jest-utils/tsconfig.spec.json delete mode 100644 projects/jest.lib.config.js create mode 100644 projects/testing-library/coverage/base.css create mode 100644 projects/testing-library/coverage/block-navigation.js create mode 100644 projects/testing-library/coverage/favicon.png create mode 100644 projects/testing-library/coverage/index.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/index.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/index.ts.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/index.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html create mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html create mode 100644 projects/testing-library/coverage/migrations/5_1_2/index.html create mode 100644 projects/testing-library/coverage/migrations/5_1_2/index.ts.html create mode 100644 projects/testing-library/coverage/migrations/5_1_2/rules/index.html create mode 100644 projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html create mode 100644 projects/testing-library/coverage/prettify.css create mode 100644 projects/testing-library/coverage/prettify.js create mode 100644 projects/testing-library/coverage/sort-arrow-sprite.png create mode 100644 projects/testing-library/coverage/sorter.js create mode 100644 projects/testing-library/coverage/src/index.html create mode 100644 projects/testing-library/coverage/src/lib/config.ts.html create mode 100644 projects/testing-library/coverage/src/lib/index.html create mode 100644 projects/testing-library/coverage/src/lib/testing-library.ts.html create mode 100644 projects/testing-library/coverage/src/lib/user-events/index.html create mode 100644 projects/testing-library/coverage/src/lib/user-events/index.ts.html create mode 100644 projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html create mode 100644 projects/testing-library/coverage/src/lib/user-events/tab.ts.html create mode 100644 projects/testing-library/coverage/src/lib/user-events/type.ts.html create mode 100644 projects/testing-library/coverage/src/public_api.ts.html create mode 100644 projects/testing-library/index.ts create mode 100644 projects/testing-library/jest.config.js delete mode 100644 projects/testing-library/ng-package.prod.json create mode 100644 projects/testing-library/setup-jest.ts delete mode 100644 projects/testing-library/tsconfig.lib.prod.json create mode 100644 projects/testing-library/tsconfig.spec.json delete mode 100644 src/jest.app.config.js diff --git a/.circleci/config.yml b/.circleci/config.yml index 3744ae17..7571ec1c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,7 +17,7 @@ jobs: key: *cache_key - run: name: install-dependencies - command: yarn --frozen-lockfile + command: yarn --frozen-lockfile --non-interactive - save_cache: key: *cache_key paths: @@ -31,19 +31,9 @@ jobs: key: *cache_key - run: name: lint - command: yarn lint + command: yarn affected:lint - test-lib: - <<: *job_defaults - steps: - - checkout - - restore_cache: - key: *cache_key - - run: - name: test - command: yarn test --maxWorkers=1 --ci - - build-lib: + build: <<: *job_defaults steps: - checkout @@ -56,18 +46,18 @@ jobs: key: *dist_key paths: - dist + - store_artifacts: + path: dist - test-app: + test: <<: *job_defaults steps: - checkout - restore_cache: key: *cache_key - - restore_cache: - key: *dist_key - run: name: test - command: yarn test:app --maxWorkers=1 --ci + command: yarn affected:test --ci --code-coverage release: <<: *job_defaults @@ -101,26 +91,22 @@ workflows: - lint: requires: - install - - test-lib: - requires: - - install - - build-lib: + - build: requires: - lint - - test-lib - - test-app: + - test: requires: - - build-lib + - build - release: requires: - - test-app + - test filters: branches: only: - master - release-beta: requires: - - test-app + - test filters: branches: only: diff --git a/angular.json b/angular.json index 9d6a47b3..a1235c9d 100644 --- a/angular.json +++ b/angular.json @@ -1,9 +1,9 @@ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, - "newProjectRoot": "projects", + "newProjectRoot": "", "projects": { - "testing-library-app": { + "example-app": { "root": "", "sourceRoot": "src", "projectType": "application", @@ -14,13 +14,13 @@ "builder": "@angular-devkit/build-angular:browser", "options": { "aot": true, - "outputPath": "dist/testing-library-app", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "src/tsconfig.app.json", - "assets": ["src/favicon.ico", "src/assets"], - "styles": ["src/styles.css"], + "outputPath": "dist/apps/example-app", + "index": "apps/example-app/index.html", + "main": "apps/example-app/main.ts", + "polyfills": "apps/example-app/polyfills.ts", + "tsConfig": "apps/example-app/tsconfig.json", + "assets": ["apps/example-app/favicon.ico", "apps/example-app/assets"], + "styles": ["apps/example-app/styles.css"], "scripts": [] }, "configurations": { @@ -33,8 +33,8 @@ ], "fileReplacements": [ { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" + "replace": "apps/example-app/environments/environment.ts", + "with": "apps/example-app/environments/environment.prod.ts" } ], "optimization": true, @@ -69,9 +69,17 @@ "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": ["src/tsconfig.app.json", "./tsconfig.spec.json"], + "tsConfig": ["apps/example-app/tsconfig.json", "apps/example-app/tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "apps/example-app/jest.config.js", + "tsConfig": "apps/example-app/tsconfig.spec.json", + "setupFile": "apps/example-app/setup-jest.ts" + } } } }, @@ -89,17 +97,45 @@ }, "configurations": { "production": { - "project": "projects/testing-library/ng-package.prod.json", - "tsConfig": "projects/testing-library/tsconfig.lib.prod.json" + "project": "projects/testing-library/ng-package.json", + "tsConfig": "projects/testing-library/tsconfig.lib.json" } } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": ["projects/testing-library/tsconfig.lib.json", "./tsconfig.spec.json"], + "tsConfig": ["projects/testing-library/tsconfig.lib.json", "projects/testing-library/tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } + }, + "build-release": { + "builder": "@nrwl/workspace:run-commands", + "options": { + "parallel": false, + "commands": [ + { + "command": "ng build testing-library" + }, + { + "command": "tsc -p ./projects/testing-library/migrations/tsconfig.migrations.json" + }, + { + "command": "cpy ./projects/testing-library/migrations/migration.json ./dist/@testing-library/angular/migrations" + }, + { + "command": "cpy ./README.md ./dist/@testing-library/angular" + } + ] + } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "projects/testing-library/jest.config.js", + "tsConfig": "projects/testing-library/tsconfig.spec.json", + "setupFile": "projects/testing-library/setup-jest.ts" + } } } }, @@ -117,17 +153,36 @@ }, "configurations": { "production": { - "project": "projects/jest-utils/ng-package.prod.json", - "tsConfig": "projects/jest-utils/tsconfig.lib.prod.json" + "project": "projects/jest-utils/ng-package.json", + "tsConfig": "projects/jest-utils/tsconfig.lib.json" } } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": ["projects/jest-utils/tsconfig.lib.json", "./tsconfig.spec.json"], + "tsConfig": ["projects/jest-utils/tsconfig.lib.json", "projects/jest-utils/tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } + }, + "build-release": { + "builder": "@nrwl/workspace:run-commands", + "options": { + "parallel": false, + "commands": [ + { + "command": "ng build jest-utils" + } + ] + } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "projects/jest-utils/jest.config.js", + "tsConfig": "projects/jest-utils/tsconfig.spec.json", + "setupFile": "projects/jest-utils/setup-jest.ts" + } } } } diff --git a/src/app/app-routing.module.ts b/apps/example-app/app/app-routing.module.ts similarity index 100% rename from src/app/app-routing.module.ts rename to apps/example-app/app/app-routing.module.ts diff --git a/src/app/app.component.css b/apps/example-app/app/app.component.css similarity index 100% rename from src/app/app.component.css rename to apps/example-app/app/app.component.css diff --git a/src/app/app.component.html b/apps/example-app/app/app.component.html similarity index 100% rename from src/app/app.component.html rename to apps/example-app/app/app.component.html diff --git a/src/app/app.component.ts b/apps/example-app/app/app.component.ts similarity index 100% rename from src/app/app.component.ts rename to apps/example-app/app/app.component.ts diff --git a/src/app/app.module.ts b/apps/example-app/app/app.module.ts similarity index 100% rename from src/app/app.module.ts rename to apps/example-app/app/app.module.ts diff --git a/src/app/examples/00-single-component.spec.ts b/apps/example-app/app/examples/00-single-component.spec.ts similarity index 100% rename from src/app/examples/00-single-component.spec.ts rename to apps/example-app/app/examples/00-single-component.spec.ts diff --git a/src/app/examples/00-single-component.ts b/apps/example-app/app/examples/00-single-component.ts similarity index 100% rename from src/app/examples/00-single-component.ts rename to apps/example-app/app/examples/00-single-component.ts diff --git a/src/app/examples/01-nested-component.spec.ts b/apps/example-app/app/examples/01-nested-component.spec.ts similarity index 100% rename from src/app/examples/01-nested-component.spec.ts rename to apps/example-app/app/examples/01-nested-component.spec.ts diff --git a/src/app/examples/01-nested-component.ts b/apps/example-app/app/examples/01-nested-component.ts similarity index 100% rename from src/app/examples/01-nested-component.ts rename to apps/example-app/app/examples/01-nested-component.ts diff --git a/src/app/examples/02-input-output.spec.ts b/apps/example-app/app/examples/02-input-output.spec.ts similarity index 100% rename from src/app/examples/02-input-output.spec.ts rename to apps/example-app/app/examples/02-input-output.spec.ts diff --git a/src/app/examples/02-input-output.ts b/apps/example-app/app/examples/02-input-output.ts similarity index 100% rename from src/app/examples/02-input-output.ts rename to apps/example-app/app/examples/02-input-output.ts diff --git a/src/app/examples/03-forms.spec.ts b/apps/example-app/app/examples/03-forms.spec.ts similarity index 100% rename from src/app/examples/03-forms.spec.ts rename to apps/example-app/app/examples/03-forms.spec.ts diff --git a/src/app/examples/03-forms.ts b/apps/example-app/app/examples/03-forms.ts similarity index 100% rename from src/app/examples/03-forms.ts rename to apps/example-app/app/examples/03-forms.ts diff --git a/src/app/examples/04-forms-with-material.spec.ts b/apps/example-app/app/examples/04-forms-with-material.spec.ts similarity index 100% rename from src/app/examples/04-forms-with-material.spec.ts rename to apps/example-app/app/examples/04-forms-with-material.spec.ts diff --git a/src/app/examples/04-forms-with-material.ts b/apps/example-app/app/examples/04-forms-with-material.ts similarity index 100% rename from src/app/examples/04-forms-with-material.ts rename to apps/example-app/app/examples/04-forms-with-material.ts diff --git a/src/app/examples/05-component-provider.spec.ts b/apps/example-app/app/examples/05-component-provider.spec.ts similarity index 100% rename from src/app/examples/05-component-provider.spec.ts rename to apps/example-app/app/examples/05-component-provider.spec.ts diff --git a/src/app/examples/05-component-provider.ts b/apps/example-app/app/examples/05-component-provider.ts similarity index 100% rename from src/app/examples/05-component-provider.ts rename to apps/example-app/app/examples/05-component-provider.ts diff --git a/src/app/examples/06-with-ngrx-store.spec.ts b/apps/example-app/app/examples/06-with-ngrx-store.spec.ts similarity index 100% rename from src/app/examples/06-with-ngrx-store.spec.ts rename to apps/example-app/app/examples/06-with-ngrx-store.spec.ts diff --git a/src/app/examples/06-with-ngrx-store.ts b/apps/example-app/app/examples/06-with-ngrx-store.ts similarity index 100% rename from src/app/examples/06-with-ngrx-store.ts rename to apps/example-app/app/examples/06-with-ngrx-store.ts diff --git a/src/app/examples/07-with-ngrx-mock-store.spec.ts b/apps/example-app/app/examples/07-with-ngrx-mock-store.spec.ts similarity index 100% rename from src/app/examples/07-with-ngrx-mock-store.spec.ts rename to apps/example-app/app/examples/07-with-ngrx-mock-store.spec.ts diff --git a/src/app/examples/07-with-ngrx-mock-store.ts b/apps/example-app/app/examples/07-with-ngrx-mock-store.ts similarity index 100% rename from src/app/examples/07-with-ngrx-mock-store.ts rename to apps/example-app/app/examples/07-with-ngrx-mock-store.ts diff --git a/src/app/examples/08-directive.spec.ts b/apps/example-app/app/examples/08-directive.spec.ts similarity index 100% rename from src/app/examples/08-directive.spec.ts rename to apps/example-app/app/examples/08-directive.spec.ts diff --git a/src/app/examples/08-directive.ts b/apps/example-app/app/examples/08-directive.ts similarity index 100% rename from src/app/examples/08-directive.ts rename to apps/example-app/app/examples/08-directive.ts diff --git a/src/app/examples/09-router.spec.ts b/apps/example-app/app/examples/09-router.spec.ts similarity index 100% rename from src/app/examples/09-router.spec.ts rename to apps/example-app/app/examples/09-router.spec.ts diff --git a/src/app/examples/09-router.ts b/apps/example-app/app/examples/09-router.ts similarity index 100% rename from src/app/examples/09-router.ts rename to apps/example-app/app/examples/09-router.ts diff --git a/src/app/examples/10-inject-token-dependency.spec.ts b/apps/example-app/app/examples/10-inject-token-dependency.spec.ts similarity index 100% rename from src/app/examples/10-inject-token-dependency.spec.ts rename to apps/example-app/app/examples/10-inject-token-dependency.spec.ts diff --git a/src/app/examples/10-inject-token-dependency.ts b/apps/example-app/app/examples/10-inject-token-dependency.ts similarity index 100% rename from src/app/examples/10-inject-token-dependency.ts rename to apps/example-app/app/examples/10-inject-token-dependency.ts diff --git a/src/app/examples/11-ng-content.spec.ts b/apps/example-app/app/examples/11-ng-content.spec.ts similarity index 100% rename from src/app/examples/11-ng-content.spec.ts rename to apps/example-app/app/examples/11-ng-content.spec.ts diff --git a/src/app/examples/11-ng-content.ts b/apps/example-app/app/examples/11-ng-content.ts similarity index 100% rename from src/app/examples/11-ng-content.ts rename to apps/example-app/app/examples/11-ng-content.ts diff --git a/src/app/examples/12-service-component.spec.ts b/apps/example-app/app/examples/12-service-component.spec.ts similarity index 100% rename from src/app/examples/12-service-component.spec.ts rename to apps/example-app/app/examples/12-service-component.spec.ts diff --git a/src/app/examples/12-service-component.ts b/apps/example-app/app/examples/12-service-component.ts similarity index 100% rename from src/app/examples/12-service-component.ts rename to apps/example-app/app/examples/12-service-component.ts diff --git a/src/app/examples/README.md b/apps/example-app/app/examples/README.md similarity index 100% rename from src/app/examples/README.md rename to apps/example-app/app/examples/README.md diff --git a/src/app/issues/issue-106.spec.ts b/apps/example-app/app/issues/issue-106.spec.ts similarity index 100% rename from src/app/issues/issue-106.spec.ts rename to apps/example-app/app/issues/issue-106.spec.ts diff --git a/src/app/material.module.ts b/apps/example-app/app/material.module.ts similarity index 100% rename from src/app/material.module.ts rename to apps/example-app/app/material.module.ts diff --git a/src/assets/.gitkeep b/apps/example-app/assets/.gitkeep similarity index 100% rename from src/assets/.gitkeep rename to apps/example-app/assets/.gitkeep diff --git a/apps/example-app/coverage/app/examples/00-single-component.ts.html b/apps/example-app/coverage/app/examples/00-single-component.ts.html new file mode 100644 index 00000000..a3b0a834 --- /dev/null +++ b/apps/example-app/coverage/app/examples/00-single-component.ts.html @@ -0,0 +1,119 @@ + + + + + + Code coverage report for app/examples/00-single-component.ts + + + + + + + + + +
+
+

All files / app/examples 00-single-component.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +141x +  +  +  +  +  +  +  +  +  +1x +1x +  + 
import { Component } from '@angular/core';
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <button (click)="value = value - 1">Decrement</button>
+    <span data-testid="value">{{ value }}</span>
+    <button (click)="value = value + 1">Increment</button>
+  `,
+})
+export class SingleComponent {
+  value = 0;
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/01-nested-component.ts.html b/apps/example-app/coverage/app/examples/01-nested-component.ts.html new file mode 100644 index 00000000..a426300e --- /dev/null +++ b/apps/example-app/coverage/app/examples/01-nested-component.ts.html @@ -0,0 +1,170 @@ + + + + + + Code coverage report for app/examples/01-nested-component.ts + + + + + + + + + +
+
+

All files / app/examples 01-nested-component.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +311x +  +  +  +  +  +1x +1x +2x +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +1x +1x +  + 
import { Component, Input, Output, EventEmitter } from '@angular/core';
+ 
+@Component({
+  selector: 'app-button',
+  template: ` <button (click)="raise.emit()">{{ name }}</button> `,
+})
+export class NestedButtonComponent {
+  @Input() name: string;
+  @Output() raise = new EventEmitter<void>();
+}
+ 
+@Component({
+  selector: 'app-value',
+  template: ` <span data-testid="value">{{ value }}</span> `,
+})
+export class NestedValueComponent {
+  @Input() value: number;
+}
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <app-button (raise)="value = value - 1" name="Decrement"></app-button>
+    <app-value [value]="value"></app-value>
+    <app-button (raise)="value = value + 1" name="Increment"></app-button>
+  `,
+})
+export class NestedContainerComponent {
+  value = 0;
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/02-input-output.ts.html b/apps/example-app/coverage/app/examples/02-input-output.ts.html new file mode 100644 index 00000000..acb6c5ae --- /dev/null +++ b/apps/example-app/coverage/app/examples/02-input-output.ts.html @@ -0,0 +1,128 @@ + + + + + + Code coverage report for app/examples/02-input-output.ts + + + + + + + + + +
+
+

All files / app/examples 02-input-output.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  + 
import { Component, EventEmitter, Input, Output } from '@angular/core';
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <button (click)="value = value - 1">Decrement</button>
+    <span data-testid="value">{{ value }}</span>
+    <button (click)="value = value + 1">Increment</button>
+ 
+    <button (click)="sendValue.emit(value)">Send</button>
+  `,
+})
+export class InputOutputComponent {
+  @Input() value = 0;
+  @Output() sendValue = new EventEmitter<number>();
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/03-forms.ts.html b/apps/example-app/coverage/app/examples/03-forms.ts.html new file mode 100644 index 00000000..c6880b44 --- /dev/null +++ b/apps/example-app/coverage/app/examples/03-forms.ts.html @@ -0,0 +1,281 @@ + + + + + + Code coverage report for app/examples/03-forms.ts + + + + + + + + + +
+
+

All files / app/examples 03-forms.ts

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 5/5 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +681x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +1x +  +  +  +  +  +1x +  +  +280x +  +840x +840x +484x +484x +484x +  +208x +  +136x +  +140x +  +  +  +  +840x +  +  +  + 
import { Component } from '@angular/core';
+import { FormBuilder, Validators, ValidationErrors } from '@angular/forms';
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <form [formGroup]="form" name="form">
+      <div>
+        <label for="name">Name</label>
+        <input type="text" id="name" name="name" formControlName="name" required />
+      </div>
+ 
+      <div>
+        <label for="score">Score</label>
+        <input type="number" id="score" name="score" formControlName="score" required min="0" max="10" />
+      </div>
+ 
+      <div>
+        <label for="color">Color</label>
+        <select id="color" name="color" formControlName="color">
+          <option value="">---</option>
+          <option *ngFor="let color of colors" [value]="color.id">{{ color.value }}</option>
+        </select>
+      </div>
+ 
+      <div role="alert" *ngIf="formErrors.length">
+        <p *ngFor="let error of formErrors">{{ error }}</p>
+      </div>
+    </form>
+  `,
+})
+export class FormsComponent {
+  colors = [
+    { id: 'R', value: 'Red' },
+    { id: 'B', value: 'Blue' },
+    { id: 'G', value: 'Green' },
+  ];
+  form = this.formBuilder.group({
+    name: ['', Validators.required],
+    score: [0, { validators: [Validators.min(1), Validators.max(10)], updateOn: 'blur' }],
+    color: ['', Validators.required],
+  });
+ 
+  constructor(private formBuilder: FormBuilder) {}
+ 
+  get formErrors() {
+    return Object.keys(this.form.controls)
+      .map((formKey) => {
+        const controlErrors: ValidationErrors = this.form.get(formKey).errors;
+        if (controlErrors != null) {
+          return Object.keys(controlErrors).map((keyError) => {
+            const error = controlErrors[keyError];
+            switch (keyError) {
+              case 'required':
+                return `${formKey} is required`;
+              case 'min':
+                return `${formKey} must be greater than ${error.min}`;
+              case 'max':
+                return `${formKey} must be lesser than ${error.max}`;
+            }
+          });
+        }
+      })
+      .reduce((errors, value) => errors.concat(value), [])
+      .filter(Boolean);
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html b/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html new file mode 100644 index 00000000..f4a70482 --- /dev/null +++ b/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html @@ -0,0 +1,347 @@ + + + + + + Code coverage report for app/examples/04-forms-with-material.ts + + + + + + + + + +
+
+

All files / app/examples 04-forms-with-material.ts

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 5/5 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +901x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +1x +  +  +  +  +  +1x +  +  +264x +  +792x +792x +444x +444x +444x +  +224x +  +100x +  +120x +  +  +  +  +792x +  +  +  + 
import { Component } from '@angular/core';
+import { FormBuilder, Validators, ValidationErrors } from '@angular/forms';
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <form [formGroup]="form" name="form">
+      <mat-form-field>
+        <input matInput placeholder="Name" name="name" formControlName="name" required />
+      </mat-form-field>
+ 
+      <mat-form-field>
+        <input
+          matInput
+          type="number"
+          placeholder="Score"
+          name="score"
+          formControlName="score"
+          required
+          min="0"
+          max="10"
+        />
+      </mat-form-field>
+ 
+      <mat-form-field>
+        <mat-select placeholder="Color" name="color" formControlName="color">
+          <mat-option value="">---</mat-option>
+          <mat-option *ngFor="let color of colors" [value]="color.id">{{ color.value }}</mat-option>
+        </mat-select>
+      </mat-form-field>
+ 
+      <div role="alert" *ngIf="formErrors.length">
+        <p *ngFor="let error of formErrors">{{ error }}</p>
+      </div>
+    </form>
+  `,
+  styles: [
+    `
+      form {
+        display: flex;
+        flex-direction: column;
+      }
+ 
+      form > * {
+        width: 100%;
+      }
+ 
+      [role='alert'] {
+        color: red;
+      }
+    `,
+  ],
+})
+export class MaterialFormsComponent {
+  colors = [
+    { id: 'R', value: 'Red' },
+    { id: 'B', value: 'Blue' },
+    { id: 'G', value: 'Green' },
+  ];
+  form = this.formBuilder.group({
+    name: ['', Validators.required],
+    score: [0, [Validators.min(1), Validators.max(10)]],
+    color: ['', Validators.required],
+  });
+ 
+  constructor(private formBuilder: FormBuilder) {}
+ 
+  get formErrors() {
+    return Object.keys(this.form.controls)
+      .map((formKey) => {
+        const controlErrors: ValidationErrors = this.form.get(formKey).errors;
+        if (controlErrors != null) {
+          return Object.keys(controlErrors).map((keyError) => {
+            const error = controlErrors[keyError];
+            switch (keyError) {
+              case 'required':
+                return `${formKey} is required`;
+              case 'min':
+                return `${formKey} must be greater than ${error.min}`;
+              case 'max':
+                return `${formKey} must be lesser than ${error.max}`;
+            }
+          });
+        }
+      })
+      .reduce((errors, value) => errors.concat(value), [])
+      .filter(Boolean);
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/05-component-provider.ts.html b/apps/example-app/coverage/app/examples/05-component-provider.ts.html new file mode 100644 index 00000000..74aba7b2 --- /dev/null +++ b/apps/example-app/coverage/app/examples/05-component-provider.ts.html @@ -0,0 +1,179 @@ + + + + + + Code coverage report for app/examples/05-component-provider.ts + + + + + + + + + +
+
+

All files / app/examples 05-component-provider.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +341x +  +  +  +  +1x +1x +  +  +2x +  +  +  +1x +  +  +  +14x +  +  +  +  +  +  +  +  +  +  +  +  +1x +3x +  + 
import { Component, Injectable } from '@angular/core';
+ 
+@Injectable({
+  providedIn: 'root',
+})
+export class CounterService {
+  private _value = 0;
+ 
+  increment() {
+    this._value += 1;
+  }
+ 
+  decrement() {
+    this._value -= 1;
+  }
+ 
+  value() {
+    return this._value;
+  }
+}
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <button (click)="counter.decrement()">Decrement</button>
+    <span data-testid="value">{{ counter.value() }}</span>
+    <button (click)="counter.increment()">Increment</button>
+  `,
+  providers: [CounterService],
+})
+export class ComponentWithProviderComponent {
+  constructor(public counter: CounterService) {}
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html b/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html new file mode 100644 index 00000000..45730a28 --- /dev/null +++ b/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html @@ -0,0 +1,200 @@ + + + + + + Code coverage report for app/examples/06-with-ngrx-store.ts + + + + + + + + + +
+
+

All files / app/examples 06-with-ngrx-store.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 100% + Lines + 17/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +411x +1x +  +1x +1x +1x +  +2x +1x +  +  +1x +4x +  +  +1x +4x +4x +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +2x +  +  +  +1x +  +  + 
import { Component } from '@angular/core';
+import { createSelector, Store, createAction, createReducer, on, select } from '@ngrx/store';
+ 
+const increment = createAction('increment');
+const decrement = createAction('decrement');
+const counterReducer = createReducer(
+  0,
+  on(increment, (state) => state + 1),
+  on(decrement, (state) => state - 1),
+);
+ 
+export function reducer(state, action) {
+  return counterReducer(state, action);
+}
+ 
+const selectValue = createSelector(
+  (state: any) => state.value,
+  (value) => value * 10,
+);
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <button (click)="decrement()">Decrement</button>
+    <span data-testid="value">{{ value | async }}</span>
+    <button (click)="increment()">Increment</button>
+  `,
+})
+export class WithNgRxStoreComponent {
+  value = this.store.pipe(select(selectValue));
+  constructor(private store: Store<any>) {}
+ 
+  increment() {
+    this.store.dispatch(increment());
+  }
+ 
+  decrement() {
+    this.store.dispatch(decrement());
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html b/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html new file mode 100644 index 00000000..361e8453 --- /dev/null +++ b/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html @@ -0,0 +1,152 @@ + + + + + + Code coverage report for app/examples/07-with-ngrx-mock-store.ts + + + + + + + + + +
+
+

All files / app/examples 07-with-ngrx-mock-store.ts

+
+ +
+ 81.82% + Statements + 9/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 50% + Functions + 2/4 +
+ + +
+ 77.78% + Lines + 7/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +251x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +1x +  +  + 
import { Component } from '@angular/core';
+import { createSelector, Store, select } from '@ngrx/store';
+ 
+export const selectItems = createSelector(
+  (state: any) => state.items,
+  (items) => items,
+);
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <ul>
+      <li *ngFor="let item of items | async" (click)="send(item)" [attr.aria-label]="item">{{ item }}</li>
+    </ul>
+  `,
+})
+export class WithNgRxMockStoreComponent {
+  items = this.store.pipe(select(selectItems));
+  constructor(private store: Store<any>) {}
+ 
+  send(item: string) {
+    this.store.dispatch({ type: '[Item List] send', item });
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/08-directive.ts.html b/apps/example-app/coverage/app/examples/08-directive.ts.html new file mode 100644 index 00000000..04b64f67 --- /dev/null +++ b/apps/example-app/coverage/app/examples/08-directive.ts.html @@ -0,0 +1,155 @@ + + + + + + Code coverage report for app/examples/08-directive.ts + + + + + + + + + +
+
+

All files / app/examples 08-directive.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +261x +  +  +  +  +1x +3x +3x +  +3x +  +  +3x +  +  +  +1x +3x +  +  +  +1x +3x +  +  + 
import { Directive, HostListener, ElementRef, Input, OnInit } from '@angular/core';
+ 
+@Directive({
+  selector: '[appSpoiler]',
+})
+export class SpoilerDirective implements OnInit {
+  @Input() hidden = 'SPOILER';
+  @Input() visible = 'I am visible now...';
+ 
+  constructor(private el: ElementRef) {}
+ 
+  ngOnInit() {
+    this.el.nativeElement.textContent = this.hidden;
+  }
+ 
+  @HostListener('mouseover')
+  onMouseOver() {
+    this.el.nativeElement.textContent = this.visible;
+  }
+ 
+  @HostListener('mouseleave')
+  onMouseLeave() {
+    this.el.nativeElement.textContent = this.hidden;
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/09-router.ts.html b/apps/example-app/coverage/app/examples/09-router.ts.html new file mode 100644 index 00000000..3001226b --- /dev/null +++ b/apps/example-app/coverage/app/examples/09-router.ts.html @@ -0,0 +1,200 @@ + + + + + + Code coverage report for app/examples/09-router.ts + + + + + + + + + +
+
+

All files / app/examples 09-router.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +411x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +6x +4x +4x +4x +  +  +  +  +  +  +1x + 
import { OnInit, Component } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { map } from 'rxjs/operators';
+ 
+@Component({
+  selector: 'app-master',
+  template: `
+    <a [routerLink]="'./detail/one'">Load one</a> | <a [routerLink]="'./detail/two'">Load two</a> |
+    <a [routerLink]="'./detail/three'">Load three</a> |
+ 
+    <hr />
+ 
+    <router-outlet></router-outlet>
+  `,
+})
+export class MasterComponent {}
+ 
+@Component({
+  selector: 'app-detail',
+  template: `
+    <h2>Detail {{ id | async }}</h2>
+ 
+    <p>{{ text | async }} {{ subtext | async }}</p>
+ 
+    <a [routerLink]="'../..'">Back to parent</a>
+    <a routerLink="/hidden-detail">hidden x</a>
+  `,
+})
+export class DetailComponent {
+  id = this.route.paramMap.pipe(map((params) => params.get('id')));
+  text = this.route.queryParams.pipe(map((params) => params['text']));
+  subtext = this.route.queryParams.pipe(map((params) => params['subtext']));
+  constructor(private route: ActivatedRoute) {}
+}
+ 
+@Component({
+  selector: 'app-detail-hidden',
+  template: ` You found the treasure! `,
+})
+export class HiddenDetailComponent {}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html b/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html new file mode 100644 index 00000000..375235b7 --- /dev/null +++ b/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html @@ -0,0 +1,113 @@ + + + + + + Code coverage report for app/examples/10-inject-token-dependency.ts + + + + + + + + + +
+
+

All files / app/examples 10-inject-token-dependency.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +121x +  +1x +  +  +  +  +  +1x +1x +  + 
import { Component, InjectionToken, Inject } from '@angular/core';
+ 
+export const DATA = new InjectionToken<{ text: string }>('Components Data');
+ 
+@Component({
+  selector: 'app-fixture',
+  template: ` {{ data.text }} `,
+})
+export class DataInjectedComponent {
+  constructor(@Inject(DATA) public data: { text: string }) {}
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/11-ng-content.ts.html b/apps/example-app/coverage/app/examples/11-ng-content.ts.html new file mode 100644 index 00000000..1ff2f55f --- /dev/null +++ b/apps/example-app/coverage/app/examples/11-ng-content.ts.html @@ -0,0 +1,113 @@ + + + + + + Code coverage report for app/examples/11-ng-content.ts + + + + + + + + + +
+
+

All files / app/examples 11-ng-content.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +121x +  +  +  +  +  +  +  +  +  +1x + 
import { Component, ChangeDetectionStrategy } from '@angular/core';
+ 
+@Component({
+  template: `
+    <p>
+      <ng-content></ng-content>
+    </p>
+  `,
+  changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class CellComponent {}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/12-service-component.ts.html b/apps/example-app/coverage/app/examples/12-service-component.ts.html new file mode 100644 index 00000000..7ec801d4 --- /dev/null +++ b/apps/example-app/coverage/app/examples/12-service-component.ts.html @@ -0,0 +1,173 @@ + + + + + + Code coverage report for app/examples/12-service-component.ts + + + + + + + + + +
+
+

All files / app/examples 12-service-component.ts

+
+ +
+ 91.67% + Statements + 11/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 50% + Functions + 1/2 +
+ + +
+ 87.5% + Lines + 7/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +321x +1x +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +2x +2x +  + 
import { Component, Injectable } from '@angular/core';
+import { Observable, of } from 'rxjs';
+ 
+export class Customer {
+  id: string;
+  name: string;
+}
+ 
+@Injectable({
+  providedIn: 'root',
+})
+export class CustomersService {
+  load(): Observable<Customer[]> {
+    return of([]);
+  }
+}
+ 
+@Component({
+  selector: 'app-fixture',
+  template: `
+    <ul>
+      <li *ngFor="let customer of customers$ | async">
+        {{ customer.name }}
+      </li>
+    </ul>
+  `,
+})
+export class CustomersComponent {
+  customers$ = this.service.load();
+  constructor(private service: CustomersService) {}
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/index.html b/apps/example-app/coverage/app/examples/index.html new file mode 100644 index 00000000..238061e7 --- /dev/null +++ b/apps/example-app/coverage/app/examples/index.html @@ -0,0 +1,291 @@ + + + + + + Code coverage report for app/examples + + + + + + + + + +
+
+

All files app/examples

+
+ +
+ 98.14% + Statements + 158/161 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 92.86% + Functions + 39/42 +
+ + +
+ 97.39% + Lines + 112/115 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
00-single-component.ts +
+
100%5/5100%0/0100%1/1100%3/3
01-nested-component.ts +
+
100%15/15100%0/0100%2/2100%8/8
02-input-output.ts +
+
100%8/8100%0/0100%1/1100%4/4
03-forms.ts +
+
100%18/18100%5/5100%5/5100%16/16
04-forms-with-material.ts +
+
100%18/18100%5/5100%5/5100%16/16
05-component-provider.ts +
+
100%12/12100%0/0100%5/5100%8/8
06-with-ngrx-store.ts +
+
100%19/19100%0/0100%8/8100%17/17
07-with-ngrx-mock-store.ts +
+
81.82%9/11100%0/050%2/477.78%7/9
08-directive.ts +
+
100%14/14100%0/0100%4/4100%10/10
09-router.ts +
+
100%19/19100%0/0100%4/4100%10/10
10-inject-token-dependency.ts +
+
100%6/6100%0/0100%1/1100%4/4
11-ng-content.ts +
+
100%4/4100%0/0100%0/0100%2/2
12-service-component.ts +
+
91.67%11/12100%0/050%1/287.5%7/8
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/index.html b/apps/example-app/coverage/app/index.html new file mode 100644 index 00000000..6d079084 --- /dev/null +++ b/apps/example-app/coverage/app/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for app + + + + + + + + + +
+
+

All files app

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
material.module.ts +
+
100%6/6100%0/0100%0/0100%4/4
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/app/material.module.ts.html b/apps/example-app/coverage/app/material.module.ts.html new file mode 100644 index 00000000..5b9f72db --- /dev/null +++ b/apps/example-app/coverage/app/material.module.ts.html @@ -0,0 +1,107 @@ + + + + + + Code coverage report for app/material.module.ts + + + + + + + + + +
+
+

All files / app material.module.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +101x +  +1x +1x +  +  +  +  +1x + 
import { NgModule } from '@angular/core';
+ 
+import { MatInputModule } from '@angular/material/input';
+import { MatSelectModule } from '@angular/material/select';
+ 
+@NgModule({
+  exports: [MatInputModule, MatSelectModule],
+})
+export class MaterialModule {}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/base.css b/apps/example-app/coverage/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/apps/example-app/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/apps/example-app/coverage/block-navigation.js b/apps/example-app/coverage/block-navigation.js new file mode 100644 index 00000000..c7ff5a5c --- /dev/null +++ b/apps/example-app/coverage/block-navigation.js @@ -0,0 +1,79 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/apps/example-app/coverage/favicon.png b/apps/example-app/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6691817834a957c938e7f09640a37a645fb31457 GIT binary patch literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 98.2% + Statements + 164/167 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 92.86% + Functions + 39/42 +
+ + +
+ 97.48% + Lines + 116/119 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
app +
+
100%6/6100%0/0100%0/0100%4/4
app/examples +
+
98.14%158/161100%10/1092.86%39/4297.39%112/115
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/apps/example-app/coverage/prettify.css b/apps/example-app/coverage/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/apps/example-app/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/apps/example-app/coverage/prettify.js b/apps/example-app/coverage/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/apps/example-app/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/apps/example-app/coverage/sort-arrow-sprite.png b/apps/example-app/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/src/environments/environment.prod.ts b/apps/example-app/environments/environment.prod.ts similarity index 100% rename from src/environments/environment.prod.ts rename to apps/example-app/environments/environment.prod.ts diff --git a/src/environments/environment.ts b/apps/example-app/environments/environment.ts similarity index 100% rename from src/environments/environment.ts rename to apps/example-app/environments/environment.ts diff --git a/src/favicon.ico b/apps/example-app/favicon.ico similarity index 100% rename from src/favicon.ico rename to apps/example-app/favicon.ico diff --git a/src/index.html b/apps/example-app/index.html similarity index 100% rename from src/index.html rename to apps/example-app/index.html diff --git a/apps/example-app/jest.config.js b/apps/example-app/jest.config.js new file mode 100644 index 00000000..b27af879 --- /dev/null +++ b/apps/example-app/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + name: 'Example App', + displayName: { + name: 'Example', + color: 'blue', + }, + preset: '../../jest.config.js', +}; diff --git a/src/main.ts b/apps/example-app/main.ts similarity index 100% rename from src/main.ts rename to apps/example-app/main.ts diff --git a/src/polyfills.ts b/apps/example-app/polyfills.ts similarity index 100% rename from src/polyfills.ts rename to apps/example-app/polyfills.ts diff --git a/src/setupJest.ts b/apps/example-app/setup-jest.ts similarity index 100% rename from src/setupJest.ts rename to apps/example-app/setup-jest.ts diff --git a/src/styles.css b/apps/example-app/styles.css similarity index 100% rename from src/styles.css rename to apps/example-app/styles.css diff --git a/src/tsconfig.app.json b/apps/example-app/tsconfig.json similarity index 79% rename from src/tsconfig.app.json rename to apps/example-app/tsconfig.json index 587f015b..91857b27 100644 --- a/src/tsconfig.app.json +++ b/apps/example-app/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "types": [], diff --git a/tsconfig.spec.json b/apps/example-app/tsconfig.spec.json similarity index 70% rename from tsconfig.spec.json rename to apps/example-app/tsconfig.spec.json index 9a5ed340..1c4585c7 100644 --- a/tsconfig.spec.json +++ b/apps/example-app/tsconfig.spec.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "module": "commonjs", "types": ["jest", "node"] diff --git a/src/tslint.json b/apps/example-app/tslint.json similarity index 81% rename from src/tslint.json rename to apps/example-app/tslint.json index ca6ba8c9..8006e74e 100644 --- a/src/tslint.json +++ b/apps/example-app/tslint.json @@ -1,5 +1,5 @@ { - "extends": "../tslint.json", + "extends": "../../tslint.json", "rules": { "directive-selector": [true, "attribute", "app", "camelCase"], "component-selector": [true, "element", "app", "kebab-case"] diff --git a/jest.base.config.js b/jest.config.js similarity index 51% rename from jest.base.config.js rename to jest.config.js index 2ad734c0..40ff7d67 100644 --- a/jest.base.config.js +++ b/jest.config.js @@ -1,8 +1,11 @@ module.exports = { - preset: 'jest-preset-angular', - rootDir: '../', - transformIgnorePatterns: ['node_modules/(?!@ngrx)'], - + testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'], + transform: { + '^.+\\.(ts|js|html)$': 'ts-jest', + }, + resolver: '@nrwl/jest/plugins/resolver', + moduleFileExtensions: ['ts', 'js', 'html'], + coverageReporters: ['html'], snapshotSerializers: [ 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', 'jest-preset-angular/build/AngularSnapshotSerializer.js', diff --git a/nx.json b/nx.json new file mode 100644 index 00000000..99323010 --- /dev/null +++ b/nx.json @@ -0,0 +1,30 @@ +{ + "npmScope": "testing-library", + "implicitDependencies": { + "angular.json": "*", + "package.json": "*", + "tsconfig.json": "*", + "tslint.json": "*", + "nx.json": "*" + }, + "tasksRunnerOptions": { + "default": { + "runner": "@nrwl/workspace/tasks-runners/default", + "options": { + "strictlyOrderedTargets": ["build-release"], + "cacheableOperations": ["build", "build-release", "test", "lint"] + } + } + }, + "projects": { + "example-app": { + "tags": [] + }, + "testing-library": { + "tags": [] + }, + "jest-utils": { + "tags": [] + } + } +} diff --git a/package.json b/package.json index a6f68c7b..8f269c1f 100644 --- a/package.json +++ b/package.json @@ -4,16 +4,19 @@ "scripts": { "ng": "ng", "start": "ng serve", - "prebuild": "rimraf dist", - "build": "npm run build:library && npm run build:library:jest-utils && npm run build:migrations && npm run build:readme", - "build:library": "ng build --prod testing-library", - "build:library:jest-utils": "ng build --prod jest-utils", - "build:migrations": "tsc -p ./projects/testing-library/migrations/tsconfig.migrations.json && cpy ./projects/testing-library/migrations/migration.json ./dist/@testing-library/angular/migrations", - "build:readme": "cpy ./README.md ./dist/@testing-library/angular", - "test": "jest --config ./projects/jest.lib.config.js", - "test:app": "jest --config ./src/jest.app.config.js", + "build": "nx run-many --target=build-release --all", + "test": "yarn affected:test", + "lint": "nx workspace-lint && ng lint", + "e2e": "ng e2e", + "affected:apps": "nx affected:apps", + "affected:libs": "nx affected:libs", + "affected:build": "nx affected:build", + "affected:e2e": "nx affected:e2e", + "affected:test": "nx affected:test", + "affected:lint": "nx affected:lint", + "affected:dep-graph": "nx affected:dep-graph", + "affected": "nx affected", "precommit": "lint-staged", - "lint": "ng lint", "semantic-release": "semantic-release" }, "dependencies": { @@ -28,6 +31,7 @@ "@angular/platform-browser-dynamic": "^9.0.3", "@angular/router": "^9.0.3", "@ngrx/store": "^9.0.0-rc.0", + "@nrwl/angular": "^9.4.5", "@phenomnomnominal/tsquery": "^3.0.0", "@testing-library/dom": "^7.9.0", "@testing-library/user-event": "^11.0.0", @@ -43,6 +47,10 @@ "@angular/cli": "~9.0.3", "@angular/compiler-cli": "^9.0.3", "@angular/language-service": "^9.0.3", + "@nrwl/jest": "^9.4.5", + "@nrwl/node": "^9.4.5", + "@nrwl/nx-plugin": "^9.4.5", + "@nrwl/workspace": "^9.4.5", "@testing-library/jest-dom": "^5.9.0", "@types/jest": "~24.0.11", "@types/node": "^14.0.11", diff --git a/projects/jest-utils/coverage/base.css b/projects/jest-utils/coverage/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/projects/jest-utils/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/projects/jest-utils/coverage/block-navigation.js b/projects/jest-utils/coverage/block-navigation.js new file mode 100644 index 00000000..c7ff5a5c --- /dev/null +++ b/projects/jest-utils/coverage/block-navigation.js @@ -0,0 +1,79 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/projects/jest-utils/coverage/favicon.png b/projects/jest-utils/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6691817834a957c938e7f09640a37a645fb31457 GIT binary patch literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 17/17 +
+ + +
+ 100% + Branches + 6/6 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 17/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
100%1/1100%0/0100%0/0100%1/1
src/lib +
+
100%16/16100%6/6100%3/3100%16/16
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/coverage/prettify.css b/projects/jest-utils/coverage/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/projects/jest-utils/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/projects/jest-utils/coverage/prettify.js b/projects/jest-utils/coverage/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/projects/jest-utils/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/projects/jest-utils/coverage/sort-arrow-sprite.png b/projects/jest-utils/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/projects/jest-utils/coverage/src/index.html b/projects/jest-utils/coverage/src/index.html new file mode 100644 index 00000000..7d83e44b --- /dev/null +++ b/projects/jest-utils/coverage/src/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
public_api.ts +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/create-mock.ts.html b/projects/jest-utils/coverage/src/lib/create-mock.ts.html new file mode 100644 index 00000000..9a821d0b --- /dev/null +++ b/projects/jest-utils/coverage/src/lib/create-mock.ts.html @@ -0,0 +1,191 @@ + + + + + + Code coverage report for src/lib/create-mock.ts + + + + + + + + + +
+
+

All files / src/lib create-mock.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 6/6 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38  +  +  +  +1x +3x +  +  +9x +3x +  +  +6x +42x +6x +  +  +36x +36x +33x +  +  +  +6x +  +  +3x +  +3x +  +  +1x +2x +  +  +  +  + 
import { Type, Provider } from '@angular/core';
+ 
+export type Mock<T> = T & { [K in keyof T]: T[K] & jest.Mock };
+ 
+export function createMock<T>(type: Type<T>): Mock<T> {
+  const mock: any = {};
+ 
+  function mockFunctions(proto: any) {
+    if (!proto) {
+      return;
+    }
+ 
+    for (const prop of Object.getOwnPropertyNames(proto)) {
+      if (prop === 'constructor') {
+        continue;
+      }
+ 
+      const descriptor = Object.getOwnPropertyDescriptor(proto, prop);
+      if (typeof descriptor.value === 'function') {
+        mock[prop] = jest.fn();
+      }
+    }
+ 
+    mockFunctions(Object.getPrototypeOf(proto));
+  }
+ 
+  mockFunctions(type.prototype);
+ 
+  return mock;
+}
+ 
+export function provideMock<T>(type: Type<T>): Provider {
+  return {
+    provide: type,
+    useValue: createMock(type),
+  };
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/index.html b/projects/jest-utils/coverage/src/lib/index.html new file mode 100644 index 00000000..624a2a91 --- /dev/null +++ b/projects/jest-utils/coverage/src/lib/index.html @@ -0,0 +1,126 @@ + + + + + + Code coverage report for src/lib + + + + + + + + + +
+
+

All files src/lib

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 6/6 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
create-mock.ts +
+
100%15/15100%6/6100%3/3100%15/15
index.ts +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/index.ts.html b/projects/jest-utils/coverage/src/lib/index.ts.html new file mode 100644 index 00000000..c17f446c --- /dev/null +++ b/projects/jest-utils/coverage/src/lib/index.ts.html @@ -0,0 +1,83 @@ + + + + + + Code coverage report for src/lib/index.ts + + + + + + + + + +
+
+

All files / src/lib index.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +21x + 
export * from './create-mock';
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/public_api.ts.html b/projects/jest-utils/coverage/src/public_api.ts.html new file mode 100644 index 00000000..03e41c90 --- /dev/null +++ b/projects/jest-utils/coverage/src/public_api.ts.html @@ -0,0 +1,95 @@ + + + + + + Code coverage report for src/public_api.ts + + + + + + + + + +
+
+

All files / src public_api.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6  +  +  +  +1x + 
/*
+ * Public API Surface of testing-library
+ */
+ 
+export * from './lib';
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/jest-utils/index.ts b/projects/jest-utils/index.ts new file mode 100644 index 00000000..decc72d8 --- /dev/null +++ b/projects/jest-utils/index.ts @@ -0,0 +1 @@ +export * from './src/public_api'; diff --git a/projects/jest-utils/jest.config.js b/projects/jest-utils/jest.config.js new file mode 100644 index 00000000..22901bb9 --- /dev/null +++ b/projects/jest-utils/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + name: 'Jest utils', + displayName: { + name: 'JEST UTILS', + color: 'magenta', + }, + preset: '../../jest.config.js', +}; diff --git a/projects/jest-utils/ng-package.json b/projects/jest-utils/ng-package.json index 1018dbf9..210c7bc0 100644 --- a/projects/jest-utils/ng-package.json +++ b/projects/jest-utils/ng-package.json @@ -1,8 +1,8 @@ { "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../@testing-library/angular/jest-utils", + "dest": "../../dist/@testing-library/angular/jest-utils", "deleteDestPath": false, "lib": { - "entryFile": "src/public_api.ts" + "entryFile": "index.ts" } } diff --git a/projects/jest-utils/ng-package.prod.json b/projects/jest-utils/ng-package.prod.json deleted file mode 100644 index e5c8dc98..00000000 --- a/projects/jest-utils/ng-package.prod.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/@testing-library/angular/jest-utils", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public_api.ts" - } -} diff --git a/projects/setupJest.ts b/projects/jest-utils/setup-jest.ts similarity index 100% rename from projects/setupJest.ts rename to projects/jest-utils/setup-jest.ts diff --git a/projects/jest-utils/tsconfig.lib.json b/projects/jest-utils/tsconfig.lib.json index 1819bada..7c5f4cac 100644 --- a/projects/jest-utils/tsconfig.lib.json +++ b/projects/jest-utils/tsconfig.lib.json @@ -16,6 +16,7 @@ "lib": ["dom", "es2015"] }, "angularCompilerOptions": { + "enableIvy": false, "skipTemplateCodegen": true, "strictMetadataEmit": true, "fullTemplateTypeCheck": true, diff --git a/projects/jest-utils/tsconfig.lib.prod.json b/projects/jest-utils/tsconfig.lib.prod.json deleted file mode 100644 index cbae7942..00000000 --- a/projects/jest-utils/tsconfig.lib.prod.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig.lib.json", - "angularCompilerOptions": { - "enableIvy": false - } -} diff --git a/projects/jest-utils/tsconfig.spec.json b/projects/jest-utils/tsconfig.spec.json new file mode 100644 index 00000000..1c4585c7 --- /dev/null +++ b/projects/jest-utils/tsconfig.spec.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "types": ["jest", "node"] + } +} diff --git a/projects/jest.lib.config.js b/projects/jest.lib.config.js deleted file mode 100644 index c74b4758..00000000 --- a/projects/jest.lib.config.js +++ /dev/null @@ -1,11 +0,0 @@ -const baseConfig = require('../jest.base.config'); - -module.exports = { - ...baseConfig, - roots: ['/projects'], - setupFilesAfterEnv: ['/projects/setupJest.ts'], - displayName: { - name: 'LIB', - color: 'magenta', - }, -}; diff --git a/projects/testing-library/coverage/base.css b/projects/testing-library/coverage/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/projects/testing-library/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/projects/testing-library/coverage/block-navigation.js b/projects/testing-library/coverage/block-navigation.js new file mode 100644 index 00000000..c7ff5a5c --- /dev/null +++ b/projects/testing-library/coverage/block-navigation.js @@ -0,0 +1,79 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/projects/testing-library/coverage/favicon.png b/projects/testing-library/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6691817834a957c938e7f09640a37a645fb31457 GIT binary patch literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 94.69% + Statements + 392/414 +
+ + +
+ 77.69% + Branches + 101/130 +
+ + +
+ 93.33% + Functions + 84/90 +
+ + +
+ 94.94% + Lines + 375/395 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
migrations/4_0_0 +
+
100%11/11100%0/0100%3/3100%11/11
migrations/4_0_0/rules +
+
100%56/56100%4/4100%10/10100%56/56
migrations/5_1_2 +
+
100%19/1983.33%5/6100%5/5100%19/19
migrations/5_1_2/rules +
+
100%12/12100%0/0100%3/3100%12/12
src +
+
100%3/3100%0/0100%0/0100%3/3
src/lib +
+
91.81%213/23276.25%61/8088.89%48/5492.2%201/218
src/lib/user-events +
+
96.3%78/8177.5%31/40100%15/1596.05%73/76
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/index.html b/projects/testing-library/coverage/migrations/4_0_0/index.html new file mode 100644 index 00000000..07c2122d --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for migrations/4_0_0 + + + + + + + + + +
+
+

All files migrations/4_0_0

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%11/11100%0/0100%3/3100%11/11
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/index.ts.html b/projects/testing-library/coverage/migrations/4_0_0/index.ts.html new file mode 100644 index 00000000..fa023184 --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/index.ts.html @@ -0,0 +1,170 @@ + + + + + + Code coverage report for migrations/4_0_0/index.ts + + + + + + + + + +
+
+

All files / migrations/4_0_0 index.ts

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31  +1x +1x +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +3x +3x +3x +3x +  +3x +3x +3x +  +  + 
import { Rule } from '@angular-devkit/schematics';
+import { TslintFixTask } from '@angular-devkit/schematics/tasks';
+import * as path from 'path';
+ 
+function createRule(ruleName: string): TslintFixTask {
+  return new TslintFixTask(
+    {
+      rulesDirectory: path.join(__dirname, 'rules'),
+      rules: {
+        [ruleName]: [true],
+      },
+    },
+    {
+      includes: ['**/*.spec.ts', '**/*.test.ts'],
+      silent: false,
+    },
+  );
+}
+ 
+export default function (): Rule {
+  return (_, context) => {
+    const noCreateComponentRule = createRule('no-create-component');
+    const noComponentParametersRule = createRule('no-component-parameters');
+    const noComponentPropertyRule = createRule('no-component-property');
+ 
+    const noCreateComponentRuleId = context.addTask(noCreateComponentRule);
+    const noComponentParametersRuleId = context.addTask(noComponentParametersRule, [noCreateComponentRuleId]);
+    context.addTask(noComponentPropertyRule, [noComponentParametersRuleId]);
+  };
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/index.html b/projects/testing-library/coverage/migrations/4_0_0/rules/index.html new file mode 100644 index 00000000..eeffc45a --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/rules/index.html @@ -0,0 +1,141 @@ + + + + + + Code coverage report for migrations/4_0_0/rules + + + + + + + + + +
+
+

All files migrations/4_0_0/rules

+
+ +
+ 100% + Statements + 56/56 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 10/10 +
+ + +
+ 100% + Lines + 56/56 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
noComponentParametersRule.ts +
+
100%23/23100%2/2100%3/3100%23/23
noComponentPropertyRule.ts +
+
100%12/12100%2/2100%2/2100%12/12
noCreateComponentRule.ts +
+
100%21/21100%0/0100%5/5100%21/21
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html new file mode 100644 index 00000000..b6956de7 --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html @@ -0,0 +1,212 @@ + + + + + + Code coverage report for migrations/4_0_0/rules/noComponentParametersRule.ts + + + + + + + + + +
+
+

All files / migrations/4_0_0/rules noComponentParametersRule.ts

+
+ +
+ 100% + Statements + 23/23 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 23/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45  +1x +1x +  +  +1x +1x +1x +  +1x +  +1x +  +5x +  +4x +4x +2x +  +2x +  +2x +2x +  +2x +  +  +  +2x +2x +2x +  +2x +2x +2x +  +2x +  +  +  +  +4x +  +  + 
import * as ts from 'typescript';
+import { Replacement, RuleFailure, Rules } from 'tslint';
+import { tsquery } from '@phenomnomnominal/tsquery';
+ 
+const IS_COMPONENT_PROPERTY_QUERY =
+  'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:first-child';
+const RENDER_OPTIONS_QUERY = 'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:last-child';
+const COMPONENT_PARAMETERS_PROPERTY_VALUE_QUERY = 'PropertyAssignment:has(Identifier[name="parameters"]) :last-child';
+ 
+const FAILURE_MESSAGE = 'Found `parameters` parameter, use `componentProperties` instead.';
+ 
+export class Rule extends Rules.AbstractRule {
+  public apply(ast: ts.SourceFile): Array<RuleFailure> {
+    return tsquery(ast, IS_COMPONENT_PROPERTY_QUERY)
+      .map((result) => {
+        const [parameterNode] = tsquery(result, COMPONENT_PARAMETERS_PROPERTY_VALUE_QUERY);
+        if (!parameterNode) {
+          return [];
+        }
+        const [renderOptionsNode] = tsquery(ast, RENDER_OPTIONS_QUERY);
+ 
+        const renderOptionsText = renderOptionsNode.getFullText();
+        const bracketIndex = renderOptionsText.indexOf('{');
+        const renderOptions =
+          renderOptionsText.substring(0, bracketIndex + 1) +
+          `componentProperties:${parameterNode.getFullText()},` +
+          renderOptionsText.substr(bracketIndex + 1);
+ 
+        const replacement = new Replacement(renderOptionsNode.getStart(), renderOptionsNode.getWidth(), renderOptions);
+        const start = renderOptionsNode.getStart();
+        const end = renderOptionsNode.getEnd();
+ 
+        const replacementOriginal = new Replacement(parameterNode.getStart(), parameterNode.getWidth(), '');
+        const startOriginal = renderOptionsNode.getStart();
+        const endOriginal = renderOptionsNode.getEnd();
+ 
+        return [
+          new RuleFailure(ast, startOriginal, endOriginal, FAILURE_MESSAGE, this.ruleName, replacementOriginal),
+          new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement),
+        ];
+      })
+      .reduce((rules, rule) => rules.concat(rule), []);
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html new file mode 100644 index 00000000..562a01c9 --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for migrations/4_0_0/rules/noComponentPropertyRule.ts + + + + + + + + + +
+
+

All files / migrations/4_0_0/rules noComponentPropertyRule.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23  +1x +1x +  +  +1x +1x +  +1x +  +1x +  +7x +4x +4x +4x +4x +  +4x +  +  +  + 
import * as ts from 'typescript';
+import { Replacement, RuleFailure, Rules } from 'tslint';
+import { tsquery } from '@phenomnomnominal/tsquery';
+ 
+const IS_COMPONENT_PROPERTY_QUERY =
+  'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:first-child';
+const COMPONENT_PROPERTY_VALUE_QUERY = 'PropertyAssignment:has(Identifier[name="component"]) :last-child';
+ 
+const FAILURE_MESSAGE = 'Found component propety syntax, signature looks different.';
+ 
+export class Rule extends Rules.AbstractRule {
+  public apply(ast: ts.SourceFile): Array<RuleFailure> {
+    return tsquery(ast, IS_COMPONENT_PROPERTY_QUERY).map((result) => {
+      const [valueNode] = tsquery(result, COMPONENT_PROPERTY_VALUE_QUERY);
+      const replacement = new Replacement(result.getStart(), result.getWidth(), (valueNode || result).getText());
+      const start = result.getStart();
+      const end = result.getEnd();
+ 
+      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
+    });
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html new file mode 100644 index 00000000..d8d28b8b --- /dev/null +++ b/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html @@ -0,0 +1,200 @@ + + + + + + Code coverage report for migrations/4_0_0/rules/noCreateComponentRule.ts + + + + + + + + + +
+
+

All files / migrations/4_0_0/rules noCreateComponentRule.ts

+
+ +
+ 100% + Statements + 21/21 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 21/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41  +1x +1x +  +1x +1x +1x +  +1x +  +1x +  +1x +  +9x +9x +  +9x +  +  +  +9x +6x +6x +6x +  +6x +  +  +  +  +9x +6x +6x +6x +  +6x +  +  +  + 
import * as ts from 'typescript';
+import { Replacement, RuleFailure, Rules } from 'tslint';
+import { tsquery } from '@phenomnomnominal/tsquery';
+ 
+const CREATE_COMPONENT_IDENTIFIER = 'Identifier[name="createComponent"]';
+const CREATE_COMPONENT_IMPORT_QUERY = `ImportSpecifier > ${CREATE_COMPONENT_IDENTIFIER}`;
+const CREATE_COMPONENT_CALL_EXPRESSION_QUERY = `CallExpression > ${CREATE_COMPONENT_IDENTIFIER}`;
+ 
+const RENDER = 'render';
+ 
+const FAILURE_MESSAGE = 'Found `createComponent`, use `render` instead.';
+ 
+export class Rule extends Rules.AbstractRule {
+  public apply(ast: ts.SourceFile): Array<RuleFailure> {
+    const imports = this.getImports(ast);
+    const usages = this.getUsages(ast);
+ 
+    return [...imports, ...usages];
+  }
+ 
+  private getImports(ast: ts.SourceFile): Array<RuleFailure> {
+    return tsquery(ast, CREATE_COMPONENT_IMPORT_QUERY).map((result) => {
+      const replacement = new Replacement(result.getStart(), result.getWidth(), RENDER);
+      const start = result.getStart();
+      const end = result.getEnd();
+ 
+      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
+    });
+  }
+ 
+  private getUsages(ast: ts.SourceFile): Array<RuleFailure> {
+    return tsquery(ast, CREATE_COMPONENT_CALL_EXPRESSION_QUERY).map((result) => {
+      const replacement = new Replacement(result.getStart(), result.getWidth(), RENDER);
+      const start = result.getStart();
+      const end = result.getEnd();
+ 
+      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
+    });
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/index.html b/projects/testing-library/coverage/migrations/5_1_2/index.html new file mode 100644 index 00000000..96131209 --- /dev/null +++ b/projects/testing-library/coverage/migrations/5_1_2/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for migrations/5_1_2 + + + + + + + + + +
+
+

All files migrations/5_1_2

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 83.33% + Branches + 5/6 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%19/1983.33%5/6100%5/5100%19/19
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/index.ts.html b/projects/testing-library/coverage/migrations/5_1_2/index.ts.html new file mode 100644 index 00000000..b70fb593 --- /dev/null +++ b/projects/testing-library/coverage/migrations/5_1_2/index.ts.html @@ -0,0 +1,239 @@ + + + + + + Code coverage report for migrations/5_1_2/index.ts + + + + + + + + + +
+
+

All files / migrations/5_1_2 index.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 83.33% + Branches + 5/6 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +541x +1x +1x +1x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +2x +  +  +  +2x +  +2x +2x +  +2x +1x +1x +1x +  +  +  +2x +  +  +1x +2x +2x +  +2x +  +  + 
import { Rule, chain, Tree, SchematicContext } from '@angular-devkit/schematics';
+import { TslintFixTask } from '@angular-devkit/schematics/tasks';
+import * as path from 'path';
+import { stripIndents } from '@angular-devkit/core/src/utils/literals';
+ 
+function createRule(ruleName: string): TslintFixTask {
+  return new TslintFixTask(
+    {
+      rulesDirectory: path.join(__dirname, 'rules'),
+      rules: {
+        [ruleName]: [true],
+      },
+    },
+    {
+      includes: ['**/*.spec.ts', '**/*.test.ts'],
+      silent: false,
+    },
+  );
+}
+ 
+function displayInformation(tree, context: SchematicContext) {
+  context.logger.info(stripIndents`
+    @angular-extensions/testing-library has moved to @testing-library/angular.
+ 
+    Learn more about this change here: https://github.com/testing-library/dom-testing-library/issues/260
+  `);
+ 
+  return tree;
+}
+ 
+function updatePackageJson(host: Tree) {
+  Eif (host.exists('package.json')) {
+    // tslint:disable-next-line: no-non-null-assertion
+    const sourceText = host.read('package.json')!.toString('utf-8');
+    const json = JSON.parse(sourceText);
+ 
+    if (json['devDependencies'] && json['devDependencies']['@angular-extensions/testing-library']) {
+      json['devDependencies']['@testing-library/angular'] = '^6.0.0';
+      delete json['devDependencies']['@angular-extensions/testing-library'];
+      host.overwrite('package.json', JSON.stringify(json, null, 2));
+    }
+  }
+ 
+  return host;
+}
+ 
+export default function (): Rule {
+  return (host, context) => {
+    context.addTask(createRule('no-angular-extensions-import'));
+ 
+    return chain([displayInformation, updatePackageJson])(host, context);
+  };
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/rules/index.html b/projects/testing-library/coverage/migrations/5_1_2/rules/index.html new file mode 100644 index 00000000..ccb26c1d --- /dev/null +++ b/projects/testing-library/coverage/migrations/5_1_2/rules/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for migrations/5_1_2/rules + + + + + + + + + +
+
+

All files migrations/5_1_2/rules

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
noAngularExtensionsImportRule.ts +
+
100%12/12100%0/0100%3/3100%12/12
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html b/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html new file mode 100644 index 00000000..05c555f8 --- /dev/null +++ b/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html @@ -0,0 +1,158 @@ + + + + + + Code coverage report for migrations/5_1_2/rules/noAngularExtensionsImportRule.ts + + + + + + + + + +
+
+

All files / migrations/5_1_2/rules noAngularExtensionsImportRule.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27  +1x +1x +  +1x +  +  +1x +  +1x +  +4x +4x +  +  +  +4x +  +4x +4x +4x +  +4x +  +  +  + 
import * as ts from 'typescript';
+import { Replacement, RuleFailure, Rules } from 'tslint';
+import { tsquery } from '@phenomnomnominal/tsquery';
+ 
+const IMPORT_QUERY = `ImportDeclaration StringLiteral[value="@angular-extensions/testing-library"]`;
+ 
+const FAILURE_MESSAGE =
+  'Found the library `@angular-extensions/testing-library`, use `@testing-library/angular` instead.';
+ 
+export class Rule extends Rules.AbstractRule {
+  public apply(ast: ts.SourceFile): Array<RuleFailure> {
+    const imports = this.getImports(ast);
+    return imports;
+  }
+ 
+  private getImports(ast: ts.SourceFile): Array<RuleFailure> {
+    return tsquery(ast, IMPORT_QUERY).map((result) => {
+      // replace text between (single) quotes
+      const replacement = new Replacement(result.getStart() + 1, result.getWidth() - 2, '@testing-library/angular');
+      const start = result.getStart();
+      const end = result.getEnd();
+ 
+      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
+    });
+  }
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/prettify.css b/projects/testing-library/coverage/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/projects/testing-library/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/projects/testing-library/coverage/prettify.js b/projects/testing-library/coverage/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/projects/testing-library/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/projects/testing-library/coverage/sort-arrow-sprite.png b/projects/testing-library/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/projects/testing-library/coverage/src/index.html b/projects/testing-library/coverage/src/index.html new file mode 100644 index 00000000..c4d53145 --- /dev/null +++ b/projects/testing-library/coverage/src/index.html @@ -0,0 +1,111 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
public_api.ts +
+
100%3/3100%0/0100%0/0100%3/3
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/config.ts.html b/projects/testing-library/coverage/src/lib/config.ts.html new file mode 100644 index 00000000..2fc203a1 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/config.ts.html @@ -0,0 +1,152 @@ + + + + + + Code coverage report for src/lib/config.ts + + + + + + + + + +
+
+

All files / src/lib config.ts

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +17x +  +  +  +  +17x +3x +  +  +1x +  +  +  +3x +  +  +  +  +  +17x +70x +  + 
import { Config } from './models';
+ 
+let config: Config = {
+  defaultImports: [],
+  dom: {},
+};
+ 
+export function configure(newConfig: Partial<Config> | ((config: Partial<Config>) => Partial<Config>)) {
+  if (typeof newConfig === 'function') {
+    // Pass the existing config out to the provided function
+    // and accept a delta in return
+    newConfig = newConfig(config);
+  }
+ 
+  // Merge the incoming config delta
+  config = {
+    ...config,
+    ...newConfig,
+  };
+}
+ 
+export function getConfig() {
+  return config;
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/index.html b/projects/testing-library/coverage/src/lib/index.html new file mode 100644 index 00000000..412d5e86 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/index.html @@ -0,0 +1,126 @@ + + + + + + Code coverage report for src/lib + + + + + + + + + +
+
+

All files src/lib

+
+ +
+ 91.81% + Statements + 213/232 +
+ + +
+ 76.25% + Branches + 61/80 +
+ + +
+ 88.89% + Functions + 48/54 +
+ + +
+ 92.2% + Lines + 201/218 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
config.ts +
+
100%7/7100%2/2100%2/2100%7/7
testing-library.ts +
+
91.56%206/22575.64%59/7888.46%46/5291.94%194/211
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/testing-library.ts.html b/projects/testing-library/coverage/src/lib/testing-library.ts.html new file mode 100644 index 00000000..d0baed59 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/testing-library.ts.html @@ -0,0 +1,1574 @@ + + + + + + Code coverage report for src/lib/testing-library.ts + + + + + + + + + +
+
+

All files / src/lib testing-library.ts

+
+ +
+ 91.56% + Statements + 206/225 +
+ + +
+ 75.64% + Branches + 59/78 +
+ + +
+ 88.46% + Functions + 46/52 +
+ + +
+ 91.94% + Lines + 194/211 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +49917x +17x +17x +17x +17x +17x +17x +  +  +  +  +  +  +  +  +  +  +  +  +  +17x +17x +  +17x +  +  +  +  +  +  +  +  +  +  +17x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +70x +  +70x +  +70x +  +964x +964x +964x +  +  +  +  +70x +  +  +  +  +  +  +70x +70x +2x +  +2x +2x +  +  +  +70x +70x +  +70x +3x +3x +3x +3x +  +  +  +70x +  +70x +  +70x +70x +  +  +1082x +973x +  +  +  +  +70x +3x +3x +  +  +70x +70x +  +  +70x +5810x +962x +962x +962x +  +5810x +  +  +70x +2x +  +2x +  +2x +1x +  +  +2x +  +  +70x +70x +70x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +3x +  +  +70x +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +70x +7x +7x +  +63x +  +  +  +  +  +  +72x +40x +  +72x +  +  +  +72x +  +  +  +  +  +5x +5x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +70x +70x +  +  +70x +70x +  +  +70x +  +  +  +70x +  +70x +70x +  +  +70x +70x +  +  +70x +  +  +  +  +  +  +  +  +  +  +8x +45x +45x +  +  +  +  +  +  +  +  +  +  +  +  +6x +2x +2x +2x +2x +4x +  +26x +  +26x +  +4x +  +  +6x +62x +62x +  +  +  +  +71x +  +  +  +70x +3x +  +70x +  +  +17x +71x +71x +  +  +  +  +17x +  +  +  +  +  +87x +4193x +1392x +1392x +  +4x +  +11x +  +  +2x +  +  +2801x +  +  +4193x +  +  +  +  +  +  +  +1026x +1026x +1026x +  +109x +  +  +  +  +  +  +  +  +  +17x +1411x +2x +2x +2x +  +1411x +  +  +  +  +  +17x +  +  +  +  +  +2x +  +  +  +  +  +  +3x +  +  +  +  +  +17x +  +  +  +  +  +  +  +  +  +  +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +17x +  +  +17x + 
import { Component, Type, NgZone, SimpleChange, OnChanges, SimpleChanges } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { Router } from '@angular/router';
+import { RouterTestingModule } from '@angular/router/testing';
+import {
+  FireFunction,
+  FireObject,
+  getQueriesForElement as dtlGetQueriesForElement,
+  prettyDOM as dtlPrettyDOM,
+  waitFor as dtlWaitFor,
+  waitForElementToBeRemoved as dtlWaitForElementToBeRemoved,
+  fireEvent as dtlFireEvent,
+  screen as dtlScreen,
+  queries as dtlQueries,
+  waitForOptions as dtlWaitForOptions,
+  configure as dtlConfigure,
+} from '@testing-library/dom';
+import { RenderComponentOptions, RenderDirectiveOptions, RenderResult } from './models';
+import { getConfig } from './config';
+import { createSelectOptions, createType, tab } from './user-events';
+ 
+const mountedFixtures = new Set<ComponentFixture<any>>();
+ 
+export async function render<ComponentType>(
+  component: Type<ComponentType>,
+  renderOptions?: RenderComponentOptions<ComponentType>,
+): Promise<RenderResult<ComponentType, ComponentType>>;
+export async function render<DirectiveType, WrapperType = WrapperComponent>(
+  component: Type<DirectiveType>,
+  renderOptions?: RenderDirectiveOptions<DirectiveType, WrapperType>,
+): Promise<RenderResult<DirectiveType, WrapperType>>;
+ 
+export async function render<SutType, WrapperType = SutType>(
+  sut: Type<SutType>,
+  renderOptions: RenderComponentOptions<SutType> | RenderDirectiveOptions<SutType, WrapperType> = {},
+): Promise<RenderResult<SutType>> {
+  const {
+    detectChanges: detectChangesOnRender = true,
+    declarations = [],
+    imports = [],
+    providers = [],
+    schemas = [],
+    queries,
+    template,
+    wrapper = WrapperComponent,
+    componentProperties = {},
+    componentProviders = [],
+    excludeComponentDeclaration = false,
+    routes,
+    removeAngularAttributes = false,
+  } = renderOptions as RenderDirectiveOptions<SutType, WrapperType>;
+ 
+  const config = getConfig();
+ 
+  dtlConfigure({
+    eventWrapper: (cb) => {
+      const result = cb();
+      detectChangesForMountedFixtures();
+      return result;
+    },
+    ...config.dom,
+  });
+ 
+  TestBed.configureTestingModule({
+    declarations: addAutoDeclarations(sut, { declarations, excludeComponentDeclaration, template, wrapper }),
+    imports: addAutoImports({ imports: imports.concat(config.defaultImports), routes }),
+    providers: [...providers],
+    schemas: [...schemas],
+  });
+ 
+  Eif (componentProviders) {
+    componentProviders
+      .reduce((acc, provider) => acc.concat(provider), [])
+      .forEach((p) => {
+        const { provide, ...provider } = p;
+        TestBed.overrideProvider(provide, provider);
+      });
+  }
+ 
+  const fixture = createComponentFixture(sut, { template, wrapper });
+  setComponentProperties(fixture, { componentProperties });
+ 
+  if (removeAngularAttributes) {
+    fixture.nativeElement.removeAttribute('ng-version');
+    const idAttribute = fixture.nativeElement.getAttribute('id');
+    Eif (idAttribute && idAttribute.startsWith('root')) {
+      fixture.nativeElement.removeAttribute('id');
+    }
+  }
+ 
+  mountedFixtures.add(fixture);
+ 
+  await TestBed.compileComponents();
+ 
+  let isAlive = true;
+  fixture.componentRef.onDestroy(() => (isAlive = false));
+ 
+  function detectChanges() {
+    if (isAlive) {
+      fixture.detectChanges();
+    }
+  }
+ 
+  // Call ngOnChanges on initial render
+  if (hasOnChangesHook(fixture.componentInstance)) {
+    const changes = getChangesObj(null, fixture.componentInstance);
+    fixture.componentInstance.ngOnChanges(changes);
+  }
+ 
+  Eif (detectChangesOnRender) {
+    detectChanges();
+  }
+ 
+  const eventsWithDetectChanges = Object.keys(dtlFireEvent).reduce((events, key) => {
+    events[key] = (element: HTMLElement, options?: {}) => {
+      const result = dtlFireEvent[key](element, options);
+      detectChanges();
+      return result;
+    };
+    return events;
+  }, {} as FireFunction & FireObject);
+ 
+  const rerender = (rerenderedProperties: Partial<SutType>) => {
+    const changes = getChangesObj(fixture.componentInstance, rerenderedProperties);
+ 
+    setComponentProperties(fixture, { componentProperties: rerenderedProperties });
+ 
+    if (hasOnChangesHook(fixture.componentInstance)) {
+      fixture.componentInstance.ngOnChanges(changes);
+    }
+ 
+    detectChanges();
+  };
+ 
+  let router = routes ? TestBed.inject(Router) : null;
+  const zone = TestBed.inject(NgZone);
+  const navigate = async (elementOrPath: Element | string, basePath = '') => {
+    if (!router) {
+      router = TestBed.inject(Router);
+    }
+ 
+    const href = typeof elementOrPath === 'string' ? elementOrPath : elementOrPath.getAttribute('href');
+    const [path, params] = (basePath + href).split('?');
+    const queryParams = params
+      ? params.split('&').reduce((qp, q) => {
+          const [key, value] = q.split('=');
+          qp[key] = value;
+          return qp;
+        }, {})
+      : undefined;
+ 
+    const doNavigate = () =>
+      router.navigate([path], {
+        queryParams,
+      });
+ 
+    let result;
+ 
+    if (zone) {
+      await zone.run(() => (result = doNavigate()));
+    } else {
+      result = doNavigate();
+    }
+ 
+    detectChanges();
+    return result;
+  };
+ 
+  function componentWaitFor<T>(
+    callback,
+    options: dtlWaitForOptions = { container: fixture.nativeElement },
+  ): Promise<T> {
+    return waitForWrapper(detectChanges, callback, options);
+  }
+ 
+  function componentWaitForElementToBeRemoved<T>(
+    callback: (() => T) | T,
+    options: dtlWaitForOptions = { container: fixture.nativeElement },
+  ): Promise<T> {
+    return waitForElementToBeRemovedWrapper(detectChanges, callback, options);
+  }
+ 
+  return {
+    fixture,
+    detectChanges,
+    navigate,
+    rerender,
+    debugElement: fixture.debugElement.query(By.directive(sut)),
+    container: fixture.nativeElement,
+    debug: (element = fixture.nativeElement, maxLength, options) =>
+      Array.isArray(element)
+        ? element.forEach((e) => console.log(dtlPrettyDOM(e, maxLength, options)))
+        : console.log(dtlPrettyDOM(element, maxLength, options)),
+    type: createType(eventsWithDetectChanges),
+    selectOptions: createSelectOptions(eventsWithDetectChanges),
+    tab,
+    waitFor: componentWaitFor,
+    waitForElementToBeRemoved: componentWaitForElementToBeRemoved,
+    ...replaceFindWithFindAndDetectChanges(
+      fixture.nativeElement,
+      dtlGetQueriesForElement(fixture.nativeElement, queries),
+    ),
+    ...eventsWithDetectChanges,
+  };
+}
+ 
+function createComponentFixture<SutType>(
+  component: Type<SutType>,
+  { template, wrapper }: Pick<RenderDirectiveOptions<SutType, any>, 'template' | 'wrapper'>,
+): ComponentFixture<SutType> {
+  if (template) {
+    TestBed.overrideTemplate(wrapper, template);
+    return TestBed.createComponent(wrapper);
+  }
+  return TestBed.createComponent(component);
+}
+ 
+function setComponentProperties<SutType>(
+  fixture: ComponentFixture<SutType>,
+  { componentProperties = {} }: Pick<RenderDirectiveOptions<SutType, any>, 'componentProperties'>,
+) {
+  for (const key of Object.keys(componentProperties)) {
+    fixture.componentInstance[key] = componentProperties[key];
+  }
+  return fixture;
+}
+ 
+function hasOnChangesHook<SutType>(componentInstance: SutType): componentInstance is SutType & OnChanges {
+  return (
+    'ngOnChanges' in componentInstance && typeof (componentInstance as SutType & OnChanges).ngOnChanges === 'function'
+  );
+}
+ 
+function getChangesObj<SutType>(oldProps: Partial<SutType> | null, newProps: Partial<SutType>) {
+  const isFirstChange = oldProps === null;
+  return Object.keys(newProps).reduce<SimpleChanges>(
+    (changes, key) => ({
+      ...changes,
+      [key]: new SimpleChange(isFirstChange ? null : oldProps[key], newProps[key], isFirstChange),
+    }),
+    {},
+  );
+}
+ 
+function addAutoDeclarations<SutType>(
+  component: Type<SutType>,
+  {
+    declarations,
+    excludeComponentDeclaration,
+    template,
+    wrapper,
+  }: Pick<
+    RenderDirectiveOptions<SutType, any>,
+    'declarations' | 'excludeComponentDeclaration' | 'template' | 'wrapper'
+  >,
+) {
+  const wrappers = () => {
+    return template ? [wrapper] : [];
+  };
+ 
+  const components = () => {
+    return excludeComponentDeclaration ? [] : [component];
+  };
+ 
+  return [...declarations, ...wrappers(), ...components()];
+}
+ 
+function addAutoImports({ imports, routes }: Pick<RenderComponentOptions<any>, 'imports' | 'routes'>) {
+  const animations = () => {
+    const animationIsDefined =
+      imports.indexOf(NoopAnimationsModule) > -1 || imports.indexOf(BrowserAnimationsModule) > -1;
+    return animationIsDefined ? [] : [NoopAnimationsModule];
+  };
+ 
+  const routing = () => {
+    return routes ? [RouterTestingModule.withRoutes(routes)] : [];
+  };
+ 
+  return [...imports, ...animations(), ...routing()];
+}
+ 
+/**
+ * Wrap waitFor to poke the Angular change detection cycle before invoking the callback
+ */
+async function waitForWrapper<T>(
+  detectChanges: () => void,
+  callback: () => T extends Promise<any> ? never : T,
+  options?: dtlWaitForOptions,
+): Promise<T> {
+  return await dtlWaitFor(() => {
+    detectChanges();
+    return callback();
+  }, options);
+}
+ 
+/**
+ * Wrap waitForElementToBeRemovedWrapper to poke the Angular change detection cycle before invoking the callback
+ */
+async function waitForElementToBeRemovedWrapper<T>(
+  detectChanges: () => void,
+  callback: (() => T) | T,
+  options?: dtlWaitForOptions,
+): Promise<T> {
+  let cb;
+  if (typeof callback !== 'function') {
+    const elements = (Array.isArray(callback) ? callback : [callback]) as HTMLElement[];
+    const getRemainingElements = elements.map((element) => {
+      let parent = element.parentElement;
+      while (parent.parentElement) {
+        parent = parent.parentElement;
+      }
+      return () => (parent.contains(element) ? element : null);
+    });
+    cb = () => getRemainingElements.map((c) => c()).filter(Boolean);
+  } else {
+    cb = callback;
+  }
+ 
+  return await dtlWaitForElementToBeRemoved(() => {
+    detectChanges();
+    return cb();
+  }, options);
+}
+ 
+function cleanup() {
+  mountedFixtures.forEach(cleanupAtFixture);
+}
+ 
+function cleanupAtFixture(fixture) {
+  if (!fixture.nativeElement.getAttribute('ng-version') && fixture.nativeElement.parentNode === document.body) {
+    document.body.removeChild(fixture.nativeElement);
+  }
+  mountedFixtures.delete(fixture);
+}
+ 
+Eif (typeof afterEach === 'function' && !process.env.ATL_SKIP_AUTO_CLEANUP) {
+  afterEach(async () => {
+    cleanup();
+  });
+}
+ 
+@Component({ selector: 'wrapper-component', template: '' })
+class WrapperComponent {}
+ 
+/**
+ * Wrap findBy queries to poke the Angular change detection cycle
+ */
+function replaceFindWithFindAndDetectChanges<T>(container: HTMLElement, originalQueriesForContainer: T): T {
+  return Object.keys(originalQueriesForContainer).reduce((newQueries, key) => {
+    if (key.startsWith('find')) {
+      const getByQuery = dtlQueries[key.replace('find', 'get')];
+      newQueries[key] = async (text, options, waitOptions) => {
+        // original implementation at https://github.com/testing-library/dom-testing-library/blob/master/src/query-helpers.js
+        const result = await waitForWrapper(
+          detectChangesForMountedFixtures,
+          () => getByQuery(container, text, options),
+          waitOptions,
+        );
+        return result;
+      };
+    } else {
+      newQueries[key] = originalQueriesForContainer[key];
+    }
+ 
+    return newQueries;
+  }, {} as T);
+}
+ 
+/**
+ * Call detectChanges for all fixtures
+ */
+function detectChangesForMountedFixtures() {
+  mountedFixtures.forEach((fixture) => {
+    try {
+      fixture.detectChanges();
+    } catch (err) {
+      Iif (!err.message.startsWith('ViewDestroyedError')) {
+        throw err;
+      }
+    }
+  });
+}
+ 
+/**
+ * Wrap dom-fireEvent to poke the Angular change detection cycle after an event is fired
+ */
+const fireEvent = Object.keys(dtlFireEvent).reduce((events, key) => {
+  events[key] = (element: HTMLElement, options?: {}) => {
+    const result = dtlFireEvent[key](element, options);
+    detectChangesForMountedFixtures();
+    return result;
+  };
+  return events;
+}, {} as typeof dtlFireEvent);
+ 
+/**
+ * Re-export screen with patched queries
+ */
+const screen = replaceFindWithFindAndDetectChanges(document.body, dtlScreen);
+ 
+/**
+ * Re-export waitFor with patched waitFor
+ */
+async function waitFor<T>(callback: () => T extends Promise<any> ? never : T, options?: dtlWaitForOptions): Promise<T> {
+  return waitForWrapper(detectChangesForMountedFixtures, callback, options);
+}
+ 
+/**
+ * Re-export waitForElementToBeRemoved with patched waitForElementToBeRemoved
+ */
+async function waitForElementToBeRemoved<T>(callback: (() => T) | T, options?: dtlWaitForOptions): Promise<T> {
+  return waitForElementToBeRemovedWrapper(detectChangesForMountedFixtures, callback, options);
+}
+ 
+/**
+ * Re-export userEvent with the patched fireEvent
+ */
+const userEvent = {
+  type: createType(fireEvent),
+  selectOptions: createSelectOptions(fireEvent),
+  tab: tab,
+};
+ 
+/**
+ * Manually export otherwise we get the following error while running Jest tests
+ * TypeError: Cannot set property fireEvent of [object Object] which has only a getter
+ * exports.fireEvent = fireEvent
+ */
+export {
+  buildQueries,
+  getByLabelText,
+  getAllByLabelText,
+  queryByLabelText,
+  queryAllByLabelText,
+  findByLabelText,
+  findAllByLabelText,
+  getByPlaceholderText,
+  getAllByPlaceholderText,
+  queryByPlaceholderText,
+  queryAllByPlaceholderText,
+  findByPlaceholderText,
+  findAllByPlaceholderText,
+  getByText,
+  getAllByText,
+  queryByText,
+  queryAllByText,
+  findByText,
+  findAllByText,
+  getByAltText,
+  getAllByAltText,
+  queryByAltText,
+  queryAllByAltText,
+  findByAltText,
+  findAllByAltText,
+  getByTitle,
+  getAllByTitle,
+  queryByTitle,
+  queryAllByTitle,
+  findByTitle,
+  findAllByTitle,
+  getByDisplayValue,
+  getAllByDisplayValue,
+  queryByDisplayValue,
+  queryAllByDisplayValue,
+  findByDisplayValue,
+  findAllByDisplayValue,
+  getByRole,
+  getAllByRole,
+  queryByRole,
+  queryAllByRole,
+  findByRole,
+  findAllByRole,
+  getByTestId,
+  getAllByTestId,
+  queryByTestId,
+  queryAllByTestId,
+  findByTestId,
+  findAllByTestId,
+  createEvent,
+  getDefaultNormalizer,
+  getElementError,
+  getNodeText,
+  getQueriesForElement,
+  getRoles,
+  isInaccessible,
+  logDOM,
+  logRoles,
+  prettyDOM,
+  queries,
+  queryAllByAttribute,
+  queryByAttribute,
+  queryHelpers,
+  within,
+} from '@testing-library/dom';
+ 
+export { fireEvent, screen, userEvent, waitFor, waitForElementToBeRemoved };
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/index.html b/projects/testing-library/coverage/src/lib/user-events/index.html new file mode 100644 index 00000000..a6b05239 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/user-events/index.html @@ -0,0 +1,156 @@ + + + + + + Code coverage report for src/lib/user-events + + + + + + + + + +
+
+

All files src/lib/user-events

+
+ +
+ 96.3% + Statements + 78/81 +
+ + +
+ 77.5% + Branches + 31/40 +
+ + +
+ 100% + Functions + 15/15 +
+ + +
+ 96.05% + Lines + 73/76 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%6/6100%0/0100%0/0100%4/4
selectOptions.ts +
+
91.43%32/3561.11%11/18100%7/791.18%31/34
tab.ts +
+
100%3/3100%0/0100%1/1100%3/3
type.ts +
+
100%37/3790.91%20/22100%7/7100%35/35
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/index.ts.html b/projects/testing-library/coverage/src/lib/user-events/index.ts.html new file mode 100644 index 00000000..70227b72 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/user-events/index.ts.html @@ -0,0 +1,254 @@ + + + + + + Code coverage report for src/lib/user-events/index.ts + + + + + + + + + +
+
+

All files / src/lib/user-events index.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +5917x +17x +17x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +17x + 
import { createType } from './type';
+import { createSelectOptions } from './selectOptions';
+import { tab } from './tab';
+ 
+export interface UserEvents {
+  /**
+   * @deprecated
+   * Use `userEvents.type` from @testing-library/user-event
+   *
+   * @description
+   * Types a value in an input field with the same interactions as the user would do.
+   *
+   * @argument
+   * element: HTMLElement - the form field to type in
+   * value: string | number - the value to type in
+   *
+   * @example
+   * component.type(component.getByLabelText('Firstname'), 'Tim')
+   * component.type(component.getByLabelText('Firstname'), 'Tim', { delay: 100 })
+   * component.type(component.getByLabelText('Firstname'), 'Tim', { allAtOnce: true })
+   */
+  type: ReturnType<typeof createType>;
+ 
+  /**
+   * @deprecated
+   * Use `userEvents.selectOptions` from @testing-library/user-event
+   *
+   * @description
+   * Select an option(s) from a select field with the same interactions as the user would do.
+   *
+   * @argument
+   * element: HTMLElement - the select box to select an option in
+   * matcher: Matcher | Matcher[] - the value(s) to select
+   *
+   * @example
+   * component.selectOptions(component.getByLabelText('Fruit'), 'Blueberry')
+   * component.selectOptions(component.getByLabelText('Fruit'), ['Blueberry'. 'Grape'])
+   */
+  selectOptions: ReturnType<typeof createSelectOptions>;
+ 
+  /**
+   * @deprecated
+   * Use `userEvents.tab` from @testing-library/user-event
+   *
+   * @description
+   * Fires a tab event changing the document.activeElement in the same way the browser does.
+   *
+   * @argument
+   * shift: can be set to true to invert tab direction (default false)
+   * focusTrap: a container element to restrict the tabbing within (default document)
+   *
+   * @example
+   * component.tab()
+   */
+  tab: typeof tab;
+}
+ 
+export { createType, createSelectOptions, tab };
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html b/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html new file mode 100644 index 00000000..e6036480 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html @@ -0,0 +1,275 @@ + + + + + + Code coverage report for src/lib/user-events/selectOptions.ts + + + + + + + + + +
+
+

All files / src/lib/user-events selectOptions.ts

+
+ +
+ 91.43% + Statements + 32/35 +
+ + +
+ 61.11% + Branches + 11/18 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 91.18% + Lines + 31/34 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +6617x +  +  +17x +  +16x +16x +16x +16x +16x +16x +  +  +  +  +20x +  +  +  +  +  +  +20x +  +20x +20x +20x +20x +20x +20x +  +20x +20x +  +  +87x +  +  +  +16x +  +16x +16x +  +  +16x +16x +  +16x +  +  +  +  +16x +  +16x +16x +20x +20x +  +16x +  +  +  +  + 
import { FireFunction, FireObject, Matcher, screen, ByRoleOptions } from '@testing-library/dom';
+ 
+// implementation from https://github.com/testing-library/user-event
+export function createSelectOptions(fireEvent: FireFunction & FireObject) {
+  function clickElement(element: HTMLElement) {
+    fireEvent.mouseOver(element);
+    fireEvent.mouseMove(element);
+    fireEvent.mouseDown(element);
+    fireEvent.focus(element);
+    fireEvent.mouseUp(element);
+    fireEvent.click(element);
+  }
+ 
+  function selectOption(select: HTMLSelectElement, index: number, options: Matcher | ByRoleOptions) {
+    const query =
+      typeof options === 'string'
+        ? (({ name: new RegExp(options, 'i') } as unknown) as ByRoleOptions)
+        : options instanceof RegExp
+        ? (({ name: options } as unknown) as ByRoleOptions)
+        : typeof options === 'function'
+        ? (({ name: options } as unknown) as ByRoleOptions)
+        : options;
+    const option = screen.getByRole('option', query) as HTMLOptionElement;
+ 
+    fireEvent.mouseOver(option);
+    fireEvent.mouseMove(option);
+    fireEvent.mouseDown(option);
+    fireEvent.focus(option);
+    fireEvent.mouseUp(option);
+    fireEvent.click(option, { ctrlKey: index > 0 });
+ 
+    option.selected = true;
+    fireEvent.change(select);
+  }
+ 
+  return async function selectOptions(
+    element: HTMLElement,
+    options: Matcher | ByRoleOptions | (Matcher | ByRoleOptions)[],
+  ) {
+    const selectElement = element as HTMLSelectElement;
+ 
+    Eif (selectElement.selectedOptions) {
+      Array.from(selectElement.selectedOptions).forEach((option) => (option.selected = false));
+    }
+ 
+    const focusedElement = document.activeElement;
+    const wasAnotherElementFocused = focusedElement !== document.body && focusedElement !== selectElement;
+ 
+    Iif (wasAnotherElementFocused) {
+      fireEvent.mouseMove(focusedElement);
+      fireEvent.mouseLeave(focusedElement);
+    }
+ 
+    clickElement(selectElement);
+ 
+    const values = Array.isArray(options) ? options : [options];
+    values
+      .filter((_, index) => index === 0 || selectElement.multiple)
+      .forEach((val, index) => selectOption(selectElement, index, val));
+ 
+    Iif (wasAnotherElementFocused) {
+      fireEvent.blur(focusedElement);
+    }
+  };
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/tab.ts.html b/projects/testing-library/coverage/src/lib/user-events/tab.ts.html new file mode 100644 index 00000000..f92e2ab8 --- /dev/null +++ b/projects/testing-library/coverage/src/lib/user-events/tab.ts.html @@ -0,0 +1,110 @@ + + + + + + Code coverage report for src/lib/user-events/tab.ts + + + + + + + + + +
+
+

All files / src/lib/user-events tab.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1117x +  +  +  +  +  +  +17x +4x +  + 
import userEvent from '@testing-library/user-event';
+ 
+export interface ITabUserOptions {
+  shift?: boolean;
+  focusTrap?: Document | Element;
+}
+ 
+export function tab(options?: ITabUserOptions) {
+  return userEvent.tab(options);
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/type.ts.html b/projects/testing-library/coverage/src/lib/user-events/type.ts.html new file mode 100644 index 00000000..3fd9022f --- /dev/null +++ b/projects/testing-library/coverage/src/lib/user-events/type.ts.html @@ -0,0 +1,389 @@ + + + + + + Code coverage report for src/lib/user-events/type.ts + + + + + + + + + +
+
+

All files / src/lib/user-events type.ts

+
+ +
+ 100% + Statements + 37/37 +
+ + +
+ 90.91% + Branches + 20/22 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 35/35 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104  +  +  +6x +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +17x +  +14x +3x +2x +  +3x +  +  +  +87x +15x +15x +15x +  +15x +1x +  +  +14x +2x +2x +  +2x +2x +  +  +12x +12x +12x +180x +180x +180x +  +180x +6x +  +  +180x +  +  +  +  +  +180x +174x +  +  +  +  +  +174x +174x +174x +169x +  +  +  +  +  +  +  +  +  +  +180x +  +  +  +  +  +  +12x +  +  + 
import { FireFunction, FireObject } from '@testing-library/dom';
+ 
+function wait(time) {
+  return new Promise(function (resolve) {
+    setTimeout(() => resolve(), time);
+  });
+}
+ 
+export interface TypeOptions {
+  /**
+   * @description
+   * Types the text at once rather than on character at a time
+   *
+   * @default
+   * false
+   */
+  allAtOnce?: boolean;
+  /**
+   * @description
+   * Number of milliseconds until the next character is typed
+   *
+   * @default
+   * 0
+   */
+  delay?: number;
+}
+ 
+// implementation from https://github.com/testing-library/user-event
+export function createType(fireEvent: FireFunction & FireObject) {
+  function createFireChangeEvent(value: string) {
+    return function fireChangeEvent(event) {
+      if (value !== event.target.value) {
+        fireEvent.change(event.target);
+      }
+      event.target.removeEventListener('blur', fireChangeEvent);
+    };
+  }
+ 
+  return async function type(element: HTMLElement, value: string | number, options?: TypeOptions) {
+    const { allAtOnce = false, delay = 0 } = options || {};
+    const inputElement = element as HTMLInputElement;
+    const initialValue = inputElement.value;
+ 
+    if (inputElement.disabled) {
+      return;
+    }
+ 
+    if (allAtOnce || value === '') {
+      Eif (!inputElement.readOnly) {
+        fireEvent.input(inputElement, { target: { value } });
+      }
+      inputElement.addEventListener('blur', createFireChangeEvent(initialValue));
+      return;
+    }
+ 
+    const text = value.toString();
+    let actuallyTyped = '';
+    for (let index = 0; index < text.length; index++) {
+      const char = text[index];
+      const key = char;
+      const keyCode = char.charCodeAt(0);
+ 
+      if (delay > 0) {
+        await wait(delay);
+      }
+ 
+      const downEvent = fireEvent.keyDown(inputElement, {
+        key: key,
+        keyCode: keyCode,
+        which: keyCode,
+      });
+ 
+      if (downEvent) {
+        const pressEvent = fireEvent.keyPress(inputElement, {
+          key: key,
+          keyCode,
+          charCode: keyCode,
+        });
+ 
+        Eif (pressEvent) {
+          actuallyTyped += key;
+          if (!inputElement.readOnly) {
+            fireEvent.input(inputElement, {
+              target: {
+                value: actuallyTyped,
+              },
+              bubbles: true,
+              cancelable: true,
+            });
+          }
+        }
+      }
+ 
+      fireEvent.keyUp(inputElement, {
+        key: key,
+        keyCode: keyCode,
+        which: keyCode,
+      });
+    }
+ 
+    inputElement.addEventListener('blur', createFireChangeEvent(initialValue));
+  };
+}
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/coverage/src/public_api.ts.html b/projects/testing-library/coverage/src/public_api.ts.html new file mode 100644 index 00000000..377faa99 --- /dev/null +++ b/projects/testing-library/coverage/src/public_api.ts.html @@ -0,0 +1,104 @@ + + + + + + Code coverage report for src/public_api.ts + + + + + + + + + +
+
+

All files / src public_api.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9  +  +  +  +  +17x +17x +17x + 
/*
+ * Public API Surface of testing-library
+ */
+ 
+export * from './lib/models';
+export * from './lib/user-events';
+export * from './lib/config';
+export * from './lib/testing-library';
+ 
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/projects/testing-library/index.ts b/projects/testing-library/index.ts new file mode 100644 index 00000000..decc72d8 --- /dev/null +++ b/projects/testing-library/index.ts @@ -0,0 +1 @@ +export * from './src/public_api'; diff --git a/projects/testing-library/jest.config.js b/projects/testing-library/jest.config.js new file mode 100644 index 00000000..e4f6d6df --- /dev/null +++ b/projects/testing-library/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + name: 'Angular Testing Library', + displayName: { + name: 'ATL', + color: 'magenta', + }, + preset: '../../jest.config.js', +}; diff --git a/projects/testing-library/ng-package.json b/projects/testing-library/ng-package.json index 6c29692e..48f090fa 100644 --- a/projects/testing-library/ng-package.json +++ b/projects/testing-library/ng-package.json @@ -3,7 +3,7 @@ "dest": "../../dist/@testing-library/angular", "deleteDestPath": false, "lib": { - "entryFile": "src/public_api.ts" + "entryFile": "index.ts" }, "whitelistedNonPeerDependencies": [ "@testing-library/dom", diff --git a/projects/testing-library/ng-package.prod.json b/projects/testing-library/ng-package.prod.json deleted file mode 100644 index 6c29692e..00000000 --- a/projects/testing-library/ng-package.prod.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/@testing-library/angular", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public_api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@testing-library/dom", - "@testing-library/user-event", - "@phenomnomnominal/tsquery", - "tslint" - ] -} diff --git a/projects/testing-library/setup-jest.ts b/projects/testing-library/setup-jest.ts new file mode 100644 index 00000000..9020de51 --- /dev/null +++ b/projects/testing-library/setup-jest.ts @@ -0,0 +1,2 @@ +import 'jest-preset-angular'; +import '@testing-library/jest-dom'; diff --git a/projects/testing-library/tsconfig.lib.json b/projects/testing-library/tsconfig.lib.json index ee166bbf..a24563ca 100644 --- a/projects/testing-library/tsconfig.lib.json +++ b/projects/testing-library/tsconfig.lib.json @@ -15,6 +15,7 @@ "lib": ["dom", "es2015", "es2018.promise"] }, "angularCompilerOptions": { + "enableIvy": false, "skipTemplateCodegen": true, "strictMetadataEmit": true, "fullTemplateTypeCheck": true, diff --git a/projects/testing-library/tsconfig.lib.prod.json b/projects/testing-library/tsconfig.lib.prod.json deleted file mode 100644 index cbae7942..00000000 --- a/projects/testing-library/tsconfig.lib.prod.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig.lib.json", - "angularCompilerOptions": { - "enableIvy": false - } -} diff --git a/projects/testing-library/tsconfig.spec.json b/projects/testing-library/tsconfig.spec.json new file mode 100644 index 00000000..1c4585c7 --- /dev/null +++ b/projects/testing-library/tsconfig.spec.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "types": ["jest", "node"] + } +} diff --git a/src/jest.app.config.js b/src/jest.app.config.js deleted file mode 100644 index 31f1d766..00000000 --- a/src/jest.app.config.js +++ /dev/null @@ -1,13 +0,0 @@ -const baseConfig = require('../jest.base.config'); - -module.exports = { - ...baseConfig, - - roots: ['/src'], - modulePaths: ['/dist'], - setupFilesAfterEnv: ['/src/setupJest.ts'], - displayName: { - name: 'EXAMPLE', - color: 'blue', - }, -}; diff --git a/tsconfig.json b/tsconfig.json index 9f74d90a..69eb7ed5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,8 +14,8 @@ "typeRoots": ["node_modules/@types"], "lib": ["es2017", "dom"], "paths": { - "@testing-library/angular": ["dist/@testing-library/angular"], - "@testing-library/angular/*": ["dist/@testing-library/angular/*"] + "@testing-library/angular": ["projects/testing-library"], + "@testing-library/angular/jest-utils": ["projects/jest-utils"] } } } diff --git a/yarn.lock b/yarn.lock index ff534dcd..1b270897 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,14 @@ "@angular-devkit/core" "9.0.3" rxjs "6.5.3" +"@angular-devkit/architect@0.901.9", "@angular-devkit/architect@~0.901.0": + version "0.901.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.9.tgz#5d849a120449b2f91ec6eef44ddad74ffb7ad810" + integrity sha512-Xokyh7bv4qICHpb5Xui1jPTi6ZZvzR5tbTIxT0DFWqw16TEkFgkNubQsW6mFSR3g3CXdySMfOwWExfa/rE1ggA== + dependencies: + "@angular-devkit/core" "9.1.9" + rxjs "6.5.4" + "@angular-devkit/build-angular@~0.900.3": version "0.900.3" resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.900.3.tgz#8c68b2d98908685ec29b6eb61aa44739f004b247" @@ -105,6 +113,15 @@ "@angular-devkit/core" "9.0.3" rxjs "6.5.3" +"@angular-devkit/build-webpack@~0.901.0": + version "0.901.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.9.tgz#19e783950b2f22ceaa0c33b07552bd225dcd412b" + integrity sha512-Bha9LruitixhtJm72FGzqfDfgsOsrMT3EbNSql2muyoELIYbLDOvNZjcDD06CPcOAWSg6/tH9caOTFS2Zj9yOw== + dependencies: + "@angular-devkit/architect" "0.901.9" + "@angular-devkit/core" "9.1.9" + rxjs "6.5.4" + "@angular-devkit/core@9.0.3": version "9.0.3" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.0.3.tgz#a027862d2edd981afcc6245176e9f27768c631c9" @@ -116,6 +133,17 @@ rxjs "6.5.3" source-map "0.7.3" +"@angular-devkit/core@9.1.9", "@angular-devkit/core@~9.1.0": + version "9.1.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.9.tgz#e6283912093179313ccfc69856841e9b6b318231" + integrity sha512-SWgBh4an/Vezjw2BZ5S+bKvuK5lH6gOtR8d5YjN9vxpJSZ0GimrGjfnLlWOkwWAsU8jfn4JzofECUHwX/7EW6Q== + dependencies: + ajv "6.12.0" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.5.4" + source-map "0.7.3" + "@angular-devkit/schematics@9.0.3": version "9.0.3" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.0.3.tgz#e65fa1ce08a3d5ef0af594b623024439c1110a0d" @@ -125,6 +153,15 @@ ora "4.0.2" rxjs "6.5.3" +"@angular-devkit/schematics@9.1.9", "@angular-devkit/schematics@~9.1.0": + version "9.1.9" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.9.tgz#1369ee586cb91ffebf12673bb839d31ad5c00357" + integrity sha512-aKuMmS3wshOTl9+01jiB50ml09fRN1WfOOtoNqwvKTEi87DrT6Mn3l0eVQo8PJK/bIq/FBmPgsIl2nsETiBSxg== + dependencies: + "@angular-devkit/core" "9.1.9" + ora "4.0.3" + rxjs "6.5.4" + "@angular/animations@^9.0.3": version "9.0.3" resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.0.3.tgz#9bdc1f9d6a0bb90e3d5cd981758c6892b66f34ce" @@ -240,6 +277,13 @@ dependencies: "@babel/highlight" "^7.10.1" +"@babel/code-frame@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a" + integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== + dependencies: + "@babel/highlight" "^7.10.3" + "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -247,6 +291,15 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.3.tgz#9af3e033f36e8e2d6e47570db91e64a846f5d382" + integrity sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + "@babel/core@7.7.7": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" @@ -267,6 +320,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.0.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" + integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.1.0": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" @@ -318,6 +393,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5" + integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== + dependencies: + "@babel/types" "^7.10.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" @@ -339,6 +424,13 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/helper-annotate-as-pure@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -346,6 +438,14 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz#4e9012d6701bef0030348d7f9c808209bd3e8687" + integrity sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.3" + "@babel/types" "^7.10.3" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" @@ -363,6 +463,38 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-compilation-targets@^7.10.2": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" + integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== + dependencies: + "@babel/compat-data" "^7.10.1" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz#2783daa6866822e3d5ed119163b50f0fc3ae4b35" + integrity sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-member-expression-to-functions" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + +"@babel/helper-create-regexp-features-plugin@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" + integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + regexpu-core "^4.7.0" + "@babel/helper-create-regexp-features-plugin@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" @@ -371,6 +503,15 @@ "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" +"@babel/helper-define-map@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz#d27120a5e57c84727b30944549b2dfeca62401a8" + integrity sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/types" "^7.10.3" + lodash "^4.17.13" + "@babel/helper-define-map@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" @@ -380,6 +521,14 @@ "@babel/types" "^7.8.3" lodash "^4.17.13" +"@babel/helper-explode-assignable-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz#9dc14f0cfa2833ea830a9c8a1c742b6e7461b05e" + integrity sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw== + dependencies: + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + "@babel/helper-explode-assignable-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" @@ -397,6 +546,15 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.10.1", "@babel/helper-function-name@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz#79316cd75a9fa25ba9787ff54544307ed444f197" + integrity sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/types" "^7.10.3" + "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -413,6 +571,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-get-function-arity@^7.10.1", "@babel/helper-get-function-arity@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz#3a28f7b28ccc7719eacd9223b659fdf162e4c45e" + integrity sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg== + dependencies: + "@babel/types" "^7.10.3" + "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -420,6 +585,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-hoist-variables@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz#d554f52baf1657ffbd7e5137311abc993bb3f068" + integrity sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg== + dependencies: + "@babel/types" "^7.10.3" + "@babel/helper-hoist-variables@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" @@ -427,6 +599,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-member-expression-to-functions@^7.10.1", "@babel/helper-member-expression-to-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz#bc3663ac81ac57c39148fef4c69bf48a77ba8dd6" + integrity sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw== + dependencies: + "@babel/types" "^7.10.3" + "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" @@ -434,6 +613,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-imports@^7.10.1", "@babel/helper-module-imports@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz#766fa1d57608e53e5676f23ae498ec7a95e1b11a" + integrity sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w== + dependencies: + "@babel/types" "^7.10.3" + "@babel/helper-module-imports@^7.7.4", "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" @@ -441,6 +627,19 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-transforms@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" + integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + "@babel/helper-module-transforms@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" @@ -453,6 +652,13 @@ "@babel/types" "^7.8.3" lodash "^4.17.13" +"@babel/helper-optimise-call-expression@^7.10.1", "@babel/helper-optimise-call-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz#f53c4b6783093195b0f69330439908841660c530" + integrity sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg== + dependencies: + "@babel/types" "^7.10.3" + "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" @@ -470,11 +676,23 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== +"@babel/helper-plugin-utils@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz#aac45cccf8bc1873b99a85f34bceef3beb5d3244" + integrity sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g== + "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" + integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== + dependencies: + lodash "^4.17.13" + "@babel/helper-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" @@ -482,6 +700,17 @@ dependencies: lodash "^4.17.13" +"@babel/helper-remap-async-to-generator@^7.10.1", "@babel/helper-remap-async-to-generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz#18564f8a6748be466970195b876e8bba3bccf442" + integrity sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-wrap-function" "^7.10.1" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + "@babel/helper-remap-async-to-generator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" @@ -493,6 +722,16 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-replace-supers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" + integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-replace-supers@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" @@ -503,6 +742,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-simple-access@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" + integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -511,6 +758,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -530,6 +784,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== +"@babel/helper-validator-identifier@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" + integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== + +"@babel/helper-wrap-function@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" + integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -540,6 +809,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helpers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" + integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helpers@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" @@ -576,6 +854,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" + integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -595,11 +882,25 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== +"@babel/parser@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315" + integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== + "@babel/parser@^7.7.5", "@babel/parser@^7.7.7", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/plugin-proposal-async-generator-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz#5a02453d46e5362e2073c7278beab2e53ad7d939" + integrity sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-remap-async-to-generator" "^7.10.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-proposal-async-generator-functions@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" @@ -609,6 +910,22 @@ "@babel/helper-remap-async-to-generator" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-class-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" + integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-dynamic-import@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" + integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-proposal-dynamic-import@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" @@ -617,6 +934,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-json-strings@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" + integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-proposal-json-strings@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" @@ -625,6 +950,31 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" + integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" + integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + +"@babel/plugin-proposal-object-rest-spread@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz#b8d0d22f70afa34ad84b7a200ff772f9b9fce474" + integrity sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread@^7.7.7": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" @@ -633,6 +983,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" +"@babel/plugin-proposal-optional-catch-binding@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" + integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-proposal-optional-catch-binding@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" @@ -641,6 +999,30 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz#9a726f94622b653c0a3a7a59cdce94730f526f7c" + integrity sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" + integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" + integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-proposal-unicode-property-regex@^7.7.7": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" @@ -663,7 +1045,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.10.1", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== @@ -691,14 +1073,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.1" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.1", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== @@ -719,13 +1101,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-top-level-await@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" + integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-top-level-await@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" @@ -733,6 +1122,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-arrow-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" + integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-arrow-functions@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" @@ -740,6 +1136,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-async-to-generator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" + integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/plugin-transform-async-to-generator@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" @@ -749,6 +1154,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-remap-async-to-generator" "^7.8.3" +"@babel/plugin-transform-block-scoped-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" + integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" @@ -756,6 +1168,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-block-scoping@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" + integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + lodash "^4.17.13" + "@babel/plugin-transform-block-scoping@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" @@ -764,6 +1184,20 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" +"@babel/plugin-transform-classes@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz#8d9a656bc3d01f3ff69e1fccb354b0f9d72ac544" + integrity sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-define-map" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + globals "^11.1.0" + "@babel/plugin-transform-classes@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" @@ -778,6 +1212,13 @@ "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" +"@babel/plugin-transform-computed-properties@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz#d3aa6eef67cb967150f76faff20f0abbf553757b" + integrity sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-transform-computed-properties@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" @@ -785,6 +1226,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-destructuring@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" + integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-destructuring@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" @@ -792,6 +1240,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" + integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-dotall-regex@^7.7.7": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" @@ -800,6 +1256,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-duplicate-keys@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" + integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-duplicate-keys@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" @@ -807,6 +1270,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-exponentiation-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" + integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-exponentiation-operator@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" @@ -815,6 +1286,13 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-for-of@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" + integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-for-of@^7.7.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" @@ -822,6 +1300,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" + integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-function-name@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" @@ -830,6 +1316,13 @@ "@babel/helper-function-name" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" + integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-literals@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" @@ -837,6 +1330,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-member-expression-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" + integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-member-expression-literals@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" @@ -844,6 +1344,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-modules-amd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" + integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-amd@^7.7.5": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" @@ -853,6 +1362,16 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-commonjs@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" + integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.7.5": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" @@ -863,6 +1382,16 @@ "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-systemjs@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz#004ae727b122b7b146b150d50cba5ffbff4ac56b" + integrity sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A== + dependencies: + "@babel/helper-hoist-variables" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" @@ -873,6 +1402,14 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-umd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" + integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-modules-umd@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" @@ -881,6 +1418,13 @@ "@babel/helper-module-transforms" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz#a4f8444d1c5a46f35834a410285f2c901c007ca6" + integrity sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" @@ -888,6 +1432,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.8.3" +"@babel/plugin-transform-new-target@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" + integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-new-target@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" @@ -895,6 +1446,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-object-super@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" + integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/plugin-transform-object-super@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" @@ -903,6 +1462,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" +"@babel/plugin-transform-parameters@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" + integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-parameters@^7.7.7": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" @@ -912,6 +1479,13 @@ "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-property-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" + integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-property-literals@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" @@ -919,6 +1493,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-regenerator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz#6ec680f140a5ceefd291c221cb7131f6d7e8cb6d" + integrity sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-regenerator@^7.7.5": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" @@ -926,6 +1507,13 @@ dependencies: regenerator-transform "^0.14.0" +"@babel/plugin-transform-reserved-words@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" + integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-reserved-words@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" @@ -933,6 +1521,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-shorthand-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" + integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-shorthand-properties@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" @@ -940,6 +1535,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-spread@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" + integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-spread@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" @@ -947,6 +1549,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-sticky-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" + integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + "@babel/plugin-transform-sticky-regex@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" @@ -955,6 +1565,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-regex" "^7.8.3" +"@babel/plugin-transform-template-literals@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz#69d39b3d44b31e7b4864173322565894ce939b25" + integrity sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-transform-template-literals@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" @@ -963,6 +1581,13 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-typeof-symbol@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" + integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-typeof-symbol@^7.7.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" @@ -970,6 +1595,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-unicode-escapes@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" + integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" + integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-transform-unicode-regex@^7.7.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" @@ -1035,6 +1675,87 @@ js-levenshtein "^1.1.3" semver "^5.5.0" +"@babel/preset-env@^7.0.0": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.3.tgz#3e58c9861bbd93b6a679987c7e4bd365c56c80c9" + integrity sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg== + dependencies: + "@babel/compat-data" "^7.10.3" + "@babel/helper-compilation-targets" "^7.10.2" + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-proposal-async-generator-functions" "^7.10.3" + "@babel/plugin-proposal-class-properties" "^7.10.1" + "@babel/plugin-proposal-dynamic-import" "^7.10.1" + "@babel/plugin-proposal-json-strings" "^7.10.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-numeric-separator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.10.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" + "@babel/plugin-proposal-optional-chaining" "^7.10.3" + "@babel/plugin-proposal-private-methods" "^7.10.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.1" + "@babel/plugin-transform-arrow-functions" "^7.10.1" + "@babel/plugin-transform-async-to-generator" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions" "^7.10.1" + "@babel/plugin-transform-block-scoping" "^7.10.1" + "@babel/plugin-transform-classes" "^7.10.3" + "@babel/plugin-transform-computed-properties" "^7.10.3" + "@babel/plugin-transform-destructuring" "^7.10.1" + "@babel/plugin-transform-dotall-regex" "^7.10.1" + "@babel/plugin-transform-duplicate-keys" "^7.10.1" + "@babel/plugin-transform-exponentiation-operator" "^7.10.1" + "@babel/plugin-transform-for-of" "^7.10.1" + "@babel/plugin-transform-function-name" "^7.10.1" + "@babel/plugin-transform-literals" "^7.10.1" + "@babel/plugin-transform-member-expression-literals" "^7.10.1" + "@babel/plugin-transform-modules-amd" "^7.10.1" + "@babel/plugin-transform-modules-commonjs" "^7.10.1" + "@babel/plugin-transform-modules-systemjs" "^7.10.3" + "@babel/plugin-transform-modules-umd" "^7.10.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.3" + "@babel/plugin-transform-new-target" "^7.10.1" + "@babel/plugin-transform-object-super" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-property-literals" "^7.10.1" + "@babel/plugin-transform-regenerator" "^7.10.3" + "@babel/plugin-transform-reserved-words" "^7.10.1" + "@babel/plugin-transform-shorthand-properties" "^7.10.1" + "@babel/plugin-transform-spread" "^7.10.1" + "@babel/plugin-transform-sticky-regex" "^7.10.1" + "@babel/plugin-transform-template-literals" "^7.10.3" + "@babel/plugin-transform-typeof-symbol" "^7.10.1" + "@babel/plugin-transform-unicode-escapes" "^7.10.1" + "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.3" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/runtime-corejs3@^7.7.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.4.tgz#ccc4e042e2fae419c67fa709567e5d2179ed3940" @@ -1057,6 +1778,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.8.4": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" + integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.1.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -1066,6 +1794,15 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" +"@babel/template@^7.10.1", "@babel/template@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.3.tgz#4d13bc8e30bf95b0ce9d175d30306f42a2c9a7b8" + integrity sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + "@babel/template@^7.3.3": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" @@ -1099,6 +1836,21 @@ globals "^11.1.0" lodash "^4.17.11" +"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e" + integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" @@ -1132,6 +1884,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e" + integrity sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@babel/types@^7.7.4", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1154,6 +1915,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@cypress/webpack-preprocessor@~4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-4.1.5.tgz#b47d515d2540af977ee8b69d7c4eed64e3027668" + integrity sha512-B4miSaS3VCMVSlfuvbWCjytTywdnquRsF1tQ3quC7TGUzEXnQZ4+o8WUKibjMozrOomALkUdMxqOJ1ib5oFkKw== + dependencies: + bluebird "3.7.1" + debug "4.1.1" + optionalDependencies: + "@babel/core" "^7.0.1" + "@babel/preset-env" "^7.0.0" + babel-loader "^8.0.2" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1396,6 +2169,135 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@nrwl/angular@^9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-9.4.5.tgz#85e9fc0eb85b2b8d7cd2ebd5ccf39bfd5db89ff3" + integrity sha512-7f4IbZY/yb5ZBc4EN01dYP+b3W7zEiCOc9UAP07p0G/5TRGO9Y/67BXDeNHpypxFZdNhhUoXD3EwKAP6HUrwMA== + dependencies: + "@angular-devkit/schematics" "~9.1.0" + "@nrwl/cypress" "9.4.5" + "@nrwl/jest" "9.4.5" + "@schematics/angular" "~9.1.0" + jasmine-marbles "~0.6.0" + +"@nrwl/cli@9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-9.4.5.tgz#47d37eb32b245860739e0047768290c00306e9f3" + integrity sha512-UTHgIRjOsbQUfQNwb9HvFcE2qgY6mNZ4+ZRuvDTNGRZIRYrYRJ5vuL1ZScSihGeXyrEibJKDqjXiwdEiNIUpRw== + dependencies: + "@nrwl/tao" "9.4.5" + chalk "2.4.2" + tmp "0.0.33" + yargs "^11.0.0" + yargs-parser "10.0.0" + +"@nrwl/cypress@9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-9.4.5.tgz#6b83997e08e24b88283e1587944b7799aa0e07ef" + integrity sha512-EXskk5UeNTCedLk7Uu2okf2hEMNj+gMKLzUKb8Hzg/lT07vQrFlefm8NfUi0qDDxWfGQbE4FJLsvAO/39FM4cw== + dependencies: + "@angular-devkit/architect" "~0.901.0" + "@angular-devkit/core" "~9.1.0" + "@cypress/webpack-preprocessor" "~4.1.2" + fork-ts-checker-webpack-plugin "^3.1.1" + tree-kill "1.2.2" + ts-loader "^5.3.1" + tsconfig-paths-webpack-plugin "3.2.0" + webpack-node-externals "1.7.2" + +"@nrwl/jest@9.4.5", "@nrwl/jest@^9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-9.4.5.tgz#b0ab34e518b7c619ebd983db5c2b9fe805d72585" + integrity sha512-nEgebX3zaWy1whkgabQ17BE+h3Fifv/5WA0TMAJ1LmKmbl44M3yqSosrBdWCut6/HoDmpPfbNZZ1zREvUCbF0Q== + dependencies: + "@angular-devkit/architect" "~0.901.0" + "@angular-devkit/core" "~9.1.0" + "@angular-devkit/schematics" "~9.1.0" + +"@nrwl/linter@9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-9.4.5.tgz#5a84273ce5ac1dcf87062775e2e69815aad9bf22" + integrity sha512-I6ypA7GDhAPLF6KL1FzeYvvOXttrPD/H5WgecVxM0FiMSDxvCYvc3+FQJTMAig3V3xfu+hZ2oK5bayJsBzZezg== + dependencies: + "@angular-devkit/architect" "~0.901.0" + +"@nrwl/node@9.4.5", "@nrwl/node@^9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-9.4.5.tgz#dcb89f87d2d44c00bfc2a2e4fc73b888b3605c42" + integrity sha512-7D+Rbj/HnIwMjOiy3/R/ttrR/hp6Q+NiC1BGKj0qTOqb0yk902+5TS8bxj9fuCOX0qRB+XRnPkwR7/EEbdKFLw== + dependencies: + "@angular-devkit/architect" "~0.901.0" + "@angular-devkit/build-webpack" "~0.901.0" + "@angular-devkit/core" "~9.1.0" + "@angular-devkit/schematics" "~9.1.0" + "@nrwl/jest" "9.4.5" + "@nrwl/linter" "9.4.5" + circular-dependency-plugin "5.2.0" + copy-webpack-plugin "5.1.1" + fork-ts-checker-webpack-plugin "^3.1.1" + license-webpack-plugin "2.1.2" + source-map-support "0.5.12" + tree-kill "1.2.2" + ts-loader "5.4.5" + tsconfig-paths-webpack-plugin "3.2.0" + webpack "4.42.0" + webpack-dev-server "3.9.0" + webpack-merge "4.2.1" + webpack-node-externals "1.7.2" + +"@nrwl/nx-plugin@^9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/nx-plugin/-/nx-plugin-9.4.5.tgz#258d5b6c7056b296ecef9db102cf99dfc81c5f45" + integrity sha512-h87+DrxQLr+1MNPxBdDARHjduBWKFWECIWtROP61KOPkz85xmohYjOHNCrrtyiWrqR6Tciqob1YnYPho+fw1Ag== + dependencies: + "@angular-devkit/architect" "~0.901.0" + "@angular-devkit/core" "~9.1.0" + "@angular-devkit/schematics" "~9.1.0" + "@nrwl/linter" "9.4.5" + "@nrwl/node" "9.4.5" + fs-extra "7.0.1" + inquirer "^6.3.1" + tmp "0.0.33" + yargs "^11.0.0" + yargs-parser "10.0.0" + +"@nrwl/tao@9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-9.4.5.tgz#31a36084982f714ba6e87a588abf247410fbabbd" + integrity sha512-nHe+5bzDwSOuWCxuWVq22eG6Uy4hg0xuz/n4Z/28wb5MmuAtpixzOwjpVm518KN1jPMHiUREewENAzNULOq/rA== + dependencies: + "@angular-devkit/architect" "~0.901.0" + "@angular-devkit/core" "~9.1.0" + "@angular-devkit/schematics" "~9.1.0" + fast-levenshtein "2.0.6" + inquirer "^6.3.1" + minimist "^1.2.0" + strip-json-comments "2.0.1" + +"@nrwl/workspace@^9.4.5": + version "9.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-9.4.5.tgz#325768236397f3263c24c10703d70fb474162ce7" + integrity sha512-TYvPguJUwOS2ecbECZSoIo2Vl4t8nLke4kpJdocNKLOY7swWSONRBs+IGMCswdnQsgH7pIT2jzIcQY3gaCkvBw== + dependencies: + "@angular-devkit/core" "~9.1.0" + "@angular-devkit/schematics" "~9.1.0" + "@nrwl/cli" "9.4.5" + axios "0.19.2" + chalk "2.4.2" + cosmiconfig "4.0.0" + dotenv "8.2.0" + fs-extra "6.0.0" + hasha "5.1.0" + ignore "5.0.4" + npm-run-all "4.1.5" + opn "^5.3.0" + rxjs "^6.5.4" + semver "5.4.1" + strip-json-comments "2.0.1" + tmp "0.0.33" + yargs "^11.0.0" + yargs-parser "10.0.0" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -1534,6 +2436,14 @@ "@angular-devkit/core" "9.0.3" "@angular-devkit/schematics" "9.0.3" +"@schematics/angular@~9.1.0": + version "9.1.9" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.9.tgz#df9f30dd7b63856121fbb9ab5dda57b443802a33" + integrity sha512-c8YGZ6pDfr8IDD1qaOjlEBAkEz14KFSxDj0hCWs0xIM0py513tu5sW8+ziYxGG4bgqpsgVR/KAxuY78iBfUVag== + dependencies: + "@angular-devkit/core" "9.1.9" + "@angular-devkit/schematics" "9.1.9" + "@schematics/update@0.900.3": version "0.900.3" resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.900.3.tgz#9141ee2e1b6356e66f6269b92c284c86e4faf065" @@ -1789,6 +2699,16 @@ dependencies: jest-diff "^24.3.0" +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -2162,6 +3082,16 @@ ajv@6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.1.0, ajv@^6.5.5: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" @@ -2182,6 +3112,16 @@ ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.2: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -2211,6 +3151,11 @@ ansi-colors@^3.0.0, ansi-colors@^3.2.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" @@ -2243,6 +3188,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2559,6 +3509,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axios@0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + axobject-query@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" @@ -2566,6 +3523,15 @@ axobject-query@2.0.2: dependencies: ast-types-flow "0.0.7" +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + babel-jest@^25.5.1: version "25.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" @@ -2590,6 +3556,17 @@ babel-loader@8.0.6: mkdirp "^0.5.1" pify "^4.0.1" +babel-loader@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2597,6 +3574,13 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -2719,6 +3703,11 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== +bluebird@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" + integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -2924,6 +3913,16 @@ browserslist@^4.0.0: electron-to-chromium "^1.3.137" node-releases "^1.1.21" +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.1.tgz#6d08bef149b70d153930780ba762644e0f329122" + integrity sha512-WMjXwFtPskSW1pQUDJRxvRKRkeCr7usN0O/Za76N+F4oadaTdQHotSGcX9jT/Hs7mSKPkyMFNvqawB/1HzYDKQ== + dependencies: + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.481" + escalade "^3.0.1" + node-releases "^1.1.58" + browserslist@^4.6.0, browserslist@^4.7.0, browserslist@^4.7.2, browserslist@^4.8.3: version "4.8.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" @@ -3187,6 +4186,11 @@ caniuse-lite@^1.0.30001006, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.300010 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001025.tgz#30336a8aca7f98618eb3cf38e35184e13d4e5fe6" integrity sha512-SKyFdHYfXUZf5V85+PJgLYyit27q4wgvZuf8QTOk1osbypcROihMBlx9GRar2/pIcKH2r4OehdlBr9x6PXetAQ== +caniuse-lite@^1.0.30001088: + version "1.0.30001088" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001088.tgz#23a6b9e192106107458528858f2c0e0dba0d9073" + integrity sha512-6eYUrlShRYveyqKG58HcyOfPgh3zb2xqs7NvT2VVtP3hEUeeWvc3lqhpeMTxYWBBeeaT9A4bKsrtjATm66BTHg== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" @@ -3217,7 +4221,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3226,6 +4230,17 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -3314,7 +4329,22 @@ chokidar@^3.0.0: normalize-path "^3.0.0" readdirp "^3.0.1" optionalDependencies: - fsevents "^2.0.6" + fsevents "^2.0.6" + +chokidar@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" chownr@^1.1.1: version "1.1.1" @@ -3403,6 +4433,13 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3886,6 +4923,14 @@ core-js-compat@^3.6.0: browserslist "^4.8.3" semver "7.0.0" +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + core-js-pure@^3.0.0: version "3.6.4" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" @@ -3906,7 +4951,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^4.0.0: +cosmiconfig@4.0.0, cosmiconfig@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== @@ -4028,7 +5073,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4316,14 +5361,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@3.1.0, debug@~3.1.0: +debug@3.1.0, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: +debug@4, debug@4.1.1, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -4657,6 +5702,11 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + dotenv@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" @@ -4712,6 +5762,11 @@ electron-to-chromium@^1.3.322, electron-to-chromium@^1.3.341: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.345.tgz#2569d0d54a64ef0f32a4b7e8c80afa5fe57c5d98" integrity sha512-f8nx53+Z9Y+SPWGg3YdHrbYYfIJAtbUjpFfW4X1RwTZ94iUG7geg9tV8HqzAXX7XTNgyWgAFvce4yce8ZKxKmg== +electron-to-chromium@^1.3.481: + version "1.3.483" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz#9269e7cfc1c8e72709824da171cbe47ca5e3ca9e" + integrity sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg== + elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -4740,6 +5795,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4768,6 +5828,15 @@ enhanced-resolve@4.1.1: memory-fs "^0.5.0" tapable "^1.0.0" +enhanced-resolve@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" + integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" @@ -4880,12 +5949,17 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -5208,7 +6282,12 @@ fast-json-stable-stringify@2.0.0, fast-json-stable-stringify@2.x, fast-json-stab resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-json-stable-stringify@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5399,6 +6478,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" @@ -5416,6 +6502,20 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +fork-ts-checker-webpack-plugin@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5467,6 +6567,24 @@ fs-extra@4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" + integrity sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^8.0.0, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -5874,6 +6992,13 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5965,6 +7090,14 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasha@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca" + integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" @@ -6215,6 +7348,11 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.4.tgz#33168af4a21e99b00c5d41cbadb6a6cb49903a45" + integrity sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g== + ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -6384,6 +7522,25 @@ inquirer@7.0.0: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^6.3.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -6400,7 +7557,7 @@ into-stream@^5.0.0: from2 "^2.3.0" p-is-promise "^3.0.0" -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6942,6 +8099,13 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jasmine-marbles@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/jasmine-marbles/-/jasmine-marbles-0.6.0.tgz#f78dc1a3bc452976de10ee8b47c73d616532a954" + integrity sha512-1uzgjEesEeCb+r+v46qn5x326TiGqk5SUZa+A3O+XnMCjG/pGcUOhL9Xsg5L7gLC6RFHyWGTkB5fei4rcvIOiQ== + dependencies: + lodash "^4.5.0" + java-properties@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" @@ -7360,6 +8524,11 @@ js-levenshtein@^1.1.3: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -7459,6 +8628,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -7597,6 +8773,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7739,6 +8922,14 @@ libnpx@^10.2.2: y18n "^4.0.0" yargs "^11.0.0" +license-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz#63f7c571537a450ec47dc98f5d5ffdbca7b3b14f" + integrity sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A== + dependencies: + "@types/webpack-sources" "^0.1.5" + webpack-sources "^1.2.0" + license-webpack-plugin@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz#656fa6a8b2e711ee35c27ac8e1659a87240ef7f3" @@ -7811,6 +9002,15 @@ loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2. emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -7942,7 +9142,7 @@ lodash@^4.17.11, lodash@^4.17.4, lodash@^4.2.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.5.0: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -8030,6 +9230,13 @@ magic-string@0.25.4: dependencies: sourcemap-codec "^1.4.4" +magic-string@0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + magic-string@^0.25.0, magic-string@^0.25.2: version "0.25.2" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" @@ -8212,6 +9419,11 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + meow@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" @@ -8269,6 +9481,11 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + micromatch@4.x, micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -8396,6 +9613,11 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -8495,6 +9717,13 @@ mkdirp@1.x: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8535,6 +9764,11 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -8756,6 +9990,11 @@ node-releases@^1.1.44, node-releases@^1.1.47: dependencies: semver "^6.3.0" +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + node-sass-tilde-importer@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz#1a15105c153f648323b4347693fdb0f331bad1ce" @@ -8966,6 +10205,21 @@ npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: npm-package-arg "^6.1.0" safe-buffer "^5.2.0" +npm-run-all@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -9246,6 +10500,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -9270,7 +10531,7 @@ opener@^1.5.1: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== -opn@^5.5.0: +opn@^5.3.0, opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -9310,6 +10571,20 @@ ora@4.0.2: strip-ansi "^5.2.0" wcwidth "^1.0.1" +ora@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.3.tgz#752a1b7b4be4825546a7a3d59256fa523b6b6d05" + integrity sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -9803,6 +11078,16 @@ picomatch@^2.0.5, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -10267,7 +11552,7 @@ pretty-format@^25.0.0, pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -10466,7 +11751,7 @@ qw@~1.0.1: resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -10737,6 +12022,13 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + realpath-native@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" @@ -10777,6 +12069,13 @@ regenerate-unicode-properties@^8.1.0: dependencies: regenerate "^1.4.0" +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -10804,6 +12103,14 @@ regenerator-transform@^0.14.0: dependencies: private "^0.1.6" +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -10833,6 +12140,18 @@ regexpu-core@^4.6.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + registry-auth-token@^3.0.1, registry-auth-token@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" @@ -10872,6 +12191,11 @@ regjsgen@^0.5.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -10886,6 +12210,13 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -11035,6 +12366,14 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -11173,6 +12512,13 @@ rxjs@6.5.3: dependencies: tslib "^1.9.0" +rxjs@6.5.4, rxjs@^6.5.0, rxjs@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -11180,13 +12526,6 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" -rxjs@^6.5.0, rxjs@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" - rxjs@^6.5.5: version "6.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" @@ -11285,6 +12624,15 @@ schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.1.0, schema-utils@^2.6 ajv "^6.10.2" ajv-keywords "^3.4.1" +schema-utils@^2.6.5: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -11374,6 +12722,11 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + semver@6.3.0, semver@6.x, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -11389,7 +12742,7 @@ semver@7.x: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^5.7.1: +semver@^5.0.1, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -11428,6 +12781,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -11537,6 +12897,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -11732,6 +13097,14 @@ source-map-resolve@^0.5.3: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@0.5.12, source-map-support@^0.5.5, source-map-support@^0.5.6: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@0.5.16, source-map-support@~0.5.12: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" @@ -11748,14 +13121,6 @@ source-map-support@^0.5.17: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.5, source-map-support@^0.5.6: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -12028,7 +13393,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12054,6 +13419,14 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.padend@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" + integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -12168,7 +13541,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -12213,6 +13586,11 @@ stylus@0.54.7, stylus@^0.54.7: semver "^6.0.0" source-map "^0.7.3" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -12366,6 +13744,21 @@ terser-webpack-plugin@^1.4.1: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser-webpack-plugin@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^3.1.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + terser@4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" @@ -12455,7 +13848,7 @@ tiny-relative-date@^1.3.0: resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== -tmp@^0.0.33: +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -12608,6 +14001,17 @@ ts-jest@^26.1.0: semver "7.x" yargs-parser "18.x" +ts-loader@5.4.5, ts-loader@^5.3.1: + version "5.4.5" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.4.5.tgz#a0c1f034b017a9344cef0961bfd97cc192492b8b" + integrity sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^3.1.4" + semver "^5.0.1" + ts-node@~8.10.2: version "8.10.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" @@ -12619,6 +14023,25 @@ ts-node@~8.10.2: source-map-support "^0.5.17" yn "3.1.1" +tsconfig-paths-webpack-plugin@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz#6e70bd42915ad0efb64d3385163f0c1270f3e04d" + integrity sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + tsconfig-paths "^3.4.0" + +tsconfig-paths@^3.4.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -12704,7 +14127,7 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -12775,6 +14198,11 @@ unicode-match-property-value-ecmascript@^1.1.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" @@ -13176,6 +14604,13 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" +webpack-merge@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" + integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== + dependencies: + lodash "^4.17.5" + webpack-merge@4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" @@ -13183,6 +14618,11 @@ webpack-merge@4.2.2: dependencies: lodash "^4.17.15" +webpack-node-externals@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" + integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== + webpack-sources@1.4.3, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -13235,6 +14675,35 @@ webpack@4.41.2: watchpack "^1.6.0" webpack-sources "^1.4.1" +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" @@ -13350,6 +14819,13 @@ worker-plugin@3.2.0: dependencies: loader-utils "^1.1.0" +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -13472,6 +14948,13 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" +yargs-parser@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.0.0.tgz#c737c93de2567657750cb1f2c00be639fd19c994" + integrity sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g== + dependencies: + camelcase "^4.1.0" + yargs-parser@18.x, yargs-parser@^18.1.1: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" From 6e19735eaa19b6f8af7d235fef76b8b11cbe4c36 Mon Sep 17 00:00:00 2001 From: timdeschryver <28659384+timdeschryver@users.noreply.github.com> Date: Fri, 26 Jun 2020 07:58:19 +0200 Subject: [PATCH 2/3] chore: exclude coverage --- .circleci/config.yml | 2 +- .gitignore | 1 + .../app/examples/00-single-component.ts.html | 119 -- .../app/examples/01-nested-component.ts.html | 170 -- .../app/examples/02-input-output.ts.html | 128 -- .../coverage/app/examples/03-forms.ts.html | 281 --- .../examples/04-forms-with-material.ts.html | 347 ---- .../examples/05-component-provider.ts.html | 179 -- .../app/examples/06-with-ngrx-store.ts.html | 200 --- .../examples/07-with-ngrx-mock-store.ts.html | 152 -- .../app/examples/08-directive.ts.html | 155 -- .../coverage/app/examples/09-router.ts.html | 200 --- .../10-inject-token-dependency.ts.html | 113 -- .../app/examples/11-ng-content.ts.html | 113 -- .../app/examples/12-service-component.ts.html | 173 -- .../coverage/app/examples/index.html | 291 --- apps/example-app/coverage/app/index.html | 111 -- .../coverage/app/material.module.ts.html | 107 -- apps/example-app/coverage/base.css | 224 --- apps/example-app/coverage/block-navigation.js | 79 - apps/example-app/coverage/favicon.png | Bin 540 -> 0 bytes apps/example-app/coverage/index.html | 126 -- apps/example-app/coverage/prettify.css | 1 - apps/example-app/coverage/prettify.js | 2 - .../coverage/sort-arrow-sprite.png | Bin 209 -> 0 bytes apps/example-app/coverage/sorter.js | 170 -- projects/jest-utils/coverage/base.css | 224 --- .../jest-utils/coverage/block-navigation.js | 79 - projects/jest-utils/coverage/favicon.png | Bin 540 -> 0 bytes projects/jest-utils/coverage/index.html | 126 -- projects/jest-utils/coverage/prettify.css | 1 - projects/jest-utils/coverage/prettify.js | 2 - .../jest-utils/coverage/sort-arrow-sprite.png | Bin 209 -> 0 bytes projects/jest-utils/coverage/sorter.js | 170 -- projects/jest-utils/coverage/src/index.html | 111 -- .../coverage/src/lib/create-mock.ts.html | 191 -- .../jest-utils/coverage/src/lib/index.html | 126 -- .../jest-utils/coverage/src/lib/index.ts.html | 83 - .../coverage/src/public_api.ts.html | 95 - projects/testing-library/coverage/base.css | 224 --- .../coverage/block-navigation.js | 79 - projects/testing-library/coverage/favicon.png | Bin 540 -> 0 bytes projects/testing-library/coverage/index.html | 201 --- .../coverage/migrations/4_0_0/index.html | 111 -- .../coverage/migrations/4_0_0/index.ts.html | 170 -- .../migrations/4_0_0/rules/index.html | 141 -- .../rules/noComponentParametersRule.ts.html | 212 --- .../rules/noComponentPropertyRule.ts.html | 146 -- .../4_0_0/rules/noCreateComponentRule.ts.html | 200 --- .../coverage/migrations/5_1_2/index.html | 111 -- .../coverage/migrations/5_1_2/index.ts.html | 239 --- .../migrations/5_1_2/rules/index.html | 111 -- .../noAngularExtensionsImportRule.ts.html | 158 -- .../testing-library/coverage/prettify.css | 1 - projects/testing-library/coverage/prettify.js | 2 - .../coverage/sort-arrow-sprite.png | Bin 209 -> 0 bytes projects/testing-library/coverage/sorter.js | 170 -- .../testing-library/coverage/src/index.html | 111 -- .../coverage/src/lib/config.ts.html | 152 -- .../coverage/src/lib/index.html | 126 -- .../coverage/src/lib/testing-library.ts.html | 1574 ----------------- .../coverage/src/lib/user-events/index.html | 156 -- .../src/lib/user-events/index.ts.html | 254 --- .../src/lib/user-events/selectOptions.ts.html | 275 --- .../coverage/src/lib/user-events/tab.ts.html | 110 -- .../coverage/src/lib/user-events/type.ts.html | 389 ---- .../coverage/src/public_api.ts.html | 104 -- 67 files changed, 2 insertions(+), 10177 deletions(-) delete mode 100644 apps/example-app/coverage/app/examples/00-single-component.ts.html delete mode 100644 apps/example-app/coverage/app/examples/01-nested-component.ts.html delete mode 100644 apps/example-app/coverage/app/examples/02-input-output.ts.html delete mode 100644 apps/example-app/coverage/app/examples/03-forms.ts.html delete mode 100644 apps/example-app/coverage/app/examples/04-forms-with-material.ts.html delete mode 100644 apps/example-app/coverage/app/examples/05-component-provider.ts.html delete mode 100644 apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html delete mode 100644 apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html delete mode 100644 apps/example-app/coverage/app/examples/08-directive.ts.html delete mode 100644 apps/example-app/coverage/app/examples/09-router.ts.html delete mode 100644 apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html delete mode 100644 apps/example-app/coverage/app/examples/11-ng-content.ts.html delete mode 100644 apps/example-app/coverage/app/examples/12-service-component.ts.html delete mode 100644 apps/example-app/coverage/app/examples/index.html delete mode 100644 apps/example-app/coverage/app/index.html delete mode 100644 apps/example-app/coverage/app/material.module.ts.html delete mode 100644 apps/example-app/coverage/base.css delete mode 100644 apps/example-app/coverage/block-navigation.js delete mode 100644 apps/example-app/coverage/favicon.png delete mode 100644 apps/example-app/coverage/index.html delete mode 100644 apps/example-app/coverage/prettify.css delete mode 100644 apps/example-app/coverage/prettify.js delete mode 100644 apps/example-app/coverage/sort-arrow-sprite.png delete mode 100644 apps/example-app/coverage/sorter.js delete mode 100644 projects/jest-utils/coverage/base.css delete mode 100644 projects/jest-utils/coverage/block-navigation.js delete mode 100644 projects/jest-utils/coverage/favicon.png delete mode 100644 projects/jest-utils/coverage/index.html delete mode 100644 projects/jest-utils/coverage/prettify.css delete mode 100644 projects/jest-utils/coverage/prettify.js delete mode 100644 projects/jest-utils/coverage/sort-arrow-sprite.png delete mode 100644 projects/jest-utils/coverage/sorter.js delete mode 100644 projects/jest-utils/coverage/src/index.html delete mode 100644 projects/jest-utils/coverage/src/lib/create-mock.ts.html delete mode 100644 projects/jest-utils/coverage/src/lib/index.html delete mode 100644 projects/jest-utils/coverage/src/lib/index.ts.html delete mode 100644 projects/jest-utils/coverage/src/public_api.ts.html delete mode 100644 projects/testing-library/coverage/base.css delete mode 100644 projects/testing-library/coverage/block-navigation.js delete mode 100644 projects/testing-library/coverage/favicon.png delete mode 100644 projects/testing-library/coverage/index.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/index.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/index.ts.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/index.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html delete mode 100644 projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html delete mode 100644 projects/testing-library/coverage/migrations/5_1_2/index.html delete mode 100644 projects/testing-library/coverage/migrations/5_1_2/index.ts.html delete mode 100644 projects/testing-library/coverage/migrations/5_1_2/rules/index.html delete mode 100644 projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html delete mode 100644 projects/testing-library/coverage/prettify.css delete mode 100644 projects/testing-library/coverage/prettify.js delete mode 100644 projects/testing-library/coverage/sort-arrow-sprite.png delete mode 100644 projects/testing-library/coverage/sorter.js delete mode 100644 projects/testing-library/coverage/src/index.html delete mode 100644 projects/testing-library/coverage/src/lib/config.ts.html delete mode 100644 projects/testing-library/coverage/src/lib/index.html delete mode 100644 projects/testing-library/coverage/src/lib/testing-library.ts.html delete mode 100644 projects/testing-library/coverage/src/lib/user-events/index.html delete mode 100644 projects/testing-library/coverage/src/lib/user-events/index.ts.html delete mode 100644 projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html delete mode 100644 projects/testing-library/coverage/src/lib/user-events/tab.ts.html delete mode 100644 projects/testing-library/coverage/src/lib/user-events/type.ts.html delete mode 100644 projects/testing-library/coverage/src/public_api.ts.html diff --git a/.circleci/config.yml b/.circleci/config.yml index 7571ec1c..ef7e1dfb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -40,7 +40,7 @@ jobs: - restore_cache: key: *cache_key - run: - name: test + name: build command: yarn build - save_cache: key: *dist_key diff --git a/.gitignore b/.gitignore index ee5c9d83..6ae474ac 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /dist /tmp /out-tsc +**/coverage # dependencies /node_modules diff --git a/apps/example-app/coverage/app/examples/00-single-component.ts.html b/apps/example-app/coverage/app/examples/00-single-component.ts.html deleted file mode 100644 index a3b0a834..00000000 --- a/apps/example-app/coverage/app/examples/00-single-component.ts.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - Code coverage report for app/examples/00-single-component.ts - - - - - - - - - -
-
-

All files / app/examples 00-single-component.ts

-
- -
- 100% - Statements - 5/5 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -141x -  -  -  -  -  -  -  -  -  -1x -1x -  - 
import { Component } from '@angular/core';
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <button (click)="value = value - 1">Decrement</button>
-    <span data-testid="value">{{ value }}</span>
-    <button (click)="value = value + 1">Increment</button>
-  `,
-})
-export class SingleComponent {
-  value = 0;
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/01-nested-component.ts.html b/apps/example-app/coverage/app/examples/01-nested-component.ts.html deleted file mode 100644 index a426300e..00000000 --- a/apps/example-app/coverage/app/examples/01-nested-component.ts.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - Code coverage report for app/examples/01-nested-component.ts - - - - - - - - - -
-
-

All files / app/examples 01-nested-component.ts

-
- -
- 100% - Statements - 15/15 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 2/2 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -311x -  -  -  -  -  -1x -1x -2x -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -1x -1x -  - 
import { Component, Input, Output, EventEmitter } from '@angular/core';
- 
-@Component({
-  selector: 'app-button',
-  template: ` <button (click)="raise.emit()">{{ name }}</button> `,
-})
-export class NestedButtonComponent {
-  @Input() name: string;
-  @Output() raise = new EventEmitter<void>();
-}
- 
-@Component({
-  selector: 'app-value',
-  template: ` <span data-testid="value">{{ value }}</span> `,
-})
-export class NestedValueComponent {
-  @Input() value: number;
-}
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <app-button (raise)="value = value - 1" name="Decrement"></app-button>
-    <app-value [value]="value"></app-value>
-    <app-button (raise)="value = value + 1" name="Increment"></app-button>
-  `,
-})
-export class NestedContainerComponent {
-  value = 0;
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/02-input-output.ts.html b/apps/example-app/coverage/app/examples/02-input-output.ts.html deleted file mode 100644 index acb6c5ae..00000000 --- a/apps/example-app/coverage/app/examples/02-input-output.ts.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - Code coverage report for app/examples/02-input-output.ts - - - - - - - - - -
-
-

All files / app/examples 02-input-output.ts

-
- -
- 100% - Statements - 8/8 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -171x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  - 
import { Component, EventEmitter, Input, Output } from '@angular/core';
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <button (click)="value = value - 1">Decrement</button>
-    <span data-testid="value">{{ value }}</span>
-    <button (click)="value = value + 1">Increment</button>
- 
-    <button (click)="sendValue.emit(value)">Send</button>
-  `,
-})
-export class InputOutputComponent {
-  @Input() value = 0;
-  @Output() sendValue = new EventEmitter<number>();
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/03-forms.ts.html b/apps/example-app/coverage/app/examples/03-forms.ts.html deleted file mode 100644 index c6880b44..00000000 --- a/apps/example-app/coverage/app/examples/03-forms.ts.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - Code coverage report for app/examples/03-forms.ts - - - - - - - - - -
-
-

All files / app/examples 03-forms.ts

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 16/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -681x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -1x -  -  -  -  -  -1x -  -  -280x -  -840x -840x -484x -484x -484x -  -208x -  -136x -  -140x -  -  -  -  -840x -  -  -  - 
import { Component } from '@angular/core';
-import { FormBuilder, Validators, ValidationErrors } from '@angular/forms';
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <form [formGroup]="form" name="form">
-      <div>
-        <label for="name">Name</label>
-        <input type="text" id="name" name="name" formControlName="name" required />
-      </div>
- 
-      <div>
-        <label for="score">Score</label>
-        <input type="number" id="score" name="score" formControlName="score" required min="0" max="10" />
-      </div>
- 
-      <div>
-        <label for="color">Color</label>
-        <select id="color" name="color" formControlName="color">
-          <option value="">---</option>
-          <option *ngFor="let color of colors" [value]="color.id">{{ color.value }}</option>
-        </select>
-      </div>
- 
-      <div role="alert" *ngIf="formErrors.length">
-        <p *ngFor="let error of formErrors">{{ error }}</p>
-      </div>
-    </form>
-  `,
-})
-export class FormsComponent {
-  colors = [
-    { id: 'R', value: 'Red' },
-    { id: 'B', value: 'Blue' },
-    { id: 'G', value: 'Green' },
-  ];
-  form = this.formBuilder.group({
-    name: ['', Validators.required],
-    score: [0, { validators: [Validators.min(1), Validators.max(10)], updateOn: 'blur' }],
-    color: ['', Validators.required],
-  });
- 
-  constructor(private formBuilder: FormBuilder) {}
- 
-  get formErrors() {
-    return Object.keys(this.form.controls)
-      .map((formKey) => {
-        const controlErrors: ValidationErrors = this.form.get(formKey).errors;
-        if (controlErrors != null) {
-          return Object.keys(controlErrors).map((keyError) => {
-            const error = controlErrors[keyError];
-            switch (keyError) {
-              case 'required':
-                return `${formKey} is required`;
-              case 'min':
-                return `${formKey} must be greater than ${error.min}`;
-              case 'max':
-                return `${formKey} must be lesser than ${error.max}`;
-            }
-          });
-        }
-      })
-      .reduce((errors, value) => errors.concat(value), [])
-      .filter(Boolean);
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html b/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html deleted file mode 100644 index f4a70482..00000000 --- a/apps/example-app/coverage/app/examples/04-forms-with-material.ts.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - Code coverage report for app/examples/04-forms-with-material.ts - - - - - - - - - -
-
-

All files / app/examples 04-forms-with-material.ts

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 5/5 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 16/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -901x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -1x -  -  -  -  -  -1x -  -  -264x -  -792x -792x -444x -444x -444x -  -224x -  -100x -  -120x -  -  -  -  -792x -  -  -  - 
import { Component } from '@angular/core';
-import { FormBuilder, Validators, ValidationErrors } from '@angular/forms';
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <form [formGroup]="form" name="form">
-      <mat-form-field>
-        <input matInput placeholder="Name" name="name" formControlName="name" required />
-      </mat-form-field>
- 
-      <mat-form-field>
-        <input
-          matInput
-          type="number"
-          placeholder="Score"
-          name="score"
-          formControlName="score"
-          required
-          min="0"
-          max="10"
-        />
-      </mat-form-field>
- 
-      <mat-form-field>
-        <mat-select placeholder="Color" name="color" formControlName="color">
-          <mat-option value="">---</mat-option>
-          <mat-option *ngFor="let color of colors" [value]="color.id">{{ color.value }}</mat-option>
-        </mat-select>
-      </mat-form-field>
- 
-      <div role="alert" *ngIf="formErrors.length">
-        <p *ngFor="let error of formErrors">{{ error }}</p>
-      </div>
-    </form>
-  `,
-  styles: [
-    `
-      form {
-        display: flex;
-        flex-direction: column;
-      }
- 
-      form > * {
-        width: 100%;
-      }
- 
-      [role='alert'] {
-        color: red;
-      }
-    `,
-  ],
-})
-export class MaterialFormsComponent {
-  colors = [
-    { id: 'R', value: 'Red' },
-    { id: 'B', value: 'Blue' },
-    { id: 'G', value: 'Green' },
-  ];
-  form = this.formBuilder.group({
-    name: ['', Validators.required],
-    score: [0, [Validators.min(1), Validators.max(10)]],
-    color: ['', Validators.required],
-  });
- 
-  constructor(private formBuilder: FormBuilder) {}
- 
-  get formErrors() {
-    return Object.keys(this.form.controls)
-      .map((formKey) => {
-        const controlErrors: ValidationErrors = this.form.get(formKey).errors;
-        if (controlErrors != null) {
-          return Object.keys(controlErrors).map((keyError) => {
-            const error = controlErrors[keyError];
-            switch (keyError) {
-              case 'required':
-                return `${formKey} is required`;
-              case 'min':
-                return `${formKey} must be greater than ${error.min}`;
-              case 'max':
-                return `${formKey} must be lesser than ${error.max}`;
-            }
-          });
-        }
-      })
-      .reduce((errors, value) => errors.concat(value), [])
-      .filter(Boolean);
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/05-component-provider.ts.html b/apps/example-app/coverage/app/examples/05-component-provider.ts.html deleted file mode 100644 index 74aba7b2..00000000 --- a/apps/example-app/coverage/app/examples/05-component-provider.ts.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - Code coverage report for app/examples/05-component-provider.ts - - - - - - - - - -
-
-

All files / app/examples 05-component-provider.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -341x -  -  -  -  -1x -1x -  -  -2x -  -  -  -1x -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -1x -3x -  - 
import { Component, Injectable } from '@angular/core';
- 
-@Injectable({
-  providedIn: 'root',
-})
-export class CounterService {
-  private _value = 0;
- 
-  increment() {
-    this._value += 1;
-  }
- 
-  decrement() {
-    this._value -= 1;
-  }
- 
-  value() {
-    return this._value;
-  }
-}
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <button (click)="counter.decrement()">Decrement</button>
-    <span data-testid="value">{{ counter.value() }}</span>
-    <button (click)="counter.increment()">Increment</button>
-  `,
-  providers: [CounterService],
-})
-export class ComponentWithProviderComponent {
-  constructor(public counter: CounterService) {}
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html b/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html deleted file mode 100644 index 45730a28..00000000 --- a/apps/example-app/coverage/app/examples/06-with-ngrx-store.ts.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Code coverage report for app/examples/06-with-ngrx-store.ts - - - - - - - - - -
-
-

All files / app/examples 06-with-ngrx-store.ts

-
- -
- 100% - Statements - 19/19 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 8/8 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -411x -1x -  -1x -1x -1x -  -2x -1x -  -  -1x -4x -  -  -1x -4x -4x -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -2x -  -  -  -1x -  -  - 
import { Component } from '@angular/core';
-import { createSelector, Store, createAction, createReducer, on, select } from '@ngrx/store';
- 
-const increment = createAction('increment');
-const decrement = createAction('decrement');
-const counterReducer = createReducer(
-  0,
-  on(increment, (state) => state + 1),
-  on(decrement, (state) => state - 1),
-);
- 
-export function reducer(state, action) {
-  return counterReducer(state, action);
-}
- 
-const selectValue = createSelector(
-  (state: any) => state.value,
-  (value) => value * 10,
-);
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <button (click)="decrement()">Decrement</button>
-    <span data-testid="value">{{ value | async }}</span>
-    <button (click)="increment()">Increment</button>
-  `,
-})
-export class WithNgRxStoreComponent {
-  value = this.store.pipe(select(selectValue));
-  constructor(private store: Store<any>) {}
- 
-  increment() {
-    this.store.dispatch(increment());
-  }
- 
-  decrement() {
-    this.store.dispatch(decrement());
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html b/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html deleted file mode 100644 index 361e8453..00000000 --- a/apps/example-app/coverage/app/examples/07-with-ngrx-mock-store.ts.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - Code coverage report for app/examples/07-with-ngrx-mock-store.ts - - - - - - - - - -
-
-

All files / app/examples 07-with-ngrx-mock-store.ts

-
- -
- 81.82% - Statements - 9/11 -
- - -
- 100% - Branches - 0/0 -
- - -
- 50% - Functions - 2/4 -
- - -
- 77.78% - Lines - 7/9 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -251x -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -1x -  -  - 
import { Component } from '@angular/core';
-import { createSelector, Store, select } from '@ngrx/store';
- 
-export const selectItems = createSelector(
-  (state: any) => state.items,
-  (items) => items,
-);
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <ul>
-      <li *ngFor="let item of items | async" (click)="send(item)" [attr.aria-label]="item">{{ item }}</li>
-    </ul>
-  `,
-})
-export class WithNgRxMockStoreComponent {
-  items = this.store.pipe(select(selectItems));
-  constructor(private store: Store<any>) {}
- 
-  send(item: string) {
-    this.store.dispatch({ type: '[Item List] send', item });
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/08-directive.ts.html b/apps/example-app/coverage/app/examples/08-directive.ts.html deleted file mode 100644 index 04b64f67..00000000 --- a/apps/example-app/coverage/app/examples/08-directive.ts.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - Code coverage report for app/examples/08-directive.ts - - - - - - - - - -
-
-

All files / app/examples 08-directive.ts

-
- -
- 100% - Statements - 14/14 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 10/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -261x -  -  -  -  -1x -3x -3x -  -3x -  -  -3x -  -  -  -1x -3x -  -  -  -1x -3x -  -  - 
import { Directive, HostListener, ElementRef, Input, OnInit } from '@angular/core';
- 
-@Directive({
-  selector: '[appSpoiler]',
-})
-export class SpoilerDirective implements OnInit {
-  @Input() hidden = 'SPOILER';
-  @Input() visible = 'I am visible now...';
- 
-  constructor(private el: ElementRef) {}
- 
-  ngOnInit() {
-    this.el.nativeElement.textContent = this.hidden;
-  }
- 
-  @HostListener('mouseover')
-  onMouseOver() {
-    this.el.nativeElement.textContent = this.visible;
-  }
- 
-  @HostListener('mouseleave')
-  onMouseLeave() {
-    this.el.nativeElement.textContent = this.hidden;
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/09-router.ts.html b/apps/example-app/coverage/app/examples/09-router.ts.html deleted file mode 100644 index 3001226b..00000000 --- a/apps/example-app/coverage/app/examples/09-router.ts.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Code coverage report for app/examples/09-router.ts - - - - - - - - - -
-
-

All files / app/examples 09-router.ts

-
- -
- 100% - Statements - 19/19 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 10/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -411x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -1x -6x -4x -4x -4x -  -  -  -  -  -  -1x - 
import { OnInit, Component } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
-import { map } from 'rxjs/operators';
- 
-@Component({
-  selector: 'app-master',
-  template: `
-    <a [routerLink]="'./detail/one'">Load one</a> | <a [routerLink]="'./detail/two'">Load two</a> |
-    <a [routerLink]="'./detail/three'">Load three</a> |
- 
-    <hr />
- 
-    <router-outlet></router-outlet>
-  `,
-})
-export class MasterComponent {}
- 
-@Component({
-  selector: 'app-detail',
-  template: `
-    <h2>Detail {{ id | async }}</h2>
- 
-    <p>{{ text | async }} {{ subtext | async }}</p>
- 
-    <a [routerLink]="'../..'">Back to parent</a>
-    <a routerLink="/hidden-detail">hidden x</a>
-  `,
-})
-export class DetailComponent {
-  id = this.route.paramMap.pipe(map((params) => params.get('id')));
-  text = this.route.queryParams.pipe(map((params) => params['text']));
-  subtext = this.route.queryParams.pipe(map((params) => params['subtext']));
-  constructor(private route: ActivatedRoute) {}
-}
- 
-@Component({
-  selector: 'app-detail-hidden',
-  template: ` You found the treasure! `,
-})
-export class HiddenDetailComponent {}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html b/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html deleted file mode 100644 index 375235b7..00000000 --- a/apps/example-app/coverage/app/examples/10-inject-token-dependency.ts.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Code coverage report for app/examples/10-inject-token-dependency.ts - - - - - - - - - -
-
-

All files / app/examples 10-inject-token-dependency.ts

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -121x -  -1x -  -  -  -  -  -1x -1x -  - 
import { Component, InjectionToken, Inject } from '@angular/core';
- 
-export const DATA = new InjectionToken<{ text: string }>('Components Data');
- 
-@Component({
-  selector: 'app-fixture',
-  template: ` {{ data.text }} `,
-})
-export class DataInjectedComponent {
-  constructor(@Inject(DATA) public data: { text: string }) {}
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/11-ng-content.ts.html b/apps/example-app/coverage/app/examples/11-ng-content.ts.html deleted file mode 100644 index 1ff2f55f..00000000 --- a/apps/example-app/coverage/app/examples/11-ng-content.ts.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Code coverage report for app/examples/11-ng-content.ts - - - - - - - - - -
-
-

All files / app/examples 11-ng-content.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 2/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -121x -  -  -  -  -  -  -  -  -  -1x - 
import { Component, ChangeDetectionStrategy } from '@angular/core';
- 
-@Component({
-  template: `
-    <p>
-      <ng-content></ng-content>
-    </p>
-  `,
-  changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class CellComponent {}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/12-service-component.ts.html b/apps/example-app/coverage/app/examples/12-service-component.ts.html deleted file mode 100644 index 7ec801d4..00000000 --- a/apps/example-app/coverage/app/examples/12-service-component.ts.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - Code coverage report for app/examples/12-service-component.ts - - - - - - - - - -
-
-

All files / app/examples 12-service-component.ts

-
- -
- 91.67% - Statements - 11/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 50% - Functions - 1/2 -
- - -
- 87.5% - Lines - 7/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -321x -1x -  -1x -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -2x -2x -  - 
import { Component, Injectable } from '@angular/core';
-import { Observable, of } from 'rxjs';
- 
-export class Customer {
-  id: string;
-  name: string;
-}
- 
-@Injectable({
-  providedIn: 'root',
-})
-export class CustomersService {
-  load(): Observable<Customer[]> {
-    return of([]);
-  }
-}
- 
-@Component({
-  selector: 'app-fixture',
-  template: `
-    <ul>
-      <li *ngFor="let customer of customers$ | async">
-        {{ customer.name }}
-      </li>
-    </ul>
-  `,
-})
-export class CustomersComponent {
-  customers$ = this.service.load();
-  constructor(private service: CustomersService) {}
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/examples/index.html b/apps/example-app/coverage/app/examples/index.html deleted file mode 100644 index 238061e7..00000000 --- a/apps/example-app/coverage/app/examples/index.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - Code coverage report for app/examples - - - - - - - - - -
-
-

All files app/examples

-
- -
- 98.14% - Statements - 158/161 -
- - -
- 100% - Branches - 10/10 -
- - -
- 92.86% - Functions - 39/42 -
- - -
- 97.39% - Lines - 112/115 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
00-single-component.ts -
-
100%5/5100%0/0100%1/1100%3/3
01-nested-component.ts -
-
100%15/15100%0/0100%2/2100%8/8
02-input-output.ts -
-
100%8/8100%0/0100%1/1100%4/4
03-forms.ts -
-
100%18/18100%5/5100%5/5100%16/16
04-forms-with-material.ts -
-
100%18/18100%5/5100%5/5100%16/16
05-component-provider.ts -
-
100%12/12100%0/0100%5/5100%8/8
06-with-ngrx-store.ts -
-
100%19/19100%0/0100%8/8100%17/17
07-with-ngrx-mock-store.ts -
-
81.82%9/11100%0/050%2/477.78%7/9
08-directive.ts -
-
100%14/14100%0/0100%4/4100%10/10
09-router.ts -
-
100%19/19100%0/0100%4/4100%10/10
10-inject-token-dependency.ts -
-
100%6/6100%0/0100%1/1100%4/4
11-ng-content.ts -
-
100%4/4100%0/0100%0/0100%2/2
12-service-component.ts -
-
91.67%11/12100%0/050%1/287.5%7/8
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/index.html b/apps/example-app/coverage/app/index.html deleted file mode 100644 index 6d079084..00000000 --- a/apps/example-app/coverage/app/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for app - - - - - - - - - -
-
-

All files app

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
material.module.ts -
-
100%6/6100%0/0100%0/0100%4/4
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/app/material.module.ts.html b/apps/example-app/coverage/app/material.module.ts.html deleted file mode 100644 index 5b9f72db..00000000 --- a/apps/example-app/coverage/app/material.module.ts.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Code coverage report for app/material.module.ts - - - - - - - - - -
-
-

All files / app material.module.ts

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -101x -  -1x -1x -  -  -  -  -1x - 
import { NgModule } from '@angular/core';
- 
-import { MatInputModule } from '@angular/material/input';
-import { MatSelectModule } from '@angular/material/select';
- 
-@NgModule({
-  exports: [MatInputModule, MatSelectModule],
-})
-export class MaterialModule {}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/base.css b/apps/example-app/coverage/base.css deleted file mode 100644 index f418035b..00000000 --- a/apps/example-app/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/apps/example-app/coverage/block-navigation.js b/apps/example-app/coverage/block-navigation.js deleted file mode 100644 index c7ff5a5c..00000000 --- a/apps/example-app/coverage/block-navigation.js +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/apps/example-app/coverage/favicon.png b/apps/example-app/coverage/favicon.png deleted file mode 100644 index 6691817834a957c938e7f09640a37a645fb31457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 98.2% - Statements - 164/167 -
- - -
- 100% - Branches - 10/10 -
- - -
- 92.86% - Functions - 39/42 -
- - -
- 97.48% - Lines - 116/119 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
app -
-
100%6/6100%0/0100%0/0100%4/4
app/examples -
-
98.14%158/161100%10/1092.86%39/4297.39%112/115
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/apps/example-app/coverage/prettify.css b/apps/example-app/coverage/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/apps/example-app/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/apps/example-app/coverage/prettify.js b/apps/example-app/coverage/prettify.js deleted file mode 100644 index b3225238..00000000 --- a/apps/example-app/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/apps/example-app/coverage/sort-arrow-sprite.png b/apps/example-app/coverage/sort-arrow-sprite.png deleted file mode 100644 index 03f704a609c6fd0dbfdac63466a7d7c958b5cbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/projects/jest-utils/coverage/base.css b/projects/jest-utils/coverage/base.css deleted file mode 100644 index f418035b..00000000 --- a/projects/jest-utils/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/projects/jest-utils/coverage/block-navigation.js b/projects/jest-utils/coverage/block-navigation.js deleted file mode 100644 index c7ff5a5c..00000000 --- a/projects/jest-utils/coverage/block-navigation.js +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/projects/jest-utils/coverage/favicon.png b/projects/jest-utils/coverage/favicon.png deleted file mode 100644 index 6691817834a957c938e7f09640a37a645fb31457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 100% - Statements - 17/17 -
- - -
- 100% - Branches - 6/6 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 17/17 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
src -
-
100%1/1100%0/0100%0/0100%1/1
src/lib -
-
100%16/16100%6/6100%3/3100%16/16
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/jest-utils/coverage/prettify.css b/projects/jest-utils/coverage/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/projects/jest-utils/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/projects/jest-utils/coverage/prettify.js b/projects/jest-utils/coverage/prettify.js deleted file mode 100644 index b3225238..00000000 --- a/projects/jest-utils/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/projects/jest-utils/coverage/sort-arrow-sprite.png b/projects/jest-utils/coverage/sort-arrow-sprite.png deleted file mode 100644 index 03f704a609c6fd0dbfdac63466a7d7c958b5cbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/projects/jest-utils/coverage/src/index.html b/projects/jest-utils/coverage/src/index.html deleted file mode 100644 index 7d83e44b..00000000 --- a/projects/jest-utils/coverage/src/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
public_api.ts -
-
100%1/1100%0/0100%0/0100%1/1
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/create-mock.ts.html b/projects/jest-utils/coverage/src/lib/create-mock.ts.html deleted file mode 100644 index 9a821d0b..00000000 --- a/projects/jest-utils/coverage/src/lib/create-mock.ts.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - Code coverage report for src/lib/create-mock.ts - - - - - - - - - -
-
-

All files / src/lib create-mock.ts

-
- -
- 100% - Statements - 15/15 -
- - -
- 100% - Branches - 6/6 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 15/15 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38  -  -  -  -1x -3x -  -  -9x -3x -  -  -6x -42x -6x -  -  -36x -36x -33x -  -  -  -6x -  -  -3x -  -3x -  -  -1x -2x -  -  -  -  - 
import { Type, Provider } from '@angular/core';
- 
-export type Mock<T> = T & { [K in keyof T]: T[K] & jest.Mock };
- 
-export function createMock<T>(type: Type<T>): Mock<T> {
-  const mock: any = {};
- 
-  function mockFunctions(proto: any) {
-    if (!proto) {
-      return;
-    }
- 
-    for (const prop of Object.getOwnPropertyNames(proto)) {
-      if (prop === 'constructor') {
-        continue;
-      }
- 
-      const descriptor = Object.getOwnPropertyDescriptor(proto, prop);
-      if (typeof descriptor.value === 'function') {
-        mock[prop] = jest.fn();
-      }
-    }
- 
-    mockFunctions(Object.getPrototypeOf(proto));
-  }
- 
-  mockFunctions(type.prototype);
- 
-  return mock;
-}
- 
-export function provideMock<T>(type: Type<T>): Provider {
-  return {
-    provide: type,
-    useValue: createMock(type),
-  };
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/index.html b/projects/jest-utils/coverage/src/lib/index.html deleted file mode 100644 index 624a2a91..00000000 --- a/projects/jest-utils/coverage/src/lib/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Code coverage report for src/lib - - - - - - - - - -
-
-

All files src/lib

-
- -
- 100% - Statements - 16/16 -
- - -
- 100% - Branches - 6/6 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 16/16 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
create-mock.ts -
-
100%15/15100%6/6100%3/3100%15/15
index.ts -
-
100%1/1100%0/0100%0/0100%1/1
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/lib/index.ts.html b/projects/jest-utils/coverage/src/lib/index.ts.html deleted file mode 100644 index c17f446c..00000000 --- a/projects/jest-utils/coverage/src/lib/index.ts.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - Code coverage report for src/lib/index.ts - - - - - - - - - -
-
-

All files / src/lib index.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -21x - 
export * from './create-mock';
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/jest-utils/coverage/src/public_api.ts.html b/projects/jest-utils/coverage/src/public_api.ts.html deleted file mode 100644 index 03e41c90..00000000 --- a/projects/jest-utils/coverage/src/public_api.ts.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Code coverage report for src/public_api.ts - - - - - - - - - -
-
-

All files / src public_api.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6  -  -  -  -1x - 
/*
- * Public API Surface of testing-library
- */
- 
-export * from './lib';
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/base.css b/projects/testing-library/coverage/base.css deleted file mode 100644 index f418035b..00000000 --- a/projects/testing-library/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/projects/testing-library/coverage/block-navigation.js b/projects/testing-library/coverage/block-navigation.js deleted file mode 100644 index c7ff5a5c..00000000 --- a/projects/testing-library/coverage/block-navigation.js +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/projects/testing-library/coverage/favicon.png b/projects/testing-library/coverage/favicon.png deleted file mode 100644 index 6691817834a957c938e7f09640a37a645fb31457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 94.69% - Statements - 392/414 -
- - -
- 77.69% - Branches - 101/130 -
- - -
- 93.33% - Functions - 84/90 -
- - -
- 94.94% - Lines - 375/395 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
migrations/4_0_0 -
-
100%11/11100%0/0100%3/3100%11/11
migrations/4_0_0/rules -
-
100%56/56100%4/4100%10/10100%56/56
migrations/5_1_2 -
-
100%19/1983.33%5/6100%5/5100%19/19
migrations/5_1_2/rules -
-
100%12/12100%0/0100%3/3100%12/12
src -
-
100%3/3100%0/0100%0/0100%3/3
src/lib -
-
91.81%213/23276.25%61/8088.89%48/5492.2%201/218
src/lib/user-events -
-
96.3%78/8177.5%31/40100%15/1596.05%73/76
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/index.html b/projects/testing-library/coverage/migrations/4_0_0/index.html deleted file mode 100644 index 07c2122d..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0 - - - - - - - - - -
-
-

All files migrations/4_0_0

-
- -
- 100% - Statements - 11/11 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 11/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.ts -
-
100%11/11100%0/0100%3/3100%11/11
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/index.ts.html b/projects/testing-library/coverage/migrations/4_0_0/index.ts.html deleted file mode 100644 index fa023184..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/index.ts.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0/index.ts - - - - - - - - - -
-
-

All files / migrations/4_0_0 index.ts

-
- -
- 100% - Statements - 11/11 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 11/11 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31  -1x -1x -  -  -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -3x -3x -3x -3x -  -3x -3x -3x -  -  - 
import { Rule } from '@angular-devkit/schematics';
-import { TslintFixTask } from '@angular-devkit/schematics/tasks';
-import * as path from 'path';
- 
-function createRule(ruleName: string): TslintFixTask {
-  return new TslintFixTask(
-    {
-      rulesDirectory: path.join(__dirname, 'rules'),
-      rules: {
-        [ruleName]: [true],
-      },
-    },
-    {
-      includes: ['**/*.spec.ts', '**/*.test.ts'],
-      silent: false,
-    },
-  );
-}
- 
-export default function (): Rule {
-  return (_, context) => {
-    const noCreateComponentRule = createRule('no-create-component');
-    const noComponentParametersRule = createRule('no-component-parameters');
-    const noComponentPropertyRule = createRule('no-component-property');
- 
-    const noCreateComponentRuleId = context.addTask(noCreateComponentRule);
-    const noComponentParametersRuleId = context.addTask(noComponentParametersRule, [noCreateComponentRuleId]);
-    context.addTask(noComponentPropertyRule, [noComponentParametersRuleId]);
-  };
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/index.html b/projects/testing-library/coverage/migrations/4_0_0/rules/index.html deleted file mode 100644 index eeffc45a..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/rules/index.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0/rules - - - - - - - - - -
-
-

All files migrations/4_0_0/rules

-
- -
- 100% - Statements - 56/56 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 10/10 -
- - -
- 100% - Lines - 56/56 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
noComponentParametersRule.ts -
-
100%23/23100%2/2100%3/3100%23/23
noComponentPropertyRule.ts -
-
100%12/12100%2/2100%2/2100%12/12
noCreateComponentRule.ts -
-
100%21/21100%0/0100%5/5100%21/21
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html deleted file mode 100644 index b6956de7..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentParametersRule.ts.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0/rules/noComponentParametersRule.ts - - - - - - - - - -
-
-

All files / migrations/4_0_0/rules noComponentParametersRule.ts

-
- -
- 100% - Statements - 23/23 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 23/23 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45  -1x -1x -  -  -1x -1x -1x -  -1x -  -1x -  -5x -  -4x -4x -2x -  -2x -  -2x -2x -  -2x -  -  -  -2x -2x -2x -  -2x -2x -2x -  -2x -  -  -  -  -4x -  -  - 
import * as ts from 'typescript';
-import { Replacement, RuleFailure, Rules } from 'tslint';
-import { tsquery } from '@phenomnomnominal/tsquery';
- 
-const IS_COMPONENT_PROPERTY_QUERY =
-  'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:first-child';
-const RENDER_OPTIONS_QUERY = 'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:last-child';
-const COMPONENT_PARAMETERS_PROPERTY_VALUE_QUERY = 'PropertyAssignment:has(Identifier[name="parameters"]) :last-child';
- 
-const FAILURE_MESSAGE = 'Found `parameters` parameter, use `componentProperties` instead.';
- 
-export class Rule extends Rules.AbstractRule {
-  public apply(ast: ts.SourceFile): Array<RuleFailure> {
-    return tsquery(ast, IS_COMPONENT_PROPERTY_QUERY)
-      .map((result) => {
-        const [parameterNode] = tsquery(result, COMPONENT_PARAMETERS_PROPERTY_VALUE_QUERY);
-        if (!parameterNode) {
-          return [];
-        }
-        const [renderOptionsNode] = tsquery(ast, RENDER_OPTIONS_QUERY);
- 
-        const renderOptionsText = renderOptionsNode.getFullText();
-        const bracketIndex = renderOptionsText.indexOf('{');
-        const renderOptions =
-          renderOptionsText.substring(0, bracketIndex + 1) +
-          `componentProperties:${parameterNode.getFullText()},` +
-          renderOptionsText.substr(bracketIndex + 1);
- 
-        const replacement = new Replacement(renderOptionsNode.getStart(), renderOptionsNode.getWidth(), renderOptions);
-        const start = renderOptionsNode.getStart();
-        const end = renderOptionsNode.getEnd();
- 
-        const replacementOriginal = new Replacement(parameterNode.getStart(), parameterNode.getWidth(), '');
-        const startOriginal = renderOptionsNode.getStart();
-        const endOriginal = renderOptionsNode.getEnd();
- 
-        return [
-          new RuleFailure(ast, startOriginal, endOriginal, FAILURE_MESSAGE, this.ruleName, replacementOriginal),
-          new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement),
-        ];
-      })
-      .reduce((rules, rule) => rules.concat(rule), []);
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html deleted file mode 100644 index 562a01c9..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/rules/noComponentPropertyRule.ts.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0/rules/noComponentPropertyRule.ts - - - - - - - - - -
-
-

All files / migrations/4_0_0/rules noComponentPropertyRule.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 2/2 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -1x -1x -  -  -1x -1x -  -1x -  -1x -  -7x -4x -4x -4x -4x -  -4x -  -  -  - 
import * as ts from 'typescript';
-import { Replacement, RuleFailure, Rules } from 'tslint';
-import { tsquery } from '@phenomnomnominal/tsquery';
- 
-const IS_COMPONENT_PROPERTY_QUERY =
-  'CallExpression:has(Identifier[name="render"]) > ObjectLiteralExpression:first-child';
-const COMPONENT_PROPERTY_VALUE_QUERY = 'PropertyAssignment:has(Identifier[name="component"]) :last-child';
- 
-const FAILURE_MESSAGE = 'Found component propety syntax, signature looks different.';
- 
-export class Rule extends Rules.AbstractRule {
-  public apply(ast: ts.SourceFile): Array<RuleFailure> {
-    return tsquery(ast, IS_COMPONENT_PROPERTY_QUERY).map((result) => {
-      const [valueNode] = tsquery(result, COMPONENT_PROPERTY_VALUE_QUERY);
-      const replacement = new Replacement(result.getStart(), result.getWidth(), (valueNode || result).getText());
-      const start = result.getStart();
-      const end = result.getEnd();
- 
-      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
-    });
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html b/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html deleted file mode 100644 index d8d28b8b..00000000 --- a/projects/testing-library/coverage/migrations/4_0_0/rules/noCreateComponentRule.ts.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Code coverage report for migrations/4_0_0/rules/noCreateComponentRule.ts - - - - - - - - - -
-
-

All files / migrations/4_0_0/rules noCreateComponentRule.ts

-
- -
- 100% - Statements - 21/21 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 21/21 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41  -1x -1x -  -1x -1x -1x -  -1x -  -1x -  -1x -  -9x -9x -  -9x -  -  -  -9x -6x -6x -6x -  -6x -  -  -  -  -9x -6x -6x -6x -  -6x -  -  -  - 
import * as ts from 'typescript';
-import { Replacement, RuleFailure, Rules } from 'tslint';
-import { tsquery } from '@phenomnomnominal/tsquery';
- 
-const CREATE_COMPONENT_IDENTIFIER = 'Identifier[name="createComponent"]';
-const CREATE_COMPONENT_IMPORT_QUERY = `ImportSpecifier > ${CREATE_COMPONENT_IDENTIFIER}`;
-const CREATE_COMPONENT_CALL_EXPRESSION_QUERY = `CallExpression > ${CREATE_COMPONENT_IDENTIFIER}`;
- 
-const RENDER = 'render';
- 
-const FAILURE_MESSAGE = 'Found `createComponent`, use `render` instead.';
- 
-export class Rule extends Rules.AbstractRule {
-  public apply(ast: ts.SourceFile): Array<RuleFailure> {
-    const imports = this.getImports(ast);
-    const usages = this.getUsages(ast);
- 
-    return [...imports, ...usages];
-  }
- 
-  private getImports(ast: ts.SourceFile): Array<RuleFailure> {
-    return tsquery(ast, CREATE_COMPONENT_IMPORT_QUERY).map((result) => {
-      const replacement = new Replacement(result.getStart(), result.getWidth(), RENDER);
-      const start = result.getStart();
-      const end = result.getEnd();
- 
-      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
-    });
-  }
- 
-  private getUsages(ast: ts.SourceFile): Array<RuleFailure> {
-    return tsquery(ast, CREATE_COMPONENT_CALL_EXPRESSION_QUERY).map((result) => {
-      const replacement = new Replacement(result.getStart(), result.getWidth(), RENDER);
-      const start = result.getStart();
-      const end = result.getEnd();
- 
-      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
-    });
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/index.html b/projects/testing-library/coverage/migrations/5_1_2/index.html deleted file mode 100644 index 96131209..00000000 --- a/projects/testing-library/coverage/migrations/5_1_2/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for migrations/5_1_2 - - - - - - - - - -
-
-

All files migrations/5_1_2

-
- -
- 100% - Statements - 19/19 -
- - -
- 83.33% - Branches - 5/6 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 19/19 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.ts -
-
100%19/1983.33%5/6100%5/5100%19/19
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/index.ts.html b/projects/testing-library/coverage/migrations/5_1_2/index.ts.html deleted file mode 100644 index b70fb593..00000000 --- a/projects/testing-library/coverage/migrations/5_1_2/index.ts.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - Code coverage report for migrations/5_1_2/index.ts - - - - - - - - - -
-
-

All files / migrations/5_1_2 index.ts

-
- -
- 100% - Statements - 19/19 -
- - -
- 83.33% - Branches - 5/6 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 19/19 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -541x -1x -1x -1x -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -2x -  -  -  -2x -  -2x -2x -  -2x -1x -1x -1x -  -  -  -2x -  -  -1x -2x -2x -  -2x -  -  - 
import { Rule, chain, Tree, SchematicContext } from '@angular-devkit/schematics';
-import { TslintFixTask } from '@angular-devkit/schematics/tasks';
-import * as path from 'path';
-import { stripIndents } from '@angular-devkit/core/src/utils/literals';
- 
-function createRule(ruleName: string): TslintFixTask {
-  return new TslintFixTask(
-    {
-      rulesDirectory: path.join(__dirname, 'rules'),
-      rules: {
-        [ruleName]: [true],
-      },
-    },
-    {
-      includes: ['**/*.spec.ts', '**/*.test.ts'],
-      silent: false,
-    },
-  );
-}
- 
-function displayInformation(tree, context: SchematicContext) {
-  context.logger.info(stripIndents`
-    @angular-extensions/testing-library has moved to @testing-library/angular.
- 
-    Learn more about this change here: https://github.com/testing-library/dom-testing-library/issues/260
-  `);
- 
-  return tree;
-}
- 
-function updatePackageJson(host: Tree) {
-  Eif (host.exists('package.json')) {
-    // tslint:disable-next-line: no-non-null-assertion
-    const sourceText = host.read('package.json')!.toString('utf-8');
-    const json = JSON.parse(sourceText);
- 
-    if (json['devDependencies'] && json['devDependencies']['@angular-extensions/testing-library']) {
-      json['devDependencies']['@testing-library/angular'] = '^6.0.0';
-      delete json['devDependencies']['@angular-extensions/testing-library'];
-      host.overwrite('package.json', JSON.stringify(json, null, 2));
-    }
-  }
- 
-  return host;
-}
- 
-export default function (): Rule {
-  return (host, context) => {
-    context.addTask(createRule('no-angular-extensions-import'));
- 
-    return chain([displayInformation, updatePackageJson])(host, context);
-  };
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/rules/index.html b/projects/testing-library/coverage/migrations/5_1_2/rules/index.html deleted file mode 100644 index ccb26c1d..00000000 --- a/projects/testing-library/coverage/migrations/5_1_2/rules/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for migrations/5_1_2/rules - - - - - - - - - -
-
-

All files migrations/5_1_2/rules

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
noAngularExtensionsImportRule.ts -
-
100%12/12100%0/0100%3/3100%12/12
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html b/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html deleted file mode 100644 index 05c555f8..00000000 --- a/projects/testing-library/coverage/migrations/5_1_2/rules/noAngularExtensionsImportRule.ts.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Code coverage report for migrations/5_1_2/rules/noAngularExtensionsImportRule.ts - - - - - - - - - -
-
-

All files / migrations/5_1_2/rules noAngularExtensionsImportRule.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 3/3 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27  -1x -1x -  -1x -  -  -1x -  -1x -  -4x -4x -  -  -  -4x -  -4x -4x -4x -  -4x -  -  -  - 
import * as ts from 'typescript';
-import { Replacement, RuleFailure, Rules } from 'tslint';
-import { tsquery } from '@phenomnomnominal/tsquery';
- 
-const IMPORT_QUERY = `ImportDeclaration StringLiteral[value="@angular-extensions/testing-library"]`;
- 
-const FAILURE_MESSAGE =
-  'Found the library `@angular-extensions/testing-library`, use `@testing-library/angular` instead.';
- 
-export class Rule extends Rules.AbstractRule {
-  public apply(ast: ts.SourceFile): Array<RuleFailure> {
-    const imports = this.getImports(ast);
-    return imports;
-  }
- 
-  private getImports(ast: ts.SourceFile): Array<RuleFailure> {
-    return tsquery(ast, IMPORT_QUERY).map((result) => {
-      // replace text between (single) quotes
-      const replacement = new Replacement(result.getStart() + 1, result.getWidth() - 2, '@testing-library/angular');
-      const start = result.getStart();
-      const end = result.getEnd();
- 
-      return new RuleFailure(ast, start, end, FAILURE_MESSAGE, this.ruleName, replacement);
-    });
-  }
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/prettify.css b/projects/testing-library/coverage/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/projects/testing-library/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/projects/testing-library/coverage/prettify.js b/projects/testing-library/coverage/prettify.js deleted file mode 100644 index b3225238..00000000 --- a/projects/testing-library/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/projects/testing-library/coverage/sort-arrow-sprite.png b/projects/testing-library/coverage/sort-arrow-sprite.png deleted file mode 100644 index 03f704a609c6fd0dbfdac63466a7d7c958b5cbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/projects/testing-library/coverage/src/index.html b/projects/testing-library/coverage/src/index.html deleted file mode 100644 index c4d53145..00000000 --- a/projects/testing-library/coverage/src/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
public_api.ts -
-
100%3/3100%0/0100%0/0100%3/3
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/config.ts.html b/projects/testing-library/coverage/src/lib/config.ts.html deleted file mode 100644 index 2fc203a1..00000000 --- a/projects/testing-library/coverage/src/lib/config.ts.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - Code coverage report for src/lib/config.ts - - - - - - - - - -
-
-

All files / src/lib config.ts

-
- -
- 100% - Statements - 7/7 -
- - -
- 100% - Branches - 2/2 -
- - -
- 100% - Functions - 2/2 -
- - -
- 100% - Lines - 7/7 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25  -  -17x -  -  -  -  -17x -3x -  -  -1x -  -  -  -3x -  -  -  -  -  -17x -70x -  - 
import { Config } from './models';
- 
-let config: Config = {
-  defaultImports: [],
-  dom: {},
-};
- 
-export function configure(newConfig: Partial<Config> | ((config: Partial<Config>) => Partial<Config>)) {
-  if (typeof newConfig === 'function') {
-    // Pass the existing config out to the provided function
-    // and accept a delta in return
-    newConfig = newConfig(config);
-  }
- 
-  // Merge the incoming config delta
-  config = {
-    ...config,
-    ...newConfig,
-  };
-}
- 
-export function getConfig() {
-  return config;
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/index.html b/projects/testing-library/coverage/src/lib/index.html deleted file mode 100644 index 412d5e86..00000000 --- a/projects/testing-library/coverage/src/lib/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Code coverage report for src/lib - - - - - - - - - -
-
-

All files src/lib

-
- -
- 91.81% - Statements - 213/232 -
- - -
- 76.25% - Branches - 61/80 -
- - -
- 88.89% - Functions - 48/54 -
- - -
- 92.2% - Lines - 201/218 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
config.ts -
-
100%7/7100%2/2100%2/2100%7/7
testing-library.ts -
-
91.56%206/22575.64%59/7888.46%46/5291.94%194/211
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/testing-library.ts.html b/projects/testing-library/coverage/src/lib/testing-library.ts.html deleted file mode 100644 index d0baed59..00000000 --- a/projects/testing-library/coverage/src/lib/testing-library.ts.html +++ /dev/null @@ -1,1574 +0,0 @@ - - - - - - Code coverage report for src/lib/testing-library.ts - - - - - - - - - -
-
-

All files / src/lib testing-library.ts

-
- -
- 91.56% - Statements - 206/225 -
- - -
- 75.64% - Branches - 59/78 -
- - -
- 88.46% - Functions - 46/52 -
- - -
- 91.94% - Lines - 194/211 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -49917x -17x -17x -17x -17x -17x -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -17x -17x -  -17x -  -  -  -  -  -  -  -  -  -  -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -70x -  -70x -  -70x -  -964x -964x -964x -  -  -  -  -70x -  -  -  -  -  -  -70x -70x -2x -  -2x -2x -  -  -  -70x -70x -  -70x -3x -3x -3x -3x -  -  -  -70x -  -70x -  -70x -70x -  -  -1082x -973x -  -  -  -  -70x -3x -3x -  -  -70x -70x -  -  -70x -5810x -962x -962x -962x -  -5810x -  -  -70x -2x -  -2x -  -2x -1x -  -  -2x -  -  -70x -70x -70x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -3x -  -  -70x -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -70x -7x -7x -  -63x -  -  -  -  -  -  -72x -40x -  -72x -  -  -  -72x -  -  -  -  -  -5x -5x -9x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -70x -70x -  -  -70x -70x -  -  -70x -  -  -  -70x -  -70x -70x -  -  -70x -70x -  -  -70x -  -  -  -  -  -  -  -  -  -  -8x -45x -45x -  -  -  -  -  -  -  -  -  -  -  -  -6x -2x -2x -2x -2x -4x -  -26x -  -26x -  -4x -  -  -6x -62x -62x -  -  -  -  -71x -  -  -  -70x -3x -  -70x -  -  -17x -71x -71x -  -  -  -  -17x -  -  -  -  -  -87x -4193x -1392x -1392x -  -4x -  -11x -  -  -2x -  -  -2801x -  -  -4193x -  -  -  -  -  -  -  -1026x -1026x -1026x -  -109x -  -  -  -  -  -  -  -  -  -17x -1411x -2x -2x -2x -  -1411x -  -  -  -  -  -17x -  -  -  -  -  -2x -  -  -  -  -  -  -3x -  -  -  -  -  -17x -  -  -  -  -  -  -  -  -  -  -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -17x -  -  -17x - 
import { Component, Type, NgZone, SimpleChange, OnChanges, SimpleChanges } from '@angular/core';
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { By } from '@angular/platform-browser';
-import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { Router } from '@angular/router';
-import { RouterTestingModule } from '@angular/router/testing';
-import {
-  FireFunction,
-  FireObject,
-  getQueriesForElement as dtlGetQueriesForElement,
-  prettyDOM as dtlPrettyDOM,
-  waitFor as dtlWaitFor,
-  waitForElementToBeRemoved as dtlWaitForElementToBeRemoved,
-  fireEvent as dtlFireEvent,
-  screen as dtlScreen,
-  queries as dtlQueries,
-  waitForOptions as dtlWaitForOptions,
-  configure as dtlConfigure,
-} from '@testing-library/dom';
-import { RenderComponentOptions, RenderDirectiveOptions, RenderResult } from './models';
-import { getConfig } from './config';
-import { createSelectOptions, createType, tab } from './user-events';
- 
-const mountedFixtures = new Set<ComponentFixture<any>>();
- 
-export async function render<ComponentType>(
-  component: Type<ComponentType>,
-  renderOptions?: RenderComponentOptions<ComponentType>,
-): Promise<RenderResult<ComponentType, ComponentType>>;
-export async function render<DirectiveType, WrapperType = WrapperComponent>(
-  component: Type<DirectiveType>,
-  renderOptions?: RenderDirectiveOptions<DirectiveType, WrapperType>,
-): Promise<RenderResult<DirectiveType, WrapperType>>;
- 
-export async function render<SutType, WrapperType = SutType>(
-  sut: Type<SutType>,
-  renderOptions: RenderComponentOptions<SutType> | RenderDirectiveOptions<SutType, WrapperType> = {},
-): Promise<RenderResult<SutType>> {
-  const {
-    detectChanges: detectChangesOnRender = true,
-    declarations = [],
-    imports = [],
-    providers = [],
-    schemas = [],
-    queries,
-    template,
-    wrapper = WrapperComponent,
-    componentProperties = {},
-    componentProviders = [],
-    excludeComponentDeclaration = false,
-    routes,
-    removeAngularAttributes = false,
-  } = renderOptions as RenderDirectiveOptions<SutType, WrapperType>;
- 
-  const config = getConfig();
- 
-  dtlConfigure({
-    eventWrapper: (cb) => {
-      const result = cb();
-      detectChangesForMountedFixtures();
-      return result;
-    },
-    ...config.dom,
-  });
- 
-  TestBed.configureTestingModule({
-    declarations: addAutoDeclarations(sut, { declarations, excludeComponentDeclaration, template, wrapper }),
-    imports: addAutoImports({ imports: imports.concat(config.defaultImports), routes }),
-    providers: [...providers],
-    schemas: [...schemas],
-  });
- 
-  Eif (componentProviders) {
-    componentProviders
-      .reduce((acc, provider) => acc.concat(provider), [])
-      .forEach((p) => {
-        const { provide, ...provider } = p;
-        TestBed.overrideProvider(provide, provider);
-      });
-  }
- 
-  const fixture = createComponentFixture(sut, { template, wrapper });
-  setComponentProperties(fixture, { componentProperties });
- 
-  if (removeAngularAttributes) {
-    fixture.nativeElement.removeAttribute('ng-version');
-    const idAttribute = fixture.nativeElement.getAttribute('id');
-    Eif (idAttribute && idAttribute.startsWith('root')) {
-      fixture.nativeElement.removeAttribute('id');
-    }
-  }
- 
-  mountedFixtures.add(fixture);
- 
-  await TestBed.compileComponents();
- 
-  let isAlive = true;
-  fixture.componentRef.onDestroy(() => (isAlive = false));
- 
-  function detectChanges() {
-    if (isAlive) {
-      fixture.detectChanges();
-    }
-  }
- 
-  // Call ngOnChanges on initial render
-  if (hasOnChangesHook(fixture.componentInstance)) {
-    const changes = getChangesObj(null, fixture.componentInstance);
-    fixture.componentInstance.ngOnChanges(changes);
-  }
- 
-  Eif (detectChangesOnRender) {
-    detectChanges();
-  }
- 
-  const eventsWithDetectChanges = Object.keys(dtlFireEvent).reduce((events, key) => {
-    events[key] = (element: HTMLElement, options?: {}) => {
-      const result = dtlFireEvent[key](element, options);
-      detectChanges();
-      return result;
-    };
-    return events;
-  }, {} as FireFunction & FireObject);
- 
-  const rerender = (rerenderedProperties: Partial<SutType>) => {
-    const changes = getChangesObj(fixture.componentInstance, rerenderedProperties);
- 
-    setComponentProperties(fixture, { componentProperties: rerenderedProperties });
- 
-    if (hasOnChangesHook(fixture.componentInstance)) {
-      fixture.componentInstance.ngOnChanges(changes);
-    }
- 
-    detectChanges();
-  };
- 
-  let router = routes ? TestBed.inject(Router) : null;
-  const zone = TestBed.inject(NgZone);
-  const navigate = async (elementOrPath: Element | string, basePath = '') => {
-    if (!router) {
-      router = TestBed.inject(Router);
-    }
- 
-    const href = typeof elementOrPath === 'string' ? elementOrPath : elementOrPath.getAttribute('href');
-    const [path, params] = (basePath + href).split('?');
-    const queryParams = params
-      ? params.split('&').reduce((qp, q) => {
-          const [key, value] = q.split('=');
-          qp[key] = value;
-          return qp;
-        }, {})
-      : undefined;
- 
-    const doNavigate = () =>
-      router.navigate([path], {
-        queryParams,
-      });
- 
-    let result;
- 
-    if (zone) {
-      await zone.run(() => (result = doNavigate()));
-    } else {
-      result = doNavigate();
-    }
- 
-    detectChanges();
-    return result;
-  };
- 
-  function componentWaitFor<T>(
-    callback,
-    options: dtlWaitForOptions = { container: fixture.nativeElement },
-  ): Promise<T> {
-    return waitForWrapper(detectChanges, callback, options);
-  }
- 
-  function componentWaitForElementToBeRemoved<T>(
-    callback: (() => T) | T,
-    options: dtlWaitForOptions = { container: fixture.nativeElement },
-  ): Promise<T> {
-    return waitForElementToBeRemovedWrapper(detectChanges, callback, options);
-  }
- 
-  return {
-    fixture,
-    detectChanges,
-    navigate,
-    rerender,
-    debugElement: fixture.debugElement.query(By.directive(sut)),
-    container: fixture.nativeElement,
-    debug: (element = fixture.nativeElement, maxLength, options) =>
-      Array.isArray(element)
-        ? element.forEach((e) => console.log(dtlPrettyDOM(e, maxLength, options)))
-        : console.log(dtlPrettyDOM(element, maxLength, options)),
-    type: createType(eventsWithDetectChanges),
-    selectOptions: createSelectOptions(eventsWithDetectChanges),
-    tab,
-    waitFor: componentWaitFor,
-    waitForElementToBeRemoved: componentWaitForElementToBeRemoved,
-    ...replaceFindWithFindAndDetectChanges(
-      fixture.nativeElement,
-      dtlGetQueriesForElement(fixture.nativeElement, queries),
-    ),
-    ...eventsWithDetectChanges,
-  };
-}
- 
-function createComponentFixture<SutType>(
-  component: Type<SutType>,
-  { template, wrapper }: Pick<RenderDirectiveOptions<SutType, any>, 'template' | 'wrapper'>,
-): ComponentFixture<SutType> {
-  if (template) {
-    TestBed.overrideTemplate(wrapper, template);
-    return TestBed.createComponent(wrapper);
-  }
-  return TestBed.createComponent(component);
-}
- 
-function setComponentProperties<SutType>(
-  fixture: ComponentFixture<SutType>,
-  { componentProperties = {} }: Pick<RenderDirectiveOptions<SutType, any>, 'componentProperties'>,
-) {
-  for (const key of Object.keys(componentProperties)) {
-    fixture.componentInstance[key] = componentProperties[key];
-  }
-  return fixture;
-}
- 
-function hasOnChangesHook<SutType>(componentInstance: SutType): componentInstance is SutType & OnChanges {
-  return (
-    'ngOnChanges' in componentInstance && typeof (componentInstance as SutType & OnChanges).ngOnChanges === 'function'
-  );
-}
- 
-function getChangesObj<SutType>(oldProps: Partial<SutType> | null, newProps: Partial<SutType>) {
-  const isFirstChange = oldProps === null;
-  return Object.keys(newProps).reduce<SimpleChanges>(
-    (changes, key) => ({
-      ...changes,
-      [key]: new SimpleChange(isFirstChange ? null : oldProps[key], newProps[key], isFirstChange),
-    }),
-    {},
-  );
-}
- 
-function addAutoDeclarations<SutType>(
-  component: Type<SutType>,
-  {
-    declarations,
-    excludeComponentDeclaration,
-    template,
-    wrapper,
-  }: Pick<
-    RenderDirectiveOptions<SutType, any>,
-    'declarations' | 'excludeComponentDeclaration' | 'template' | 'wrapper'
-  >,
-) {
-  const wrappers = () => {
-    return template ? [wrapper] : [];
-  };
- 
-  const components = () => {
-    return excludeComponentDeclaration ? [] : [component];
-  };
- 
-  return [...declarations, ...wrappers(), ...components()];
-}
- 
-function addAutoImports({ imports, routes }: Pick<RenderComponentOptions<any>, 'imports' | 'routes'>) {
-  const animations = () => {
-    const animationIsDefined =
-      imports.indexOf(NoopAnimationsModule) > -1 || imports.indexOf(BrowserAnimationsModule) > -1;
-    return animationIsDefined ? [] : [NoopAnimationsModule];
-  };
- 
-  const routing = () => {
-    return routes ? [RouterTestingModule.withRoutes(routes)] : [];
-  };
- 
-  return [...imports, ...animations(), ...routing()];
-}
- 
-/**
- * Wrap waitFor to poke the Angular change detection cycle before invoking the callback
- */
-async function waitForWrapper<T>(
-  detectChanges: () => void,
-  callback: () => T extends Promise<any> ? never : T,
-  options?: dtlWaitForOptions,
-): Promise<T> {
-  return await dtlWaitFor(() => {
-    detectChanges();
-    return callback();
-  }, options);
-}
- 
-/**
- * Wrap waitForElementToBeRemovedWrapper to poke the Angular change detection cycle before invoking the callback
- */
-async function waitForElementToBeRemovedWrapper<T>(
-  detectChanges: () => void,
-  callback: (() => T) | T,
-  options?: dtlWaitForOptions,
-): Promise<T> {
-  let cb;
-  if (typeof callback !== 'function') {
-    const elements = (Array.isArray(callback) ? callback : [callback]) as HTMLElement[];
-    const getRemainingElements = elements.map((element) => {
-      let parent = element.parentElement;
-      while (parent.parentElement) {
-        parent = parent.parentElement;
-      }
-      return () => (parent.contains(element) ? element : null);
-    });
-    cb = () => getRemainingElements.map((c) => c()).filter(Boolean);
-  } else {
-    cb = callback;
-  }
- 
-  return await dtlWaitForElementToBeRemoved(() => {
-    detectChanges();
-    return cb();
-  }, options);
-}
- 
-function cleanup() {
-  mountedFixtures.forEach(cleanupAtFixture);
-}
- 
-function cleanupAtFixture(fixture) {
-  if (!fixture.nativeElement.getAttribute('ng-version') && fixture.nativeElement.parentNode === document.body) {
-    document.body.removeChild(fixture.nativeElement);
-  }
-  mountedFixtures.delete(fixture);
-}
- 
-Eif (typeof afterEach === 'function' && !process.env.ATL_SKIP_AUTO_CLEANUP) {
-  afterEach(async () => {
-    cleanup();
-  });
-}
- 
-@Component({ selector: 'wrapper-component', template: '' })
-class WrapperComponent {}
- 
-/**
- * Wrap findBy queries to poke the Angular change detection cycle
- */
-function replaceFindWithFindAndDetectChanges<T>(container: HTMLElement, originalQueriesForContainer: T): T {
-  return Object.keys(originalQueriesForContainer).reduce((newQueries, key) => {
-    if (key.startsWith('find')) {
-      const getByQuery = dtlQueries[key.replace('find', 'get')];
-      newQueries[key] = async (text, options, waitOptions) => {
-        // original implementation at https://github.com/testing-library/dom-testing-library/blob/master/src/query-helpers.js
-        const result = await waitForWrapper(
-          detectChangesForMountedFixtures,
-          () => getByQuery(container, text, options),
-          waitOptions,
-        );
-        return result;
-      };
-    } else {
-      newQueries[key] = originalQueriesForContainer[key];
-    }
- 
-    return newQueries;
-  }, {} as T);
-}
- 
-/**
- * Call detectChanges for all fixtures
- */
-function detectChangesForMountedFixtures() {
-  mountedFixtures.forEach((fixture) => {
-    try {
-      fixture.detectChanges();
-    } catch (err) {
-      Iif (!err.message.startsWith('ViewDestroyedError')) {
-        throw err;
-      }
-    }
-  });
-}
- 
-/**
- * Wrap dom-fireEvent to poke the Angular change detection cycle after an event is fired
- */
-const fireEvent = Object.keys(dtlFireEvent).reduce((events, key) => {
-  events[key] = (element: HTMLElement, options?: {}) => {
-    const result = dtlFireEvent[key](element, options);
-    detectChangesForMountedFixtures();
-    return result;
-  };
-  return events;
-}, {} as typeof dtlFireEvent);
- 
-/**
- * Re-export screen with patched queries
- */
-const screen = replaceFindWithFindAndDetectChanges(document.body, dtlScreen);
- 
-/**
- * Re-export waitFor with patched waitFor
- */
-async function waitFor<T>(callback: () => T extends Promise<any> ? never : T, options?: dtlWaitForOptions): Promise<T> {
-  return waitForWrapper(detectChangesForMountedFixtures, callback, options);
-}
- 
-/**
- * Re-export waitForElementToBeRemoved with patched waitForElementToBeRemoved
- */
-async function waitForElementToBeRemoved<T>(callback: (() => T) | T, options?: dtlWaitForOptions): Promise<T> {
-  return waitForElementToBeRemovedWrapper(detectChangesForMountedFixtures, callback, options);
-}
- 
-/**
- * Re-export userEvent with the patched fireEvent
- */
-const userEvent = {
-  type: createType(fireEvent),
-  selectOptions: createSelectOptions(fireEvent),
-  tab: tab,
-};
- 
-/**
- * Manually export otherwise we get the following error while running Jest tests
- * TypeError: Cannot set property fireEvent of [object Object] which has only a getter
- * exports.fireEvent = fireEvent
- */
-export {
-  buildQueries,
-  getByLabelText,
-  getAllByLabelText,
-  queryByLabelText,
-  queryAllByLabelText,
-  findByLabelText,
-  findAllByLabelText,
-  getByPlaceholderText,
-  getAllByPlaceholderText,
-  queryByPlaceholderText,
-  queryAllByPlaceholderText,
-  findByPlaceholderText,
-  findAllByPlaceholderText,
-  getByText,
-  getAllByText,
-  queryByText,
-  queryAllByText,
-  findByText,
-  findAllByText,
-  getByAltText,
-  getAllByAltText,
-  queryByAltText,
-  queryAllByAltText,
-  findByAltText,
-  findAllByAltText,
-  getByTitle,
-  getAllByTitle,
-  queryByTitle,
-  queryAllByTitle,
-  findByTitle,
-  findAllByTitle,
-  getByDisplayValue,
-  getAllByDisplayValue,
-  queryByDisplayValue,
-  queryAllByDisplayValue,
-  findByDisplayValue,
-  findAllByDisplayValue,
-  getByRole,
-  getAllByRole,
-  queryByRole,
-  queryAllByRole,
-  findByRole,
-  findAllByRole,
-  getByTestId,
-  getAllByTestId,
-  queryByTestId,
-  queryAllByTestId,
-  findByTestId,
-  findAllByTestId,
-  createEvent,
-  getDefaultNormalizer,
-  getElementError,
-  getNodeText,
-  getQueriesForElement,
-  getRoles,
-  isInaccessible,
-  logDOM,
-  logRoles,
-  prettyDOM,
-  queries,
-  queryAllByAttribute,
-  queryByAttribute,
-  queryHelpers,
-  within,
-} from '@testing-library/dom';
- 
-export { fireEvent, screen, userEvent, waitFor, waitForElementToBeRemoved };
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/index.html b/projects/testing-library/coverage/src/lib/user-events/index.html deleted file mode 100644 index a6b05239..00000000 --- a/projects/testing-library/coverage/src/lib/user-events/index.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - Code coverage report for src/lib/user-events - - - - - - - - - -
-
-

All files src/lib/user-events

-
- -
- 96.3% - Statements - 78/81 -
- - -
- 77.5% - Branches - 31/40 -
- - -
- 100% - Functions - 15/15 -
- - -
- 96.05% - Lines - 73/76 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.ts -
-
100%6/6100%0/0100%0/0100%4/4
selectOptions.ts -
-
91.43%32/3561.11%11/18100%7/791.18%31/34
tab.ts -
-
100%3/3100%0/0100%1/1100%3/3
type.ts -
-
100%37/3790.91%20/22100%7/7100%35/35
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/index.ts.html b/projects/testing-library/coverage/src/lib/user-events/index.ts.html deleted file mode 100644 index 70227b72..00000000 --- a/projects/testing-library/coverage/src/lib/user-events/index.ts.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - Code coverage report for src/lib/user-events/index.ts - - - - - - - - - -
-
-

All files / src/lib/user-events index.ts

-
- -
- 100% - Statements - 6/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 4/4 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -5917x -17x -17x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -17x - 
import { createType } from './type';
-import { createSelectOptions } from './selectOptions';
-import { tab } from './tab';
- 
-export interface UserEvents {
-  /**
-   * @deprecated
-   * Use `userEvents.type` from @testing-library/user-event
-   *
-   * @description
-   * Types a value in an input field with the same interactions as the user would do.
-   *
-   * @argument
-   * element: HTMLElement - the form field to type in
-   * value: string | number - the value to type in
-   *
-   * @example
-   * component.type(component.getByLabelText('Firstname'), 'Tim')
-   * component.type(component.getByLabelText('Firstname'), 'Tim', { delay: 100 })
-   * component.type(component.getByLabelText('Firstname'), 'Tim', { allAtOnce: true })
-   */
-  type: ReturnType<typeof createType>;
- 
-  /**
-   * @deprecated
-   * Use `userEvents.selectOptions` from @testing-library/user-event
-   *
-   * @description
-   * Select an option(s) from a select field with the same interactions as the user would do.
-   *
-   * @argument
-   * element: HTMLElement - the select box to select an option in
-   * matcher: Matcher | Matcher[] - the value(s) to select
-   *
-   * @example
-   * component.selectOptions(component.getByLabelText('Fruit'), 'Blueberry')
-   * component.selectOptions(component.getByLabelText('Fruit'), ['Blueberry'. 'Grape'])
-   */
-  selectOptions: ReturnType<typeof createSelectOptions>;
- 
-  /**
-   * @deprecated
-   * Use `userEvents.tab` from @testing-library/user-event
-   *
-   * @description
-   * Fires a tab event changing the document.activeElement in the same way the browser does.
-   *
-   * @argument
-   * shift: can be set to true to invert tab direction (default false)
-   * focusTrap: a container element to restrict the tabbing within (default document)
-   *
-   * @example
-   * component.tab()
-   */
-  tab: typeof tab;
-}
- 
-export { createType, createSelectOptions, tab };
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html b/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html deleted file mode 100644 index e6036480..00000000 --- a/projects/testing-library/coverage/src/lib/user-events/selectOptions.ts.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - Code coverage report for src/lib/user-events/selectOptions.ts - - - - - - - - - -
-
-

All files / src/lib/user-events selectOptions.ts

-
- -
- 91.43% - Statements - 32/35 -
- - -
- 61.11% - Branches - 11/18 -
- - -
- 100% - Functions - 7/7 -
- - -
- 91.18% - Lines - 31/34 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -6617x -  -  -17x -  -16x -16x -16x -16x -16x -16x -  -  -  -  -20x -  -  -  -  -  -  -20x -  -20x -20x -20x -20x -20x -20x -  -20x -20x -  -  -87x -  -  -  -16x -  -16x -16x -  -  -16x -16x -  -16x -  -  -  -  -16x -  -16x -16x -20x -20x -  -16x -  -  -  -  - 
import { FireFunction, FireObject, Matcher, screen, ByRoleOptions } from '@testing-library/dom';
- 
-// implementation from https://github.com/testing-library/user-event
-export function createSelectOptions(fireEvent: FireFunction & FireObject) {
-  function clickElement(element: HTMLElement) {
-    fireEvent.mouseOver(element);
-    fireEvent.mouseMove(element);
-    fireEvent.mouseDown(element);
-    fireEvent.focus(element);
-    fireEvent.mouseUp(element);
-    fireEvent.click(element);
-  }
- 
-  function selectOption(select: HTMLSelectElement, index: number, options: Matcher | ByRoleOptions) {
-    const query =
-      typeof options === 'string'
-        ? (({ name: new RegExp(options, 'i') } as unknown) as ByRoleOptions)
-        : options instanceof RegExp
-        ? (({ name: options } as unknown) as ByRoleOptions)
-        : typeof options === 'function'
-        ? (({ name: options } as unknown) as ByRoleOptions)
-        : options;
-    const option = screen.getByRole('option', query) as HTMLOptionElement;
- 
-    fireEvent.mouseOver(option);
-    fireEvent.mouseMove(option);
-    fireEvent.mouseDown(option);
-    fireEvent.focus(option);
-    fireEvent.mouseUp(option);
-    fireEvent.click(option, { ctrlKey: index > 0 });
- 
-    option.selected = true;
-    fireEvent.change(select);
-  }
- 
-  return async function selectOptions(
-    element: HTMLElement,
-    options: Matcher | ByRoleOptions | (Matcher | ByRoleOptions)[],
-  ) {
-    const selectElement = element as HTMLSelectElement;
- 
-    Eif (selectElement.selectedOptions) {
-      Array.from(selectElement.selectedOptions).forEach((option) => (option.selected = false));
-    }
- 
-    const focusedElement = document.activeElement;
-    const wasAnotherElementFocused = focusedElement !== document.body && focusedElement !== selectElement;
- 
-    Iif (wasAnotherElementFocused) {
-      fireEvent.mouseMove(focusedElement);
-      fireEvent.mouseLeave(focusedElement);
-    }
- 
-    clickElement(selectElement);
- 
-    const values = Array.isArray(options) ? options : [options];
-    values
-      .filter((_, index) => index === 0 || selectElement.multiple)
-      .forEach((val, index) => selectOption(selectElement, index, val));
- 
-    Iif (wasAnotherElementFocused) {
-      fireEvent.blur(focusedElement);
-    }
-  };
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/tab.ts.html b/projects/testing-library/coverage/src/lib/user-events/tab.ts.html deleted file mode 100644 index f92e2ab8..00000000 --- a/projects/testing-library/coverage/src/lib/user-events/tab.ts.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Code coverage report for src/lib/user-events/tab.ts - - - - - - - - - -
-
-

All files / src/lib/user-events tab.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -1117x -  -  -  -  -  -  -17x -4x -  - 
import userEvent from '@testing-library/user-event';
- 
-export interface ITabUserOptions {
-  shift?: boolean;
-  focusTrap?: Document | Element;
-}
- 
-export function tab(options?: ITabUserOptions) {
-  return userEvent.tab(options);
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/lib/user-events/type.ts.html b/projects/testing-library/coverage/src/lib/user-events/type.ts.html deleted file mode 100644 index 3fd9022f..00000000 --- a/projects/testing-library/coverage/src/lib/user-events/type.ts.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - Code coverage report for src/lib/user-events/type.ts - - - - - - - - - -
-
-

All files / src/lib/user-events type.ts

-
- -
- 100% - Statements - 37/37 -
- - -
- 90.91% - Branches - 20/22 -
- - -
- 100% - Functions - 7/7 -
- - -
- 100% - Lines - 35/35 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104  -  -  -6x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -17x -  -14x -3x -2x -  -3x -  -  -  -87x -15x -15x -15x -  -15x -1x -  -  -14x -2x -2x -  -2x -2x -  -  -12x -12x -12x -180x -180x -180x -  -180x -6x -  -  -180x -  -  -  -  -  -180x -174x -  -  -  -  -  -174x -174x -174x -169x -  -  -  -  -  -  -  -  -  -  -180x -  -  -  -  -  -  -12x -  -  - 
import { FireFunction, FireObject } from '@testing-library/dom';
- 
-function wait(time) {
-  return new Promise(function (resolve) {
-    setTimeout(() => resolve(), time);
-  });
-}
- 
-export interface TypeOptions {
-  /**
-   * @description
-   * Types the text at once rather than on character at a time
-   *
-   * @default
-   * false
-   */
-  allAtOnce?: boolean;
-  /**
-   * @description
-   * Number of milliseconds until the next character is typed
-   *
-   * @default
-   * 0
-   */
-  delay?: number;
-}
- 
-// implementation from https://github.com/testing-library/user-event
-export function createType(fireEvent: FireFunction & FireObject) {
-  function createFireChangeEvent(value: string) {
-    return function fireChangeEvent(event) {
-      if (value !== event.target.value) {
-        fireEvent.change(event.target);
-      }
-      event.target.removeEventListener('blur', fireChangeEvent);
-    };
-  }
- 
-  return async function type(element: HTMLElement, value: string | number, options?: TypeOptions) {
-    const { allAtOnce = false, delay = 0 } = options || {};
-    const inputElement = element as HTMLInputElement;
-    const initialValue = inputElement.value;
- 
-    if (inputElement.disabled) {
-      return;
-    }
- 
-    if (allAtOnce || value === '') {
-      Eif (!inputElement.readOnly) {
-        fireEvent.input(inputElement, { target: { value } });
-      }
-      inputElement.addEventListener('blur', createFireChangeEvent(initialValue));
-      return;
-    }
- 
-    const text = value.toString();
-    let actuallyTyped = '';
-    for (let index = 0; index < text.length; index++) {
-      const char = text[index];
-      const key = char;
-      const keyCode = char.charCodeAt(0);
- 
-      if (delay > 0) {
-        await wait(delay);
-      }
- 
-      const downEvent = fireEvent.keyDown(inputElement, {
-        key: key,
-        keyCode: keyCode,
-        which: keyCode,
-      });
- 
-      if (downEvent) {
-        const pressEvent = fireEvent.keyPress(inputElement, {
-          key: key,
-          keyCode,
-          charCode: keyCode,
-        });
- 
-        Eif (pressEvent) {
-          actuallyTyped += key;
-          if (!inputElement.readOnly) {
-            fireEvent.input(inputElement, {
-              target: {
-                value: actuallyTyped,
-              },
-              bubbles: true,
-              cancelable: true,
-            });
-          }
-        }
-      }
- 
-      fireEvent.keyUp(inputElement, {
-        key: key,
-        keyCode: keyCode,
-        which: keyCode,
-      });
-    }
- 
-    inputElement.addEventListener('blur', createFireChangeEvent(initialValue));
-  };
-}
- 
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/projects/testing-library/coverage/src/public_api.ts.html b/projects/testing-library/coverage/src/public_api.ts.html deleted file mode 100644 index 377faa99..00000000 --- a/projects/testing-library/coverage/src/public_api.ts.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Code coverage report for src/public_api.ts - - - - - - - - - -
-
-

All files / src public_api.ts

-
- -
- 100% - Statements - 3/3 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -  -  -  -17x -17x -17x - 
/*
- * Public API Surface of testing-library
- */
- 
-export * from './lib/models';
-export * from './lib/user-events';
-export * from './lib/config';
-export * from './lib/testing-library';
- 
- -
-
- - - - - - - - - \ No newline at end of file From bf1b567ec21b42c6524831c71829d56eb56ffb35 Mon Sep 17 00:00:00 2001 From: timdeschryver <28659384+timdeschryver@users.noreply.github.com> Date: Sat, 27 Jun 2020 11:31:04 +0200 Subject: [PATCH 3/3] build: use build target instead of build-release for bunding packages --- angular.json | 22 +++++++++++----------- package.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/angular.json b/angular.json index a1235c9d..37725449 100644 --- a/angular.json +++ b/angular.json @@ -5,7 +5,7 @@ "projects": { "example-app": { "root": "", - "sourceRoot": "src", + "sourceRoot": "apps/example-app", "projectType": "application", "prefix": "app", "schematics": {}, @@ -52,18 +52,18 @@ "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { - "browserTarget": "testing-library-app:build" + "browserTarget": "example-app:build" }, "configurations": { "production": { - "browserTarget": "testing-library-app:build:production" + "browserTarget": "example-app:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "testing-library-app:build" + "browserTarget": "example-app:build" } }, "lint": { @@ -89,7 +89,7 @@ "projectType": "library", "prefix": "lib", "architect": { - "build": { + "build-package": { "builder": "@angular-devkit/build-ng-packagr:build", "options": { "tsConfig": "projects/testing-library/tsconfig.lib.json", @@ -109,13 +109,13 @@ "exclude": ["**/node_modules/**"] } }, - "build-release": { + "build": { "builder": "@nrwl/workspace:run-commands", "options": { "parallel": false, "commands": [ { - "command": "ng build testing-library" + "command": "ng run testing-library:build-package" }, { "command": "tsc -p ./projects/testing-library/migrations/tsconfig.migrations.json" @@ -145,7 +145,7 @@ "projectType": "library", "prefix": "lib", "architect": { - "build": { + "build-package": { "builder": "@angular-devkit/build-ng-packagr:build", "options": { "tsConfig": "projects/jest-utils/tsconfig.lib.json", @@ -165,13 +165,13 @@ "exclude": ["**/node_modules/**"] } }, - "build-release": { + "build": { "builder": "@nrwl/workspace:run-commands", "options": { "parallel": false, "commands": [ { - "command": "ng build jest-utils" + "command": "ng run jest-utils:build-package" } ] } @@ -187,7 +187,7 @@ } } }, - "defaultProject": "testing-library-app", + "defaultProject": "example-app", "cli": { "analytics": false } diff --git a/package.json b/package.json index 8f269c1f..1e86c2a5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "scripts": { "ng": "ng", "start": "ng serve", - "build": "nx run-many --target=build-release --all", + "build": "nx run-many --target=build --all", "test": "yarn affected:test", "lint": "nx workspace-lint && ng lint", "e2e": "ng e2e",